diff --git a/base/remove-first-code-point/lib/main.js b/base/remove-first-code-point/lib/main.js
index 175f9f54..cdf29f94 100644
--- a/base/remove-first-code-point/lib/main.js
+++ b/base/remove-first-code-point/lib/main.js
@@ -85,7 +85,7 @@ function removeFirst( str, n ) {
break;
}
}
- return str.substring( cnt, str.length );
+ return str.substring( i + 1, str.length );
}
diff --git a/base/remove-first-code-point/package.json b/base/remove-first-code-point/package.json
index c5e2628f..bd5f53e9 100644
--- a/base/remove-first-code-point/package.json
+++ b/base/remove-first-code-point/package.json
@@ -1,5 +1,5 @@
{
- "name": "@stdlib/string/base/first-code-point",
+ "name": "@stdlib/string/base/remove-first-code-point",
"version": "0.0.0",
"description": "Remove the first Unicode code point of a string.",
"license": "Apache-2.0",
diff --git a/base/remove-first-code-point/test/test.js b/base/remove-first-code-point/test/test.js
index 66a0cb9b..a4bd6b92 100644
--- a/base/remove-first-code-point/test/test.js
+++ b/base/remove-first-code-point/test/test.js
@@ -68,6 +68,12 @@ tape( 'the function removes the first Unicode code point of a provided string (U
out = removeFirst( '六书/六書', 1 );
t.strictEqual( out, '书/六書', 'returns expected value' );
+ out = removeFirst( '𐒻𐓟', 1 );
+ t.strictEqual( out, '𐓟', 'returns expected value' );
+
+ out = removeFirst( '\uD800', 1 );
+ t.strictEqual( out, '', 'returns expected value' );
+
t.end();
});
@@ -92,5 +98,8 @@ tape( 'the function supports removing the first `n` Unicode code points of a pro
out = removeFirst( '六书/六書', 3 );
t.strictEqual( out, '六書', 'returns expected value' );
+ out = removeFirst( '𐓟𐒻𐓟', 2 );
+ t.strictEqual( out, '𐓟', 'returns expected value' );
+
t.end();
});
diff --git a/base/remove-first-grapheme-cluster/package.json b/base/remove-first-grapheme-cluster/package.json
index e0178441..c9b278e7 100644
--- a/base/remove-first-grapheme-cluster/package.json
+++ b/base/remove-first-grapheme-cluster/package.json
@@ -1,5 +1,5 @@
{
- "name": "@stdlib/string/base/first-grapheme-cluster",
+ "name": "@stdlib/string/base/remove-first-grapheme-cluster",
"version": "0.0.0",
"description": "Remove the first grapheme cluster (i.e., user-perceived character) of a string.",
"license": "Apache-2.0",
diff --git a/base/remove-first/package.json b/base/remove-first/package.json
index 9d5f7f25..e1832990 100644
--- a/base/remove-first/package.json
+++ b/base/remove-first/package.json
@@ -1,5 +1,5 @@
{
- "name": "@stdlib/string/base/first",
+ "name": "@stdlib/string/base/remove-first",
"version": "0.0.0",
"description": "Remove the first UTF-16 code unit of a string.",
"license": "Apache-2.0",
diff --git a/base/remove-last-code-point/README.md b/base/remove-last-code-point/README.md
new file mode 100644
index 00000000..e1afa617
--- /dev/null
+++ b/base/remove-last-code-point/README.md
@@ -0,0 +1,95 @@
+
+
+# removeLastCodePoint
+
+> Remove the last `n` Unicode code points of a string.
+
+
+
+## Usage
+
+```javascript
+var removeLastCodePoint = require( '@stdlib/string/base/remove-last-code-point' );
+```
+
+#### removeLastCodePoint( str, n )
+
+Removes the last `n` Unicode code points of a string.
+
+```javascript
+var out = removeLastCodePoint( 'last man standing', 1 );
+// returns 'last man standin'
+
+out = removeLastCodePoint( 'Hidden Treasures', 1 );
+// returns 'Hidden Treasure'
+
+out = removeLastCodePoint( 'foo bar', 5 );
+// returns 'fo'
+
+out = removeLastCodePoint( 'foo bar', 10 );
+// returns ''
+```
+
+
+
+
+
+
+
+## Examples
+
+
+
+```javascript
+var removeLastCodePoint = require( '@stdlib/string/base/remove-last-code-point' );
+
+var str = removeLastCodePoint( 'presidential election', 1 );
+// returns 'presidential electio'
+
+str = removeLastCodePoint( 'JavaScript', 1 );
+// returns 'JavaScrip'
+
+str = removeLastCodePoint( 'The Last of the Mohicans', 5 );
+// returns 'The Last of the Moh'
+
+str = removeLastCodePoint( 'अनुच्छेद', 1 );
+// returns 'अनुच्छे'
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/base/remove-last-code-point/benchmark/benchmark.js b/base/remove-last-code-point/benchmark/benchmark.js
new file mode 100644
index 00000000..1f34ea03
--- /dev/null
+++ b/base/remove-last-code-point/benchmark/benchmark.js
@@ -0,0 +1,56 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var isString = require( '@stdlib/assert/is-string' ).isPrimitive;
+var pkg = require( './../package.json' ).name;
+var removeLast = require( './../lib' );
+
+
+// MAIN //
+
+bench( pkg, function benchmark( b ) {
+ var values;
+ var out;
+ var i;
+
+ values = [
+ 'beep boop',
+ 'foo bar',
+ 'xyz abc',
+ '🐶🐮🐷🐰🐸'
+ ];
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ out = removeLast( values[ i%values.length ], 1 );
+ if ( typeof out !== 'string' ) {
+ b.fail( 'should return a string' );
+ }
+ }
+ b.toc();
+ if ( !isString( out ) ) {
+ b.fail( 'should return a string' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+});
diff --git a/base/remove-last-code-point/docs/repl.txt b/base/remove-last-code-point/docs/repl.txt
new file mode 100644
index 00000000..a08ea552
--- /dev/null
+++ b/base/remove-last-code-point/docs/repl.txt
@@ -0,0 +1,29 @@
+
+{{alias}}( str, n )
+ Removes the last `n` Unicode code points of a string.
+
+ Parameters
+ ----------
+ str: string
+ Input string.
+
+ n: integer
+ Number of Unicode code points to remove.
+
+ Returns
+ -------
+ out: string
+ Output string.
+
+ Examples
+ --------
+ > var out = {{alias}}( 'beep', 1 )
+ 'bee'
+ > out = {{alias}}( 'Boop', 1 )
+ 'Boo'
+ > out = {{alias}}( 'foo bar', 5 )
+ 'fo'
+
+ See Also
+ --------
+
diff --git a/base/remove-last-code-point/docs/types/index.d.ts b/base/remove-last-code-point/docs/types/index.d.ts
new file mode 100644
index 00000000..8a1c90be
--- /dev/null
+++ b/base/remove-last-code-point/docs/types/index.d.ts
@@ -0,0 +1,53 @@
+/*
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+// TypeScript Version: 2.0
+
+/**
+* Removes the last `n` Unicode code points of a string.
+*
+* @param str - input string
+* @param n - number of code points to remove
+* @returns output string
+*
+* @example
+* var out = removeLast( 'last man standing', 1 );
+* // returns 'last man standin'
+*
+* @example
+* var out = removeLast( 'presidential election', 1 );
+* // returns 'presidential electio'
+*
+* @example
+* var out = removeLast( 'JavaScript', 1 );
+* // returns 'JavaScrip'
+*
+* @example
+* var out = removeLast( 'Hidden Treasures', 1 );
+* // returns 'Hidden Treasure'
+*
+* @example
+* var out = removeLast( 'foo bar', 5 );
+* // returns 'fo'
+*/
+declare function removeLast( str: string, n: number ): string;
+
+
+// EXPORTS //
+
+export = removeLast;
diff --git a/base/remove-last-code-point/docs/types/test.ts b/base/remove-last-code-point/docs/types/test.ts
new file mode 100644
index 00000000..fd426d23
--- /dev/null
+++ b/base/remove-last-code-point/docs/types/test.ts
@@ -0,0 +1,57 @@
+/*
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+import removeLast = require( './index' );
+
+
+// TESTS //
+
+// The function returns a string...
+{
+ removeLast( 'abc', 1 ); // $ExpectType string
+}
+
+// The compiler throws an error if the function is provided a value other than a string...
+{
+ removeLast( true, 1 ); // $ExpectError
+ removeLast( false, 1 ); // $ExpectError
+ removeLast( null, 1 ); // $ExpectError
+ removeLast( undefined, 1 ); // $ExpectError
+ removeLast( 5, 1 ); // $ExpectError
+ removeLast( [], 1 ); // $ExpectError
+ removeLast( {}, 1 ); // $ExpectError
+ removeLast( ( x: number ): number => x, 1 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a second argument that is not a number...
+{
+ removeLast( 'abc', true ); // $ExpectError
+ removeLast( 'abc', false ); // $ExpectError
+ removeLast( 'abc', null ); // $ExpectError
+ removeLast( 'abc', 'abc' ); // $ExpectError
+ removeLast( 'abc', [] ); // $ExpectError
+ removeLast( 'abc', {} ); // $ExpectError
+ removeLast( 'abc', ( x: number ): number => x ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided an unsupported number of arguments...
+{
+ removeLast(); // $ExpectError
+ removeLast( 'abc' ); // $ExpectError
+ removeLast( 'abc', 1, 2 ); // $ExpectError
+}
diff --git a/base/remove-last-code-point/examples/index.js b/base/remove-last-code-point/examples/index.js
new file mode 100644
index 00000000..085633ea
--- /dev/null
+++ b/base/remove-last-code-point/examples/index.js
@@ -0,0 +1,33 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+var removeLastCodePoint = require( './../lib' );
+
+console.log( removeLastCodePoint( 'presidential election', 1 ) );
+// => 'presidential electio'
+
+console.log( removeLastCodePoint( 'JavaScript', 1 ) );
+// => 'JavaScrip'
+
+console.log( removeLastCodePoint( 'The Last of the Mohicans', 5 ) );
+// => 'The Last of the Moh'
+
+console.log( removeLastCodePoint( 'अनुच्छेद', 1 ) );
+// => 'अनुच्छे'
diff --git a/base/remove-last-code-point/lib/index.js b/base/remove-last-code-point/lib/index.js
new file mode 100644
index 00000000..6b889032
--- /dev/null
+++ b/base/remove-last-code-point/lib/index.js
@@ -0,0 +1,43 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+/**
+* Remove the last `n` Unicode code points of a string.
+*
+* @module @stdlib/string/base/remove-last-code-point
+*
+* @example
+* var removeLast = require( '@stdlib/string/base/remove-last-code-point' );
+*
+* var out = removeLast( 'last man standing', 1 );
+* // returns 'last man standin'
+*
+* out = removeLast( 'Hidden Treasures', 1 );
+* // returns 'Hidden Treasure';
+*/
+
+// MODULES //
+
+var main = require( './main.js' );
+
+
+// EXPORTS //
+
+module.exports = main;
diff --git a/base/remove-last-code-point/lib/main.js b/base/remove-last-code-point/lib/main.js
new file mode 100644
index 00000000..fc341870
--- /dev/null
+++ b/base/remove-last-code-point/lib/main.js
@@ -0,0 +1,94 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// VARIABLES //
+
+var RE_UTF16_LOW_SURROGATE = /[\uDC00-\uDFFF]/; // TODO: replace with stdlib pkg
+var RE_UTF16_HIGH_SURROGATE = /[\uD800-\uDBFF]/; // TODO: replace with stdlib pkg
+
+
+// MAIN //
+
+/**
+* Removes the last `n` Unicode code points of a string.
+*
+* @param {string} str - input string
+* @param {NonNegativeInteger} n - number of Unicode code points to remove
+* @returns {string} output string
+*
+* @example
+* var out = removeLast( 'last man standing', 1 );
+* // returns 'last man standin'
+*
+* @example
+* var out = removeLast( 'presidential election', 1 );
+* // returns 'presidential electio'
+*
+* @example
+* var out = removeLast( 'JavaScript', 1 );
+* // returns 'JavaScrip'
+*
+* @example
+* var out = removeLast( 'Hidden Treasures', 1 );
+* // returns 'Hidden Treasure'
+*/
+function removeLast( str, n ) {
+ var len;
+ var ch1;
+ var ch2;
+ var cnt;
+ var i;
+ if ( n === 0 ) {
+ return str;
+ }
+ len = str.length;
+ cnt = 0;
+
+ // Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...
+ for ( i = len - 1; i >= 0; i-- ) {
+ ch1 = str[ i ];
+ cnt += 1;
+
+ // Check for a low UTF-16 surrogate...
+ if ( RE_UTF16_LOW_SURROGATE.test( ch1 ) ) {
+ // Check for an unpaired surrogate at the end of the input string...
+ if ( i === 0 ) {
+ // We found an unpaired surrogate...
+ break;
+ }
+ // Check whether the high surrogate is paired with a low surrogate...
+ ch2 = str[ i-1 ];
+ if ( RE_UTF16_HIGH_SURROGATE.test( ch2 ) ) {
+ // We found a surrogate pair:
+ i -= 1; // bump the index to process the next code unit
+ }
+ }
+ // Check whether we've found the desired number of code points...
+ if ( cnt === n ) {
+ break;
+ }
+ }
+ return str.substring( 0, i );
+}
+
+
+// EXPORTS //
+
+module.exports = removeLast;
diff --git a/base/remove-last-code-point/package.json b/base/remove-last-code-point/package.json
new file mode 100644
index 00000000..b0450658
--- /dev/null
+++ b/base/remove-last-code-point/package.json
@@ -0,0 +1,67 @@
+{
+ "name": "@stdlib/string/base/remove-last-code-point",
+ "version": "0.0.0",
+ "description": "Remove the last Unicode code point of a string.",
+ "license": "Apache-2.0",
+ "author": {
+ "name": "The Stdlib Authors",
+ "url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
+ },
+ "contributors": [
+ {
+ "name": "The Stdlib Authors",
+ "url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
+ }
+ ],
+ "main": "./lib",
+ "directories": {
+ "benchmark": "./benchmark",
+ "doc": "./docs",
+ "example": "./examples",
+ "lib": "./lib",
+ "test": "./test"
+ },
+ "types": "./docs/types",
+ "scripts": {},
+ "homepage": "https://github.com/stdlib-js/stdlib",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/stdlib-js/stdlib.git"
+ },
+ "bugs": {
+ "url": "https://github.com/stdlib-js/stdlib/issues"
+ },
+ "dependencies": {},
+ "devDependencies": {},
+ "engines": {
+ "node": ">=0.10.0",
+ "npm": ">2.7.0"
+ },
+ "os": [
+ "aix",
+ "darwin",
+ "freebsd",
+ "linux",
+ "macos",
+ "openbsd",
+ "sunos",
+ "win32",
+ "windows"
+ ],
+ "keywords": [
+ "stdlib",
+ "stdstring",
+ "utilities",
+ "utility",
+ "utils",
+ "util",
+ "string",
+ "str",
+ "base",
+ "last",
+ "character",
+ "char",
+ "codepoint",
+ "unicode"
+ ]
+}
diff --git a/base/remove-last-code-point/test/test.js b/base/remove-last-code-point/test/test.js
new file mode 100644
index 00000000..a25545e3
--- /dev/null
+++ b/base/remove-last-code-point/test/test.js
@@ -0,0 +1,108 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var tape = require( 'tape' );
+var removeLast = require( './../lib' );
+
+
+// TESTS //
+
+tape( 'main export is a function', function test( t ) {
+ t.ok( true, __filename );
+ t.strictEqual( typeof removeLast, 'function', 'main export is a function' );
+ t.end();
+});
+
+tape( 'the function returns an empty string if provided an empty string', function test( t ) {
+ t.strictEqual( removeLast( '', 1 ), '', 'returns expected value' );
+ t.strictEqual( removeLast( '', 2 ), '', 'returns expected value' );
+ t.strictEqual( removeLast( '', 3 ), '', 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns the input string if provided zero as the second argument', function test( t ) {
+ t.strictEqual( removeLast( 'hello world', 0 ), 'hello world', 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function removes the last Unicode code point of a provided string (ascii)', function test( t ) {
+ var out;
+
+ out = removeLast( 'hello world', 1 );
+ t.strictEqual( out, 'hello worl', 'returns expected value' );
+
+ out = removeLast( '!!!', 1 );
+ t.strictEqual( out, '!!', 'returns expected value' );
+
+ out = removeLast( 'Hello World', 1 );
+ t.strictEqual( out, 'Hello Worl', 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function removes the last Unicode code point of a provided string (Unicode)', function test( t ) {
+ var out;
+
+ out = removeLast( 'अनुच्छेद', 1 );
+ t.strictEqual( out, 'अनुच्छे', 'returns expected value' );
+
+ out = removeLast( '六书/六書', 1 );
+ t.strictEqual( out, '六书/六', 'returns expected value' );
+
+ out = removeLast( '𐒻𐓟', 1 );
+ t.strictEqual( out, '𐒻', 'returns expected value' );
+
+ out = removeLast( '𐒻𐓟', 1 );
+ t.strictEqual( out, '𐒻', 'returns expected value' );
+
+ out = removeLast( '\uDC00', 1 );
+ t.strictEqual( out, '', 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function supports removing the last `n` Unicode code points of a provided string', function test( t ) {
+ var out;
+
+ out = removeLast( 'hello world', 1 );
+ t.strictEqual( out, 'hello worl', 'returns expected value' );
+
+ out = removeLast( 'hello world', 7 );
+ t.strictEqual( out, 'hell', 'returns expected value' );
+
+ out = removeLast( '!!!', 1 );
+ t.strictEqual( out, '!!', 'returns expected value' );
+
+ out = removeLast( '!!!', 2 );
+ t.strictEqual( out, '!', 'returns expected value' );
+
+ out = removeLast( 'अनुच्छेद', 1 );
+ t.strictEqual( out, 'अनुच्छे', 'returns expected value' );
+
+ out = removeLast( '六书/六書', 3 );
+ t.strictEqual( out, '六书', 'returns expected value' );
+
+ out = removeLast( '𐒻𐓟𐓟', 2 );
+ t.strictEqual( out, '𐒻', 'returns expected value' );
+
+ t.end();
+});
diff --git a/base/remove-last-grapheme-cluster/README.md b/base/remove-last-grapheme-cluster/README.md
new file mode 100644
index 00000000..18938ce0
--- /dev/null
+++ b/base/remove-last-grapheme-cluster/README.md
@@ -0,0 +1,104 @@
+
+
+# removeLastGraphemeCluster
+
+> Remove the last `n` grapheme clusters (i.e., user-perceived characters) of a string.
+
+
+
+## Usage
+
+
+
+```javascript
+var removeLastGraphemeCluster = require( '@stdlib/string/base/remove-last-grapheme-cluster' );
+```
+
+#### removeLastGraphemeCluster( str, n )
+
+Removes the last `n` grapheme clusters (i.e., user-perceived characters) of a string.
+
+
+
+```javascript
+var out = removeLastGraphemeCluster( 'last man standing', 1 );
+// returns 'last man standin'
+
+out = removeLastGraphemeCluster( 'Hidden Treasures', 1 );
+// returns 'Hidden Treasure'
+
+out = removeLastGraphemeCluster( 'foo bar', 5 );
+// returns 'fo'
+
+out = removeLastGraphemeCluster( 'foo bar', 10 );
+// returns ''
+```
+
+
+
+
+
+
+
+## Examples
+
+
+
+
+
+```javascript
+var removeLastGraphemeCluster = require( '@stdlib/string/base/remove-last-grapheme-cluster' );
+
+var str = removeLastGraphemeCluster( 'presidential election', 1 );
+// returns 'presidential electio'
+
+str = removeLastGraphemeCluster( 'JavaScript', 1 );
+// returns 'JavaScrip'
+
+str = removeLastGraphemeCluster( 'The Last of the Mohicans', 5 );
+// returns 'The Last of the Moh'
+
+str = removeLastGraphemeCluster( '🐶🐮🐷🐰🐸', 2 );
+// returns '🐶🐮🐷'
+
+str = removeLastGraphemeCluster( '🐶🐮🐷🐰🐸', 10 );
+// returns ''
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/base/remove-last-grapheme-cluster/benchmark/benchmark.js b/base/remove-last-grapheme-cluster/benchmark/benchmark.js
new file mode 100644
index 00000000..1f34ea03
--- /dev/null
+++ b/base/remove-last-grapheme-cluster/benchmark/benchmark.js
@@ -0,0 +1,56 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var isString = require( '@stdlib/assert/is-string' ).isPrimitive;
+var pkg = require( './../package.json' ).name;
+var removeLast = require( './../lib' );
+
+
+// MAIN //
+
+bench( pkg, function benchmark( b ) {
+ var values;
+ var out;
+ var i;
+
+ values = [
+ 'beep boop',
+ 'foo bar',
+ 'xyz abc',
+ '🐶🐮🐷🐰🐸'
+ ];
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ out = removeLast( values[ i%values.length ], 1 );
+ if ( typeof out !== 'string' ) {
+ b.fail( 'should return a string' );
+ }
+ }
+ b.toc();
+ if ( !isString( out ) ) {
+ b.fail( 'should return a string' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+});
diff --git a/base/remove-last-grapheme-cluster/docs/repl.txt b/base/remove-last-grapheme-cluster/docs/repl.txt
new file mode 100644
index 00000000..24ce266c
--- /dev/null
+++ b/base/remove-last-grapheme-cluster/docs/repl.txt
@@ -0,0 +1,30 @@
+
+{{alias}}( str, n )
+ Removes the last `n` grapheme clusters (i.e., user-perceived characters)
+ of a string.
+
+ Parameters
+ ----------
+ str: string
+ Input string.
+
+ n: integer
+ Number of grapheme clusters to remove.
+
+ Returns
+ -------
+ out: string
+ Output string.
+
+ Examples
+ --------
+ > var out = {{alias}}( 'beep', 1 )
+ 'bee'
+ > out = {{alias}}( 'Boop', 1 )
+ 'Boo'
+ > out = {{alias}}( 'foo bar', 5 )
+ 'fo'
+
+ See Also
+ --------
+
diff --git a/base/remove-last-grapheme-cluster/docs/types/index.d.ts b/base/remove-last-grapheme-cluster/docs/types/index.d.ts
new file mode 100644
index 00000000..bcefff04
--- /dev/null
+++ b/base/remove-last-grapheme-cluster/docs/types/index.d.ts
@@ -0,0 +1,57 @@
+/*
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+// TypeScript Version: 2.0
+
+/**
+* Removes the last `n` grapheme clusters (i.e., user-perceived characters) of a string.
+*
+* @param str - input string
+* @param n - number of grapheme clusters to remove
+* @returns output string
+*
+* @example
+* var out = removeLast( 'last man standing', 1 );
+* // returns 'last man standin'
+*
+* @example
+* var out = removeLast( 'presidential election', 1 );
+* // returns 'presidential electio'
+*
+* @example
+* var out = removeLast( 'JavaScript', 1 );
+* // returns 'JavaScrip'
+*
+* @example
+* var out = removeLast( 'Hidden Treasures', 1 );
+* // returns 'Hidden Treasure'
+*
+* @example
+* var out = removeLast( '🐶🐮🐷🐰🐸', 2 );
+* // returns '🐶🐮🐷'
+*
+* @example
+* var out = removeLast( 'foo bar', 5 );
+* // returns 'fo'
+*/
+declare function removeLast( str: string, n: number ): string;
+
+
+// EXPORTS //
+
+export = removeLast;
diff --git a/base/remove-last-grapheme-cluster/docs/types/test.ts b/base/remove-last-grapheme-cluster/docs/types/test.ts
new file mode 100644
index 00000000..fd426d23
--- /dev/null
+++ b/base/remove-last-grapheme-cluster/docs/types/test.ts
@@ -0,0 +1,57 @@
+/*
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+import removeLast = require( './index' );
+
+
+// TESTS //
+
+// The function returns a string...
+{
+ removeLast( 'abc', 1 ); // $ExpectType string
+}
+
+// The compiler throws an error if the function is provided a value other than a string...
+{
+ removeLast( true, 1 ); // $ExpectError
+ removeLast( false, 1 ); // $ExpectError
+ removeLast( null, 1 ); // $ExpectError
+ removeLast( undefined, 1 ); // $ExpectError
+ removeLast( 5, 1 ); // $ExpectError
+ removeLast( [], 1 ); // $ExpectError
+ removeLast( {}, 1 ); // $ExpectError
+ removeLast( ( x: number ): number => x, 1 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a second argument that is not a number...
+{
+ removeLast( 'abc', true ); // $ExpectError
+ removeLast( 'abc', false ); // $ExpectError
+ removeLast( 'abc', null ); // $ExpectError
+ removeLast( 'abc', 'abc' ); // $ExpectError
+ removeLast( 'abc', [] ); // $ExpectError
+ removeLast( 'abc', {} ); // $ExpectError
+ removeLast( 'abc', ( x: number ): number => x ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided an unsupported number of arguments...
+{
+ removeLast(); // $ExpectError
+ removeLast( 'abc' ); // $ExpectError
+ removeLast( 'abc', 1, 2 ); // $ExpectError
+}
diff --git a/base/remove-last-grapheme-cluster/examples/index.js b/base/remove-last-grapheme-cluster/examples/index.js
new file mode 100644
index 00000000..eb2a0ca8
--- /dev/null
+++ b/base/remove-last-grapheme-cluster/examples/index.js
@@ -0,0 +1,36 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+var removeLastGraphemeCluster = require( './../lib' );
+
+console.log( removeLastGraphemeCluster( 'presidential election', 1 ) );
+// => 'presidential electio'
+
+console.log( removeLastGraphemeCluster( 'JavaScript', 1 ) );
+// => 'JavaScrip'
+
+console.log( removeLastGraphemeCluster( 'The Last of the Mohicans', 5 ) );
+// => 'The Last of the Moh'
+
+console.log( removeLastGraphemeCluster( '🐶🐮🐷🐰🐸', 2 ) );
+// => '🐶🐮🐷'
+
+console.log( removeLastGraphemeCluster( '🐶🐮🐷🐰🐸', 10 ) );
+// => ''
diff --git a/base/remove-last-grapheme-cluster/lib/index.js b/base/remove-last-grapheme-cluster/lib/index.js
new file mode 100644
index 00000000..4d1b2cd7
--- /dev/null
+++ b/base/remove-last-grapheme-cluster/lib/index.js
@@ -0,0 +1,46 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+/**
+* Remove the last `n` grapheme clusters (i.e., user-perceived characters) of a string.
+*
+* @module @stdlib/string/base/remove-last-grapheme-cluster
+*
+* @example
+* var removeLast = require( '@stdlib/string/base/remove-last-grapheme-cluster' );
+*
+* var out = removeLast( 'last man standing', 1 );
+* // returns 'last man standin'
+*
+* out = removeLast( 'Hidden Treasures', 1 );
+* // returns 'Hidden Treasure';
+*
+* out = removeLast( '🐮🐷🐸🐵', 2 );
+* // returns '🐮🐷'
+*/
+
+// MODULES //
+
+var main = require( './main.js' );
+
+
+// EXPORTS //
+
+module.exports = main;
diff --git a/base/remove-last-grapheme-cluster/lib/main.js b/base/remove-last-grapheme-cluster/lib/main.js
new file mode 100644
index 00000000..bda387d6
--- /dev/null
+++ b/base/remove-last-grapheme-cluster/lib/main.js
@@ -0,0 +1,86 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var nextGraphemeClusterBreak = require('./../../../next-grapheme-cluster-break');
+var numGraphemeClusters = require( './../../../num-grapheme-clusters' );
+
+
+// MAIN //
+
+/**
+* Removes the last `n` grapheme clusters (i.e., user-perceived characters) of a string.
+*
+* @param {string} str - input string
+* @param {NonNegativeInteger} n - number of grapheme clusters to remove
+* @returns {string} output string
+*
+* @example
+* var out = removeLast( 'last man standing', 1 );
+* // returns 'last man standin'
+*
+* @example
+* var out = removeLast( 'presidential election', 1 );
+* // returns 'presidential electio'
+*
+* @example
+* var out = removeLast( 'JavaScript', 1 );
+* // returns 'JavaScrip'
+*
+* @example
+* var out = removeLast( 'Hidden Treasures', 1 );
+* // returns 'Hidden Treasure'
+*
+* @example
+* var out = removeLast( '🐶🐮🐷🐰🐸', 2 );
+* // returns '🐶🐮🐷'
+*
+* @example
+* var out = removeLast( 'foo bar', 5 );
+* // returns 'fo'
+*/
+function removeLast( str, n ) {
+ var total;
+ var num;
+ var i;
+
+ if ( n === 0 ) {
+ return str;
+ }
+
+ total = numGraphemeClusters( str );
+ if ( str === '' || total < n ) {
+ return '';
+ }
+
+ i = 0;
+ num = 0;
+ while ( num < total - n ) {
+ i = nextGraphemeClusterBreak( str, i );
+ num += 1;
+ }
+ return str.substring( 0, i );
+}
+
+
+// EXPORTS //
+
+module.exports = removeLast;
diff --git a/base/remove-last-grapheme-cluster/package.json b/base/remove-last-grapheme-cluster/package.json
new file mode 100644
index 00000000..8d11cb71
--- /dev/null
+++ b/base/remove-last-grapheme-cluster/package.json
@@ -0,0 +1,68 @@
+{
+ "name": "@stdlib/string/base/remove-last-grapheme-cluster",
+ "version": "0.0.0",
+ "description": "Remove the last grapheme cluster (i.e., user-perceived character) of a string.",
+ "license": "Apache-2.0",
+ "author": {
+ "name": "The Stdlib Authors",
+ "url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
+ },
+ "contributors": [
+ {
+ "name": "The Stdlib Authors",
+ "url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
+ }
+ ],
+ "main": "./lib",
+ "directories": {
+ "benchmark": "./benchmark",
+ "doc": "./docs",
+ "example": "./examples",
+ "lib": "./lib",
+ "test": "./test"
+ },
+ "types": "./docs/types",
+ "scripts": {},
+ "homepage": "https://github.com/stdlib-js/stdlib",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/stdlib-js/stdlib.git"
+ },
+ "bugs": {
+ "url": "https://github.com/stdlib-js/stdlib/issues"
+ },
+ "dependencies": {},
+ "devDependencies": {},
+ "engines": {
+ "node": ">=0.10.0",
+ "npm": ">2.7.0"
+ },
+ "os": [
+ "aix",
+ "darwin",
+ "freebsd",
+ "linux",
+ "macos",
+ "openbsd",
+ "sunos",
+ "win32",
+ "windows"
+ ],
+ "keywords": [
+ "stdlib",
+ "stdstring",
+ "utilities",
+ "utility",
+ "utils",
+ "util",
+ "string",
+ "str",
+ "base",
+ "last",
+ "character",
+ "char",
+ "grapheme",
+ "cluster",
+ "unicode"
+ ]
+}
diff --git a/base/remove-last-grapheme-cluster/test/test.js b/base/remove-last-grapheme-cluster/test/test.js
new file mode 100644
index 00000000..9224525c
--- /dev/null
+++ b/base/remove-last-grapheme-cluster/test/test.js
@@ -0,0 +1,114 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var tape = require( 'tape' );
+var removeLast = require( './../lib' );
+
+
+// TESTS //
+
+tape( 'main export is a function', function test( t ) {
+ t.ok( true, __filename );
+ t.strictEqual( typeof removeLast, 'function', 'main export is a function' );
+ t.end();
+});
+
+tape( 'the function returns an empty string if provided an empty string', function test( t ) {
+ t.strictEqual( removeLast( '', 1 ), '', 'returns expected value' );
+ t.strictEqual( removeLast( '', 2 ), '', 'returns expected value' );
+ t.strictEqual( removeLast( '', 3 ), '', 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns the input string if provided zero as the second argument', function test( t ) {
+ t.strictEqual( removeLast( 'hello world', 0 ), 'hello world', 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function removes the last grapheme cluster of a provided string (ascii)', function test( t ) {
+ var out;
+
+ out = removeLast( 'hello world', 1 );
+ t.strictEqual( out, 'hello worl', 'returns expected value' );
+
+ out = removeLast( '!!!', 1 );
+ t.strictEqual( out, '!!', 'returns expected value' );
+
+ out = removeLast( 'Hello World', 1 );
+ t.strictEqual( out, 'Hello Worl', 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function removes the last grapheme cluster of a provided string (Unicode)', function test( t ) {
+ var out;
+
+ out = removeLast( 'अनुच्छेद', 1 );
+ t.strictEqual( out, 'अनुच्छे', 'returns expected value' );
+
+ out = removeLast( '六书/六書', 1 );
+ t.strictEqual( out, '六书/六', 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function removes the last grapheme cluster of a provided string (emoji)', function test( t ) {
+ var out;
+
+ out = removeLast( '🌷', 1 );
+ t.strictEqual( out, '', 'returns expected value' );
+
+ out = removeLast( '🏝️🌷', 1 );
+ t.strictEqual( out, '🏝️', 'returns expected value' );
+
+ out = removeLast( '👉🏿', 1 );
+ t.strictEqual( out, '', 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function supports removing the last `n` grapheme clusters of a provided string', function test( t ) {
+ var out;
+
+ out = removeLast( 'hello world', 1 );
+ t.strictEqual( out, 'hello worl', 'returns expected value' );
+
+ out = removeLast( 'hello world', 7 );
+ t.strictEqual( out, 'hell', 'returns expected value' );
+
+ out = removeLast( '!!!', 1 );
+ t.strictEqual( out, '!!', 'returns expected value' );
+
+ out = removeLast( '!!!', 2 );
+ t.strictEqual( out, '!', 'returns expected value' );
+
+ out = removeLast( 'अनुच्छेद', 1 );
+ t.strictEqual( out, 'अनुच्छे', 'returns expected value' );
+
+ out = removeLast( '六书/六書', 1 );
+ t.strictEqual( out, '六书/六', 'returns expected value' );
+
+ out = removeLast( '🌷🌷🌷🌷🌷', 2 );
+ t.strictEqual( out, '🌷🌷🌷', 'returns expected value' );
+
+ t.end();
+});
diff --git a/base/remove-last/README.md b/base/remove-last/README.md
new file mode 100644
index 00000000..22fef865
--- /dev/null
+++ b/base/remove-last/README.md
@@ -0,0 +1,92 @@
+
+
+# removeLast
+
+> Remove the last `n` UTF-16 code units of a string.
+
+
+
+## Usage
+
+```javascript
+var removeLast = require( '@stdlib/string/base/remove-last' );
+```
+
+#### removeLast( str, n )
+
+Removes the last `n` UTF-16 code units of a string.
+
+```javascript
+var out = removeLast( 'last man standing', 1 );
+// returns 'last man standin'
+
+out = removeLast( 'Hidden Treasures', 1 );
+// returns 'Hidden Treasure'
+
+out = removeLast( 'foo bar', 5 );
+// returns 'fo'
+
+out = removeLast( 'foo bar', 10 );
+// returns ''
+```
+
+
+
+
+
+
+
+## Examples
+
+
+
+```javascript
+var removeLast = require( '@stdlib/string/base/remove-last' );
+
+var str = removeLast( 'presidential election', 1 );
+// returns 'presidential electio'
+
+str = removeLast( 'JavaScript', 1 );
+// returns 'JavaScrip'
+
+str = removeLast( 'The Last of the Mohicans', 5 );
+// returns 'The Last of the Moh'
+```
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/base/remove-last/benchmark/benchmark.js b/base/remove-last/benchmark/benchmark.js
new file mode 100644
index 00000000..1f34ea03
--- /dev/null
+++ b/base/remove-last/benchmark/benchmark.js
@@ -0,0 +1,56 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var bench = require( '@stdlib/bench' );
+var isString = require( '@stdlib/assert/is-string' ).isPrimitive;
+var pkg = require( './../package.json' ).name;
+var removeLast = require( './../lib' );
+
+
+// MAIN //
+
+bench( pkg, function benchmark( b ) {
+ var values;
+ var out;
+ var i;
+
+ values = [
+ 'beep boop',
+ 'foo bar',
+ 'xyz abc',
+ '🐶🐮🐷🐰🐸'
+ ];
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ out = removeLast( values[ i%values.length ], 1 );
+ if ( typeof out !== 'string' ) {
+ b.fail( 'should return a string' );
+ }
+ }
+ b.toc();
+ if ( !isString( out ) ) {
+ b.fail( 'should return a string' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+});
diff --git a/base/remove-last/docs/repl.txt b/base/remove-last/docs/repl.txt
new file mode 100644
index 00000000..ef06292c
--- /dev/null
+++ b/base/remove-last/docs/repl.txt
@@ -0,0 +1,29 @@
+
+{{alias}}( str, n )
+ Removes the last `n` UTF-16 code units of a string.
+
+ Parameters
+ ----------
+ str: string
+ Input string.
+
+ n: integer
+ Number of UTF-16 code units to remove.
+
+ Returns
+ -------
+ out: string
+ Output string.
+
+ Examples
+ --------
+ > var out = {{alias}}( 'beep', 1 )
+ 'bee'
+ > out = {{alias}}( 'Boop', 1 )
+ 'Boo'
+ > out = {{alias}}( 'foo bar', 5 )
+ 'fo'
+
+ See Also
+ --------
+
diff --git a/base/remove-last/docs/types/index.d.ts b/base/remove-last/docs/types/index.d.ts
new file mode 100644
index 00000000..025f444e
--- /dev/null
+++ b/base/remove-last/docs/types/index.d.ts
@@ -0,0 +1,53 @@
+/*
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+// TypeScript Version: 2.0
+
+/**
+* Removes the last `n` UTF-16 code units of a string.
+*
+* @param str - input string
+* @param n - number of code units to remove
+* @returns output string
+*
+* @example
+* var out = removeLast( 'last man standing', 1 );
+* // returns 'last man standin'
+*
+* @example
+* var out = removeLast( 'presidential election', 1 );
+* // returns 'presidential electio'
+*
+* @example
+* var out = removeLast( 'JavaScript', 1 );
+* // returns 'JavaScrip'
+*
+* @example
+* var out = removeLast( 'Hidden Treasures', 1 );
+* // returns 'Hidden Treasure'
+*
+* @example
+* var out = removeLast( 'foo bar', 5 );
+* // returns 'fo'
+*/
+declare function removeLast( str: string, n: number ): string;
+
+
+// EXPORTS //
+
+export = removeLast;
diff --git a/base/remove-last/docs/types/test.ts b/base/remove-last/docs/types/test.ts
new file mode 100644
index 00000000..fd426d23
--- /dev/null
+++ b/base/remove-last/docs/types/test.ts
@@ -0,0 +1,57 @@
+/*
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+import removeLast = require( './index' );
+
+
+// TESTS //
+
+// The function returns a string...
+{
+ removeLast( 'abc', 1 ); // $ExpectType string
+}
+
+// The compiler throws an error if the function is provided a value other than a string...
+{
+ removeLast( true, 1 ); // $ExpectError
+ removeLast( false, 1 ); // $ExpectError
+ removeLast( null, 1 ); // $ExpectError
+ removeLast( undefined, 1 ); // $ExpectError
+ removeLast( 5, 1 ); // $ExpectError
+ removeLast( [], 1 ); // $ExpectError
+ removeLast( {}, 1 ); // $ExpectError
+ removeLast( ( x: number ): number => x, 1 ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided a second argument that is not a number...
+{
+ removeLast( 'abc', true ); // $ExpectError
+ removeLast( 'abc', false ); // $ExpectError
+ removeLast( 'abc', null ); // $ExpectError
+ removeLast( 'abc', 'abc' ); // $ExpectError
+ removeLast( 'abc', [] ); // $ExpectError
+ removeLast( 'abc', {} ); // $ExpectError
+ removeLast( 'abc', ( x: number ): number => x ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided an unsupported number of arguments...
+{
+ removeLast(); // $ExpectError
+ removeLast( 'abc' ); // $ExpectError
+ removeLast( 'abc', 1, 2 ); // $ExpectError
+}
diff --git a/base/remove-last/examples/index.js b/base/remove-last/examples/index.js
new file mode 100644
index 00000000..b56142f0
--- /dev/null
+++ b/base/remove-last/examples/index.js
@@ -0,0 +1,30 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+var removeLast = require( './../lib' );
+
+console.log( removeLast( 'presidential election', 1 ) );
+// => 'presidential electio'
+
+console.log( removeLast( 'JavaScript', 1 ) );
+// => 'JavaScrip'
+
+console.log( removeLast( 'The Last of the Mohicans', 5 ) );
+// => 'The Last of the Moh'
diff --git a/base/remove-last/lib/index.js b/base/remove-last/lib/index.js
new file mode 100644
index 00000000..bac319eb
--- /dev/null
+++ b/base/remove-last/lib/index.js
@@ -0,0 +1,43 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+/**
+* Remove the last `n` UTF-16 code units of a string.
+*
+* @module @stdlib/string/base/remove-last
+*
+* @example
+* var removeLast = require( '@stdlib/string/base/remove-last' );
+*
+* var out = removeLast( 'last man standing', 1 );
+* // returns 'last man standin'
+*
+* out = removeLast( 'Hidden Treasures', 1 );
+* // returns 'Hidden Treasure';
+*/
+
+// MODULES //
+
+var main = require( './main.js' );
+
+
+// EXPORTS //
+
+module.exports = main;
diff --git a/base/remove-last/lib/main.js b/base/remove-last/lib/main.js
new file mode 100644
index 00000000..2bf0fb1c
--- /dev/null
+++ b/base/remove-last/lib/main.js
@@ -0,0 +1,53 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MAIN //
+
+/**
+* Removes the last `n` UTF-16 code units of a string.
+*
+* @param {string} str - input string
+* @param {NonNegativeInteger} n - number of UTF-16 code units to remove
+* @returns {string} output string
+*
+* @example
+* var out = removeLast( 'last man standing', 1 );
+* // returns 'last man standin'
+*
+* @example
+* var out = removeLast( 'presidential election', 1 );
+* // returns 'presidential electio'
+*
+* @example
+* var out = removeLast( 'JavaScript', 1 );
+* // returns 'JavaScrip'
+*
+* @example
+* var out = removeLast( 'Hidden Treasures', 1 );
+* // returns 'Hidden Treasure'
+*/
+function removeLast( str, n ) {
+ return str.substring( 0, str.length - n );
+}
+
+
+// EXPORTS //
+
+module.exports = removeLast;
diff --git a/base/remove-last/package.json b/base/remove-last/package.json
new file mode 100644
index 00000000..be0d590d
--- /dev/null
+++ b/base/remove-last/package.json
@@ -0,0 +1,67 @@
+{
+ "name": "@stdlib/string/base/remove-last",
+ "version": "0.0.0",
+ "description": "Remove the last UTF-16 code unit of a string.",
+ "license": "Apache-2.0",
+ "author": {
+ "name": "The Stdlib Authors",
+ "url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
+ },
+ "contributors": [
+ {
+ "name": "The Stdlib Authors",
+ "url": "https://github.com/stdlib-js/stdlib/graphs/contributors"
+ }
+ ],
+ "main": "./lib",
+ "directories": {
+ "benchmark": "./benchmark",
+ "doc": "./docs",
+ "example": "./examples",
+ "lib": "./lib",
+ "test": "./test"
+ },
+ "types": "./docs/types",
+ "scripts": {},
+ "homepage": "https://github.com/stdlib-js/stdlib",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/stdlib-js/stdlib.git"
+ },
+ "bugs": {
+ "url": "https://github.com/stdlib-js/stdlib/issues"
+ },
+ "dependencies": {},
+ "devDependencies": {},
+ "engines": {
+ "node": ">=0.10.0",
+ "npm": ">2.7.0"
+ },
+ "os": [
+ "aix",
+ "darwin",
+ "freebsd",
+ "linux",
+ "macos",
+ "openbsd",
+ "sunos",
+ "win32",
+ "windows"
+ ],
+ "keywords": [
+ "stdlib",
+ "stdstring",
+ "utilities",
+ "utility",
+ "utils",
+ "util",
+ "string",
+ "str",
+ "base",
+ "last",
+ "character",
+ "char",
+ "codeunit",
+ "unicode"
+ ]
+}
diff --git a/base/remove-last/test/test.js b/base/remove-last/test/test.js
new file mode 100644
index 00000000..9bb74610
--- /dev/null
+++ b/base/remove-last/test/test.js
@@ -0,0 +1,78 @@
+/**
+* @license Apache-2.0
+*
+* Copyright (c) 2023 The Stdlib Authors.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+
+'use strict';
+
+// MODULES //
+
+var tape = require( 'tape' );
+var removeLast = require( './../lib' );
+
+
+// TESTS //
+
+tape( 'main export is a function', function test( t ) {
+ t.ok( true, __filename );
+ t.strictEqual( typeof removeLast, 'function', 'main export is a function' );
+ t.end();
+});
+
+tape( 'the function returns an empty string if provided an empty string', function test( t ) {
+ t.strictEqual( removeLast( '', 1 ), '', 'returns expected value' );
+ t.strictEqual( removeLast( '', 2 ), '', 'returns expected value' );
+ t.strictEqual( removeLast( '', 3 ), '', 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns the input string if provided zero as the second argument', function test( t ) {
+ t.strictEqual( removeLast( 'hello world', 0 ), 'hello world', 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function removes the last UTF-16 code unit from a provided string', function test( t ) {
+ var out;
+
+ out = removeLast( 'hello world', 1 );
+ t.strictEqual( out, 'hello worl', 'returns expected value' );
+
+ out = removeLast( '!!!', 1 );
+ t.strictEqual( out, '!!', 'returns expected value' );
+
+ out = removeLast( 'Hello World', 1 );
+ t.strictEqual( out, 'Hello Worl', 'returns expected value' );
+
+ t.end();
+});
+
+tape( 'the function supports removing the last `n` UTF-16 code units of a provided string', function test( t ) {
+ var out;
+
+ out = removeLast( 'hello world', 1 );
+ t.strictEqual( out, 'hello worl', 'returns expected value' );
+
+ out = removeLast( 'hello world', 7 );
+ t.strictEqual( out, 'hell', 'returns expected value' );
+
+ out = removeLast( '!!!', 1 );
+ t.strictEqual( out, '!!', 'returns expected value' );
+
+ out = removeLast( '!!!', 2 );
+ t.strictEqual( out, '!', 'returns expected value' );
+
+ t.end();
+});
diff --git a/dist/index.js b/dist/index.js
index 7266d65a..fdf45b55 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -1,4 +1,4 @@
-"use strict";var n=function(r,i){return function(){return i||r((i={exports:{}}).exports,i),i.exports}};var sr=n(function(KD,w0){"use strict";function ie(r){return typeof r=="number"}w0.exports=ie});var er=n(function(oD,y0){"use strict";function xe(r){return r[0]==="-"}function b0(r){var i="",t;for(t=0;t0&&(i-=1),t=x.toExponential(i)):t=x.toPrecision(r.precision),r.alternate||(t=y.call(t,De,"$1e"),t=y.call(t,Ae,"e"),t=y.call(t,fe,""));break;default:throw new Error("invalid double notation. Value: "+r.specifier)}return t=y.call(t,Ce,"e+0$1"),t=y.call(t,Be,"e-0$1"),r.alternate&&(t=y.call(t,le,"$1."),t=y.call(t,ge,"$1.e")),x>=0&&r.sign&&(t=r.sign+t),t=r.specifier===L0.call(r.specifier)?L0.call(t):ve.call(t),t}O0.exports=Ee});var G0=n(function(iE,k0){"use strict";function I0(r){var i="",t;for(t=0;t127)throw new Error("invalid character code. Value: "+x.arg);x.arg=U(u)?String(x.arg):ye(u)}break;case"e":case"E":case"f":case"F":case"g":case"G":i||(x.precision=6),x.arg=qe(x);break;default:throw new Error("invalid specifier: "+x.specifier)}x.maxWidth>=0&&x.arg.length>x.maxWidth&&(x.arg=x.arg.substring(0,x.maxWidth)),x.padZeros?x.arg=be(x.arg,x.width||x.precision,x.padRight):x.width&&(x.arg=we(x.arg,x.width,x.padRight)),e+=x.arg||"",s+=1}return e}z0.exports=Se});var Fr=n(function(tE,U0){"use strict";var Pe=M0();U0.exports=Pe});var $0=n(function(aE,W0){"use strict";var W=/%(?:([1-9]\d*)\$)?([0 +\-#]*)(\*|\d+)?(?:(\.)(\*|\d+)?)?[hlL]?([%A-Za-z])/g;function Re(r){var i={mapping:r[1]?parseInt(r[1],10):void 0,flags:r[2],width:r[3],precision:r[5],specifier:r[6]};return r[4]==="."&&r[5]===void 0&&(i.precision="1"),i}function Ne(r){var i,t,x,a;for(t=[],a=0,x=W.exec(r);x;)i=r.slice(a,W.lastIndex-x[0].length),i.length&&t.push(i),t.push(Re(x)),a=W.lastIndex,x=W.exec(r);return i=r.slice(a),i.length&&t.push(i),t}W0.exports=Ne});var vr=n(function(nE,j0){"use strict";var Le=$0();j0.exports=Le});var Z0=n(function(uE,H0){"use strict";function Oe(r){return typeof r=="string"}H0.exports=Oe});var J0=n(function(sE,Q0){"use strict";var _e=Fr(),Ie=vr(),ke=Z0();function X0(r){var i,t,x;if(!ke(r))throw new TypeError(X0("invalid argument. First argument must be a string. Value: `%s`.",r));for(i=Ie(r),t=new Array(arguments.length),t[0]=i,x=1;x?`{}|~\/\\\[\]]/g;function Ke(r){if(!Xe(r))throw new TypeError(Je("invalid argument. Must provide a string. Value: `%s`.",r));return Qe(r,Ye,"")}xi.exports=Ke});var lr=n(function(gE,ai){"use strict";var oe=ti();ai.exports=oe});var ui=n(function(fE,ni){"use strict";function ce(r){return r.toUpperCase()}ni.exports=ce});var R=n(function(AE,si){"use strict";var de=ui();si.exports=de});var Fi=n(function(DE,ei){"use strict";function rF(r){return r.toLowerCase()}ei.exports=rF});var h=n(function(EE,vi){"use strict";var iF=Fi();vi.exports=iF});var li=n(function(pE,Bi){"use strict";var xF=require("@stdlib/assert/is-plain-object"),tF=require("@stdlib/assert/has-own-property"),aF=require("@stdlib/assert/is-string-array").primitives,nF=require("@stdlib/assert/is-empty-array"),Ci=v();function uF(r,i){return xF(i)?tF(i,"stopwords")&&(r.stopwords=i.stopwords,!aF(r.stopwords)&&!nF(r.stopwords))?new TypeError(Ci("invalid option. `%s` option must be an array of strings. Option: `%s`.","stopwords",r.stopwords)):null:new TypeError(Ci("invalid argument. Options argument must be an object. Value: `%s`.",i))}Bi.exports=uF});var gi=n(function(mE,sF){sF.exports=["a","all","also","although","an","and","any","are","as","at","b","be","been","but","by","c","could","d","e","each","eg","either","even","ever","ex","except","f","far","few","for","from","further","g","get","gets","given","gives","go","going","got","h","had","has","have","having","he","her","here","herself","him","himself","his","how","i","ie","if","in","into","is","it","its","itself","j","just","k","l","less","let","m","many","may","me","might","must","my","myself","n","need","needs","next","no","non","not","now","o","of","off","old","on","once","only","or","our","out","p","per","put","q","r","s","same","shall","she","should","since","so","such","sure","t","than","that","the","their","them","then","there","these","they","this","those","though","thus","to","too","u","us","v","w","was","we","well","went","were","what","when","where","which","who","whose","why","will","would","x","y","yet","z"]});var Ai=n(function(hE,fi){"use strict";var eF=lr(),FF=require("@stdlib/nlp/tokenize"),vF=p(),CF=R(),BF=h(),lF=require("@stdlib/assert/is-string").isPrimitive,gF=require("@stdlib/array/base/assert/contains").factory,fF=v(),AF=li(),DF=gi(),EF=/-/g;function pF(r,i){var t,x,a,u,e,s;if(!lF(r))throw new TypeError(fF("invalid argument. First argument must be a string. Value: `%s`.",r));if(a={},arguments.length>1&&(u=AF(a,i),u))throw u;for(t=gF(a.stopwords||DF),r=eF(r),r=vF(r,EF," "),x=FF(r),e="",s=0;s?`{}|~\/\\\[\]_#$*&^@%]+/g,WF=/(?:\s|^)([^\s]+)(?=\s|$)/g,$F=/([a-z0-9])([A-Z])/g;function jF(r,i,t){return i=GF(i),t===0?i:kF(i)}function HF(r){return r=$(r,UF," "),r=$(r,MF," "),r=$(r,$F,"$1 $2"),r=zF(r),$(r,WF,jF)}_i.exports=HF});var Ar=n(function(LE,ki){"use strict";var ZF=Ii();ki.exports=ZF});var $i=n(function(OE,Wi){"use strict";var Gi=65536,zi=1024,j=55296,Mi=56319,H=56320,Ui=57343;function XF(r,i,t){var x,a,u;return i<0&&(i+=r.length),x=r.charCodeAt(i),x>=j&&x<=Mi&&i=H&&x<=Ui&&i>=1?(u=r.charCodeAt(i-1),a=x,j<=u&&u<=Mi?(u-j)*zi+(a-H)+Gi:a):x}Wi.exports=XF});var Dr=n(function(_E,ji){"use strict";var QF=$i();ji.exports=QF});var Zi=n(function(IE,Hi){"use strict";var JF=R(),Er=p(),YF=q(),KF=/\s+/g,oF=/[\-!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,cF=/([a-z0-9])([A-Z])/g;function dF(r){return r=Er(r,oF," "),r=Er(r,cF,"$1 $2"),r=YF(r),r=Er(r,KF,"_"),JF(r)}Hi.exports=dF});var pr=n(function(kE,Xi){"use strict";var rv=Zi();Xi.exports=rv});var oi=n(function(GE,Ki){"use strict";var Qi=require("@stdlib/assert/is-string").isPrimitive,Ji=v(),Yi=require("@stdlib/math/base/special/min");function iv(r,i){var t,x,a,u,e,s,F,g;if(!Qi(r))throw new TypeError(Ji("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Qi(i))throw new TypeError(Ji("invalid argument. Second argument must be a string. Value: `%s`.",i));if(e=r.length,u=i.length,e===0)return u;if(u===0)return e;for(x=[],s=0;s<=u;s++)x.push(s);for(s=0;s?`{}|~\/\\\[\]_#$*&^@%]+/g,ev=/([a-z0-9])([A-Z])/g;function Fv(r){return r=mr(r,sv," "),r=mr(r,ev,"$1 $2"),r=nv(r),r=mr(r,uv,"."),av(r)}tx.exports=Fv});var hr=n(function(WE,nx){"use strict";var vv=ax();nx.exports=vv});var sx=n(function($E,ux){"use strict";var Cv=typeof String.prototype.endsWith!="undefined";ux.exports=Cv});var Fx=n(function(jE,ex){"use strict";function Bv(r,i,t){var x,a,u;if(a=i.length,t===0)return a===0;if(t<0?x=r.length+t:x=t,a===0)return!0;if(x-=a,x<0)return!1;for(u=0;ur.length?!1:gv.call(r,i,x))}Bx.exports=fv});var Z=n(function(XE,gx){"use strict";var Av=sx(),Dv=Fx(),Ev=lx(),qr;Av?qr=Ev:qr=Dv;gx.exports=qr});var Ax=n(function(QE,fx){"use strict";function pv(r,i){return r.substring(0,i)}fx.exports=pv});var wr=n(function(JE,Dx){"use strict";var mv=Ax();Dx.exports=mv});var px=n(function(YE,Ex){"use strict";var hv=require("@stdlib/regexp/utf16-surrogate-pair").REGEXP,qv=/[\uDC00-\uDFFF]/,wv=/[\uD800-\uDBFF]/;function bv(r,i){var t,x,a,u,e,s;if(r===""||i===0)return"";if(i===1)return r=r.substring(0,2),hv.test(r)?r:r[0];for(t=r.length,x="",e=0,s=0;s=r.length)throw new RangeError(X("invalid argument. Second argument must be a valid position (i.e., be within string bounds). Value: `%d`.",i));if(arguments.length>2){if(!Tv(t))throw new TypeError(X("invalid argument. Third argument must be a boolean. Value: `%s`.",t));x=t}else x=!1;return Pv(r,i,x)}hx.exports=Rv});var Q=n(function(cE,wx){"use strict";var Nv=qx();wx.exports=Nv});var L=n(function(dE,bx){"use strict";var Lv={CR:0,LF:1,Control:2,Extend:3,RegionalIndicator:4,SpacingMark:5,L:6,V:7,T:8,LV:9,LVT:10,Other:11,Prepend:12,ZWJ:13,NotBreak:0,BreakStart:1,Break:2,BreakLastRegional:3,BreakPenultimateRegional:4,ExtendedPictographic:101};bx.exports=Lv});var Sx=n(function(r2,Vx){"use strict";var l=L();function Ov(r,i,t,x){var a,u;for(t>=r.length&&(t=r.length-1),a=0,u=i;u<=t;u++)r[u]===x&&(a+=1);return a}function yx(r,i,t,x){var a;for(t>=r.length&&(t=r.length-1),a=i;a<=t;a++)if(r[a]!==x)return!1;return!0}function _v(r,i,t,x){var a;for(t>=r.length&&(t=r.length-1),a=i;a<=t;a++)if(r[a]===x)return a;return-1}function Tx(r,i,t,x){var a;for(i>=r.length-1&&(i=r.length-1),a=i;a>=t;a--)if(r[a]===x)return a;return-1}function Iv(r,i){var t,x,a,u,e,s;return e=r.length,s=e-1,a=r[s-1],x=r[s],t=i[s],u=Tx(r,s,0,l.RegionalIndicator),u>0&&a!==l.Prepend&&a!==l.RegionalIndicator&&yx(r,1,u-1,l.RegionalIndicator)?Ov(r,0,s,l.RegionalIndicator)%2===1?l.BreakLastRegional:l.BreakPenultimateRegional:a===l.CR&&x===l.LF?l.NotBreak:a===l.Control||a===l.CR||a===l.LF||x===l.Control||x===l.CR||x===l.LF?l.BreakStart:a===l.L&&(x===l.L||x===l.V||x===l.LV||x===l.LVT)||(a===l.LV||a===l.V)&&(x===l.V||x===l.T)||(a===l.LVT||a===l.T)&&x===l.T||x===l.Extend||x===l.ZWJ||x===l.SpacingMark||a===l.Prepend||(u=Tx(i,s-1,0,l.ExtendedPictographic),u>=0&&a===l.ZWJ&&t===l.ExtendedPictographic&&i[u]===l.ExtendedPictographic&&yx(r,u+1,s-2,l.Extend))?l.NotBreak:_v(r,1,s-1,l.RegionalIndicator)>=0?l.Break:a===l.RegionalIndicator&&x===l.RegionalIndicator?l.NotBreak:l.BreakStart}Vx.exports=Iv});var Nx=n(function(i2,Rx){"use strict";var Px=L();function kv(r){return r===169||r===174||r===8252||r===8265||r===8482||r===8505||8596<=r&&r<=8601||8617<=r&&r<=8618||8986<=r&&r<=8987||r===9e3||r===9096||r===9167||9193<=r&&r<=9196||9197<=r&&r<=9198||r===9199||r===9200||9201<=r&&r<=9202||r===9203||9208<=r&&r<=9210||r===9410||9642<=r&&r<=9643||r===9654||r===9664||9723<=r&&r<=9726||9728<=r&&r<=9729||9730<=r&&r<=9731||r===9732||r===9733||9735<=r&&r<=9741||r===9742||9743<=r&&r<=9744||r===9745||r===9746||9748<=r&&r<=9749||9750<=r&&r<=9751||r===9752||9753<=r&&r<=9756||r===9757||9758<=r&&r<=9759||r===9760||r===9761||9762<=r&&r<=9763||9764<=r&&r<=9765||r===9766||9767<=r&&r<=9769||r===9770||9771<=r&&r<=9773||r===9774||r===9775||9776<=r&&r<=9783||9784<=r&&r<=9785||r===9786||9787<=r&&r<=9791||r===9792||r===9793||r===9794||9795<=r&&r<=9799||9800<=r&&r<=9811||9812<=r&&r<=9822||r===9823||r===9824||9825<=r&&r<=9826||r===9827||r===9828||9829<=r&&r<=9830||r===9831||r===9832||9833<=r&&r<=9850||r===9851||9852<=r&&r<=9853||r===9854||r===9855||9856<=r&&r<=9861||9872<=r&&r<=9873||r===9874||r===9875||r===9876||r===9877||9878<=r&&r<=9879||r===9880||r===9881||r===9882||9883<=r&&r<=9884||9885<=r&&r<=9887||9888<=r&&r<=9889||9890<=r&&r<=9894||r===9895||9896<=r&&r<=9897||9898<=r&&r<=9899||9900<=r&&r<=9903||9904<=r&&r<=9905||9906<=r&&r<=9916||9917<=r&&r<=9918||9919<=r&&r<=9923||9924<=r&&r<=9925||9926<=r&&r<=9927||r===9928||9929<=r&&r<=9933||r===9934||r===9935||r===9936||r===9937||r===9938||r===9939||r===9940||9941<=r&&r<=9960||r===9961||r===9962||9963<=r&&r<=9967||9968<=r&&r<=9969||9970<=r&&r<=9971||r===9972||r===9973||r===9974||9975<=r&&r<=9977||r===9978||9979<=r&&r<=9980||r===9981||9982<=r&&r<=9985||r===9986||9987<=r&&r<=9988||r===9989||9992<=r&&r<=9996||r===9997||r===9998||r===9999||1e4<=r&&r<=10001||r===10002||r===10004||r===10006||r===10013||r===10017||r===10024||10035<=r&&r<=10036||r===10052||r===10055||r===10060||r===10062||10067<=r&&r<=10069||r===10071||r===10083||r===10084||10085<=r&&r<=10087||10133<=r&&r<=10135||r===10145||r===10160||r===10175||10548<=r&&r<=10549||11013<=r&&r<=11015||11035<=r&&r<=11036||r===11088||r===11093||r===12336||r===12349||r===12951||r===12953||126976<=r&&r<=126979||r===126980||126981<=r&&r<=127182||r===127183||127184<=r&&r<=127231||127245<=r&&r<=127247||r===127279||127340<=r&&r<=127343||127344<=r&&r<=127345||127358<=r&&r<=127359||r===127374||127377<=r&&r<=127386||127405<=r&&r<=127461||127489<=r&&r<=127490||127491<=r&&r<=127503||r===127514||r===127535||127538<=r&&r<=127546||127548<=r&&r<=127551||127561<=r&&r<=127567||127568<=r&&r<=127569||127570<=r&&r<=127743||127744<=r&&r<=127756||127757<=r&&r<=127758||r===127759||r===127760||r===127761||r===127762||127763<=r&&r<=127765||127766<=r&&r<=127768||r===127769||r===127770||r===127771||r===127772||127773<=r&&r<=127774||127775<=r&&r<=127776||r===127777||127778<=r&&r<=127779||127780<=r&&r<=127788||127789<=r&&r<=127791||127792<=r&&r<=127793||127794<=r&&r<=127795||127796<=r&&r<=127797||r===127798||127799<=r&&r<=127818||r===127819||127820<=r&&r<=127823||r===127824||127825<=r&&r<=127867||r===127868||r===127869||127870<=r&&r<=127871||127872<=r&&r<=127891||127892<=r&&r<=127893||127894<=r&&r<=127895||r===127896||127897<=r&&r<=127899||127900<=r&&r<=127901||127902<=r&&r<=127903||127904<=r&&r<=127940||r===127941||r===127942||r===127943||r===127944||r===127945||r===127946||127947<=r&&r<=127950||127951<=r&&r<=127955||127956<=r&&r<=127967||127968<=r&&r<=127971||r===127972||127973<=r&&r<=127984||127985<=r&&r<=127986||r===127987||r===127988||r===127989||r===127990||r===127991||127992<=r&&r<=127994||128e3<=r&&r<=128007||r===128008||128009<=r&&r<=128011||128012<=r&&r<=128014||128015<=r&&r<=128016||128017<=r&&r<=128018||r===128019||r===128020||r===128021||r===128022||128023<=r&&r<=128041||r===128042||128043<=r&&r<=128062||r===128063||r===128064||r===128065||128066<=r&&r<=128100||r===128101||128102<=r&&r<=128107||128108<=r&&r<=128109||128110<=r&&r<=128172||r===128173||128174<=r&&r<=128181||128182<=r&&r<=128183||128184<=r&&r<=128235||128236<=r&&r<=128237||r===128238||r===128239||128240<=r&&r<=128244||r===128245||128246<=r&&r<=128247||r===128248||128249<=r&&r<=128252||r===128253||r===128254||128255<=r&&r<=128258||r===128259||128260<=r&&r<=128263||r===128264||r===128265||128266<=r&&r<=128276||r===128277||128278<=r&&r<=128299||128300<=r&&r<=128301||128302<=r&&r<=128317||128326<=r&&r<=128328||128329<=r&&r<=128330||128331<=r&&r<=128334||r===128335||128336<=r&&r<=128347||128348<=r&&r<=128359||128360<=r&&r<=128366||128367<=r&&r<=128368||128369<=r&&r<=128370||128371<=r&&r<=128377||r===128378||128379<=r&&r<=128390||r===128391||128392<=r&&r<=128393||128394<=r&&r<=128397||128398<=r&&r<=128399||r===128400||128401<=r&&r<=128404||128405<=r&&r<=128406||128407<=r&&r<=128419||r===128420||r===128421||128422<=r&&r<=128423||r===128424||128425<=r&&r<=128432||128433<=r&&r<=128434||128435<=r&&r<=128443||r===128444||128445<=r&&r<=128449||128450<=r&&r<=128452||128453<=r&&r<=128464||128465<=r&&r<=128467||128468<=r&&r<=128475||128476<=r&&r<=128478||128479<=r&&r<=128480||r===128481||r===128482||r===128483||128484<=r&&r<=128487||r===128488||128489<=r&&r<=128494||r===128495||128496<=r&&r<=128498||r===128499||128500<=r&&r<=128505||r===128506||128507<=r&&r<=128511||r===128512||128513<=r&&r<=128518||128519<=r&&r<=128520||128521<=r&&r<=128525||r===128526||r===128527||r===128528||r===128529||128530<=r&&r<=128532||r===128533||r===128534||r===128535||r===128536||r===128537||r===128538||r===128539||128540<=r&&r<=128542||r===128543||128544<=r&&r<=128549||128550<=r&&r<=128551||128552<=r&&r<=128555||r===128556||r===128557||128558<=r&&r<=128559||128560<=r&&r<=128563||r===128564||r===128565||r===128566||128567<=r&&r<=128576||128577<=r&&r<=128580||128581<=r&&r<=128591||r===128640||128641<=r&&r<=128642||128643<=r&&r<=128645||r===128646||r===128647||r===128648||r===128649||128650<=r&&r<=128651||r===128652||r===128653||r===128654||r===128655||r===128656||128657<=r&&r<=128659||r===128660||r===128661||r===128662||r===128663||r===128664||128665<=r&&r<=128666||128667<=r&&r<=128673||r===128674||r===128675||128676<=r&&r<=128677||r===128678||128679<=r&&r<=128685||128686<=r&&r<=128689||r===128690||128691<=r&&r<=128693||r===128694||128695<=r&&r<=128696||128697<=r&&r<=128702||r===128703||r===128704||128705<=r&&r<=128709||128710<=r&&r<=128714||r===128715||r===128716||128717<=r&&r<=128719||r===128720||128721<=r&&r<=128722||128723<=r&&r<=128724||r===128725||128726<=r&&r<=128727||128728<=r&&r<=128735||128736<=r&&r<=128741||128742<=r&&r<=128744||r===128745||r===128746||128747<=r&&r<=128748||128749<=r&&r<=128751||r===128752||128753<=r&&r<=128754||r===128755||128756<=r&&r<=128758||128759<=r&&r<=128760||r===128761||r===128762||128763<=r&&r<=128764||128765<=r&&r<=128767||128884<=r&&r<=128895||128981<=r&&r<=128991||128992<=r&&r<=129003||129004<=r&&r<=129023||129036<=r&&r<=129039||129096<=r&&r<=129103||129114<=r&&r<=129119||129160<=r&&r<=129167||129198<=r&&r<=129279||r===129292||129293<=r&&r<=129295||129296<=r&&r<=129304||129305<=r&&r<=129310||r===129311||129312<=r&&r<=129319||129320<=r&&r<=129327||r===129328||129329<=r&&r<=129330||129331<=r&&r<=129338||129340<=r&&r<=129342||r===129343||129344<=r&&r<=129349||129351<=r&&r<=129355||r===129356||129357<=r&&r<=129359||129360<=r&&r<=129374||129375<=r&&r<=129387||129388<=r&&r<=129392||r===129393||r===129394||129395<=r&&r<=129398||129399<=r&&r<=129400||r===129401||r===129402||r===129403||129404<=r&&r<=129407||129408<=r&&r<=129412||129413<=r&&r<=129425||129426<=r&&r<=129431||129432<=r&&r<=129442||129443<=r&&r<=129444||129445<=r&&r<=129450||129451<=r&&r<=129453||129454<=r&&r<=129455||129456<=r&&r<=129465||129466<=r&&r<=129471||r===129472||129473<=r&&r<=129474||129475<=r&&r<=129482||r===129483||r===129484||129485<=r&&r<=129487||129488<=r&&r<=129510||129511<=r&&r<=129535||129536<=r&&r<=129647||129648<=r&&r<=129651||r===129652||129653<=r&&r<=129655||129656<=r&&r<=129658||129659<=r&&r<=129663||129664<=r&&r<=129666||129667<=r&&r<=129670||129671<=r&&r<=129679||129680<=r&&r<=129685||129686<=r&&r<=129704||129705<=r&&r<=129711||129712<=r&&r<=129718||129719<=r&&r<=129727||129728<=r&&r<=129730||129731<=r&&r<=129743||129744<=r&&r<=129750||129751<=r&&r<=129791||130048<=r&&r<=131069?Px.ExtendedPictographic:Px.Other}Rx.exports=kv});var Ox=n(function(x2,Lx){"use strict";var m=L();function Gv(r){return 1536<=r&&r<=1541||r===1757||r===1807||r===2274||r===3406||r===69821||r===69837||70082<=r&&r<=70083||r===71999||r===72001||r===72250||72324<=r&&r<=72329||r===73030?m.Prepend:r===13?m.CR:r===10?m.LF:0<=r&&r<=9||11<=r&&r<=12||14<=r&&r<=31||127<=r&&r<=159||r===173||r===1564||r===6158||r===8203||8206<=r&&r<=8207||r===8232||r===8233||8234<=r&&r<=8238||8288<=r&&r<=8292||r===8293||8294<=r&&r<=8303||r===65279||65520<=r&&r<=65528||65529<=r&&r<=65531||78896<=r&&r<=78904||113824<=r&&r<=113827||119155<=r&&r<=119162||r===917504||r===917505||917506<=r&&r<=917535||917632<=r&&r<=917759||918e3<=r&&r<=921599?m.Control:768<=r&&r<=879||1155<=r&&r<=1159||1160<=r&&r<=1161||1425<=r&&r<=1469||r===1471||1473<=r&&r<=1474||1476<=r&&r<=1477||r===1479||1552<=r&&r<=1562||1611<=r&&r<=1631||r===1648||1750<=r&&r<=1756||1759<=r&&r<=1764||1767<=r&&r<=1768||1770<=r&&r<=1773||r===1809||1840<=r&&r<=1866||1958<=r&&r<=1968||2027<=r&&r<=2035||r===2045||2070<=r&&r<=2073||2075<=r&&r<=2083||2085<=r&&r<=2087||2089<=r&&r<=2093||2137<=r&&r<=2139||2259<=r&&r<=2273||2275<=r&&r<=2306||r===2362||r===2364||2369<=r&&r<=2376||r===2381||2385<=r&&r<=2391||2402<=r&&r<=2403||r===2433||r===2492||r===2494||2497<=r&&r<=2500||r===2509||r===2519||2530<=r&&r<=2531||r===2558||2561<=r&&r<=2562||r===2620||2625<=r&&r<=2626||2631<=r&&r<=2632||2635<=r&&r<=2637||r===2641||2672<=r&&r<=2673||r===2677||2689<=r&&r<=2690||r===2748||2753<=r&&r<=2757||2759<=r&&r<=2760||r===2765||2786<=r&&r<=2787||2810<=r&&r<=2815||r===2817||r===2876||r===2878||r===2879||2881<=r&&r<=2884||r===2893||2901<=r&&r<=2902||r===2903||2914<=r&&r<=2915||r===2946||r===3006||r===3008||r===3021||r===3031||r===3072||r===3076||3134<=r&&r<=3136||3142<=r&&r<=3144||3146<=r&&r<=3149||3157<=r&&r<=3158||3170<=r&&r<=3171||r===3201||r===3260||r===3263||r===3266||r===3270||3276<=r&&r<=3277||3285<=r&&r<=3286||3298<=r&&r<=3299||3328<=r&&r<=3329||3387<=r&&r<=3388||r===3390||3393<=r&&r<=3396||r===3405||r===3415||3426<=r&&r<=3427||r===3457||r===3530||r===3535||3538<=r&&r<=3540||r===3542||r===3551||r===3633||3636<=r&&r<=3642||3655<=r&&r<=3662||r===3761||3764<=r&&r<=3772||3784<=r&&r<=3789||3864<=r&&r<=3865||r===3893||r===3895||r===3897||3953<=r&&r<=3966||3968<=r&&r<=3972||3974<=r&&r<=3975||3981<=r&&r<=3991||3993<=r&&r<=4028||r===4038||4141<=r&&r<=4144||4146<=r&&r<=4151||4153<=r&&r<=4154||4157<=r&&r<=4158||4184<=r&&r<=4185||4190<=r&&r<=4192||4209<=r&&r<=4212||r===4226||4229<=r&&r<=4230||r===4237||r===4253||4957<=r&&r<=4959||5906<=r&&r<=5908||5938<=r&&r<=5940||5970<=r&&r<=5971||6002<=r&&r<=6003||6068<=r&&r<=6069||6071<=r&&r<=6077||r===6086||6089<=r&&r<=6099||r===6109||6155<=r&&r<=6157||6277<=r&&r<=6278||r===6313||6432<=r&&r<=6434||6439<=r&&r<=6440||r===6450||6457<=r&&r<=6459||6679<=r&&r<=6680||r===6683||r===6742||6744<=r&&r<=6750||r===6752||r===6754||6757<=r&&r<=6764||6771<=r&&r<=6780||r===6783||6832<=r&&r<=6845||r===6846||6847<=r&&r<=6848||6912<=r&&r<=6915||r===6964||r===6965||6966<=r&&r<=6970||r===6972||r===6978||7019<=r&&r<=7027||7040<=r&&r<=7041||7074<=r&&r<=7077||7080<=r&&r<=7081||7083<=r&&r<=7085||r===7142||7144<=r&&r<=7145||r===7149||7151<=r&&r<=7153||7212<=r&&r<=7219||7222<=r&&r<=7223||7376<=r&&r<=7378||7380<=r&&r<=7392||7394<=r&&r<=7400||r===7405||r===7412||7416<=r&&r<=7417||7616<=r&&r<=7673||7675<=r&&r<=7679||r===8204||8400<=r&&r<=8412||8413<=r&&r<=8416||r===8417||8418<=r&&r<=8420||8421<=r&&r<=8432||11503<=r&&r<=11505||r===11647||11744<=r&&r<=11775||12330<=r&&r<=12333||12334<=r&&r<=12335||12441<=r&&r<=12442||r===42607||42608<=r&&r<=42610||42612<=r&&r<=42621||42654<=r&&r<=42655||42736<=r&&r<=42737||r===43010||r===43014||r===43019||43045<=r&&r<=43046||r===43052||43204<=r&&r<=43205||43232<=r&&r<=43249||r===43263||43302<=r&&r<=43309||43335<=r&&r<=43345||43392<=r&&r<=43394||r===43443||43446<=r&&r<=43449||43452<=r&&r<=43453||r===43493||43561<=r&&r<=43566||43569<=r&&r<=43570||43573<=r&&r<=43574||r===43587||r===43596||r===43644||r===43696||43698<=r&&r<=43700||43703<=r&&r<=43704||43710<=r&&r<=43711||r===43713||43756<=r&&r<=43757||r===43766||r===44005||r===44008||r===44013||r===64286||65024<=r&&r<=65039||65056<=r&&r<=65071||65438<=r&&r<=65439||r===66045||r===66272||66422<=r&&r<=66426||68097<=r&&r<=68099||68101<=r&&r<=68102||68108<=r&&r<=68111||68152<=r&&r<=68154||r===68159||68325<=r&&r<=68326||68900<=r&&r<=68903||69291<=r&&r<=69292||69446<=r&&r<=69456||r===69633||69688<=r&&r<=69702||69759<=r&&r<=69761||69811<=r&&r<=69814||69817<=r&&r<=69818||69888<=r&&r<=69890||69927<=r&&r<=69931||69933<=r&&r<=69940||r===70003||70016<=r&&r<=70017||70070<=r&&r<=70078||70089<=r&&r<=70092||r===70095||70191<=r&&r<=70193||r===70196||70198<=r&&r<=70199||r===70206||r===70367||70371<=r&&r<=70378||70400<=r&&r<=70401||70459<=r&&r<=70460||r===70462||r===70464||r===70487||70502<=r&&r<=70508||70512<=r&&r<=70516||70712<=r&&r<=70719||70722<=r&&r<=70724||r===70726||r===70750||r===70832||70835<=r&&r<=70840||r===70842||r===70845||70847<=r&&r<=70848||70850<=r&&r<=70851||r===71087||71090<=r&&r<=71093||71100<=r&&r<=71101||71103<=r&&r<=71104||71132<=r&&r<=71133||71219<=r&&r<=71226||r===71229||71231<=r&&r<=71232||r===71339||r===71341||71344<=r&&r<=71349||r===71351||71453<=r&&r<=71455||71458<=r&&r<=71461||71463<=r&&r<=71467||71727<=r&&r<=71735||71737<=r&&r<=71738||r===71984||71995<=r&&r<=71996||r===71998||r===72003||72148<=r&&r<=72151||72154<=r&&r<=72155||r===72160||72193<=r&&r<=72202||72243<=r&&r<=72248||72251<=r&&r<=72254||r===72263||72273<=r&&r<=72278||72281<=r&&r<=72283||72330<=r&&r<=72342||72344<=r&&r<=72345||72752<=r&&r<=72758||72760<=r&&r<=72765||r===72767||72850<=r&&r<=72871||72874<=r&&r<=72880||72882<=r&&r<=72883||72885<=r&&r<=72886||73009<=r&&r<=73014||r===73018||73020<=r&&r<=73021||73023<=r&&r<=73029||r===73031||73104<=r&&r<=73105||r===73109||r===73111||73459<=r&&r<=73460||92912<=r&&r<=92916||92976<=r&&r<=92982||r===94031||94095<=r&&r<=94098||r===94180||113821<=r&&r<=113822||r===119141||119143<=r&&r<=119145||119150<=r&&r<=119154||119163<=r&&r<=119170||119173<=r&&r<=119179||119210<=r&&r<=119213||119362<=r&&r<=119364||121344<=r&&r<=121398||121403<=r&&r<=121452||r===121461||r===121476||121499<=r&&r<=121503||121505<=r&&r<=121519||122880<=r&&r<=122886||122888<=r&&r<=122904||122907<=r&&r<=122913||122915<=r&&r<=122916||122918<=r&&r<=122922||123184<=r&&r<=123190||123628<=r&&r<=123631||125136<=r&&r<=125142||125252<=r&&r<=125258||127995<=r&&r<=127999||917536<=r&&r<=917631||917760<=r&&r<=917999?m.Extend:127462<=r&&r<=127487?m.RegionalIndicator:r===2307||r===2363||2366<=r&&r<=2368||2377<=r&&r<=2380||2382<=r&&r<=2383||2434<=r&&r<=2435||2495<=r&&r<=2496||2503<=r&&r<=2504||2507<=r&&r<=2508||r===2563||2622<=r&&r<=2624||r===2691||2750<=r&&r<=2752||r===2761||2763<=r&&r<=2764||2818<=r&&r<=2819||r===2880||2887<=r&&r<=2888||2891<=r&&r<=2892||r===3007||3009<=r&&r<=3010||3014<=r&&r<=3016||3018<=r&&r<=3020||3073<=r&&r<=3075||3137<=r&&r<=3140||3202<=r&&r<=3203||r===3262||3264<=r&&r<=3265||3267<=r&&r<=3268||3271<=r&&r<=3272||3274<=r&&r<=3275||3330<=r&&r<=3331||3391<=r&&r<=3392||3398<=r&&r<=3400||3402<=r&&r<=3404||3458<=r&&r<=3459||3536<=r&&r<=3537||3544<=r&&r<=3550||3570<=r&&r<=3571||r===3635||r===3763||3902<=r&&r<=3903||r===3967||r===4145||4155<=r&&r<=4156||4182<=r&&r<=4183||r===4228||r===6070||6078<=r&&r<=6085||6087<=r&&r<=6088||6435<=r&&r<=6438||6441<=r&&r<=6443||6448<=r&&r<=6449||6451<=r&&r<=6456||6681<=r&&r<=6682||r===6741||r===6743||6765<=r&&r<=6770||r===6916||r===6971||6973<=r&&r<=6977||6979<=r&&r<=6980||r===7042||r===7073||7078<=r&&r<=7079||r===7082||r===7143||7146<=r&&r<=7148||r===7150||7154<=r&&r<=7155||7204<=r&&r<=7211||7220<=r&&r<=7221||r===7393||r===7415||43043<=r&&r<=43044||r===43047||43136<=r&&r<=43137||43188<=r&&r<=43203||43346<=r&&r<=43347||r===43395||43444<=r&&r<=43445||43450<=r&&r<=43451||43454<=r&&r<=43456||43567<=r&&r<=43568||43571<=r&&r<=43572||r===43597||r===43755||43758<=r&&r<=43759||r===43765||44003<=r&&r<=44004||44006<=r&&r<=44007||44009<=r&&r<=44010||r===44012||r===69632||r===69634||r===69762||69808<=r&&r<=69810||69815<=r&&r<=69816||r===69932||69957<=r&&r<=69958||r===70018||70067<=r&&r<=70069||70079<=r&&r<=70080||r===70094||70188<=r&&r<=70190||70194<=r&&r<=70195||r===70197||70368<=r&&r<=70370||70402<=r&&r<=70403||r===70463||70465<=r&&r<=70468||70471<=r&&r<=70472||70475<=r&&r<=70477||70498<=r&&r<=70499||70709<=r&&r<=70711||70720<=r&&r<=70721||r===70725||70833<=r&&r<=70834||r===70841||70843<=r&&r<=70844||r===70846||r===70849||71088<=r&&r<=71089||71096<=r&&r<=71099||r===71102||71216<=r&&r<=71218||71227<=r&&r<=71228||r===71230||r===71340||71342<=r&&r<=71343||r===71350||71456<=r&&r<=71457||r===71462||71724<=r&&r<=71726||r===71736||71985<=r&&r<=71989||71991<=r&&r<=71992||r===71997||r===72e3||r===72002||72145<=r&&r<=72147||72156<=r&&r<=72159||r===72164||r===72249||72279<=r&&r<=72280||r===72343||r===72751||r===72766||r===72873||r===72881||r===72884||73098<=r&&r<=73102||73107<=r&&r<=73108||r===73110||73461<=r&&r<=73462||94033<=r&&r<=94087||94192<=r&&r<=94193||r===119142||r===119149?m.SpacingMark:4352<=r&&r<=4447||43360<=r&&r<=43388?m.L:4448<=r&&r<=4519||55216<=r&&r<=55238?m.V:4520<=r&&r<=4607||55243<=r&&r<=55291?m.T:r===44032||r===44060||r===44088||r===44116||r===44144||r===44172||r===44200||r===44228||r===44256||r===44284||r===44312||r===44340||r===44368||r===44396||r===44424||r===44452||r===44480||r===44508||r===44536||r===44564||r===44592||r===44620||r===44648||r===44676||r===44704||r===44732||r===44760||r===44788||r===44816||r===44844||r===44872||r===44900||r===44928||r===44956||r===44984||r===45012||r===45040||r===45068||r===45096||r===45124||r===45152||r===45180||r===45208||r===45236||r===45264||r===45292||r===45320||r===45348||r===45376||r===45404||r===45432||r===45460||r===45488||r===45516||r===45544||r===45572||r===45600||r===45628||r===45656||r===45684||r===45712||r===45740||r===45768||r===45796||r===45824||r===45852||r===45880||r===45908||r===45936||r===45964||r===45992||r===46020||r===46048||r===46076||r===46104||r===46132||r===46160||r===46188||r===46216||r===46244||r===46272||r===46300||r===46328||r===46356||r===46384||r===46412||r===46440||r===46468||r===46496||r===46524||r===46552||r===46580||r===46608||r===46636||r===46664||r===46692||r===46720||r===46748||r===46776||r===46804||r===46832||r===46860||r===46888||r===46916||r===46944||r===46972||r===47e3||r===47028||r===47056||r===47084||r===47112||r===47140||r===47168||r===47196||r===47224||r===47252||r===47280||r===47308||r===47336||r===47364||r===47392||r===47420||r===47448||r===47476||r===47504||r===47532||r===47560||r===47588||r===47616||r===47644||r===47672||r===47700||r===47728||r===47756||r===47784||r===47812||r===47840||r===47868||r===47896||r===47924||r===47952||r===47980||r===48008||r===48036||r===48064||r===48092||r===48120||r===48148||r===48176||r===48204||r===48232||r===48260||r===48288||r===48316||r===48344||r===48372||r===48400||r===48428||r===48456||r===48484||r===48512||r===48540||r===48568||r===48596||r===48624||r===48652||r===48680||r===48708||r===48736||r===48764||r===48792||r===48820||r===48848||r===48876||r===48904||r===48932||r===48960||r===48988||r===49016||r===49044||r===49072||r===49100||r===49128||r===49156||r===49184||r===49212||r===49240||r===49268||r===49296||r===49324||r===49352||r===49380||r===49408||r===49436||r===49464||r===49492||r===49520||r===49548||r===49576||r===49604||r===49632||r===49660||r===49688||r===49716||r===49744||r===49772||r===49800||r===49828||r===49856||r===49884||r===49912||r===49940||r===49968||r===49996||r===50024||r===50052||r===50080||r===50108||r===50136||r===50164||r===50192||r===50220||r===50248||r===50276||r===50304||r===50332||r===50360||r===50388||r===50416||r===50444||r===50472||r===50500||r===50528||r===50556||r===50584||r===50612||r===50640||r===50668||r===50696||r===50724||r===50752||r===50780||r===50808||r===50836||r===50864||r===50892||r===50920||r===50948||r===50976||r===51004||r===51032||r===51060||r===51088||r===51116||r===51144||r===51172||r===51200||r===51228||r===51256||r===51284||r===51312||r===51340||r===51368||r===51396||r===51424||r===51452||r===51480||r===51508||r===51536||r===51564||r===51592||r===51620||r===51648||r===51676||r===51704||r===51732||r===51760||r===51788||r===51816||r===51844||r===51872||r===51900||r===51928||r===51956||r===51984||r===52012||r===52040||r===52068||r===52096||r===52124||r===52152||r===52180||r===52208||r===52236||r===52264||r===52292||r===52320||r===52348||r===52376||r===52404||r===52432||r===52460||r===52488||r===52516||r===52544||r===52572||r===52600||r===52628||r===52656||r===52684||r===52712||r===52740||r===52768||r===52796||r===52824||r===52852||r===52880||r===52908||r===52936||r===52964||r===52992||r===53020||r===53048||r===53076||r===53104||r===53132||r===53160||r===53188||r===53216||r===53244||r===53272||r===53300||r===53328||r===53356||r===53384||r===53412||r===53440||r===53468||r===53496||r===53524||r===53552||r===53580||r===53608||r===53636||r===53664||r===53692||r===53720||r===53748||r===53776||r===53804||r===53832||r===53860||r===53888||r===53916||r===53944||r===53972||r===54e3||r===54028||r===54056||r===54084||r===54112||r===54140||r===54168||r===54196||r===54224||r===54252||r===54280||r===54308||r===54336||r===54364||r===54392||r===54420||r===54448||r===54476||r===54504||r===54532||r===54560||r===54588||r===54616||r===54644||r===54672||r===54700||r===54728||r===54756||r===54784||r===54812||r===54840||r===54868||r===54896||r===54924||r===54952||r===54980||r===55008||r===55036||r===55064||r===55092||r===55120||r===55148||r===55176?m.LV:44033<=r&&r<=44059||44061<=r&&r<=44087||44089<=r&&r<=44115||44117<=r&&r<=44143||44145<=r&&r<=44171||44173<=r&&r<=44199||44201<=r&&r<=44227||44229<=r&&r<=44255||44257<=r&&r<=44283||44285<=r&&r<=44311||44313<=r&&r<=44339||44341<=r&&r<=44367||44369<=r&&r<=44395||44397<=r&&r<=44423||44425<=r&&r<=44451||44453<=r&&r<=44479||44481<=r&&r<=44507||44509<=r&&r<=44535||44537<=r&&r<=44563||44565<=r&&r<=44591||44593<=r&&r<=44619||44621<=r&&r<=44647||44649<=r&&r<=44675||44677<=r&&r<=44703||44705<=r&&r<=44731||44733<=r&&r<=44759||44761<=r&&r<=44787||44789<=r&&r<=44815||44817<=r&&r<=44843||44845<=r&&r<=44871||44873<=r&&r<=44899||44901<=r&&r<=44927||44929<=r&&r<=44955||44957<=r&&r<=44983||44985<=r&&r<=45011||45013<=r&&r<=45039||45041<=r&&r<=45067||45069<=r&&r<=45095||45097<=r&&r<=45123||45125<=r&&r<=45151||45153<=r&&r<=45179||45181<=r&&r<=45207||45209<=r&&r<=45235||45237<=r&&r<=45263||45265<=r&&r<=45291||45293<=r&&r<=45319||45321<=r&&r<=45347||45349<=r&&r<=45375||45377<=r&&r<=45403||45405<=r&&r<=45431||45433<=r&&r<=45459||45461<=r&&r<=45487||45489<=r&&r<=45515||45517<=r&&r<=45543||45545<=r&&r<=45571||45573<=r&&r<=45599||45601<=r&&r<=45627||45629<=r&&r<=45655||45657<=r&&r<=45683||45685<=r&&r<=45711||45713<=r&&r<=45739||45741<=r&&r<=45767||45769<=r&&r<=45795||45797<=r&&r<=45823||45825<=r&&r<=45851||45853<=r&&r<=45879||45881<=r&&r<=45907||45909<=r&&r<=45935||45937<=r&&r<=45963||45965<=r&&r<=45991||45993<=r&&r<=46019||46021<=r&&r<=46047||46049<=r&&r<=46075||46077<=r&&r<=46103||46105<=r&&r<=46131||46133<=r&&r<=46159||46161<=r&&r<=46187||46189<=r&&r<=46215||46217<=r&&r<=46243||46245<=r&&r<=46271||46273<=r&&r<=46299||46301<=r&&r<=46327||46329<=r&&r<=46355||46357<=r&&r<=46383||46385<=r&&r<=46411||46413<=r&&r<=46439||46441<=r&&r<=46467||46469<=r&&r<=46495||46497<=r&&r<=46523||46525<=r&&r<=46551||46553<=r&&r<=46579||46581<=r&&r<=46607||46609<=r&&r<=46635||46637<=r&&r<=46663||46665<=r&&r<=46691||46693<=r&&r<=46719||46721<=r&&r<=46747||46749<=r&&r<=46775||46777<=r&&r<=46803||46805<=r&&r<=46831||46833<=r&&r<=46859||46861<=r&&r<=46887||46889<=r&&r<=46915||46917<=r&&r<=46943||46945<=r&&r<=46971||46973<=r&&r<=46999||47001<=r&&r<=47027||47029<=r&&r<=47055||47057<=r&&r<=47083||47085<=r&&r<=47111||47113<=r&&r<=47139||47141<=r&&r<=47167||47169<=r&&r<=47195||47197<=r&&r<=47223||47225<=r&&r<=47251||47253<=r&&r<=47279||47281<=r&&r<=47307||47309<=r&&r<=47335||47337<=r&&r<=47363||47365<=r&&r<=47391||47393<=r&&r<=47419||47421<=r&&r<=47447||47449<=r&&r<=47475||47477<=r&&r<=47503||47505<=r&&r<=47531||47533<=r&&r<=47559||47561<=r&&r<=47587||47589<=r&&r<=47615||47617<=r&&r<=47643||47645<=r&&r<=47671||47673<=r&&r<=47699||47701<=r&&r<=47727||47729<=r&&r<=47755||47757<=r&&r<=47783||47785<=r&&r<=47811||47813<=r&&r<=47839||47841<=r&&r<=47867||47869<=r&&r<=47895||47897<=r&&r<=47923||47925<=r&&r<=47951||47953<=r&&r<=47979||47981<=r&&r<=48007||48009<=r&&r<=48035||48037<=r&&r<=48063||48065<=r&&r<=48091||48093<=r&&r<=48119||48121<=r&&r<=48147||48149<=r&&r<=48175||48177<=r&&r<=48203||48205<=r&&r<=48231||48233<=r&&r<=48259||48261<=r&&r<=48287||48289<=r&&r<=48315||48317<=r&&r<=48343||48345<=r&&r<=48371||48373<=r&&r<=48399||48401<=r&&r<=48427||48429<=r&&r<=48455||48457<=r&&r<=48483||48485<=r&&r<=48511||48513<=r&&r<=48539||48541<=r&&r<=48567||48569<=r&&r<=48595||48597<=r&&r<=48623||48625<=r&&r<=48651||48653<=r&&r<=48679||48681<=r&&r<=48707||48709<=r&&r<=48735||48737<=r&&r<=48763||48765<=r&&r<=48791||48793<=r&&r<=48819||48821<=r&&r<=48847||48849<=r&&r<=48875||48877<=r&&r<=48903||48905<=r&&r<=48931||48933<=r&&r<=48959||48961<=r&&r<=48987||48989<=r&&r<=49015||49017<=r&&r<=49043||49045<=r&&r<=49071||49073<=r&&r<=49099||49101<=r&&r<=49127||49129<=r&&r<=49155||49157<=r&&r<=49183||49185<=r&&r<=49211||49213<=r&&r<=49239||49241<=r&&r<=49267||49269<=r&&r<=49295||49297<=r&&r<=49323||49325<=r&&r<=49351||49353<=r&&r<=49379||49381<=r&&r<=49407||49409<=r&&r<=49435||49437<=r&&r<=49463||49465<=r&&r<=49491||49493<=r&&r<=49519||49521<=r&&r<=49547||49549<=r&&r<=49575||49577<=r&&r<=49603||49605<=r&&r<=49631||49633<=r&&r<=49659||49661<=r&&r<=49687||49689<=r&&r<=49715||49717<=r&&r<=49743||49745<=r&&r<=49771||49773<=r&&r<=49799||49801<=r&&r<=49827||49829<=r&&r<=49855||49857<=r&&r<=49883||49885<=r&&r<=49911||49913<=r&&r<=49939||49941<=r&&r<=49967||49969<=r&&r<=49995||49997<=r&&r<=50023||50025<=r&&r<=50051||50053<=r&&r<=50079||50081<=r&&r<=50107||50109<=r&&r<=50135||50137<=r&&r<=50163||50165<=r&&r<=50191||50193<=r&&r<=50219||50221<=r&&r<=50247||50249<=r&&r<=50275||50277<=r&&r<=50303||50305<=r&&r<=50331||50333<=r&&r<=50359||50361<=r&&r<=50387||50389<=r&&r<=50415||50417<=r&&r<=50443||50445<=r&&r<=50471||50473<=r&&r<=50499||50501<=r&&r<=50527||50529<=r&&r<=50555||50557<=r&&r<=50583||50585<=r&&r<=50611||50613<=r&&r<=50639||50641<=r&&r<=50667||50669<=r&&r<=50695||50697<=r&&r<=50723||50725<=r&&r<=50751||50753<=r&&r<=50779||50781<=r&&r<=50807||50809<=r&&r<=50835||50837<=r&&r<=50863||50865<=r&&r<=50891||50893<=r&&r<=50919||50921<=r&&r<=50947||50949<=r&&r<=50975||50977<=r&&r<=51003||51005<=r&&r<=51031||51033<=r&&r<=51059||51061<=r&&r<=51087||51089<=r&&r<=51115||51117<=r&&r<=51143||51145<=r&&r<=51171||51173<=r&&r<=51199||51201<=r&&r<=51227||51229<=r&&r<=51255||51257<=r&&r<=51283||51285<=r&&r<=51311||51313<=r&&r<=51339||51341<=r&&r<=51367||51369<=r&&r<=51395||51397<=r&&r<=51423||51425<=r&&r<=51451||51453<=r&&r<=51479||51481<=r&&r<=51507||51509<=r&&r<=51535||51537<=r&&r<=51563||51565<=r&&r<=51591||51593<=r&&r<=51619||51621<=r&&r<=51647||51649<=r&&r<=51675||51677<=r&&r<=51703||51705<=r&&r<=51731||51733<=r&&r<=51759||51761<=r&&r<=51787||51789<=r&&r<=51815||51817<=r&&r<=51843||51845<=r&&r<=51871||51873<=r&&r<=51899||51901<=r&&r<=51927||51929<=r&&r<=51955||51957<=r&&r<=51983||51985<=r&&r<=52011||52013<=r&&r<=52039||52041<=r&&r<=52067||52069<=r&&r<=52095||52097<=r&&r<=52123||52125<=r&&r<=52151||52153<=r&&r<=52179||52181<=r&&r<=52207||52209<=r&&r<=52235||52237<=r&&r<=52263||52265<=r&&r<=52291||52293<=r&&r<=52319||52321<=r&&r<=52347||52349<=r&&r<=52375||52377<=r&&r<=52403||52405<=r&&r<=52431||52433<=r&&r<=52459||52461<=r&&r<=52487||52489<=r&&r<=52515||52517<=r&&r<=52543||52545<=r&&r<=52571||52573<=r&&r<=52599||52601<=r&&r<=52627||52629<=r&&r<=52655||52657<=r&&r<=52683||52685<=r&&r<=52711||52713<=r&&r<=52739||52741<=r&&r<=52767||52769<=r&&r<=52795||52797<=r&&r<=52823||52825<=r&&r<=52851||52853<=r&&r<=52879||52881<=r&&r<=52907||52909<=r&&r<=52935||52937<=r&&r<=52963||52965<=r&&r<=52991||52993<=r&&r<=53019||53021<=r&&r<=53047||53049<=r&&r<=53075||53077<=r&&r<=53103||53105<=r&&r<=53131||53133<=r&&r<=53159||53161<=r&&r<=53187||53189<=r&&r<=53215||53217<=r&&r<=53243||53245<=r&&r<=53271||53273<=r&&r<=53299||53301<=r&&r<=53327||53329<=r&&r<=53355||53357<=r&&r<=53383||53385<=r&&r<=53411||53413<=r&&r<=53439||53441<=r&&r<=53467||53469<=r&&r<=53495||53497<=r&&r<=53523||53525<=r&&r<=53551||53553<=r&&r<=53579||53581<=r&&r<=53607||53609<=r&&r<=53635||53637<=r&&r<=53663||53665<=r&&r<=53691||53693<=r&&r<=53719||53721<=r&&r<=53747||53749<=r&&r<=53775||53777<=r&&r<=53803||53805<=r&&r<=53831||53833<=r&&r<=53859||53861<=r&&r<=53887||53889<=r&&r<=53915||53917<=r&&r<=53943||53945<=r&&r<=53971||53973<=r&&r<=53999||54001<=r&&r<=54027||54029<=r&&r<=54055||54057<=r&&r<=54083||54085<=r&&r<=54111||54113<=r&&r<=54139||54141<=r&&r<=54167||54169<=r&&r<=54195||54197<=r&&r<=54223||54225<=r&&r<=54251||54253<=r&&r<=54279||54281<=r&&r<=54307||54309<=r&&r<=54335||54337<=r&&r<=54363||54365<=r&&r<=54391||54393<=r&&r<=54419||54421<=r&&r<=54447||54449<=r&&r<=54475||54477<=r&&r<=54503||54505<=r&&r<=54531||54533<=r&&r<=54559||54561<=r&&r<=54587||54589<=r&&r<=54615||54617<=r&&r<=54643||54645<=r&&r<=54671||54673<=r&&r<=54699||54701<=r&&r<=54727||54729<=r&&r<=54755||54757<=r&&r<=54783||54785<=r&&r<=54811||54813<=r&&r<=54839||54841<=r&&r<=54867||54869<=r&&r<=54895||54897<=r&&r<=54923||54925<=r&&r<=54951||54953<=r&&r<=54979||54981<=r&&r<=55007||55009<=r&&r<=55035||55037<=r&&r<=55063||55065<=r&&r<=55091||55093<=r&&r<=55119||55121<=r&&r<=55147||55149<=r&&r<=55175||55177<=r&&r<=55203?m.LVT:r===8205?m.ZWJ:m.Other}Lx.exports=Gv});var yr=n(function(t2,_x){"use strict";var J=require("@stdlib/utils/define-nonenumerable-read-only-property"),zv=L(),Mv=Sx(),Uv=Nx(),Wv=Ox(),O={};J(O,"constants",zv);J(O,"breakType",Mv);J(O,"emojiProperty",Uv);J(O,"breakProperty",Wv);_x.exports=O});var Ux=n(function(a2,Mx){"use strict";var $v=require("@stdlib/assert/is-string").isPrimitive,jv=require("@stdlib/assert/is-integer").isPrimitive,Ix=Q(),Hv=require("@stdlib/assert/has-utf16-surrogate-pair-at"),Tr=yr(),kx=v(),Zv=Tr.breakType,Gx=Tr.breakProperty,zx=Tr.emojiProperty;function Xv(r,i){var t,x,a,u,e,s;if(!$v(r))throw new TypeError(kx("invalid argument. First argument must be a string. Value: `%s`.",r));if(arguments.length>1){if(!jv(i))throw new TypeError(kx("invalid argument. Second argument must be an integer. Value: `%s`.",i));u=i}else u=0;if(a=r.length,u<0&&(u+=a,u<0&&(u=0)),a===0||u>=a)return-1;for(t=[],x=[],e=Ix(r,u),t.push(Gx(e)),x.push(zx(e)),s=u+1;s0))return s;return-1}Mx.exports=Xv});var w=n(function(n2,Wx){"use strict";var Qv=Ux();Wx.exports=Qv});var jx=n(function(u2,$x){"use strict";var Jv=w();function Yv(r,i){for(var t=0;i>0;)t=Jv(r,t),i-=1;return r===""||t===-1?r:r.substring(0,t)}$x.exports=Yv});var Vr=n(function(s2,Hx){"use strict";var Kv=jx();Hx.exports=Kv});var Xx=n(function(e2,Zx){"use strict";function ov(r,i,t){var x;for(x=0;x?`{}|~\/\\\[\]_#$*&^@%]+/g,gC=/([a-z0-9])([A-Z])/g;function fC(r){return r=Nr(r,lC," "),r=Nr(r,gC,"$1 $2"),r=CC(r),r=FC(r),r=vC(r),Nr(r,BC,"-")}tt.exports=fC});var Lr=n(function(D2,nt){"use strict";var AC=at();nt.exports=AC});var st=n(function(E2,ut){"use strict";var DC=R(),EC=h();function pC(r){var i,t,x,a;for(i=[],a=0;a?`{}|~\/\\\[\]_#$*&^@%]+/g,yC=/([a-z0-9])([A-Z])/g;function TC(r){return r=Or(r,bC," "),r=Or(r,yC,"$1 $2"),r=qC(r),r=Or(r,wC,"-"),hC(r)}vt.exports=TC});var _r=n(function(h2,Bt){"use strict";var VC=Ct();Bt.exports=VC});var gt=n(function(q2,lt){"use strict";var SC=typeof String.prototype.repeat!="undefined";lt.exports=SC});var At=n(function(w2,ft){"use strict";function PC(r,i){var t,x;if(r.length===0||i===0)return"";for(t="",x=i;(x&1)===1&&(t+=r),x>>>=1,x!==0;)r+=r;return t}ft.exports=PC});var Et=n(function(b2,Dt){"use strict";var RC=String.prototype.repeat;Dt.exports=RC});var mt=n(function(y2,pt){"use strict";var NC=Et();function LC(r,i){return NC.call(r,i)}pt.exports=LC});var _=n(function(T2,ht){"use strict";var OC=gt(),_C=At(),IC=mt(),Ir;OC?Ir=IC:Ir=_C;ht.exports=Ir});var wt=n(function(V2,qt){"use strict";var kC=_(),GC=require("@stdlib/math/base/special/ceil");function zC(r,i,t){var x=(i-r.length)/t.length;return x<=0?r:(x=GC(x),kC(t,x)+r)}qt.exports=zC});var kr=n(function(S2,bt){"use strict";var MC=wt();bt.exports=MC});var Tt=n(function(P2,yt){"use strict";var UC=typeof String.prototype.trimLeft!="undefined";yt.exports=UC});var St=n(function(R2,Vt){"use strict";var WC=p(),$C=/^[\u0020\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/;function jC(r){return WC(r,$C,"")}Vt.exports=jC});var Rt=n(function(N2,Pt){"use strict";var HC=String.prototype.trimLeft;Pt.exports=HC});var Lt=n(function(L2,Nt){"use strict";var ZC=Rt();function XC(r){return ZC.call(r)}Nt.exports=XC});var zr=n(function(O2,Ot){"use strict";var QC=Tt(),JC=St(),YC=Lt(),Gr;QC?Gr=YC:Gr=JC;Ot.exports=Gr});var It=n(function(_2,_t){"use strict";var KC=N(),oC=h(),K=p(),cC=q(),dC=/\s+/g,rB=/[-!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,iB=/(?:\s|^)([^\s]+)(?=\s|$)/g,xB=/([a-z0-9])([A-Z])/g;function tB(r,i){return KC(oC(i))}function aB(r){return r=K(r,rB," "),r=K(r,dC," "),r=K(r,xB,"$1 $2"),r=cC(r),K(r,iB,tB)}_t.exports=aB});var Mr=n(function(I2,kt){"use strict";var nB=It();kt.exports=nB});var Mt=n(function(k2,zt){"use strict";var uB=require("@stdlib/assert/is-string").isPrimitive,sB=v(),S=63,T=128,eB=192,FB=224,vB=240,Gt=1023,CB=2048,BB=55296,lB=57344,gB=65536;function fB(r){var i,t,x,a;if(!uB(r))throw new TypeError(sB("invalid argument. Must provide a string. Value: `%s`.",r));for(x=r.length,t=[],a=0;a>6),t.push(T|i&S)):i=lB?(t.push(FB|i>>12),t.push(T|i>>6&S),t.push(T|i&S)):(a+=1,i=gB+((i&Gt)<<10|r.charCodeAt(a)&Gt),t.push(vB|i>>18),t.push(T|i>>12&S),t.push(T|i>>6&S),t.push(T|i&S));return t}zt.exports=fB});var Ur=n(function(G2,Ut){"use strict";var AB=Mt();Ut.exports=AB});var $t=n(function(z2,Wt){"use strict";var DB=Ur(),EB=95,pB=46,mB=45,hB=126,qB=48,wB=57,bB=65,yB=90,TB=97,VB=122;function SB(r){var i,t,x,a,u;for(a=DB(r),x=a.length,t="",u=0;u=qB&&i<=wB||i>=bB&&i<=yB||i>=TB&&i<=VB||i===mB||i===pB||i===EB||i===hB?t+=r.charAt(u):t+="%"+i.toString(16).toUpperCase();return t}Wt.exports=SB});var Wr=n(function(M2,jt){"use strict";var PB=$t();jt.exports=PB});var Zt=n(function(U2,Ht){"use strict";function RB(r,i){return r.substring(i,r.length)}Ht.exports=RB});var $r=n(function(W2,Xt){"use strict";var NB=Zt();Xt.exports=NB});var Jt=n(function($2,Qt){"use strict";var LB=/[\uDC00-\uDFFF]/,OB=/[\uD800-\uDBFF]/;function _B(r,i){var t,x,a,u,e;if(i===0)return r;for(t=r.length,u=0,e=0;e0;)t=kB(r,t),i-=1;return r===""||t===-1?"":r.substring(t,r.length)}Kt.exports=GB});var Hr=n(function(Z2,ct){"use strict";var zB=ot();ct.exports=zB});var ra=n(function(X2,dt){"use strict";function MB(r,i,t){var x=r.indexOf(i);return r===""||i===""||t===""||x<0?r:t+r.substring(x)}dt.exports=MB});var Zr=n(function(Q2,ia){"use strict";var UB=ra();ia.exports=UB});var ta=n(function(J2,xa){"use strict";var WB=_(),$B=require("@stdlib/math/base/special/ceil");function jB(r,i,t){var x=(i-r.length)/t.length;return x<=0?r:(x=$B(x),r+WB(t,x))}xa.exports=jB});var Xr=n(function(Y2,aa){"use strict";var HB=ta();aa.exports=HB});var ua=n(function(K2,na){"use strict";var ZB=typeof String.prototype.trimRight!="undefined";na.exports=ZB});var ea=n(function(o2,sa){"use strict";var XB=p(),QB=/[\u0020\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+$/;function JB(r){return XB(r,QB,"")}sa.exports=JB});var va=n(function(c2,Fa){"use strict";var YB=String.prototype.trimRight;Fa.exports=YB});var Ba=n(function(d2,Ca){"use strict";var KB=va();function oB(r){return KB.call(r)}Ca.exports=oB});var Jr=n(function(rp,la){"use strict";var cB=ua(),dB=ea(),rl=Ba(),Qr;cB?Qr=rl:Qr=dB;la.exports=Qr});var fa=n(function(ip,ga){"use strict";var il=h(),Yr=p(),xl=q(),tl=/\s+/g,al=/[\-!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,nl=/([a-z0-9])([A-Z])/g;function ul(r){return r=Yr(r,al," "),r=Yr(r,nl,"$1 $2"),r=xl(r),r=Yr(r,tl,"_"),il(r)}ga.exports=ul});var Kr=n(function(xp,Aa){"use strict";var sl=fa();Aa.exports=sl});var Ea=n(function(tp,Da){"use strict";var el=typeof String.prototype.startsWith!="undefined";Da.exports=el});var ma=n(function(ap,pa){"use strict";function Fl(r,i,t){var x,a;if(t<0?x=r.length+t:x=t,i.length===0)return!0;if(x<0||x+i.length>r.length)return!1;for(a=0;ar.length?!1:Cl.call(r,i,x)}wa.exports=Bl});var cr=n(function(sp,ya){"use strict";var ll=Ea(),gl=ma(),fl=ba(),or;ll?or=fl:or=gl;ya.exports=or});var Va=n(function(ep,Ta){"use strict";function Al(r){return r===""?"":r.charAt(0).toLowerCase()+r.slice(1)}Ta.exports=Al});var dr=n(function(Fp,Sa){"use strict";var Dl=Va();Sa.exports=Dl});var Ra=n(function(vp,Pa){"use strict";var D=require("@stdlib/utils/define-read-only-property"),A={};D(A,"camelcase",Ar());D(A,"capitalize",N());D(A,"codePointAt",Dr());D(A,"constantcase",pr());D(A,"distances",xx());D(A,"dotcase",hr());D(A,"endsWith",Z());D(A,"first",wr());D(A,"firstCodePoint",br());D(A,"firstGraphemeCluster",Vr());D(A,"forEach",Sr());D(A,"forEachCodePoint",Pr());D(A,"forEachGraphemeCluster",Rr());D(A,"formatInterpolate",Fr());D(A,"formatTokenize",vr());D(A,"headercase",Lr());D(A,"invcase",Ft());D(A,"kebabcase",_r());D(A,"lpad",kr());D(A,"ltrim",zr());D(A,"lowercase",h());D(A,"pascalcase",Mr());D(A,"percentEncode",Wr());D(A,"removeFirst",$r());D(A,"removeFirstCodePoint",jr());D(A,"removeFirstGraphemeCluster",Hr());D(A,"repeat",_());D(A,"replace",p());D(A,"replaceBefore",Zr());D(A,"rpad",Xr());D(A,"rtrim",Jr());D(A,"snakecase",Kr());D(A,"startcase",Y());D(A,"startsWith",cr());D(A,"trim",q());D(A,"uncapitalize",dr());D(A,"uppercase",R());Pa.exports=A});var La=n(function(Cp,Na){"use strict";var El=require("@stdlib/assert/is-string").isPrimitive,pl=v(),ml=Ar();function hl(r){if(!El(r))throw new TypeError(pl("invalid argument. First argument must be a string. Value: `%s`.",r));return ml(r)}Na.exports=hl});var _a=n(function(Bp,Oa){"use strict";var ql=La();Oa.exports=ql});var ka=n(function(lp,Ia){"use strict";var wl=require("@stdlib/assert/is-string").isPrimitive,bl=v(),yl=N();function Tl(r){if(!wl(r))throw new TypeError(bl("invalid argument. First argument must be a string. Value: `%s`.",r));return yl(r)}Ia.exports=Tl});var za=n(function(gp,Ga){"use strict";var Vl=ka();Ga.exports=Vl});var Ua=n(function(fp,Ma){"use strict";var Sl=require("@stdlib/assert/is-string").isPrimitive,Pl=v(),Rl=pr();function Nl(r){if(!Sl(r))throw new TypeError(Pl("invalid argument. Must provide a string. Value: `%s`.",r));return Rl(r)}Ma.exports=Nl});var $a=n(function(Ap,Wa){"use strict";var Ll=Ua();Wa.exports=Ll});var Ha=n(function(Dp,ja){"use strict";var Ol=require("@stdlib/assert/is-string").isPrimitive,_l=v(),Il=hr();function kl(r){if(!Ol(r))throw new TypeError(_l("invalid argument. First argument must be a string. Value: `%s`.",r));return Il(r)}ja.exports=kl});var Xa=n(function(Ep,Za){"use strict";var Gl=Ha();Za.exports=Gl});var Ya=n(function(pp,Ja){"use strict";var zl=require("@stdlib/assert/is-integer").isPrimitive,Qa=require("@stdlib/assert/is-string").isPrimitive,r0=v(),Ml=Z();function Ul(r,i,t){if(!Qa(r))throw new TypeError(r0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Qa(i))throw new TypeError(r0("invalid argument. Second argument must be a string. Value: `%s`.",i));if(arguments.length>2){if(!zl(t))throw new TypeError(r0("invalid argument. Third argument must be an integer. Value: `%s`.",t))}else t=r.length;return Ml(r,i,t)}Ja.exports=Ul});var oa=n(function(mp,Ka){"use strict";var Wl=Ya();Ka.exports=Wl});var tn=n(function(hp,xn){"use strict";var $l=require("@stdlib/assert/is-string").isPrimitive,ca=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,da=require("@stdlib/assert/is-plain-object"),jl=require("@stdlib/assert/has-own-property"),Hl=require("@stdlib/array/base/assert/contains").factory,Zl=wr(),Xl=br(),Ql=Vr(),I=v(),rn=["grapheme","code_point","code_unit"],Jl={grapheme:Ql,code_point:Xl,code_unit:Zl},Yl=Hl(rn);function Kl(r){var i,t,x,a;if(!$l(r))throw new TypeError(I("invalid argument. First argument must be a string. Value: `%s`.",r));if(x={mode:"grapheme"},t=arguments.length,t===1)a=1;else if(t===2){if(a=arguments[1],da(a))i=a,a=1;else if(!ca(a))throw new TypeError(I("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a))}else{if(a=arguments[1],!ca(a))throw new TypeError(I("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a));if(i=arguments[2],!da(i))throw new TypeError(I("invalid argument. Options argument must be an object. Value: `%s`.",i))}if(i&&jl(i,"mode")&&(x.mode=i.mode,!Yl(x.mode)))throw new TypeError(I('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",rn.join('", "'),x.mode));return Jl[x.mode](r,a)}xn.exports=Kl});var nn=n(function(qp,an){"use strict";var ol=tn();an.exports=ol});var Fn=n(function(wp,en){"use strict";var cl=require("@stdlib/assert/is-function"),dl=require("@stdlib/assert/is-string").isPrimitive,un=require("@stdlib/assert/is-plain-object"),rg=require("@stdlib/assert/has-own-property"),ig=require("@stdlib/array/base/assert/contains").factory,xg=Sr(),tg=Pr(),ag=Rr(),o=v(),sn=["grapheme","code_point","code_unit"],ng={grapheme:ag,code_point:tg,code_unit:xg},ug=ig(sn);function sg(r,i,t){var x,a,u,e;if(!dl(r))throw new TypeError(o("invalid argument. First argument must be a string. Value: `%s`.",r));if(u={mode:"grapheme"},a=arguments.length,a===2)e=i,i=null;else if(a===3)un(i)?e=t:(e=i,i=null,x=t);else{if(!un(i))throw new TypeError(o("invalid argument. Options argument must be an object. Value: `%s`.",i));e=t,x=arguments[3]}if(!cl(e))throw new TypeError(o("invalid argument. Callback argument must be a function. Value: `%s`.",e));if(i&&rg(i,"mode")&&(u.mode=i.mode,!ug(u.mode)))throw new TypeError(o('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",sn.join('", "'),u.mode));return ng[u.mode](r,e,x),r}en.exports=sg});var Cn=n(function(bp,vn){"use strict";var eg=Fn();vn.exports=eg});var An=n(function(yp,fn){"use strict";var Fg=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,vg=require("@stdlib/assert/is-collection"),Bn=v(),ln=require("@stdlib/constants/unicode/max"),Cg=require("@stdlib/constants/unicode/max-bmp"),gn=String.fromCharCode,Bg=65536,lg=55296,gg=56320,fg=1023;function Ag(r){var i,t,x,a,u,e,s;if(i=arguments.length,i===1&&vg(r))x=arguments[0],i=x.length;else for(x=[],s=0;sln)throw new RangeError(Bn("invalid argument. Must provide a valid code point (i.e., cannot exceed %u). Value: `%s`.",ln,e));e<=Cg?t+=gn(e):(e-=Bg,u=(e>>10)+lg,a=(e&fg)+gg,t+=gn(u,a))}return t}fn.exports=Ag});var En=n(function(Tp,Dn){"use strict";var Dg=An();Dn.exports=Dg});var mn=n(function(Vp,pn){"use strict";var Eg=require("@stdlib/assert/is-string").isPrimitive,pg=v(),mg=Lr();function hg(r){if(!Eg(r))throw new TypeError(pg("invalid argument. First argument must be a string. Value: `%s`.",r));return mg(r)}pn.exports=hg});var qn=n(function(Sp,hn){"use strict";var qg=mn();hn.exports=qg});var bn=n(function(Pp,wn){"use strict";var wg=require("@stdlib/assert/is-string").isPrimitive,bg=v(),yg=_r();function Tg(r){if(!wg(r))throw new TypeError(bg("invalid argument. Must provide a string. Value: `%s`.",r));return yg(r)}wn.exports=Tg});var Tn=n(function(Rp,yn){"use strict";var Vg=bn();yn.exports=Vg});var Pn=n(function(Np,Sn){"use strict";var Sg=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Vn=require("@stdlib/assert/is-string").isPrimitive,c=v(),Pg=require("@stdlib/constants/float64/max-safe-integer"),Rg=kr();function Ng(r,i,t){var x;if(!Vn(r))throw new TypeError(c("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Sg(i))throw new TypeError(c("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(x=t,!Vn(x))throw new TypeError(c("invalid argument. Third argument must be a string. Value: `%s`.",x));if(x.length===0)throw new RangeError("invalid argument. Third argument must not be an empty string.")}else x=" ";if(i>Pg)throw new RangeError(c("invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.",i));return Rg(r,i,x)}Sn.exports=Ng});var i0=n(function(Lp,Rn){"use strict";var Lg=Pn();Rn.exports=Lg});var Ln=n(function(Op,Nn){"use strict";var Og=require("@stdlib/assert/is-string").isPrimitive,_g=v(),Ig=zr();function kg(r){if(!Og(r))throw new TypeError(_g("invalid argument. Must provide a string. Value: `%s`.",r));return Ig(r)}Nn.exports=kg});var _n=n(function(_p,On){"use strict";var Gg=Ln();On.exports=Gg});var Gn=n(function(Ip,kn){"use strict";var zg=require("@stdlib/assert/is-string").isPrimitive,In=w(),Mg=v();function Ug(r){var i,t,x;if(!zg(r))throw new TypeError(Mg("invalid argument. Must provide a string. Value: `%s`.",r));if(i=0,x=[],r.length===0)return x;for(t=In(r,i);t!==-1;)x.push(r.substring(i,t)),i=t,t=In(r,i);return x.push(r.substring(i)),x}kn.exports=Ug});var d=n(function(kp,zn){"use strict";var Wg=Gn();zn.exports=Wg});var $n=n(function(Gp,Wn){"use strict";var Mn=require("@stdlib/assert/is-string").isPrimitive,$g=d(),jg=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Hg=require("@stdlib/assert/is-string-array").primitives,Zg=P(),Un=require("@stdlib/utils/escape-regexp-string"),x0=v(),Xg=" \f\n\r \v\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF";function Qg(r,i,t){var x,a,u,e,s;if(!Mn(r))throw new TypeError(x0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!jg(i))throw new TypeError(x0("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(u=Mn(t),!u&&!Hg(t))throw new TypeError(x0("invalid argument. Third argument must be a string or an array of strings. Value: `%s`.",t));for(u&&(t=$g(t)),x=t.length-1,a="",s=0;s0&&(t+="-"+x1[x],x=0);else{for(a=3;a0&&(i+=" "),i+=t,ir(x,i)}t1.exports=ir});var e1=n(function(Xp,s1){"use strict";var vf=require("@stdlib/assert/is-plain-object"),Cf=require("@stdlib/assert/has-own-property"),Bf=require("@stdlib/utils/index-of"),n1=v(),u1=["en","de"];function lf(r,i){return vf(i)?Cf(i,"lang")&&(r.lang=i.lang,Bf(u1,r.lang)===-1)?new TypeError(n1('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"lang",u1.join('", "'),r.lang)):null:new TypeError(n1("invalid argument. Options argument must be an object. Value: `%s`.",i))}s1.exports=lf});var v1=n(function(Qp,F1){"use strict";function gf(r,i){var t,x,a;for(x=r.length,t="",a=0;a1&&(a=pf(x,i),a))throw a;if(Af(r))switch(x.lang){case"de":return n0(r,"");case"en":default:return u0(r,"")}if(!Df(r))switch(x.lang){case"de":return r<0?"minus unendlich":"unendlich";case"en":default:return r<0?"negative infinity":"infinity"}switch(t=r.toString().split("."),x.lang){case"de":return n0(t[0],"")+" Komma "+C1(t[1],n0);case"en":default:return u0(t[0],"")+" point "+C1(t[1],u0)}}B1.exports=mf});var f1=n(function(Yp,g1){"use strict";var hf=l1();g1.exports=hf});var E1=n(function(Kp,D1){"use strict";var qf=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,wf=require("@stdlib/assert/is-string").isPrimitive,A1=v(),bf=_();function yf(r,i){if(!wf(r))throw new TypeError(A1("invalid argument. First argument must be a string. Value: `%s`.",r));if(!qf(i))throw new TypeError(A1("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));return bf(r,i)}D1.exports=yf});var s0=n(function(op,p1){"use strict";var Tf=E1();p1.exports=Tf});var q1=n(function(cp,h1){"use strict";var Vf=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,m1=require("@stdlib/assert/is-string").isPrimitive,xr=v(),Sf=require("@stdlib/constants/float64/max-safe-integer"),Pf=Xr();function Rf(r,i,t){var x;if(!m1(r))throw new TypeError(xr("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Vf(i))throw new TypeError(xr("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(x=t,!m1(x))throw new TypeError(xr("invalid argument. Third argument must be a string. Value: `%s`.",x));if(x.length===0)throw new RangeError("invalid argument. Pad string must not be an empty string.")}else x=" ";if(i>Sf)throw new RangeError(xr("invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.",i));return Pf(r,i,x)}h1.exports=Rf});var e0=n(function(dp,w1){"use strict";var Nf=q1();w1.exports=Nf});var T1=n(function(rm,y1){"use strict";var Lf=require("@stdlib/assert/is-plain-object"),F0=require("@stdlib/assert/has-own-property"),b1=require("@stdlib/assert/is-string").isPrimitive,Of=require("@stdlib/assert/is-boolean").isPrimitive,tr=v();function _f(r,i){return Lf(i)?F0(i,"lpad")&&(r.lpad=i.lpad,!b1(r.lpad))?new TypeError(tr("invalid option. `%s` option must be a string. Option: `%s`.","lpad",r.lpad)):F0(i,"rpad")&&(r.rpad=i.rpad,!b1(r.rpad))?new TypeError(tr("invalid option. `%s` option must be a string. Option: `%s`.","rpad",r.rpad)):F0(i,"centerRight")&&(r.centerRight=i.centerRight,!Of(r.centerRight))?new TypeError(tr("invalid option. `%s` option must be a boolean. Option: `%s`.","centerRight",r.centerRight)):null:new TypeError(tr("invalid argument. Options argument must be an object. Value: `%s`.",i))}y1.exports=_f});var L1=n(function(im,N1){"use strict";var If=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,kf=require("@stdlib/assert/is-string").isPrimitive,V1=s0(),ar=v(),S1=require("@stdlib/math/base/special/floor"),P1=require("@stdlib/math/base/special/ceil"),Gf=i0(),R1=e0(),zf=require("@stdlib/math/base/special/abs"),Mf=require("@stdlib/constants/float64/max-safe-integer"),Uf=T1();function Wf(r,i,t){var x,a,u,e,s,F,g,E,f;if(!kf(r))throw new TypeError(ar("invalid argument. First argument must be a string. Value: `%s`.",r));if(!If(i))throw new TypeError(ar("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(i>Mf)throw new RangeError(ar("invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.",i));if(F={},arguments.length>2&&(g=Uf(F,t),g))throw g;if(F.lpad&&F.rpad)return f=(i-r.length)/2,f===0?r:(E=S1(f),E!==f&&(u=!0),f<0?(f=S1(zf(f)),a=f,x=r.length-f,u&&(F.centerRight?x-=1:a+=1),r.substring(a,x)):(a=P1(f/F.lpad.length),s=V1(F.lpad,a),x=P1(f/F.rpad.length),e=V1(F.rpad,x),f=E,a=f,x=f,u&&(F.centerRight?a+=1:x+=1),s=s.substring(0,a),e=e.substring(0,x),s+r+e));if(F.lpad)return E=Gf(r,i,F.lpad),E.substring(E.length-i);if(F.rpad)return R1(r,i,F.rpad).substring(0,i);if(F.rpad===void 0)return R1(r,i," ").substring(0,i);throw new RangeError(ar("invalid argument. At least one padding option must have a length greater than 0. Left padding: `%s`. Right padding: `%s`.",F.lpad,F.rpad))}N1.exports=Wf});var _1=n(function(xm,O1){"use strict";var $f=L1();O1.exports=$f});var k1=n(function(tm,I1){"use strict";var jf=require("@stdlib/assert/is-string").isPrimitive,Hf=v(),Zf=Mr();function Xf(r){if(!jf(r))throw new TypeError(Hf("invalid argument. First argument must be a string. Value: `%s`.",r));return Zf(r)}I1.exports=Xf});var z1=n(function(am,G1){"use strict";var Qf=k1();G1.exports=Qf});var U1=n(function(nm,M1){"use strict";var Jf=require("@stdlib/assert/is-string").isPrimitive,Yf=v(),Kf=Wr();function of(r){if(!Jf(r))throw new TypeError(Yf("invalid argument. Must provide a string. Value: `%s`.",r));return Kf(r)}M1.exports=of});var $1=n(function(um,W1){"use strict";var cf=U1();W1.exports=cf});var J1=n(function(sm,Q1){"use strict";var df=require("@stdlib/assert/is-string").isPrimitive,rA=require("@stdlib/assert/is-integer"),j1=Q(),iA=require("@stdlib/assert/has-utf16-surrogate-pair-at"),v0=yr(),H1=v(),xA=v0.breakType,Z1=v0.breakProperty,X1=v0.emojiProperty;function tA(r,i){var t,x,a,u,e,s,F;if(!df(r))throw new TypeError(H1("invalid argument. First argument must be a string. Value: `%s`.",r));if(u=r.length,arguments.length>1){if(!rA(i))throw new TypeError(H1("invalid argument. Second argument must be an integer. Value: `%s`.",i));e=i}else e=u-1;if(u===0||e<=0)return-1;for(e>=u&&(e=u-1),t=[],x=[],s=j1(r,0),t.push(Z1(s)),x.push(X1(s)),a=-1,F=1;F<=e;F++){if(iA(r,F-1)){a=F-2,t.length=0,x.length=0;continue}if(s=j1(r,F),t.push(Z1(s)),x.push(X1(s)),xA(t,x)>0){a=F-1,t.length=0,x.length=0;continue}}return a}Q1.exports=tA});var z=n(function(em,Y1){"use strict";var aA=J1();Y1.exports=aA});var ru=n(function(Fm,d1){"use strict";var nA=require("@stdlib/assert/is-string").isPrimitive,K1=require("@stdlib/assert/is-plain-object"),uA=require("@stdlib/assert/has-own-property"),sA=require("@stdlib/array/base/assert/contains").factory,o1=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,eA=$r(),FA=jr(),vA=Hr(),M=v(),c1=["grapheme","code_point","code_unit"],CA={grapheme:vA,code_point:FA,code_unit:eA},BA=sA(c1);function lA(r){var i,t,x,a;if(!nA(r))throw new TypeError(M("invalid argument. First argument must be a string. Value: `%s`.",r));if(x={mode:"grapheme"},t=arguments.length,t===1)a=1;else if(t===2){if(a=arguments[1],K1(a))i=a,a=1;else if(!o1(a))throw new TypeError(M("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a))}else{if(a=arguments[1],!o1(a))throw new TypeError(M("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a));if(i=arguments[2],!K1(i))throw new TypeError(M("invalid argument. Options argument must be an object. Value: `%s`.",i))}if(i&&uA(i,"mode")&&(x.mode=i.mode,!BA(x.mode)))throw new TypeError(M('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",c1.join('", "'),x.mode));return CA[x.mode](r,a)}d1.exports=lA});var xu=n(function(vm,iu){"use strict";var gA=ru();iu.exports=gA});var uu=n(function(Cm,nu){"use strict";var fA=require("@stdlib/assert/is-string").isPrimitive,AA=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,tu=z(),au=v();function DA(r,i){var t;if(!fA(r))throw new TypeError(au("invalid argument. First argument must be a string. Value: `%s`.",r));if(r==="")return"";if(arguments.length>1){if(!AA(i))throw new TypeError(au("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(i===0)return r;for(t=r.length-1;i>0;)t=tu(r,t),i-=1;return r.substring(0,t+1)}return r.substring(0,tu(r,r.length-1)+1)}nu.exports=DA});var eu=n(function(Bm,su){"use strict";var EA=uu();su.exports=EA});var vu=n(function(lm,Fu){"use strict";var pA=require("@stdlib/assert/is-string").isPrimitive,mA=v(),hA=65279;function qA(r){if(!pA(r))throw new TypeError(mA("invalid argument. Must provide a string. Value: `%s`.",r));return r.charCodeAt(0)===hA?r.slice(1):r}Fu.exports=qA});var Bu=n(function(gm,Cu){"use strict";var wA=vu();Cu.exports=wA});var gu=n(function(fm,lu){"use strict";var bA=require("@stdlib/assert/is-string").isPrimitive,yA=v();function TA(r){if(!bA(r))throw new TypeError(yA("invalid argument. Must provide a string. Value: `%s`.",r));return r.toUpperCase()}lu.exports=TA});var C0=n(function(Am,fu){"use strict";var VA=gu();fu.exports=VA});var Eu=n(function(Dm,Du){"use strict";var SA=require("@stdlib/assert/is-string-array"),Au=C0(),PA=require("@stdlib/assert/is-boolean").isPrimitive,RA=require("@stdlib/assert/is-string").isPrimitive,NA=require("@stdlib/nlp/tokenize"),B0=v();function LA(r,i,t){var x,a,u,e,s,F,g,E;if(!RA(r))throw new TypeError(B0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!SA(i))throw new TypeError(B0("invalid argument. Second argument must be an array of strings. Value: `%s`.",i));if(arguments.length>2&&!PA(t))throw new TypeError(B0("invalid argument. Third argument must be a boolean. Value: `%s`.",t));if(x=NA(r,!0),F=i.length,s=[],t){for(u=i.slice(),g=0;g=0;){for(t=GA(r,x),a=t+1;a<=x;a++)i.push(r.charAt(a));x=t}return i.join("")}yu.exports=UA});var Su=n(function(qm,Vu){"use strict";var WA=Tu();Vu.exports=WA});var Ru=n(function(wm,Pu){"use strict";var $A=require("@stdlib/assert/is-string").isPrimitive,jA=v(),HA=Jr();function ZA(r){if(!$A(r))throw new TypeError(jA("invalid argument. Must provide a string. Value: `%s`.",r));return HA(r)}Pu.exports=ZA});var Lu=n(function(bm,Nu){"use strict";var XA=Ru();Nu.exports=XA});var ku=n(function(ym,Iu){"use strict";var Ou=require("@stdlib/assert/is-string").isPrimitive,QA=d(),JA=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,YA=require("@stdlib/assert/is-string-array").primitives,KA=P(),_u=require("@stdlib/utils/escape-regexp-string"),f0=v(),oA=" \f\n\r \v\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF";function cA(r,i,t){var x,a,u,e,s;if(!Ou(r))throw new TypeError(f0("invalid argument. Must provide a string. Value: `%s`.",r));if(!JA(i))throw new TypeError(f0("invalid argument. Must provide a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(u=Ou(t),!u&&!YA(t))throw new TypeError(f0("invalid argument. Must provide a string or an array of strings. Value: `%s`.",t));for(u&&(t=QA(t)),x=t.length-1,a="",s=0;s2){if(!vD(t))throw new TypeError(A0("invalid argument. Third argument must be an integer. Value: `%s`.",t));x=t}else x=0;return CD(r,i,x)}Ju.exports=BD});var ou=n(function(Lm,Ku){"use strict";var lD=Yu();Ku.exports=lD});var rs=n(function(Om,du){"use strict";var cu=require("@stdlib/assert/is-string").isPrimitive,gD=require("@stdlib/assert/is-integer").isPrimitive,D0=v();function fD(r,i,t){var x;if(!cu(r))throw new TypeError(D0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!cu(i))throw new TypeError(D0("invalid argument. Second argument must be a string. Value: `%s`.",i));if(arguments.length>2){if(!gD(t))throw new TypeError(D0("invalid argument. Third argument must be an integer. Value: `%s`.",t));x=r.indexOf(i,t)}else x=r.indexOf(i);return x===-1?"":r.substring(x+i.length)}du.exports=fD});var xs=n(function(_m,is){"use strict";var AD=rs();is.exports=AD});var ns=n(function(Im,as){"use strict";var DD=require("@stdlib/assert/is-integer").isPrimitive,ts=require("@stdlib/assert/is-string").isPrimitive,E0=v();function ED(r,i,t){var x;if(!ts(r))throw new TypeError(E0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!ts(i))throw new TypeError(E0("invalid argument. Second argument must be a string. Value: `%s`.",i));if(arguments.length>2){if(!DD(t))throw new TypeError(E0("invalid argument. Third argument must be a nonnegative integer. Value: `%s`.",t));x=r.lastIndexOf(i,t)}else x=r.lastIndexOf(i);return x===-1?"":r.substring(x+i.length)}as.exports=ED});var ss=n(function(km,us){"use strict";var pD=ns();us.exports=pD});var Cs=n(function(Gm,vs){"use strict";var es=require("@stdlib/assert/is-string").isPrimitive,Fs=v();function mD(r,i){var t;if(!es(r))throw new TypeError(Fs("invalid argument. First argument must be a string. Value: `%s`.",r));if(!es(i))throw new TypeError(Fs("invalid argument. Second argument must be a string. Value: `%s`.",i));return t=r.indexOf(i),t===-1?r:r.substring(0,t)}vs.exports=mD});var ls=n(function(zm,Bs){"use strict";var hD=Cs();Bs.exports=hD});var Ds=n(function(Mm,As){"use strict";var gs=require("@stdlib/assert/is-string").isPrimitive,fs=v();function qD(r,i){var t;if(!gs(r))throw new TypeError(fs("invalid argument. First argument must be a string. Value: `%s`.",r));if(!gs(i))throw new TypeError(fs("invalid argument. Second argument must be a string. Value: `%s`.",i));return t=r.lastIndexOf(i),t===-1?r:r.substring(0,t)}As.exports=qD});var ps=n(function(Um,Es){"use strict";var wD=Ds();Es.exports=wD});var bs=n(function(Wm,ws){"use strict";var nr=require("@stdlib/utils/define-nonenumerable-read-only-property"),bD=require("@stdlib/assert/is-function"),yD=require("@stdlib/assert/is-string").isPrimitive,ms=require("@stdlib/symbol/iterator"),hs=w(),qs=v();function p0(r){var i,t,x,a,u;if(!yD(r))throw new TypeError(qs("invalid argument. First argument must be astring. Value: `%s`.",r));if(arguments.length>1){if(a=arguments[1],!bD(a))throw new TypeError(qs("invalid argument. Second argument must be a function. Value: `%s`.",a));i=arguments[2]}return u=0,t={},a?nr(t,"next",e):nr(t,"next",s),nr(t,"return",F),ms&&nr(t,ms,g),t;function e(){var E,f;return x?{done:!0}:(f=hs(r,u),f===-1?(x=!0,r.length?{value:a.call(i,r.substring(u),u,r),done:!1}:{done:!0}):(E=a.call(i,r.substring(u,f),u,r),u=f,{value:E,done:!1}))}function s(){var E,f;return x?{done:!0}:(f=hs(r,u),f===-1?(x=!0,r.length?{value:r.substring(u),done:!1}:{done:!0}):(E=r.substring(u,f),u=f,{value:E,done:!1}))}function F(E){return x=!0,arguments.length?{value:E,done:!0}:{done:!0}}function g(){return a?p0(r,a,i):p0(r)}}ws.exports=p0});var Ts=n(function($m,ys){"use strict";var TD=bs();ys.exports=TD});var Ns=n(function(jm,Rs){"use strict";var ur=require("@stdlib/utils/define-nonenumerable-read-only-property"),VD=require("@stdlib/assert/is-function"),SD=require("@stdlib/assert/is-string").isPrimitive,Vs=require("@stdlib/symbol/iterator"),Ss=z(),Ps=v();function m0(r){var i,t,x,a,u;if(!SD(r))throw new TypeError(Ps("invalid argument. First argument must be astring. Value: `%s`.",r));if(arguments.length>1){if(a=arguments[1],!VD(a))throw new TypeError(Ps("invalid argument. Second argument must be a function. Value: `%s`.",a));i=arguments[2]}return u=r.length-1,t={},a?ur(t,"next",e):ur(t,"next",s),ur(t,"return",F),Vs&&ur(t,Vs,g),t;function e(){var E,f;return x?{done:!0}:(f=Ss(r,u),f===-1?(x=!0,r.length?{value:a.call(i,r.substring(f+1,u+1),f+1,r),done:!1}:{done:!0}):(E=a.call(i,r.substring(f+1,u+1),f+1,r),u=f,{value:E,done:!1}))}function s(){var E,f;return x?{done:!0}:(f=Ss(r,u),f===-1?(x=!0,r.length?{value:r.substring(f+1,u+1),done:!1}:{done:!0}):(E=r.substring(f+1,u+1),u=f,{value:E,done:!1}))}function F(E){return x=!0,arguments.length?{value:E,done:!0}:{done:!0}}function g(){return a?m0(r,a,i):m0(r)}}Rs.exports=m0});var Os=n(function(Hm,Ls){"use strict";var PD=Ns();Ls.exports=PD});var Is=n(function(Zm,_s){"use strict";var RD=require("@stdlib/assert/is-string").isPrimitive,ND=v(),LD=q();function OD(r){if(!RD(r))throw new TypeError(ND("invalid argument. Must provide a string. Value: `%s`.",r));return LD(r)}_s.exports=OD});var Gs=n(function(Xm,ks){"use strict";var _D=Is();ks.exports=_D});var Ws=n(function(Qm,Us){"use strict";var zs=require("@stdlib/assert/is-string").isPrimitive,ID=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Ms=rr(),kD=w(),h0=v();function GD(r,i,t){var x,a,u,e;if(!zs(r))throw new TypeError(h0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!ID(i))throw new TypeError(h0("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2&&!zs(t))throw new TypeError(h0("invalid argument. Third argument must be a string. Value: `%s`.",t));if(t=t||"...",x=Ms(t),a=0,i>Ms(r))return r;if(i-x<0)return t.slice(0,i);for(u=0;u2&&!Hs(t))throw new TypeError(q0("invalid argument. Third argument must be a string. Value: `%s`.",t));if(t=t||"...",x=Zs(t),u=Zs(r),a=0,i>u)return r;if(i-x<0)return t.slice(0,i);for(e=UD((i-x)/2),F=u-WD((i-x)/2),s=0;s0&&(g=Xs(r,a),!(g>=F+a-s));)a=g,s+=1;return r.substring(0,E)+t+r.substring(g)}Qs.exports=$D});var Ks=n(function(Km,Ys){"use strict";var jD=Js();Ys.exports=jD});var cs=n(function(om,os){"use strict";var HD=require("@stdlib/assert/is-string").isPrimitive,ZD=v(),XD=dr();function QD(r){if(!HD(r))throw new TypeError(ZD("invalid argument. First argument must be a string. Value: `%s`.",r));return XD(r)}os.exports=QD});var re=n(function(cm,ds){"use strict";var JD=cs();ds.exports=JD});var B=require("@stdlib/utils/define-read-only-property"),C={};B(C,"acronym",Ei());B(C,"base",Ra());B(C,"camelcase",_a());B(C,"capitalize",za());B(C,"codePointAt",Q());B(C,"constantcase",$a());B(C,"dotcase",Xa());B(C,"endsWith",oa());B(C,"first",nn());B(C,"forEach",Cn());B(C,"format",v());B(C,"fromCodePoint",En());B(C,"headercase",qn());B(C,"kebabcase",Tn());B(C,"lpad",i0());B(C,"ltrim",_n());B(C,"ltrimN",Hn());B(C,"lowercase",Jn());B(C,"nextGraphemeClusterBreak",w());B(C,"numGraphemeClusters",rr());B(C,"num2words",f1());B(C,"pad",_1());B(C,"pascalcase",z1());B(C,"percentEncode",$1());B(C,"prevGraphemeClusterBreak",z());B(C,"removeFirst",xu());B(C,"removeLast",eu());B(C,"removePunctuation",lr());B(C,"removeUTF8BOM",Bu());B(C,"removeWords",mu());B(C,"repeat",s0());B(C,"replace",P());B(C,"replaceBefore",bu());B(C,"reverseString",Su());B(C,"rpad",e0());B(C,"rtrim",Lu());B(C,"rtrimN",zu());B(C,"snakecase",$u());B(C,"splitGraphemeClusters",d());B(C,"startcase",Xu());B(C,"startsWith",ou());B(C,"substringAfter",xs());B(C,"substringAfterLast",ss());B(C,"substringBefore",ls());B(C,"substringBeforeLast",ps());B(C,"graphemeClusters2iterator",Ts());B(C,"graphemeClusters2iteratorRight",Os());B(C,"trim",Gs());B(C,"truncate",js());B(C,"truncateMiddle",Ks());B(C,"uncapitalize",re());B(C,"uppercase",C0());B(C,"utf16ToUTF8Array",Ur());module.exports=C;
+"use strict";var n=function(r,i){return function(){return i||r((i={exports:{}}).exports,i),i.exports}};var er=n(function(TD,b0){"use strict";function fe(r){return typeof r=="number"}b0.exports=fe});var Fr=n(function(SD,T0){"use strict";function Ee(r){return r[0]==="-"}function y0(r){var i="",t;for(t=0;t0&&(i-=1),t=x.toExponential(i)):t=x.toPrecision(r.precision),r.alternate||(t=y.call(t,Le,"$1e"),t=y.call(t,Re,"e"),t=y.call(t,Pe,""));break;default:throw new Error("invalid double notation. Value: "+r.specifier)}return t=y.call(t,ye,"e+0$1"),t=y.call(t,Te,"e-0$1"),r.alternate&&(t=y.call(t,Se,"$1."),t=y.call(t,Ve,"$1.e")),x>=0&&r.sign&&(t=r.sign+t),t=r.specifier===_0.call(r.specifier)?_0.call(t):be.call(t),t}O0.exports=Ne});var M0=n(function(LD,G0){"use strict";function k0(r){var i="",t;for(t=0;t127)throw new Error("invalid character code. Value: "+x.arg);x.arg=W(u)?String(x.arg):ze(u)}break;case"e":case"E":case"f":case"F":case"g":case"G":i||(x.precision=6),x.arg=ke(x);break;default:throw new Error("invalid specifier: "+x.specifier)}x.maxWidth>=0&&x.arg.length>x.maxWidth&&(x.arg=x.arg.substring(0,x.maxWidth)),x.padZeros?x.arg=Me(x.arg,x.width||x.precision,x.padRight):x.width&&(x.arg=Ge(x.arg,x.width,x.padRight)),s+=x.arg||"",e+=1}return s}z0.exports=je});var vr=n(function(_D,W0){"use strict";var $e=U0();W0.exports=$e});var $0=n(function(OD,j0){"use strict";var j=/%(?:([1-9]\d*)\$)?([0 +\-#]*)(\*|\d+)?(?:(\.)(\*|\d+)?)?[hlL]?([%A-Za-z])/g;function He(r){var i={mapping:r[1]?parseInt(r[1],10):void 0,flags:r[2],width:r[3],precision:r[5],specifier:r[6]};return r[4]==="."&&r[5]===void 0&&(i.precision="1"),i}function Ze(r){var i,t,x,a;for(t=[],a=0,x=j.exec(r);x;)i=r.slice(a,j.lastIndex-x[0].length),i.length&&t.push(i),t.push(He(x)),a=j.lastIndex,x=j.exec(r);return i=r.slice(a),i.length&&t.push(i),t}j0.exports=Ze});var Cr=n(function(ID,H0){"use strict";var Xe=$0();H0.exports=Xe});var X0=n(function(kD,Z0){"use strict";function Qe(r){return typeof r=="string"}Z0.exports=Qe});var Y0=n(function(GD,J0){"use strict";var Je=vr(),Ye=Cr(),Ke=X0();function Q0(r){var i,t,x;if(!Ke(r))throw new TypeError(Q0("invalid argument. First argument must be a string. Value: `%s`.",r));for(i=Ye(r),t=new Array(arguments.length),t[0]=i,x=1;x?`{}|~\/\\\[\]]/g;function vF(r){if(!uF(r))throw new TypeError(eF("invalid argument. Must provide a string. Value: `%s`.",r));return sF(r,FF,"")}ti.exports=vF});var gr=n(function(HD,ni){"use strict";var CF=ai();ni.exports=CF});var si=n(function(ZD,ui){"use strict";function BF(r){return r.toUpperCase()}ui.exports=BF});var R=n(function(XD,ei){"use strict";var lF=si();ei.exports=lF});var vi=n(function(QD,Fi){"use strict";function gF(r){return r.toLowerCase()}Fi.exports=gF});var h=n(function(JD,Ci){"use strict";var fF=vi();Ci.exports=fF});var gi=n(function(YD,li){"use strict";var EF=require("@stdlib/assert/is-plain-object"),AF=require("@stdlib/assert/has-own-property"),DF=require("@stdlib/assert/is-string-array").primitives,pF=require("@stdlib/assert/is-empty-array"),Bi=v();function mF(r,i){return EF(i)?AF(i,"stopwords")&&(r.stopwords=i.stopwords,!DF(r.stopwords)&&!pF(r.stopwords))?new TypeError(Bi("invalid option. `%s` option must be an array of strings. Option: `%s`.","stopwords",r.stopwords)):null:new TypeError(Bi("invalid argument. Options argument must be an object. Value: `%s`.",i))}li.exports=mF});var fi=n(function(KD,hF){hF.exports=["a","all","also","although","an","and","any","are","as","at","b","be","been","but","by","c","could","d","e","each","eg","either","even","ever","ex","except","f","far","few","for","from","further","g","get","gets","given","gives","go","going","got","h","had","has","have","having","he","her","here","herself","him","himself","his","how","i","ie","if","in","into","is","it","its","itself","j","just","k","l","less","let","m","many","may","me","might","must","my","myself","n","need","needs","next","no","non","not","now","o","of","off","old","on","once","only","or","our","out","p","per","put","q","r","s","same","shall","she","should","since","so","such","sure","t","than","that","the","their","them","then","there","these","they","this","those","though","thus","to","too","u","us","v","w","was","we","well","went","were","what","when","where","which","who","whose","why","will","would","x","y","yet","z"]});var Ai=n(function(oD,Ei){"use strict";var qF=gr(),wF=require("@stdlib/nlp/tokenize"),bF=p(),yF=R(),TF=h(),SF=require("@stdlib/assert/is-string").isPrimitive,VF=require("@stdlib/array/base/assert/contains").factory,PF=v(),RF=gi(),LF=fi(),NF=/-/g;function _F(r,i){var t,x,a,u,s,e;if(!SF(r))throw new TypeError(PF("invalid argument. First argument must be a string. Value: `%s`.",r));if(a={},arguments.length>1&&(u=RF(a,i),u))throw u;for(t=VF(a.stopwords||LF),r=qF(r),r=bF(r,NF," "),x=wF(r),s="",e=0;e?`{}|~\/\\\[\]_#$*&^@%]+/g,iv=/(?:\s|^)([^\s]+)(?=\s|$)/g,xv=/([a-z0-9])([A-Z])/g;function tv(r,i,t){return i=oF(i),t===0?i:KF(i)}function av(r){return r=$(r,rv," "),r=$(r,dF," "),r=$(r,xv,"$1 $2"),r=cF(r),$(r,iv,tv)}Ii.exports=av});var Ar=n(function(e2,Gi){"use strict";var nv=ki();Gi.exports=nv});var $i=n(function(F2,ji){"use strict";var Mi=65536,zi=1024,H=55296,Ui=56319,Z=56320,Wi=57343;function uv(r,i,t){var x,a,u;return i<0&&(i+=r.length),x=r.charCodeAt(i),x>=H&&x<=Ui&&i=Z&&x<=Wi&&i>=1?(u=r.charCodeAt(i-1),a=x,H<=u&&u<=Ui?(u-H)*zi+(a-Z)+Mi:a):x}ji.exports=uv});var Dr=n(function(v2,Hi){"use strict";var sv=$i();Hi.exports=sv});var Xi=n(function(C2,Zi){"use strict";var ev=R(),pr=p(),Fv=w(),vv=/\s+/g,Cv=/[\-!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,Bv=/([a-z0-9])([A-Z])/g;function lv(r){return r=pr(r,Cv," "),r=pr(r,Bv,"$1 $2"),r=Fv(r),r=pr(r,vv,"_"),ev(r)}Zi.exports=lv});var mr=n(function(B2,Qi){"use strict";var gv=Xi();Qi.exports=gv});var ci=n(function(l2,oi){"use strict";var Ji=require("@stdlib/assert/is-string").isPrimitive,Yi=v(),Ki=require("@stdlib/math/base/special/min");function fv(r,i){var t,x,a,u,s,e,F,g;if(!Ji(r))throw new TypeError(Yi("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Ji(i))throw new TypeError(Yi("invalid argument. Second argument must be a string. Value: `%s`.",i));if(s=r.length,u=i.length,s===0)return u;if(u===0)return s;for(x=[],e=0;e<=u;e++)x.push(e);for(e=0;e?`{}|~\/\\\[\]_#$*&^@%]+/g,qv=/([a-z0-9])([A-Z])/g;function wv(r){return r=hr(r,hv," "),r=hr(r,qv,"$1 $2"),r=pv(r),r=hr(r,mv,"."),Dv(r)}ax.exports=wv});var qr=n(function(A2,ux){"use strict";var bv=nx();ux.exports=bv});var ex=n(function(D2,sx){"use strict";var yv=typeof String.prototype.endsWith!="undefined";sx.exports=yv});var vx=n(function(p2,Fx){"use strict";function Tv(r,i,t){var x,a,u;if(a=i.length,t===0)return a===0;if(t<0?x=r.length+t:x=t,a===0)return!0;if(x-=a,x<0)return!1;for(u=0;ur.length?!1:Vv.call(r,i,x))}lx.exports=Pv});var X=n(function(q2,fx){"use strict";var Rv=ex(),Lv=vx(),Nv=gx(),wr;Rv?wr=Nv:wr=Lv;fx.exports=wr});var Ax=n(function(w2,Ex){"use strict";function _v(r,i){return r.substring(0,i)}Ex.exports=_v});var br=n(function(b2,Dx){"use strict";var Ov=Ax();Dx.exports=Ov});var mx=n(function(y2,px){"use strict";var Iv=require("@stdlib/regexp/utf16-surrogate-pair").REGEXP,kv=/[\uDC00-\uDFFF]/,Gv=/[\uD800-\uDBFF]/;function Mv(r,i){var t,x,a,u,s,e;if(r===""||i===0)return"";if(i===1)return r=r.substring(0,2),Iv.test(r)?r:r[0];for(t=r.length,x="",s=0,e=0;e=r.length)throw new RangeError(Q("invalid argument. Second argument must be a valid position (i.e., be within string bounds). Value: `%d`.",i));if(arguments.length>2){if(!Uv(t))throw new TypeError(Q("invalid argument. Third argument must be a boolean. Value: `%s`.",t));x=t}else x=!1;return $v(r,i,x)}qx.exports=Hv});var J=n(function(V2,bx){"use strict";var Zv=wx();bx.exports=Zv});var N=n(function(P2,yx){"use strict";var Xv={CR:0,LF:1,Control:2,Extend:3,RegionalIndicator:4,SpacingMark:5,L:6,V:7,T:8,LV:9,LVT:10,Other:11,Prepend:12,ZWJ:13,NotBreak:0,BreakStart:1,Break:2,BreakLastRegional:3,BreakPenultimateRegional:4,ExtendedPictographic:101};yx.exports=Xv});var Px=n(function(R2,Vx){"use strict";var l=N();function Qv(r,i,t,x){var a,u;for(t>=r.length&&(t=r.length-1),a=0,u=i;u<=t;u++)r[u]===x&&(a+=1);return a}function Tx(r,i,t,x){var a;for(t>=r.length&&(t=r.length-1),a=i;a<=t;a++)if(r[a]!==x)return!1;return!0}function Jv(r,i,t,x){var a;for(t>=r.length&&(t=r.length-1),a=i;a<=t;a++)if(r[a]===x)return a;return-1}function Sx(r,i,t,x){var a;for(i>=r.length-1&&(i=r.length-1),a=i;a>=t;a--)if(r[a]===x)return a;return-1}function Yv(r,i){var t,x,a,u,s,e;return s=r.length,e=s-1,a=r[e-1],x=r[e],t=i[e],u=Sx(r,e,0,l.RegionalIndicator),u>0&&a!==l.Prepend&&a!==l.RegionalIndicator&&Tx(r,1,u-1,l.RegionalIndicator)?Qv(r,0,e,l.RegionalIndicator)%2===1?l.BreakLastRegional:l.BreakPenultimateRegional:a===l.CR&&x===l.LF?l.NotBreak:a===l.Control||a===l.CR||a===l.LF||x===l.Control||x===l.CR||x===l.LF?l.BreakStart:a===l.L&&(x===l.L||x===l.V||x===l.LV||x===l.LVT)||(a===l.LV||a===l.V)&&(x===l.V||x===l.T)||(a===l.LVT||a===l.T)&&x===l.T||x===l.Extend||x===l.ZWJ||x===l.SpacingMark||a===l.Prepend||(u=Sx(i,e-1,0,l.ExtendedPictographic),u>=0&&a===l.ZWJ&&t===l.ExtendedPictographic&&i[u]===l.ExtendedPictographic&&Tx(r,u+1,e-2,l.Extend))?l.NotBreak:Jv(r,1,e-1,l.RegionalIndicator)>=0?l.Break:a===l.RegionalIndicator&&x===l.RegionalIndicator?l.NotBreak:l.BreakStart}Vx.exports=Yv});var Nx=n(function(L2,Lx){"use strict";var Rx=N();function Kv(r){return r===169||r===174||r===8252||r===8265||r===8482||r===8505||8596<=r&&r<=8601||8617<=r&&r<=8618||8986<=r&&r<=8987||r===9e3||r===9096||r===9167||9193<=r&&r<=9196||9197<=r&&r<=9198||r===9199||r===9200||9201<=r&&r<=9202||r===9203||9208<=r&&r<=9210||r===9410||9642<=r&&r<=9643||r===9654||r===9664||9723<=r&&r<=9726||9728<=r&&r<=9729||9730<=r&&r<=9731||r===9732||r===9733||9735<=r&&r<=9741||r===9742||9743<=r&&r<=9744||r===9745||r===9746||9748<=r&&r<=9749||9750<=r&&r<=9751||r===9752||9753<=r&&r<=9756||r===9757||9758<=r&&r<=9759||r===9760||r===9761||9762<=r&&r<=9763||9764<=r&&r<=9765||r===9766||9767<=r&&r<=9769||r===9770||9771<=r&&r<=9773||r===9774||r===9775||9776<=r&&r<=9783||9784<=r&&r<=9785||r===9786||9787<=r&&r<=9791||r===9792||r===9793||r===9794||9795<=r&&r<=9799||9800<=r&&r<=9811||9812<=r&&r<=9822||r===9823||r===9824||9825<=r&&r<=9826||r===9827||r===9828||9829<=r&&r<=9830||r===9831||r===9832||9833<=r&&r<=9850||r===9851||9852<=r&&r<=9853||r===9854||r===9855||9856<=r&&r<=9861||9872<=r&&r<=9873||r===9874||r===9875||r===9876||r===9877||9878<=r&&r<=9879||r===9880||r===9881||r===9882||9883<=r&&r<=9884||9885<=r&&r<=9887||9888<=r&&r<=9889||9890<=r&&r<=9894||r===9895||9896<=r&&r<=9897||9898<=r&&r<=9899||9900<=r&&r<=9903||9904<=r&&r<=9905||9906<=r&&r<=9916||9917<=r&&r<=9918||9919<=r&&r<=9923||9924<=r&&r<=9925||9926<=r&&r<=9927||r===9928||9929<=r&&r<=9933||r===9934||r===9935||r===9936||r===9937||r===9938||r===9939||r===9940||9941<=r&&r<=9960||r===9961||r===9962||9963<=r&&r<=9967||9968<=r&&r<=9969||9970<=r&&r<=9971||r===9972||r===9973||r===9974||9975<=r&&r<=9977||r===9978||9979<=r&&r<=9980||r===9981||9982<=r&&r<=9985||r===9986||9987<=r&&r<=9988||r===9989||9992<=r&&r<=9996||r===9997||r===9998||r===9999||1e4<=r&&r<=10001||r===10002||r===10004||r===10006||r===10013||r===10017||r===10024||10035<=r&&r<=10036||r===10052||r===10055||r===10060||r===10062||10067<=r&&r<=10069||r===10071||r===10083||r===10084||10085<=r&&r<=10087||10133<=r&&r<=10135||r===10145||r===10160||r===10175||10548<=r&&r<=10549||11013<=r&&r<=11015||11035<=r&&r<=11036||r===11088||r===11093||r===12336||r===12349||r===12951||r===12953||126976<=r&&r<=126979||r===126980||126981<=r&&r<=127182||r===127183||127184<=r&&r<=127231||127245<=r&&r<=127247||r===127279||127340<=r&&r<=127343||127344<=r&&r<=127345||127358<=r&&r<=127359||r===127374||127377<=r&&r<=127386||127405<=r&&r<=127461||127489<=r&&r<=127490||127491<=r&&r<=127503||r===127514||r===127535||127538<=r&&r<=127546||127548<=r&&r<=127551||127561<=r&&r<=127567||127568<=r&&r<=127569||127570<=r&&r<=127743||127744<=r&&r<=127756||127757<=r&&r<=127758||r===127759||r===127760||r===127761||r===127762||127763<=r&&r<=127765||127766<=r&&r<=127768||r===127769||r===127770||r===127771||r===127772||127773<=r&&r<=127774||127775<=r&&r<=127776||r===127777||127778<=r&&r<=127779||127780<=r&&r<=127788||127789<=r&&r<=127791||127792<=r&&r<=127793||127794<=r&&r<=127795||127796<=r&&r<=127797||r===127798||127799<=r&&r<=127818||r===127819||127820<=r&&r<=127823||r===127824||127825<=r&&r<=127867||r===127868||r===127869||127870<=r&&r<=127871||127872<=r&&r<=127891||127892<=r&&r<=127893||127894<=r&&r<=127895||r===127896||127897<=r&&r<=127899||127900<=r&&r<=127901||127902<=r&&r<=127903||127904<=r&&r<=127940||r===127941||r===127942||r===127943||r===127944||r===127945||r===127946||127947<=r&&r<=127950||127951<=r&&r<=127955||127956<=r&&r<=127967||127968<=r&&r<=127971||r===127972||127973<=r&&r<=127984||127985<=r&&r<=127986||r===127987||r===127988||r===127989||r===127990||r===127991||127992<=r&&r<=127994||128e3<=r&&r<=128007||r===128008||128009<=r&&r<=128011||128012<=r&&r<=128014||128015<=r&&r<=128016||128017<=r&&r<=128018||r===128019||r===128020||r===128021||r===128022||128023<=r&&r<=128041||r===128042||128043<=r&&r<=128062||r===128063||r===128064||r===128065||128066<=r&&r<=128100||r===128101||128102<=r&&r<=128107||128108<=r&&r<=128109||128110<=r&&r<=128172||r===128173||128174<=r&&r<=128181||128182<=r&&r<=128183||128184<=r&&r<=128235||128236<=r&&r<=128237||r===128238||r===128239||128240<=r&&r<=128244||r===128245||128246<=r&&r<=128247||r===128248||128249<=r&&r<=128252||r===128253||r===128254||128255<=r&&r<=128258||r===128259||128260<=r&&r<=128263||r===128264||r===128265||128266<=r&&r<=128276||r===128277||128278<=r&&r<=128299||128300<=r&&r<=128301||128302<=r&&r<=128317||128326<=r&&r<=128328||128329<=r&&r<=128330||128331<=r&&r<=128334||r===128335||128336<=r&&r<=128347||128348<=r&&r<=128359||128360<=r&&r<=128366||128367<=r&&r<=128368||128369<=r&&r<=128370||128371<=r&&r<=128377||r===128378||128379<=r&&r<=128390||r===128391||128392<=r&&r<=128393||128394<=r&&r<=128397||128398<=r&&r<=128399||r===128400||128401<=r&&r<=128404||128405<=r&&r<=128406||128407<=r&&r<=128419||r===128420||r===128421||128422<=r&&r<=128423||r===128424||128425<=r&&r<=128432||128433<=r&&r<=128434||128435<=r&&r<=128443||r===128444||128445<=r&&r<=128449||128450<=r&&r<=128452||128453<=r&&r<=128464||128465<=r&&r<=128467||128468<=r&&r<=128475||128476<=r&&r<=128478||128479<=r&&r<=128480||r===128481||r===128482||r===128483||128484<=r&&r<=128487||r===128488||128489<=r&&r<=128494||r===128495||128496<=r&&r<=128498||r===128499||128500<=r&&r<=128505||r===128506||128507<=r&&r<=128511||r===128512||128513<=r&&r<=128518||128519<=r&&r<=128520||128521<=r&&r<=128525||r===128526||r===128527||r===128528||r===128529||128530<=r&&r<=128532||r===128533||r===128534||r===128535||r===128536||r===128537||r===128538||r===128539||128540<=r&&r<=128542||r===128543||128544<=r&&r<=128549||128550<=r&&r<=128551||128552<=r&&r<=128555||r===128556||r===128557||128558<=r&&r<=128559||128560<=r&&r<=128563||r===128564||r===128565||r===128566||128567<=r&&r<=128576||128577<=r&&r<=128580||128581<=r&&r<=128591||r===128640||128641<=r&&r<=128642||128643<=r&&r<=128645||r===128646||r===128647||r===128648||r===128649||128650<=r&&r<=128651||r===128652||r===128653||r===128654||r===128655||r===128656||128657<=r&&r<=128659||r===128660||r===128661||r===128662||r===128663||r===128664||128665<=r&&r<=128666||128667<=r&&r<=128673||r===128674||r===128675||128676<=r&&r<=128677||r===128678||128679<=r&&r<=128685||128686<=r&&r<=128689||r===128690||128691<=r&&r<=128693||r===128694||128695<=r&&r<=128696||128697<=r&&r<=128702||r===128703||r===128704||128705<=r&&r<=128709||128710<=r&&r<=128714||r===128715||r===128716||128717<=r&&r<=128719||r===128720||128721<=r&&r<=128722||128723<=r&&r<=128724||r===128725||128726<=r&&r<=128727||128728<=r&&r<=128735||128736<=r&&r<=128741||128742<=r&&r<=128744||r===128745||r===128746||128747<=r&&r<=128748||128749<=r&&r<=128751||r===128752||128753<=r&&r<=128754||r===128755||128756<=r&&r<=128758||128759<=r&&r<=128760||r===128761||r===128762||128763<=r&&r<=128764||128765<=r&&r<=128767||128884<=r&&r<=128895||128981<=r&&r<=128991||128992<=r&&r<=129003||129004<=r&&r<=129023||129036<=r&&r<=129039||129096<=r&&r<=129103||129114<=r&&r<=129119||129160<=r&&r<=129167||129198<=r&&r<=129279||r===129292||129293<=r&&r<=129295||129296<=r&&r<=129304||129305<=r&&r<=129310||r===129311||129312<=r&&r<=129319||129320<=r&&r<=129327||r===129328||129329<=r&&r<=129330||129331<=r&&r<=129338||129340<=r&&r<=129342||r===129343||129344<=r&&r<=129349||129351<=r&&r<=129355||r===129356||129357<=r&&r<=129359||129360<=r&&r<=129374||129375<=r&&r<=129387||129388<=r&&r<=129392||r===129393||r===129394||129395<=r&&r<=129398||129399<=r&&r<=129400||r===129401||r===129402||r===129403||129404<=r&&r<=129407||129408<=r&&r<=129412||129413<=r&&r<=129425||129426<=r&&r<=129431||129432<=r&&r<=129442||129443<=r&&r<=129444||129445<=r&&r<=129450||129451<=r&&r<=129453||129454<=r&&r<=129455||129456<=r&&r<=129465||129466<=r&&r<=129471||r===129472||129473<=r&&r<=129474||129475<=r&&r<=129482||r===129483||r===129484||129485<=r&&r<=129487||129488<=r&&r<=129510||129511<=r&&r<=129535||129536<=r&&r<=129647||129648<=r&&r<=129651||r===129652||129653<=r&&r<=129655||129656<=r&&r<=129658||129659<=r&&r<=129663||129664<=r&&r<=129666||129667<=r&&r<=129670||129671<=r&&r<=129679||129680<=r&&r<=129685||129686<=r&&r<=129704||129705<=r&&r<=129711||129712<=r&&r<=129718||129719<=r&&r<=129727||129728<=r&&r<=129730||129731<=r&&r<=129743||129744<=r&&r<=129750||129751<=r&&r<=129791||130048<=r&&r<=131069?Rx.ExtendedPictographic:Rx.Other}Lx.exports=Kv});var Ox=n(function(N2,_x){"use strict";var m=N();function ov(r){return 1536<=r&&r<=1541||r===1757||r===1807||r===2274||r===3406||r===69821||r===69837||70082<=r&&r<=70083||r===71999||r===72001||r===72250||72324<=r&&r<=72329||r===73030?m.Prepend:r===13?m.CR:r===10?m.LF:0<=r&&r<=9||11<=r&&r<=12||14<=r&&r<=31||127<=r&&r<=159||r===173||r===1564||r===6158||r===8203||8206<=r&&r<=8207||r===8232||r===8233||8234<=r&&r<=8238||8288<=r&&r<=8292||r===8293||8294<=r&&r<=8303||r===65279||65520<=r&&r<=65528||65529<=r&&r<=65531||78896<=r&&r<=78904||113824<=r&&r<=113827||119155<=r&&r<=119162||r===917504||r===917505||917506<=r&&r<=917535||917632<=r&&r<=917759||918e3<=r&&r<=921599?m.Control:768<=r&&r<=879||1155<=r&&r<=1159||1160<=r&&r<=1161||1425<=r&&r<=1469||r===1471||1473<=r&&r<=1474||1476<=r&&r<=1477||r===1479||1552<=r&&r<=1562||1611<=r&&r<=1631||r===1648||1750<=r&&r<=1756||1759<=r&&r<=1764||1767<=r&&r<=1768||1770<=r&&r<=1773||r===1809||1840<=r&&r<=1866||1958<=r&&r<=1968||2027<=r&&r<=2035||r===2045||2070<=r&&r<=2073||2075<=r&&r<=2083||2085<=r&&r<=2087||2089<=r&&r<=2093||2137<=r&&r<=2139||2259<=r&&r<=2273||2275<=r&&r<=2306||r===2362||r===2364||2369<=r&&r<=2376||r===2381||2385<=r&&r<=2391||2402<=r&&r<=2403||r===2433||r===2492||r===2494||2497<=r&&r<=2500||r===2509||r===2519||2530<=r&&r<=2531||r===2558||2561<=r&&r<=2562||r===2620||2625<=r&&r<=2626||2631<=r&&r<=2632||2635<=r&&r<=2637||r===2641||2672<=r&&r<=2673||r===2677||2689<=r&&r<=2690||r===2748||2753<=r&&r<=2757||2759<=r&&r<=2760||r===2765||2786<=r&&r<=2787||2810<=r&&r<=2815||r===2817||r===2876||r===2878||r===2879||2881<=r&&r<=2884||r===2893||2901<=r&&r<=2902||r===2903||2914<=r&&r<=2915||r===2946||r===3006||r===3008||r===3021||r===3031||r===3072||r===3076||3134<=r&&r<=3136||3142<=r&&r<=3144||3146<=r&&r<=3149||3157<=r&&r<=3158||3170<=r&&r<=3171||r===3201||r===3260||r===3263||r===3266||r===3270||3276<=r&&r<=3277||3285<=r&&r<=3286||3298<=r&&r<=3299||3328<=r&&r<=3329||3387<=r&&r<=3388||r===3390||3393<=r&&r<=3396||r===3405||r===3415||3426<=r&&r<=3427||r===3457||r===3530||r===3535||3538<=r&&r<=3540||r===3542||r===3551||r===3633||3636<=r&&r<=3642||3655<=r&&r<=3662||r===3761||3764<=r&&r<=3772||3784<=r&&r<=3789||3864<=r&&r<=3865||r===3893||r===3895||r===3897||3953<=r&&r<=3966||3968<=r&&r<=3972||3974<=r&&r<=3975||3981<=r&&r<=3991||3993<=r&&r<=4028||r===4038||4141<=r&&r<=4144||4146<=r&&r<=4151||4153<=r&&r<=4154||4157<=r&&r<=4158||4184<=r&&r<=4185||4190<=r&&r<=4192||4209<=r&&r<=4212||r===4226||4229<=r&&r<=4230||r===4237||r===4253||4957<=r&&r<=4959||5906<=r&&r<=5908||5938<=r&&r<=5940||5970<=r&&r<=5971||6002<=r&&r<=6003||6068<=r&&r<=6069||6071<=r&&r<=6077||r===6086||6089<=r&&r<=6099||r===6109||6155<=r&&r<=6157||6277<=r&&r<=6278||r===6313||6432<=r&&r<=6434||6439<=r&&r<=6440||r===6450||6457<=r&&r<=6459||6679<=r&&r<=6680||r===6683||r===6742||6744<=r&&r<=6750||r===6752||r===6754||6757<=r&&r<=6764||6771<=r&&r<=6780||r===6783||6832<=r&&r<=6845||r===6846||6847<=r&&r<=6848||6912<=r&&r<=6915||r===6964||r===6965||6966<=r&&r<=6970||r===6972||r===6978||7019<=r&&r<=7027||7040<=r&&r<=7041||7074<=r&&r<=7077||7080<=r&&r<=7081||7083<=r&&r<=7085||r===7142||7144<=r&&r<=7145||r===7149||7151<=r&&r<=7153||7212<=r&&r<=7219||7222<=r&&r<=7223||7376<=r&&r<=7378||7380<=r&&r<=7392||7394<=r&&r<=7400||r===7405||r===7412||7416<=r&&r<=7417||7616<=r&&r<=7673||7675<=r&&r<=7679||r===8204||8400<=r&&r<=8412||8413<=r&&r<=8416||r===8417||8418<=r&&r<=8420||8421<=r&&r<=8432||11503<=r&&r<=11505||r===11647||11744<=r&&r<=11775||12330<=r&&r<=12333||12334<=r&&r<=12335||12441<=r&&r<=12442||r===42607||42608<=r&&r<=42610||42612<=r&&r<=42621||42654<=r&&r<=42655||42736<=r&&r<=42737||r===43010||r===43014||r===43019||43045<=r&&r<=43046||r===43052||43204<=r&&r<=43205||43232<=r&&r<=43249||r===43263||43302<=r&&r<=43309||43335<=r&&r<=43345||43392<=r&&r<=43394||r===43443||43446<=r&&r<=43449||43452<=r&&r<=43453||r===43493||43561<=r&&r<=43566||43569<=r&&r<=43570||43573<=r&&r<=43574||r===43587||r===43596||r===43644||r===43696||43698<=r&&r<=43700||43703<=r&&r<=43704||43710<=r&&r<=43711||r===43713||43756<=r&&r<=43757||r===43766||r===44005||r===44008||r===44013||r===64286||65024<=r&&r<=65039||65056<=r&&r<=65071||65438<=r&&r<=65439||r===66045||r===66272||66422<=r&&r<=66426||68097<=r&&r<=68099||68101<=r&&r<=68102||68108<=r&&r<=68111||68152<=r&&r<=68154||r===68159||68325<=r&&r<=68326||68900<=r&&r<=68903||69291<=r&&r<=69292||69446<=r&&r<=69456||r===69633||69688<=r&&r<=69702||69759<=r&&r<=69761||69811<=r&&r<=69814||69817<=r&&r<=69818||69888<=r&&r<=69890||69927<=r&&r<=69931||69933<=r&&r<=69940||r===70003||70016<=r&&r<=70017||70070<=r&&r<=70078||70089<=r&&r<=70092||r===70095||70191<=r&&r<=70193||r===70196||70198<=r&&r<=70199||r===70206||r===70367||70371<=r&&r<=70378||70400<=r&&r<=70401||70459<=r&&r<=70460||r===70462||r===70464||r===70487||70502<=r&&r<=70508||70512<=r&&r<=70516||70712<=r&&r<=70719||70722<=r&&r<=70724||r===70726||r===70750||r===70832||70835<=r&&r<=70840||r===70842||r===70845||70847<=r&&r<=70848||70850<=r&&r<=70851||r===71087||71090<=r&&r<=71093||71100<=r&&r<=71101||71103<=r&&r<=71104||71132<=r&&r<=71133||71219<=r&&r<=71226||r===71229||71231<=r&&r<=71232||r===71339||r===71341||71344<=r&&r<=71349||r===71351||71453<=r&&r<=71455||71458<=r&&r<=71461||71463<=r&&r<=71467||71727<=r&&r<=71735||71737<=r&&r<=71738||r===71984||71995<=r&&r<=71996||r===71998||r===72003||72148<=r&&r<=72151||72154<=r&&r<=72155||r===72160||72193<=r&&r<=72202||72243<=r&&r<=72248||72251<=r&&r<=72254||r===72263||72273<=r&&r<=72278||72281<=r&&r<=72283||72330<=r&&r<=72342||72344<=r&&r<=72345||72752<=r&&r<=72758||72760<=r&&r<=72765||r===72767||72850<=r&&r<=72871||72874<=r&&r<=72880||72882<=r&&r<=72883||72885<=r&&r<=72886||73009<=r&&r<=73014||r===73018||73020<=r&&r<=73021||73023<=r&&r<=73029||r===73031||73104<=r&&r<=73105||r===73109||r===73111||73459<=r&&r<=73460||92912<=r&&r<=92916||92976<=r&&r<=92982||r===94031||94095<=r&&r<=94098||r===94180||113821<=r&&r<=113822||r===119141||119143<=r&&r<=119145||119150<=r&&r<=119154||119163<=r&&r<=119170||119173<=r&&r<=119179||119210<=r&&r<=119213||119362<=r&&r<=119364||121344<=r&&r<=121398||121403<=r&&r<=121452||r===121461||r===121476||121499<=r&&r<=121503||121505<=r&&r<=121519||122880<=r&&r<=122886||122888<=r&&r<=122904||122907<=r&&r<=122913||122915<=r&&r<=122916||122918<=r&&r<=122922||123184<=r&&r<=123190||123628<=r&&r<=123631||125136<=r&&r<=125142||125252<=r&&r<=125258||127995<=r&&r<=127999||917536<=r&&r<=917631||917760<=r&&r<=917999?m.Extend:127462<=r&&r<=127487?m.RegionalIndicator:r===2307||r===2363||2366<=r&&r<=2368||2377<=r&&r<=2380||2382<=r&&r<=2383||2434<=r&&r<=2435||2495<=r&&r<=2496||2503<=r&&r<=2504||2507<=r&&r<=2508||r===2563||2622<=r&&r<=2624||r===2691||2750<=r&&r<=2752||r===2761||2763<=r&&r<=2764||2818<=r&&r<=2819||r===2880||2887<=r&&r<=2888||2891<=r&&r<=2892||r===3007||3009<=r&&r<=3010||3014<=r&&r<=3016||3018<=r&&r<=3020||3073<=r&&r<=3075||3137<=r&&r<=3140||3202<=r&&r<=3203||r===3262||3264<=r&&r<=3265||3267<=r&&r<=3268||3271<=r&&r<=3272||3274<=r&&r<=3275||3330<=r&&r<=3331||3391<=r&&r<=3392||3398<=r&&r<=3400||3402<=r&&r<=3404||3458<=r&&r<=3459||3536<=r&&r<=3537||3544<=r&&r<=3550||3570<=r&&r<=3571||r===3635||r===3763||3902<=r&&r<=3903||r===3967||r===4145||4155<=r&&r<=4156||4182<=r&&r<=4183||r===4228||r===6070||6078<=r&&r<=6085||6087<=r&&r<=6088||6435<=r&&r<=6438||6441<=r&&r<=6443||6448<=r&&r<=6449||6451<=r&&r<=6456||6681<=r&&r<=6682||r===6741||r===6743||6765<=r&&r<=6770||r===6916||r===6971||6973<=r&&r<=6977||6979<=r&&r<=6980||r===7042||r===7073||7078<=r&&r<=7079||r===7082||r===7143||7146<=r&&r<=7148||r===7150||7154<=r&&r<=7155||7204<=r&&r<=7211||7220<=r&&r<=7221||r===7393||r===7415||43043<=r&&r<=43044||r===43047||43136<=r&&r<=43137||43188<=r&&r<=43203||43346<=r&&r<=43347||r===43395||43444<=r&&r<=43445||43450<=r&&r<=43451||43454<=r&&r<=43456||43567<=r&&r<=43568||43571<=r&&r<=43572||r===43597||r===43755||43758<=r&&r<=43759||r===43765||44003<=r&&r<=44004||44006<=r&&r<=44007||44009<=r&&r<=44010||r===44012||r===69632||r===69634||r===69762||69808<=r&&r<=69810||69815<=r&&r<=69816||r===69932||69957<=r&&r<=69958||r===70018||70067<=r&&r<=70069||70079<=r&&r<=70080||r===70094||70188<=r&&r<=70190||70194<=r&&r<=70195||r===70197||70368<=r&&r<=70370||70402<=r&&r<=70403||r===70463||70465<=r&&r<=70468||70471<=r&&r<=70472||70475<=r&&r<=70477||70498<=r&&r<=70499||70709<=r&&r<=70711||70720<=r&&r<=70721||r===70725||70833<=r&&r<=70834||r===70841||70843<=r&&r<=70844||r===70846||r===70849||71088<=r&&r<=71089||71096<=r&&r<=71099||r===71102||71216<=r&&r<=71218||71227<=r&&r<=71228||r===71230||r===71340||71342<=r&&r<=71343||r===71350||71456<=r&&r<=71457||r===71462||71724<=r&&r<=71726||r===71736||71985<=r&&r<=71989||71991<=r&&r<=71992||r===71997||r===72e3||r===72002||72145<=r&&r<=72147||72156<=r&&r<=72159||r===72164||r===72249||72279<=r&&r<=72280||r===72343||r===72751||r===72766||r===72873||r===72881||r===72884||73098<=r&&r<=73102||73107<=r&&r<=73108||r===73110||73461<=r&&r<=73462||94033<=r&&r<=94087||94192<=r&&r<=94193||r===119142||r===119149?m.SpacingMark:4352<=r&&r<=4447||43360<=r&&r<=43388?m.L:4448<=r&&r<=4519||55216<=r&&r<=55238?m.V:4520<=r&&r<=4607||55243<=r&&r<=55291?m.T:r===44032||r===44060||r===44088||r===44116||r===44144||r===44172||r===44200||r===44228||r===44256||r===44284||r===44312||r===44340||r===44368||r===44396||r===44424||r===44452||r===44480||r===44508||r===44536||r===44564||r===44592||r===44620||r===44648||r===44676||r===44704||r===44732||r===44760||r===44788||r===44816||r===44844||r===44872||r===44900||r===44928||r===44956||r===44984||r===45012||r===45040||r===45068||r===45096||r===45124||r===45152||r===45180||r===45208||r===45236||r===45264||r===45292||r===45320||r===45348||r===45376||r===45404||r===45432||r===45460||r===45488||r===45516||r===45544||r===45572||r===45600||r===45628||r===45656||r===45684||r===45712||r===45740||r===45768||r===45796||r===45824||r===45852||r===45880||r===45908||r===45936||r===45964||r===45992||r===46020||r===46048||r===46076||r===46104||r===46132||r===46160||r===46188||r===46216||r===46244||r===46272||r===46300||r===46328||r===46356||r===46384||r===46412||r===46440||r===46468||r===46496||r===46524||r===46552||r===46580||r===46608||r===46636||r===46664||r===46692||r===46720||r===46748||r===46776||r===46804||r===46832||r===46860||r===46888||r===46916||r===46944||r===46972||r===47e3||r===47028||r===47056||r===47084||r===47112||r===47140||r===47168||r===47196||r===47224||r===47252||r===47280||r===47308||r===47336||r===47364||r===47392||r===47420||r===47448||r===47476||r===47504||r===47532||r===47560||r===47588||r===47616||r===47644||r===47672||r===47700||r===47728||r===47756||r===47784||r===47812||r===47840||r===47868||r===47896||r===47924||r===47952||r===47980||r===48008||r===48036||r===48064||r===48092||r===48120||r===48148||r===48176||r===48204||r===48232||r===48260||r===48288||r===48316||r===48344||r===48372||r===48400||r===48428||r===48456||r===48484||r===48512||r===48540||r===48568||r===48596||r===48624||r===48652||r===48680||r===48708||r===48736||r===48764||r===48792||r===48820||r===48848||r===48876||r===48904||r===48932||r===48960||r===48988||r===49016||r===49044||r===49072||r===49100||r===49128||r===49156||r===49184||r===49212||r===49240||r===49268||r===49296||r===49324||r===49352||r===49380||r===49408||r===49436||r===49464||r===49492||r===49520||r===49548||r===49576||r===49604||r===49632||r===49660||r===49688||r===49716||r===49744||r===49772||r===49800||r===49828||r===49856||r===49884||r===49912||r===49940||r===49968||r===49996||r===50024||r===50052||r===50080||r===50108||r===50136||r===50164||r===50192||r===50220||r===50248||r===50276||r===50304||r===50332||r===50360||r===50388||r===50416||r===50444||r===50472||r===50500||r===50528||r===50556||r===50584||r===50612||r===50640||r===50668||r===50696||r===50724||r===50752||r===50780||r===50808||r===50836||r===50864||r===50892||r===50920||r===50948||r===50976||r===51004||r===51032||r===51060||r===51088||r===51116||r===51144||r===51172||r===51200||r===51228||r===51256||r===51284||r===51312||r===51340||r===51368||r===51396||r===51424||r===51452||r===51480||r===51508||r===51536||r===51564||r===51592||r===51620||r===51648||r===51676||r===51704||r===51732||r===51760||r===51788||r===51816||r===51844||r===51872||r===51900||r===51928||r===51956||r===51984||r===52012||r===52040||r===52068||r===52096||r===52124||r===52152||r===52180||r===52208||r===52236||r===52264||r===52292||r===52320||r===52348||r===52376||r===52404||r===52432||r===52460||r===52488||r===52516||r===52544||r===52572||r===52600||r===52628||r===52656||r===52684||r===52712||r===52740||r===52768||r===52796||r===52824||r===52852||r===52880||r===52908||r===52936||r===52964||r===52992||r===53020||r===53048||r===53076||r===53104||r===53132||r===53160||r===53188||r===53216||r===53244||r===53272||r===53300||r===53328||r===53356||r===53384||r===53412||r===53440||r===53468||r===53496||r===53524||r===53552||r===53580||r===53608||r===53636||r===53664||r===53692||r===53720||r===53748||r===53776||r===53804||r===53832||r===53860||r===53888||r===53916||r===53944||r===53972||r===54e3||r===54028||r===54056||r===54084||r===54112||r===54140||r===54168||r===54196||r===54224||r===54252||r===54280||r===54308||r===54336||r===54364||r===54392||r===54420||r===54448||r===54476||r===54504||r===54532||r===54560||r===54588||r===54616||r===54644||r===54672||r===54700||r===54728||r===54756||r===54784||r===54812||r===54840||r===54868||r===54896||r===54924||r===54952||r===54980||r===55008||r===55036||r===55064||r===55092||r===55120||r===55148||r===55176?m.LV:44033<=r&&r<=44059||44061<=r&&r<=44087||44089<=r&&r<=44115||44117<=r&&r<=44143||44145<=r&&r<=44171||44173<=r&&r<=44199||44201<=r&&r<=44227||44229<=r&&r<=44255||44257<=r&&r<=44283||44285<=r&&r<=44311||44313<=r&&r<=44339||44341<=r&&r<=44367||44369<=r&&r<=44395||44397<=r&&r<=44423||44425<=r&&r<=44451||44453<=r&&r<=44479||44481<=r&&r<=44507||44509<=r&&r<=44535||44537<=r&&r<=44563||44565<=r&&r<=44591||44593<=r&&r<=44619||44621<=r&&r<=44647||44649<=r&&r<=44675||44677<=r&&r<=44703||44705<=r&&r<=44731||44733<=r&&r<=44759||44761<=r&&r<=44787||44789<=r&&r<=44815||44817<=r&&r<=44843||44845<=r&&r<=44871||44873<=r&&r<=44899||44901<=r&&r<=44927||44929<=r&&r<=44955||44957<=r&&r<=44983||44985<=r&&r<=45011||45013<=r&&r<=45039||45041<=r&&r<=45067||45069<=r&&r<=45095||45097<=r&&r<=45123||45125<=r&&r<=45151||45153<=r&&r<=45179||45181<=r&&r<=45207||45209<=r&&r<=45235||45237<=r&&r<=45263||45265<=r&&r<=45291||45293<=r&&r<=45319||45321<=r&&r<=45347||45349<=r&&r<=45375||45377<=r&&r<=45403||45405<=r&&r<=45431||45433<=r&&r<=45459||45461<=r&&r<=45487||45489<=r&&r<=45515||45517<=r&&r<=45543||45545<=r&&r<=45571||45573<=r&&r<=45599||45601<=r&&r<=45627||45629<=r&&r<=45655||45657<=r&&r<=45683||45685<=r&&r<=45711||45713<=r&&r<=45739||45741<=r&&r<=45767||45769<=r&&r<=45795||45797<=r&&r<=45823||45825<=r&&r<=45851||45853<=r&&r<=45879||45881<=r&&r<=45907||45909<=r&&r<=45935||45937<=r&&r<=45963||45965<=r&&r<=45991||45993<=r&&r<=46019||46021<=r&&r<=46047||46049<=r&&r<=46075||46077<=r&&r<=46103||46105<=r&&r<=46131||46133<=r&&r<=46159||46161<=r&&r<=46187||46189<=r&&r<=46215||46217<=r&&r<=46243||46245<=r&&r<=46271||46273<=r&&r<=46299||46301<=r&&r<=46327||46329<=r&&r<=46355||46357<=r&&r<=46383||46385<=r&&r<=46411||46413<=r&&r<=46439||46441<=r&&r<=46467||46469<=r&&r<=46495||46497<=r&&r<=46523||46525<=r&&r<=46551||46553<=r&&r<=46579||46581<=r&&r<=46607||46609<=r&&r<=46635||46637<=r&&r<=46663||46665<=r&&r<=46691||46693<=r&&r<=46719||46721<=r&&r<=46747||46749<=r&&r<=46775||46777<=r&&r<=46803||46805<=r&&r<=46831||46833<=r&&r<=46859||46861<=r&&r<=46887||46889<=r&&r<=46915||46917<=r&&r<=46943||46945<=r&&r<=46971||46973<=r&&r<=46999||47001<=r&&r<=47027||47029<=r&&r<=47055||47057<=r&&r<=47083||47085<=r&&r<=47111||47113<=r&&r<=47139||47141<=r&&r<=47167||47169<=r&&r<=47195||47197<=r&&r<=47223||47225<=r&&r<=47251||47253<=r&&r<=47279||47281<=r&&r<=47307||47309<=r&&r<=47335||47337<=r&&r<=47363||47365<=r&&r<=47391||47393<=r&&r<=47419||47421<=r&&r<=47447||47449<=r&&r<=47475||47477<=r&&r<=47503||47505<=r&&r<=47531||47533<=r&&r<=47559||47561<=r&&r<=47587||47589<=r&&r<=47615||47617<=r&&r<=47643||47645<=r&&r<=47671||47673<=r&&r<=47699||47701<=r&&r<=47727||47729<=r&&r<=47755||47757<=r&&r<=47783||47785<=r&&r<=47811||47813<=r&&r<=47839||47841<=r&&r<=47867||47869<=r&&r<=47895||47897<=r&&r<=47923||47925<=r&&r<=47951||47953<=r&&r<=47979||47981<=r&&r<=48007||48009<=r&&r<=48035||48037<=r&&r<=48063||48065<=r&&r<=48091||48093<=r&&r<=48119||48121<=r&&r<=48147||48149<=r&&r<=48175||48177<=r&&r<=48203||48205<=r&&r<=48231||48233<=r&&r<=48259||48261<=r&&r<=48287||48289<=r&&r<=48315||48317<=r&&r<=48343||48345<=r&&r<=48371||48373<=r&&r<=48399||48401<=r&&r<=48427||48429<=r&&r<=48455||48457<=r&&r<=48483||48485<=r&&r<=48511||48513<=r&&r<=48539||48541<=r&&r<=48567||48569<=r&&r<=48595||48597<=r&&r<=48623||48625<=r&&r<=48651||48653<=r&&r<=48679||48681<=r&&r<=48707||48709<=r&&r<=48735||48737<=r&&r<=48763||48765<=r&&r<=48791||48793<=r&&r<=48819||48821<=r&&r<=48847||48849<=r&&r<=48875||48877<=r&&r<=48903||48905<=r&&r<=48931||48933<=r&&r<=48959||48961<=r&&r<=48987||48989<=r&&r<=49015||49017<=r&&r<=49043||49045<=r&&r<=49071||49073<=r&&r<=49099||49101<=r&&r<=49127||49129<=r&&r<=49155||49157<=r&&r<=49183||49185<=r&&r<=49211||49213<=r&&r<=49239||49241<=r&&r<=49267||49269<=r&&r<=49295||49297<=r&&r<=49323||49325<=r&&r<=49351||49353<=r&&r<=49379||49381<=r&&r<=49407||49409<=r&&r<=49435||49437<=r&&r<=49463||49465<=r&&r<=49491||49493<=r&&r<=49519||49521<=r&&r<=49547||49549<=r&&r<=49575||49577<=r&&r<=49603||49605<=r&&r<=49631||49633<=r&&r<=49659||49661<=r&&r<=49687||49689<=r&&r<=49715||49717<=r&&r<=49743||49745<=r&&r<=49771||49773<=r&&r<=49799||49801<=r&&r<=49827||49829<=r&&r<=49855||49857<=r&&r<=49883||49885<=r&&r<=49911||49913<=r&&r<=49939||49941<=r&&r<=49967||49969<=r&&r<=49995||49997<=r&&r<=50023||50025<=r&&r<=50051||50053<=r&&r<=50079||50081<=r&&r<=50107||50109<=r&&r<=50135||50137<=r&&r<=50163||50165<=r&&r<=50191||50193<=r&&r<=50219||50221<=r&&r<=50247||50249<=r&&r<=50275||50277<=r&&r<=50303||50305<=r&&r<=50331||50333<=r&&r<=50359||50361<=r&&r<=50387||50389<=r&&r<=50415||50417<=r&&r<=50443||50445<=r&&r<=50471||50473<=r&&r<=50499||50501<=r&&r<=50527||50529<=r&&r<=50555||50557<=r&&r<=50583||50585<=r&&r<=50611||50613<=r&&r<=50639||50641<=r&&r<=50667||50669<=r&&r<=50695||50697<=r&&r<=50723||50725<=r&&r<=50751||50753<=r&&r<=50779||50781<=r&&r<=50807||50809<=r&&r<=50835||50837<=r&&r<=50863||50865<=r&&r<=50891||50893<=r&&r<=50919||50921<=r&&r<=50947||50949<=r&&r<=50975||50977<=r&&r<=51003||51005<=r&&r<=51031||51033<=r&&r<=51059||51061<=r&&r<=51087||51089<=r&&r<=51115||51117<=r&&r<=51143||51145<=r&&r<=51171||51173<=r&&r<=51199||51201<=r&&r<=51227||51229<=r&&r<=51255||51257<=r&&r<=51283||51285<=r&&r<=51311||51313<=r&&r<=51339||51341<=r&&r<=51367||51369<=r&&r<=51395||51397<=r&&r<=51423||51425<=r&&r<=51451||51453<=r&&r<=51479||51481<=r&&r<=51507||51509<=r&&r<=51535||51537<=r&&r<=51563||51565<=r&&r<=51591||51593<=r&&r<=51619||51621<=r&&r<=51647||51649<=r&&r<=51675||51677<=r&&r<=51703||51705<=r&&r<=51731||51733<=r&&r<=51759||51761<=r&&r<=51787||51789<=r&&r<=51815||51817<=r&&r<=51843||51845<=r&&r<=51871||51873<=r&&r<=51899||51901<=r&&r<=51927||51929<=r&&r<=51955||51957<=r&&r<=51983||51985<=r&&r<=52011||52013<=r&&r<=52039||52041<=r&&r<=52067||52069<=r&&r<=52095||52097<=r&&r<=52123||52125<=r&&r<=52151||52153<=r&&r<=52179||52181<=r&&r<=52207||52209<=r&&r<=52235||52237<=r&&r<=52263||52265<=r&&r<=52291||52293<=r&&r<=52319||52321<=r&&r<=52347||52349<=r&&r<=52375||52377<=r&&r<=52403||52405<=r&&r<=52431||52433<=r&&r<=52459||52461<=r&&r<=52487||52489<=r&&r<=52515||52517<=r&&r<=52543||52545<=r&&r<=52571||52573<=r&&r<=52599||52601<=r&&r<=52627||52629<=r&&r<=52655||52657<=r&&r<=52683||52685<=r&&r<=52711||52713<=r&&r<=52739||52741<=r&&r<=52767||52769<=r&&r<=52795||52797<=r&&r<=52823||52825<=r&&r<=52851||52853<=r&&r<=52879||52881<=r&&r<=52907||52909<=r&&r<=52935||52937<=r&&r<=52963||52965<=r&&r<=52991||52993<=r&&r<=53019||53021<=r&&r<=53047||53049<=r&&r<=53075||53077<=r&&r<=53103||53105<=r&&r<=53131||53133<=r&&r<=53159||53161<=r&&r<=53187||53189<=r&&r<=53215||53217<=r&&r<=53243||53245<=r&&r<=53271||53273<=r&&r<=53299||53301<=r&&r<=53327||53329<=r&&r<=53355||53357<=r&&r<=53383||53385<=r&&r<=53411||53413<=r&&r<=53439||53441<=r&&r<=53467||53469<=r&&r<=53495||53497<=r&&r<=53523||53525<=r&&r<=53551||53553<=r&&r<=53579||53581<=r&&r<=53607||53609<=r&&r<=53635||53637<=r&&r<=53663||53665<=r&&r<=53691||53693<=r&&r<=53719||53721<=r&&r<=53747||53749<=r&&r<=53775||53777<=r&&r<=53803||53805<=r&&r<=53831||53833<=r&&r<=53859||53861<=r&&r<=53887||53889<=r&&r<=53915||53917<=r&&r<=53943||53945<=r&&r<=53971||53973<=r&&r<=53999||54001<=r&&r<=54027||54029<=r&&r<=54055||54057<=r&&r<=54083||54085<=r&&r<=54111||54113<=r&&r<=54139||54141<=r&&r<=54167||54169<=r&&r<=54195||54197<=r&&r<=54223||54225<=r&&r<=54251||54253<=r&&r<=54279||54281<=r&&r<=54307||54309<=r&&r<=54335||54337<=r&&r<=54363||54365<=r&&r<=54391||54393<=r&&r<=54419||54421<=r&&r<=54447||54449<=r&&r<=54475||54477<=r&&r<=54503||54505<=r&&r<=54531||54533<=r&&r<=54559||54561<=r&&r<=54587||54589<=r&&r<=54615||54617<=r&&r<=54643||54645<=r&&r<=54671||54673<=r&&r<=54699||54701<=r&&r<=54727||54729<=r&&r<=54755||54757<=r&&r<=54783||54785<=r&&r<=54811||54813<=r&&r<=54839||54841<=r&&r<=54867||54869<=r&&r<=54895||54897<=r&&r<=54923||54925<=r&&r<=54951||54953<=r&&r<=54979||54981<=r&&r<=55007||55009<=r&&r<=55035||55037<=r&&r<=55063||55065<=r&&r<=55091||55093<=r&&r<=55119||55121<=r&&r<=55147||55149<=r&&r<=55175||55177<=r&&r<=55203?m.LVT:r===8205?m.ZWJ:m.Other}_x.exports=ov});var Tr=n(function(_2,Ix){"use strict";var Y=require("@stdlib/utils/define-nonenumerable-read-only-property"),cv=N(),dv=Px(),rC=Nx(),iC=Ox(),_={};Y(_,"constants",cv);Y(_,"breakType",dv);Y(_,"emojiProperty",rC);Y(_,"breakProperty",iC);Ix.exports=_});var Wx=n(function(O2,Ux){"use strict";var xC=require("@stdlib/assert/is-string").isPrimitive,tC=require("@stdlib/assert/is-integer").isPrimitive,kx=J(),aC=require("@stdlib/assert/has-utf16-surrogate-pair-at"),Sr=Tr(),Gx=v(),nC=Sr.breakType,Mx=Sr.breakProperty,zx=Sr.emojiProperty;function uC(r,i){var t,x,a,u,s,e;if(!xC(r))throw new TypeError(Gx("invalid argument. First argument must be a string. Value: `%s`.",r));if(arguments.length>1){if(!tC(i))throw new TypeError(Gx("invalid argument. Second argument must be an integer. Value: `%s`.",i));u=i}else u=0;if(a=r.length,u<0&&(u+=a,u<0&&(u=0)),a===0||u>=a)return-1;for(t=[],x=[],s=kx(r,u),t.push(Mx(s)),x.push(zx(s)),e=u+1;e0))return e;return-1}Ux.exports=uC});var q=n(function(I2,jx){"use strict";var sC=Wx();jx.exports=sC});var Hx=n(function(k2,$x){"use strict";var eC=q();function FC(r,i){for(var t=0;i>0;)t=eC(r,t),i-=1;return r===""||t===-1?r:r.substring(0,t)}$x.exports=FC});var Vr=n(function(G2,Zx){"use strict";var vC=Hx();Zx.exports=vC});var Qx=n(function(M2,Xx){"use strict";function CC(r,i,t){var x;for(x=0;x?`{}|~\/\\\[\]_#$*&^@%]+/g,VC=/([a-z0-9])([A-Z])/g;function PC(r){return r=Nr(r,SC," "),r=Nr(r,VC,"$1 $2"),r=yC(r),r=wC(r),r=bC(r),Nr(r,TC,"-")}at.exports=PC});var _r=n(function(Q2,ut){"use strict";var RC=nt();ut.exports=RC});var et=n(function(J2,st){"use strict";var LC=R(),NC=h();function _C(r){var i,t,x,a;for(i=[],a=0;a?`{}|~\/\\\[\]_#$*&^@%]+/g,zC=/([a-z0-9])([A-Z])/g;function UC(r){return r=Or(r,MC," "),r=Or(r,zC,"$1 $2"),r=kC(r),r=Or(r,GC,"-"),IC(r)}Ct.exports=UC});var Ir=n(function(o2,lt){"use strict";var WC=Bt();lt.exports=WC});var ft=n(function(c2,gt){"use strict";var jC=typeof String.prototype.repeat!="undefined";gt.exports=jC});var At=n(function(d2,Et){"use strict";function $C(r,i){var t,x;if(r.length===0||i===0)return"";for(t="",x=i;(x&1)===1&&(t+=r),x>>>=1,x!==0;)r+=r;return t}Et.exports=$C});var pt=n(function(rp,Dt){"use strict";var HC=String.prototype.repeat;Dt.exports=HC});var ht=n(function(ip,mt){"use strict";var ZC=pt();function XC(r,i){return ZC.call(r,i)}mt.exports=XC});var O=n(function(xp,qt){"use strict";var QC=ft(),JC=At(),YC=ht(),kr;QC?kr=YC:kr=JC;qt.exports=kr});var bt=n(function(tp,wt){"use strict";var KC=O(),oC=require("@stdlib/math/base/special/ceil");function cC(r,i,t){var x=(i-r.length)/t.length;return x<=0?r:(x=oC(x),KC(t,x)+r)}wt.exports=cC});var Gr=n(function(ap,yt){"use strict";var dC=bt();yt.exports=dC});var St=n(function(np,Tt){"use strict";var rB=typeof String.prototype.trimLeft!="undefined";Tt.exports=rB});var Pt=n(function(up,Vt){"use strict";var iB=p(),xB=/^[\u0020\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/;function tB(r){return iB(r,xB,"")}Vt.exports=tB});var Lt=n(function(sp,Rt){"use strict";var aB=String.prototype.trimLeft;Rt.exports=aB});var _t=n(function(ep,Nt){"use strict";var nB=Lt();function uB(r){return nB.call(r)}Nt.exports=uB});var zr=n(function(Fp,Ot){"use strict";var sB=St(),eB=Pt(),FB=_t(),Mr;sB?Mr=FB:Mr=eB;Ot.exports=Mr});var kt=n(function(vp,It){"use strict";var vB=L(),CB=h(),o=p(),BB=w(),lB=/\s+/g,gB=/[-!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,fB=/(?:\s|^)([^\s]+)(?=\s|$)/g,EB=/([a-z0-9])([A-Z])/g;function AB(r,i){return vB(CB(i))}function DB(r){return r=o(r,gB," "),r=o(r,lB," "),r=o(r,EB,"$1 $2"),r=BB(r),o(r,fB,AB)}It.exports=DB});var Ur=n(function(Cp,Gt){"use strict";var pB=kt();Gt.exports=pB});var Ut=n(function(Bp,zt){"use strict";var mB=require("@stdlib/assert/is-string").isPrimitive,hB=v(),V=63,T=128,qB=192,wB=224,bB=240,Mt=1023,yB=2048,TB=55296,SB=57344,VB=65536;function PB(r){var i,t,x,a;if(!mB(r))throw new TypeError(hB("invalid argument. Must provide a string. Value: `%s`.",r));for(x=r.length,t=[],a=0;a>6),t.push(T|i&V)):i=SB?(t.push(wB|i>>12),t.push(T|i>>6&V),t.push(T|i&V)):(a+=1,i=VB+((i&Mt)<<10|r.charCodeAt(a)&Mt),t.push(bB|i>>18),t.push(T|i>>12&V),t.push(T|i>>6&V),t.push(T|i&V));return t}zt.exports=PB});var Wr=n(function(lp,Wt){"use strict";var RB=Ut();Wt.exports=RB});var $t=n(function(gp,jt){"use strict";var LB=Wr(),NB=95,_B=46,OB=45,IB=126,kB=48,GB=57,MB=65,zB=90,UB=97,WB=122;function jB(r){var i,t,x,a,u;for(a=LB(r),x=a.length,t="",u=0;u=kB&&i<=GB||i>=MB&&i<=zB||i>=UB&&i<=WB||i===OB||i===_B||i===NB||i===IB?t+=r.charAt(u):t+="%"+i.toString(16).toUpperCase();return t}jt.exports=jB});var jr=n(function(fp,Ht){"use strict";var $B=$t();Ht.exports=$B});var Xt=n(function(Ep,Zt){"use strict";function HB(r,i){return r.substring(i,r.length)}Zt.exports=HB});var $r=n(function(Ap,Qt){"use strict";var ZB=Xt();Qt.exports=ZB});var Yt=n(function(Dp,Jt){"use strict";var XB=/[\uDC00-\uDFFF]/,QB=/[\uD800-\uDBFF]/;function JB(r,i){var t,x,a,u,s;if(i===0)return r;for(t=r.length,u=0,s=0;s0;)t=KB(r,t),i-=1;return r===""||t===-1?"":r.substring(t,r.length)}ot.exports=oB});var Zr=n(function(hp,dt){"use strict";var cB=ct();dt.exports=cB});var ia=n(function(qp,ra){"use strict";function dB(r,i,t){var x=r.indexOf(i);return r===""||i===""||t===""||x<0?r:t+r.substring(x)}ra.exports=dB});var Xr=n(function(wp,xa){"use strict";var rl=ia();xa.exports=rl});var aa=n(function(bp,ta){"use strict";var il=O(),xl=require("@stdlib/math/base/special/ceil");function tl(r,i,t){var x=(i-r.length)/t.length;return x<=0?r:(x=xl(x),r+il(t,x))}ta.exports=tl});var Qr=n(function(yp,na){"use strict";var al=aa();na.exports=al});var sa=n(function(Tp,ua){"use strict";var nl=typeof String.prototype.trimRight!="undefined";ua.exports=nl});var Fa=n(function(Sp,ea){"use strict";var ul=p(),sl=/[\u0020\f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+$/;function el(r){return ul(r,sl,"")}ea.exports=el});var Ca=n(function(Vp,va){"use strict";var Fl=String.prototype.trimRight;va.exports=Fl});var la=n(function(Pp,Ba){"use strict";var vl=Ca();function Cl(r){return vl.call(r)}Ba.exports=Cl});var Yr=n(function(Rp,ga){"use strict";var Bl=sa(),ll=Fa(),gl=la(),Jr;Bl?Jr=gl:Jr=ll;ga.exports=Jr});var Ea=n(function(Lp,fa){"use strict";var fl=h(),Kr=p(),El=w(),Al=/\s+/g,Dl=/[\-!"'(),–.:;<>?`{}|~\/\\\[\]_#$*&^@%]+/g,pl=/([a-z0-9])([A-Z])/g;function ml(r){return r=Kr(r,Dl," "),r=Kr(r,pl,"$1 $2"),r=El(r),r=Kr(r,Al,"_"),fl(r)}fa.exports=ml});var or=n(function(Np,Aa){"use strict";var hl=Ea();Aa.exports=hl});var pa=n(function(_p,Da){"use strict";var ql=typeof String.prototype.startsWith!="undefined";Da.exports=ql});var ha=n(function(Op,ma){"use strict";function wl(r,i,t){var x,a;if(t<0?x=r.length+t:x=t,i.length===0)return!0;if(x<0||x+i.length>r.length)return!1;for(a=0;ar.length?!1:yl.call(r,i,x)}ba.exports=Tl});var dr=n(function(Gp,Ta){"use strict";var Sl=pa(),Vl=ha(),Pl=ya(),cr;Sl?cr=Pl:cr=Vl;Ta.exports=cr});var Va=n(function(Mp,Sa){"use strict";function Rl(r){return r===""?"":r.charAt(0).toLowerCase()+r.slice(1)}Sa.exports=Rl});var r0=n(function(zp,Pa){"use strict";var Ll=Va();Pa.exports=Ll});var La=n(function(Up,Ra){"use strict";var A=require("@stdlib/utils/define-read-only-property"),E={};A(E,"camelcase",Ar());A(E,"capitalize",L());A(E,"codePointAt",Dr());A(E,"constantcase",mr());A(E,"distances",tx());A(E,"dotcase",qr());A(E,"endsWith",X());A(E,"first",br());A(E,"firstCodePoint",yr());A(E,"firstGraphemeCluster",Vr());A(E,"forEach",Pr());A(E,"forEachCodePoint",Rr());A(E,"forEachGraphemeCluster",Lr());A(E,"formatInterpolate",vr());A(E,"formatTokenize",Cr());A(E,"headercase",_r());A(E,"invcase",vt());A(E,"kebabcase",Ir());A(E,"lpad",Gr());A(E,"ltrim",zr());A(E,"lowercase",h());A(E,"pascalcase",Ur());A(E,"percentEncode",jr());A(E,"removeFirst",$r());A(E,"removeFirstCodePoint",Hr());A(E,"removeFirstGraphemeCluster",Zr());A(E,"repeat",O());A(E,"replace",p());A(E,"replaceBefore",Xr());A(E,"rpad",Qr());A(E,"rtrim",Yr());A(E,"snakecase",or());A(E,"startcase",K());A(E,"startsWith",dr());A(E,"trim",w());A(E,"uncapitalize",r0());A(E,"uppercase",R());Ra.exports=E});var _a=n(function(Wp,Na){"use strict";var Nl=require("@stdlib/assert/is-string").isPrimitive,_l=v(),Ol=Ar();function Il(r){if(!Nl(r))throw new TypeError(_l("invalid argument. First argument must be a string. Value: `%s`.",r));return Ol(r)}Na.exports=Il});var Ia=n(function(jp,Oa){"use strict";var kl=_a();Oa.exports=kl});var Ga=n(function($p,ka){"use strict";var Gl=require("@stdlib/assert/is-string").isPrimitive,Ml=v(),zl=L();function Ul(r){if(!Gl(r))throw new TypeError(Ml("invalid argument. First argument must be a string. Value: `%s`.",r));return zl(r)}ka.exports=Ul});var za=n(function(Hp,Ma){"use strict";var Wl=Ga();Ma.exports=Wl});var Wa=n(function(Zp,Ua){"use strict";var jl=require("@stdlib/assert/is-string").isPrimitive,$l=v(),Hl=mr();function Zl(r){if(!jl(r))throw new TypeError($l("invalid argument. Must provide a string. Value: `%s`.",r));return Hl(r)}Ua.exports=Zl});var $a=n(function(Xp,ja){"use strict";var Xl=Wa();ja.exports=Xl});var Za=n(function(Qp,Ha){"use strict";var Ql=require("@stdlib/assert/is-string").isPrimitive,Jl=v(),Yl=qr();function Kl(r){if(!Ql(r))throw new TypeError(Jl("invalid argument. First argument must be a string. Value: `%s`.",r));return Yl(r)}Ha.exports=Kl});var Qa=n(function(Jp,Xa){"use strict";var ol=Za();Xa.exports=ol});var Ka=n(function(Yp,Ya){"use strict";var cl=require("@stdlib/assert/is-integer").isPrimitive,Ja=require("@stdlib/assert/is-string").isPrimitive,i0=v(),dl=X();function rg(r,i,t){if(!Ja(r))throw new TypeError(i0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Ja(i))throw new TypeError(i0("invalid argument. Second argument must be a string. Value: `%s`.",i));if(arguments.length>2){if(!cl(t))throw new TypeError(i0("invalid argument. Third argument must be an integer. Value: `%s`.",t))}else t=r.length;return dl(r,i,t)}Ya.exports=rg});var ca=n(function(Kp,oa){"use strict";var ig=Ka();oa.exports=ig});var an=n(function(op,tn){"use strict";var xg=require("@stdlib/assert/is-string").isPrimitive,da=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,rn=require("@stdlib/assert/is-plain-object"),tg=require("@stdlib/assert/has-own-property"),ag=require("@stdlib/array/base/assert/contains").factory,ng=br(),ug=yr(),sg=Vr(),I=v(),xn=["grapheme","code_point","code_unit"],eg={grapheme:sg,code_point:ug,code_unit:ng},Fg=ag(xn);function vg(r){var i,t,x,a;if(!xg(r))throw new TypeError(I("invalid argument. First argument must be a string. Value: `%s`.",r));if(x={mode:"grapheme"},t=arguments.length,t===1)a=1;else if(t===2){if(a=arguments[1],rn(a))i=a,a=1;else if(!da(a))throw new TypeError(I("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a))}else{if(a=arguments[1],!da(a))throw new TypeError(I("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a));if(i=arguments[2],!rn(i))throw new TypeError(I("invalid argument. Options argument must be an object. Value: `%s`.",i))}if(i&&tg(i,"mode")&&(x.mode=i.mode,!Fg(x.mode)))throw new TypeError(I('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",xn.join('", "'),x.mode));return eg[x.mode](r,a)}tn.exports=vg});var un=n(function(cp,nn){"use strict";var Cg=an();nn.exports=Cg});var vn=n(function(dp,Fn){"use strict";var Bg=require("@stdlib/assert/is-function"),lg=require("@stdlib/assert/is-string").isPrimitive,sn=require("@stdlib/assert/is-plain-object"),gg=require("@stdlib/assert/has-own-property"),fg=require("@stdlib/array/base/assert/contains").factory,Eg=Pr(),Ag=Rr(),Dg=Lr(),c=v(),en=["grapheme","code_point","code_unit"],pg={grapheme:Dg,code_point:Ag,code_unit:Eg},mg=fg(en);function hg(r,i,t){var x,a,u,s;if(!lg(r))throw new TypeError(c("invalid argument. First argument must be a string. Value: `%s`.",r));if(u={mode:"grapheme"},a=arguments.length,a===2)s=i,i=null;else if(a===3)sn(i)?s=t:(s=i,i=null,x=t);else{if(!sn(i))throw new TypeError(c("invalid argument. Options argument must be an object. Value: `%s`.",i));s=t,x=arguments[3]}if(!Bg(s))throw new TypeError(c("invalid argument. Callback argument must be a function. Value: `%s`.",s));if(i&&gg(i,"mode")&&(u.mode=i.mode,!mg(u.mode)))throw new TypeError(c('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",en.join('", "'),u.mode));return pg[u.mode](r,s,x),r}Fn.exports=hg});var Bn=n(function(rm,Cn){"use strict";var qg=vn();Cn.exports=qg});var An=n(function(im,En){"use strict";var wg=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,bg=require("@stdlib/assert/is-collection"),ln=v(),gn=require("@stdlib/constants/unicode/max"),yg=require("@stdlib/constants/unicode/max-bmp"),fn=String.fromCharCode,Tg=65536,Sg=55296,Vg=56320,Pg=1023;function Rg(r){var i,t,x,a,u,s,e;if(i=arguments.length,i===1&&bg(r))x=arguments[0],i=x.length;else for(x=[],e=0;egn)throw new RangeError(ln("invalid argument. Must provide a valid code point (i.e., cannot exceed %u). Value: `%s`.",gn,s));s<=yg?t+=fn(s):(s-=Tg,u=(s>>10)+Sg,a=(s&Pg)+Vg,t+=fn(u,a))}return t}En.exports=Rg});var pn=n(function(xm,Dn){"use strict";var Lg=An();Dn.exports=Lg});var hn=n(function(tm,mn){"use strict";var Ng=require("@stdlib/assert/is-string").isPrimitive,_g=v(),Og=_r();function Ig(r){if(!Ng(r))throw new TypeError(_g("invalid argument. First argument must be a string. Value: `%s`.",r));return Og(r)}mn.exports=Ig});var wn=n(function(am,qn){"use strict";var kg=hn();qn.exports=kg});var yn=n(function(nm,bn){"use strict";var Gg=require("@stdlib/assert/is-string").isPrimitive,Mg=v(),zg=Ir();function Ug(r){if(!Gg(r))throw new TypeError(Mg("invalid argument. Must provide a string. Value: `%s`.",r));return zg(r)}bn.exports=Ug});var Sn=n(function(um,Tn){"use strict";var Wg=yn();Tn.exports=Wg});var Rn=n(function(sm,Pn){"use strict";var jg=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Vn=require("@stdlib/assert/is-string").isPrimitive,d=v(),$g=require("@stdlib/constants/float64/max-safe-integer"),Hg=Gr();function Zg(r,i,t){var x;if(!Vn(r))throw new TypeError(d("invalid argument. First argument must be a string. Value: `%s`.",r));if(!jg(i))throw new TypeError(d("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(x=t,!Vn(x))throw new TypeError(d("invalid argument. Third argument must be a string. Value: `%s`.",x));if(x.length===0)throw new RangeError("invalid argument. Third argument must not be an empty string.")}else x=" ";if(i>$g)throw new RangeError(d("invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.",i));return Hg(r,i,x)}Pn.exports=Zg});var x0=n(function(em,Ln){"use strict";var Xg=Rn();Ln.exports=Xg});var _n=n(function(Fm,Nn){"use strict";var Qg=require("@stdlib/assert/is-string").isPrimitive,Jg=v(),Yg=zr();function Kg(r){if(!Qg(r))throw new TypeError(Jg("invalid argument. Must provide a string. Value: `%s`.",r));return Yg(r)}Nn.exports=Kg});var In=n(function(vm,On){"use strict";var og=_n();On.exports=og});var Mn=n(function(Cm,Gn){"use strict";var cg=require("@stdlib/assert/is-string").isPrimitive,kn=q(),dg=v();function rf(r){var i,t,x;if(!cg(r))throw new TypeError(dg("invalid argument. Must provide a string. Value: `%s`.",r));if(i=0,x=[],r.length===0)return x;for(t=kn(r,i);t!==-1;)x.push(r.substring(i,t)),i=t,t=kn(r,i);return x.push(r.substring(i)),x}Gn.exports=rf});var rr=n(function(Bm,zn){"use strict";var xf=Mn();zn.exports=xf});var $n=n(function(lm,jn){"use strict";var Un=require("@stdlib/assert/is-string").isPrimitive,tf=rr(),af=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,nf=require("@stdlib/assert/is-string-array").primitives,uf=P(),Wn=require("@stdlib/utils/escape-regexp-string"),t0=v(),sf=" \f\n\r \v\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF";function ef(r,i,t){var x,a,u,s,e;if(!Un(r))throw new TypeError(t0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!af(i))throw new TypeError(t0("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(u=Un(t),!u&&!nf(t))throw new TypeError(t0("invalid argument. Third argument must be a string or an array of strings. Value: `%s`.",t));for(u&&(t=tf(t)),x=t.length-1,a="",e=0;e0&&(t+="-"+t1[x],x=0);else{for(a=3;a0&&(i+=" "),i+=t,ir(x,i)}a1.exports=ir});var F1=n(function(qm,e1){"use strict";var bf=require("@stdlib/assert/is-plain-object"),yf=require("@stdlib/assert/has-own-property"),Tf=require("@stdlib/utils/index-of"),u1=v(),s1=["en","de"];function Sf(r,i){return bf(i)?yf(i,"lang")&&(r.lang=i.lang,Tf(s1,r.lang)===-1)?new TypeError(u1('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"lang",s1.join('", "'),r.lang)):null:new TypeError(u1("invalid argument. Options argument must be an object. Value: `%s`.",i))}e1.exports=Sf});var C1=n(function(wm,v1){"use strict";function Vf(r,i){var t,x,a;for(x=r.length,t="",a=0;a1&&(a=_f(x,i),a))throw a;if(Rf(r))switch(x.lang){case"de":return u0(r,"");case"en":default:return s0(r,"")}if(!Lf(r))switch(x.lang){case"de":return r<0?"minus unendlich":"unendlich";case"en":default:return r<0?"negative infinity":"infinity"}switch(t=r.toString().split("."),x.lang){case"de":return u0(t[0],"")+" Komma "+B1(t[1],u0);case"en":default:return s0(t[0],"")+" point "+B1(t[1],s0)}}l1.exports=Of});var E1=n(function(ym,f1){"use strict";var If=g1();f1.exports=If});var p1=n(function(Tm,D1){"use strict";var kf=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Gf=require("@stdlib/assert/is-string").isPrimitive,A1=v(),Mf=O();function zf(r,i){if(!Gf(r))throw new TypeError(A1("invalid argument. First argument must be a string. Value: `%s`.",r));if(!kf(i))throw new TypeError(A1("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));return Mf(r,i)}D1.exports=zf});var e0=n(function(Sm,m1){"use strict";var Uf=p1();m1.exports=Uf});var w1=n(function(Vm,q1){"use strict";var Wf=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,h1=require("@stdlib/assert/is-string").isPrimitive,xr=v(),jf=require("@stdlib/constants/float64/max-safe-integer"),$f=Qr();function Hf(r,i,t){var x;if(!h1(r))throw new TypeError(xr("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Wf(i))throw new TypeError(xr("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(x=t,!h1(x))throw new TypeError(xr("invalid argument. Third argument must be a string. Value: `%s`.",x));if(x.length===0)throw new RangeError("invalid argument. Pad string must not be an empty string.")}else x=" ";if(i>jf)throw new RangeError(xr("invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.",i));return $f(r,i,x)}q1.exports=Hf});var F0=n(function(Pm,b1){"use strict";var Zf=w1();b1.exports=Zf});var S1=n(function(Rm,T1){"use strict";var Xf=require("@stdlib/assert/is-plain-object"),v0=require("@stdlib/assert/has-own-property"),y1=require("@stdlib/assert/is-string").isPrimitive,Qf=require("@stdlib/assert/is-boolean").isPrimitive,tr=v();function Jf(r,i){return Xf(i)?v0(i,"lpad")&&(r.lpad=i.lpad,!y1(r.lpad))?new TypeError(tr("invalid option. `%s` option must be a string. Option: `%s`.","lpad",r.lpad)):v0(i,"rpad")&&(r.rpad=i.rpad,!y1(r.rpad))?new TypeError(tr("invalid option. `%s` option must be a string. Option: `%s`.","rpad",r.rpad)):v0(i,"centerRight")&&(r.centerRight=i.centerRight,!Qf(r.centerRight))?new TypeError(tr("invalid option. `%s` option must be a boolean. Option: `%s`.","centerRight",r.centerRight)):null:new TypeError(tr("invalid argument. Options argument must be an object. Value: `%s`.",i))}T1.exports=Jf});var _1=n(function(Lm,N1){"use strict";var Yf=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,Kf=require("@stdlib/assert/is-string").isPrimitive,V1=e0(),ar=v(),P1=require("@stdlib/math/base/special/floor"),R1=require("@stdlib/math/base/special/ceil"),of=x0(),L1=F0(),cf=require("@stdlib/math/base/special/abs"),df=require("@stdlib/constants/float64/max-safe-integer"),rE=S1();function iE(r,i,t){var x,a,u,s,e,F,g,D,f;if(!Kf(r))throw new TypeError(ar("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Yf(i))throw new TypeError(ar("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(i>df)throw new RangeError(ar("invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.",i));if(F={},arguments.length>2&&(g=rE(F,t),g))throw g;if(F.lpad&&F.rpad)return f=(i-r.length)/2,f===0?r:(D=P1(f),D!==f&&(u=!0),f<0?(f=P1(cf(f)),a=f,x=r.length-f,u&&(F.centerRight?x-=1:a+=1),r.substring(a,x)):(a=R1(f/F.lpad.length),e=V1(F.lpad,a),x=R1(f/F.rpad.length),s=V1(F.rpad,x),f=D,a=f,x=f,u&&(F.centerRight?a+=1:x+=1),e=e.substring(0,a),s=s.substring(0,x),e+r+s));if(F.lpad)return D=of(r,i,F.lpad),D.substring(D.length-i);if(F.rpad)return L1(r,i,F.rpad).substring(0,i);if(F.rpad===void 0)return L1(r,i," ").substring(0,i);throw new RangeError(ar("invalid argument. At least one padding option must have a length greater than 0. Left padding: `%s`. Right padding: `%s`.",F.lpad,F.rpad))}N1.exports=iE});var I1=n(function(Nm,O1){"use strict";var xE=_1();O1.exports=xE});var G1=n(function(_m,k1){"use strict";var tE=require("@stdlib/assert/is-string").isPrimitive,aE=v(),nE=Ur();function uE(r){if(!tE(r))throw new TypeError(aE("invalid argument. First argument must be a string. Value: `%s`.",r));return nE(r)}k1.exports=uE});var z1=n(function(Om,M1){"use strict";var sE=G1();M1.exports=sE});var W1=n(function(Im,U1){"use strict";var eE=require("@stdlib/assert/is-string").isPrimitive,FE=v(),vE=jr();function CE(r){if(!eE(r))throw new TypeError(FE("invalid argument. Must provide a string. Value: `%s`.",r));return vE(r)}U1.exports=CE});var $1=n(function(km,j1){"use strict";var BE=W1();j1.exports=BE});var Y1=n(function(Gm,J1){"use strict";var lE=require("@stdlib/assert/is-string").isPrimitive,gE=require("@stdlib/assert/is-integer"),H1=J(),fE=require("@stdlib/assert/has-utf16-surrogate-pair-at"),C0=Tr(),Z1=v(),EE=C0.breakType,X1=C0.breakProperty,Q1=C0.emojiProperty;function AE(r,i){var t,x,a,u,s,e,F;if(!lE(r))throw new TypeError(Z1("invalid argument. First argument must be a string. Value: `%s`.",r));if(u=r.length,arguments.length>1){if(!gE(i))throw new TypeError(Z1("invalid argument. Second argument must be an integer. Value: `%s`.",i));s=i}else s=u-1;if(u===0||s<=0)return-1;for(s>=u&&(s=u-1),t=[],x=[],e=H1(r,0),t.push(X1(e)),x.push(Q1(e)),a=-1,F=1;F<=s;F++){if(fE(r,F-1)){a=F-2,t.length=0,x.length=0;continue}if(e=H1(r,F),t.push(X1(e)),x.push(Q1(e)),EE(t,x)>0){a=F-1,t.length=0,x.length=0;continue}}return a}J1.exports=AE});var nr=n(function(Mm,K1){"use strict";var DE=Y1();K1.exports=DE});var iu=n(function(zm,ru){"use strict";var pE=require("@stdlib/assert/is-string").isPrimitive,o1=require("@stdlib/assert/is-plain-object"),mE=require("@stdlib/assert/has-own-property"),hE=require("@stdlib/array/base/assert/contains").factory,c1=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,qE=$r(),wE=Hr(),bE=Zr(),z=v(),d1=["grapheme","code_point","code_unit"],yE={grapheme:bE,code_point:wE,code_unit:qE},TE=hE(d1);function SE(r){var i,t,x,a;if(!pE(r))throw new TypeError(z("invalid argument. First argument must be a string. Value: `%s`.",r));if(x={mode:"grapheme"},t=arguments.length,t===1)a=1;else if(t===2){if(a=arguments[1],o1(a))i=a,a=1;else if(!c1(a))throw new TypeError(z("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a))}else{if(a=arguments[1],!c1(a))throw new TypeError(z("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",a));if(i=arguments[2],!o1(i))throw new TypeError(z("invalid argument. Options argument must be an object. Value: `%s`.",i))}if(i&&mE(i,"mode")&&(x.mode=i.mode,!TE(x.mode)))throw new TypeError(z('invalid option. `%s` option must be one of the following: "%s". Value: `%s`.',"mode",d1.join('", "'),x.mode));return yE[x.mode](r,a)}ru.exports=SE});var tu=n(function(Um,xu){"use strict";var VE=iu();xu.exports=VE});var nu=n(function(Wm,au){"use strict";function PE(r,i){return r.substring(0,r.length-i)}au.exports=PE});var su=n(function(jm,uu){"use strict";var RE=nu();uu.exports=RE});var Fu=n(function($m,eu){"use strict";var LE=/[\uDC00-\uDFFF]/,NE=/[\uD800-\uDBFF]/;function _E(r,i){var t,x,a,u,s;if(i===0)return r;for(t=r.length,u=0,s=t-1;s>=0;s--){if(x=r[s],u+=1,LE.test(x)){if(s===0)break;a=r[s-1],NE.test(a)&&(s-=1)}if(u===i)break}return r.substring(0,s)}eu.exports=_E});var Cu=n(function(Hm,vu){"use strict";var OE=Fu();vu.exports=OE});var lu=n(function(Zm,Bu){"use strict";var IE=q(),kE=k();function GE(r,i){var t,x,a;if(i===0)return r;if(t=kE(r),r===""||t2&&!nA(t))throw new TypeError(l0("invalid argument. Third argument must be a boolean. Value: `%s`.",t));if(x=sA(r,!0),F=i.length,e=[],t){for(u=i.slice(),g=0;g=0;){for(t=lA(r,x),a=t+1;a<=x;a++)i.push(r.charAt(a));x=t}return i.join("")}zu.exports=EA});var ju=n(function(a3,Wu){"use strict";var AA=Uu();Wu.exports=AA});var Hu=n(function(n3,$u){"use strict";var DA=require("@stdlib/assert/is-string").isPrimitive,pA=v(),mA=Yr();function hA(r){if(!DA(r))throw new TypeError(pA("invalid argument. Must provide a string. Value: `%s`.",r));return mA(r)}$u.exports=hA});var Xu=n(function(u3,Zu){"use strict";var qA=Hu();Zu.exports=qA});var Ku=n(function(s3,Yu){"use strict";var Qu=require("@stdlib/assert/is-string").isPrimitive,wA=rr(),bA=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,yA=require("@stdlib/assert/is-string-array").primitives,TA=P(),Ju=require("@stdlib/utils/escape-regexp-string"),E0=v(),SA=" \f\n\r \v\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF";function VA(r,i,t){var x,a,u,s,e;if(!Qu(r))throw new TypeError(E0("invalid argument. Must provide a string. Value: `%s`.",r));if(!bA(i))throw new TypeError(E0("invalid argument. Must provide a nonnegative integer. Value: `%s`.",i));if(arguments.length>2){if(u=Qu(t),!u&&!yA(t))throw new TypeError(E0("invalid argument. Must provide a string or an array of strings. Value: `%s`.",t));for(u&&(t=wA(t)),x=t.length-1,a="",e=0;e2){if(!UA(t))throw new TypeError(A0("invalid argument. Third argument must be an integer. Value: `%s`.",t));x=t}else x=0;return WA(r,i,x)}es.exports=jA});var Cs=n(function(g3,vs){"use strict";var $A=Fs();vs.exports=$A});var gs=n(function(f3,ls){"use strict";var Bs=require("@stdlib/assert/is-string").isPrimitive,HA=require("@stdlib/assert/is-integer").isPrimitive,D0=v();function ZA(r,i,t){var x;if(!Bs(r))throw new TypeError(D0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Bs(i))throw new TypeError(D0("invalid argument. Second argument must be a string. Value: `%s`.",i));if(arguments.length>2){if(!HA(t))throw new TypeError(D0("invalid argument. Third argument must be an integer. Value: `%s`.",t));x=r.indexOf(i,t)}else x=r.indexOf(i);return x===-1?"":r.substring(x+i.length)}ls.exports=ZA});var Es=n(function(E3,fs){"use strict";var XA=gs();fs.exports=XA});var ps=n(function(A3,Ds){"use strict";var QA=require("@stdlib/assert/is-integer").isPrimitive,As=require("@stdlib/assert/is-string").isPrimitive,p0=v();function JA(r,i,t){var x;if(!As(r))throw new TypeError(p0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!As(i))throw new TypeError(p0("invalid argument. Second argument must be a string. Value: `%s`.",i));if(arguments.length>2){if(!QA(t))throw new TypeError(p0("invalid argument. Third argument must be a nonnegative integer. Value: `%s`.",t));x=r.lastIndexOf(i,t)}else x=r.lastIndexOf(i);return x===-1?"":r.substring(x+i.length)}Ds.exports=JA});var hs=n(function(D3,ms){"use strict";var YA=ps();ms.exports=YA});var ys=n(function(p3,bs){"use strict";var qs=require("@stdlib/assert/is-string").isPrimitive,ws=v();function KA(r,i){var t;if(!qs(r))throw new TypeError(ws("invalid argument. First argument must be a string. Value: `%s`.",r));if(!qs(i))throw new TypeError(ws("invalid argument. Second argument must be a string. Value: `%s`.",i));return t=r.indexOf(i),t===-1?r:r.substring(0,t)}bs.exports=KA});var Ss=n(function(m3,Ts){"use strict";var oA=ys();Ts.exports=oA});var Ls=n(function(h3,Rs){"use strict";var Vs=require("@stdlib/assert/is-string").isPrimitive,Ps=v();function cA(r,i){var t;if(!Vs(r))throw new TypeError(Ps("invalid argument. First argument must be a string. Value: `%s`.",r));if(!Vs(i))throw new TypeError(Ps("invalid argument. Second argument must be a string. Value: `%s`.",i));return t=r.lastIndexOf(i),t===-1?r:r.substring(0,t)}Rs.exports=cA});var _s=n(function(q3,Ns){"use strict";var dA=Ls();Ns.exports=dA});var Ms=n(function(w3,Gs){"use strict";var ur=require("@stdlib/utils/define-nonenumerable-read-only-property"),rD=require("@stdlib/assert/is-function"),iD=require("@stdlib/assert/is-string").isPrimitive,Os=require("@stdlib/symbol/iterator"),Is=q(),ks=v();function m0(r){var i,t,x,a,u;if(!iD(r))throw new TypeError(ks("invalid argument. First argument must be astring. Value: `%s`.",r));if(arguments.length>1){if(a=arguments[1],!rD(a))throw new TypeError(ks("invalid argument. Second argument must be a function. Value: `%s`.",a));i=arguments[2]}return u=0,t={},a?ur(t,"next",s):ur(t,"next",e),ur(t,"return",F),Os&&ur(t,Os,g),t;function s(){var D,f;return x?{done:!0}:(f=Is(r,u),f===-1?(x=!0,r.length?{value:a.call(i,r.substring(u),u,r),done:!1}:{done:!0}):(D=a.call(i,r.substring(u,f),u,r),u=f,{value:D,done:!1}))}function e(){var D,f;return x?{done:!0}:(f=Is(r,u),f===-1?(x=!0,r.length?{value:r.substring(u),done:!1}:{done:!0}):(D=r.substring(u,f),u=f,{value:D,done:!1}))}function F(D){return x=!0,arguments.length?{value:D,done:!0}:{done:!0}}function g(){return a?m0(r,a,i):m0(r)}}Gs.exports=m0});var Us=n(function(b3,zs){"use strict";var xD=Ms();zs.exports=xD});var Zs=n(function(y3,Hs){"use strict";var sr=require("@stdlib/utils/define-nonenumerable-read-only-property"),tD=require("@stdlib/assert/is-function"),aD=require("@stdlib/assert/is-string").isPrimitive,Ws=require("@stdlib/symbol/iterator"),js=nr(),$s=v();function h0(r){var i,t,x,a,u;if(!aD(r))throw new TypeError($s("invalid argument. First argument must be astring. Value: `%s`.",r));if(arguments.length>1){if(a=arguments[1],!tD(a))throw new TypeError($s("invalid argument. Second argument must be a function. Value: `%s`.",a));i=arguments[2]}return u=r.length-1,t={},a?sr(t,"next",s):sr(t,"next",e),sr(t,"return",F),Ws&&sr(t,Ws,g),t;function s(){var D,f;return x?{done:!0}:(f=js(r,u),f===-1?(x=!0,r.length?{value:a.call(i,r.substring(f+1,u+1),f+1,r),done:!1}:{done:!0}):(D=a.call(i,r.substring(f+1,u+1),f+1,r),u=f,{value:D,done:!1}))}function e(){var D,f;return x?{done:!0}:(f=js(r,u),f===-1?(x=!0,r.length?{value:r.substring(f+1,u+1),done:!1}:{done:!0}):(D=r.substring(f+1,u+1),u=f,{value:D,done:!1}))}function F(D){return x=!0,arguments.length?{value:D,done:!0}:{done:!0}}function g(){return a?h0(r,a,i):h0(r)}}Hs.exports=h0});var Qs=n(function(T3,Xs){"use strict";var nD=Zs();Xs.exports=nD});var Ys=n(function(S3,Js){"use strict";var uD=require("@stdlib/assert/is-string").isPrimitive,sD=v(),eD=w();function FD(r){if(!uD(r))throw new TypeError(sD("invalid argument. Must provide a string. Value: `%s`.",r));return eD(r)}Js.exports=FD});var os=n(function(V3,Ks){"use strict";var vD=Ys();Ks.exports=vD});var ie=n(function(P3,re){"use strict";var cs=require("@stdlib/assert/is-string").isPrimitive,CD=require("@stdlib/assert/is-nonnegative-integer").isPrimitive,ds=k(),BD=q(),q0=v();function lD(r,i,t){var x,a,u,s;if(!cs(r))throw new TypeError(q0("invalid argument. First argument must be a string. Value: `%s`.",r));if(!CD(i))throw new TypeError(q0("invalid argument. Second argument must be a nonnegative integer. Value: `%s`.",i));if(arguments.length>2&&!cs(t))throw new TypeError(q0("invalid argument. Third argument must be a string. Value: `%s`.",t));if(t=t||"...",x=ds(t),a=0,i>ds(r))return r;if(i-x<0)return t.slice(0,i);for(u=0;u2&&!ae(t))throw new TypeError(w0("invalid argument. Third argument must be a string. Value: `%s`.",t));if(t=t||"...",x=ne(t),u=ne(r),a=0,i>u)return r;if(i-x<0)return t.slice(0,i);for(s=ED((i-x)/2),F=u-AD((i-x)/2),e=0;e0&&(g=ue(r,a),!(g>=F+a-e));)a=g,e+=1;return r.substring(0,D)+t+r.substring(g)}se.exports=DD});var ve=n(function(N3,Fe){"use strict";var pD=ee();Fe.exports=pD});var Be=n(function(_3,Ce){"use strict";var mD=require("@stdlib/assert/is-string").isPrimitive,hD=v(),qD=r0();function wD(r){if(!mD(r))throw new TypeError(hD("invalid argument. First argument must be a string. Value: `%s`.",r));return qD(r)}Ce.exports=wD});var ge=n(function(O3,le){"use strict";var bD=Be();le.exports=bD});var B=require("@stdlib/utils/define-read-only-property"),C={};B(C,"acronym",pi());B(C,"base",La());B(C,"camelcase",Ia());B(C,"capitalize",za());B(C,"codePointAt",J());B(C,"constantcase",$a());B(C,"dotcase",Qa());B(C,"endsWith",ca());B(C,"first",un());B(C,"forEach",Bn());B(C,"format",v());B(C,"fromCodePoint",pn());B(C,"headercase",wn());B(C,"kebabcase",Sn());B(C,"lpad",x0());B(C,"ltrim",In());B(C,"ltrimN",Zn());B(C,"lowercase",Yn());B(C,"nextGraphemeClusterBreak",q());B(C,"numGraphemeClusters",k());B(C,"num2words",E1());B(C,"pad",I1());B(C,"pascalcase",z1());B(C,"percentEncode",$1());B(C,"prevGraphemeClusterBreak",nr());B(C,"removeFirst",tu());B(C,"removeLast",qu());B(C,"removePunctuation",gr());B(C,"removeUTF8BOM",Tu());B(C,"removeWords",Ou());B(C,"repeat",e0());B(C,"replace",P());B(C,"replaceBefore",Mu());B(C,"reverseString",ju());B(C,"rpad",F0());B(C,"rtrim",Xu());B(C,"rtrimN",cu());B(C,"snakecase",xs());B(C,"splitGraphemeClusters",rr());B(C,"startcase",us());B(C,"startsWith",Cs());B(C,"substringAfter",Es());B(C,"substringAfterLast",hs());B(C,"substringBefore",Ss());B(C,"substringBeforeLast",_s());B(C,"graphemeClusters2iterator",Us());B(C,"graphemeClusters2iteratorRight",Qs());B(C,"trim",os());B(C,"truncate",te());B(C,"truncateMiddle",ve());B(C,"uncapitalize",ge());B(C,"uppercase",B0());B(C,"utf16ToUTF8Array",Wr());module.exports=C;
/**
* @license Apache-2.0
*
diff --git a/dist/index.js.map b/dist/index.js.map
index b2094cc3..f5246931 100644
--- a/dist/index.js.map
+++ b/dist/index.js.map
@@ -1,7 +1,7 @@
{
"version": 3,
- "sources": ["../base/format-interpolate/lib/is_number.js", "../base/format-interpolate/lib/zero_pad.js", "../base/format-interpolate/lib/format_integer.js", "../base/format-interpolate/lib/is_string.js", "../base/format-interpolate/lib/format_double.js", "../base/format-interpolate/lib/space_pad.js", "../base/format-interpolate/lib/main.js", "../base/format-interpolate/lib/index.js", "../base/format-tokenize/lib/main.js", "../base/format-tokenize/lib/index.js", "../format/lib/is_string.js", "../format/lib/main.js", "../format/lib/index.js", "../base/replace/lib/main.js", "../base/replace/lib/index.js", "../replace/lib/main.js", "../replace/lib/index.js", "../remove-punctuation/lib/main.js", "../remove-punctuation/lib/index.js", "../base/uppercase/lib/main.js", "../base/uppercase/lib/index.js", "../base/lowercase/lib/main.js", "../base/lowercase/lib/index.js", "../acronym/lib/validate.js", "../acronym/lib/stopwords.json", "../acronym/lib/main.js", "../acronym/lib/index.js", "../base/capitalize/lib/main.js", "../base/capitalize/lib/index.js", "../base/trim/lib/has_builtin.js", "../base/trim/lib/builtin.js", "../base/trim/lib/check.js", "../base/trim/lib/polyfill.js", "../base/trim/lib/main.js", "../base/trim/lib/index.js", "../base/camelcase/lib/main.js", "../base/camelcase/lib/index.js", "../base/code-point-at/lib/main.js", "../base/code-point-at/lib/index.js", "../base/constantcase/lib/main.js", "../base/constantcase/lib/index.js", "../base/distances/levenshtein/lib/main.js", "../base/distances/levenshtein/lib/index.js", "../base/distances/lib/index.js", "../base/dotcase/lib/main.js", "../base/dotcase/lib/index.js", "../base/ends-with/lib/has_builtin.js", "../base/ends-with/lib/polyfill.js", "../base/ends-with/lib/builtin.js", "../base/ends-with/lib/main.js", "../base/ends-with/lib/index.js", "../base/first/lib/main.js", "../base/first/lib/index.js", "../base/first-code-point/lib/main.js", "../base/first-code-point/lib/index.js", "../code-point-at/lib/main.js", "../code-point-at/lib/index.js", "../tools/grapheme-cluster-break/lib/constants.js", "../tools/grapheme-cluster-break/lib/break_type.js", "../tools/grapheme-cluster-break/lib/emoji_property.js", "../tools/grapheme-cluster-break/lib/break_property.js", "../tools/grapheme-cluster-break/lib/index.js", "../next-grapheme-cluster-break/lib/main.js", "../next-grapheme-cluster-break/lib/index.js", "../base/first-grapheme-cluster/lib/main.js", "../base/first-grapheme-cluster/lib/index.js", "../base/for-each/lib/main.js", "../base/for-each/lib/index.js", "../base/for-each-code-point/lib/main.js", "../base/for-each-code-point/lib/index.js", "../base/for-each-grapheme-cluster/lib/main.js", "../base/for-each-grapheme-cluster/lib/index.js", "../base/startcase/lib/main.js", "../base/startcase/lib/index.js", "../base/headercase/lib/main.js", "../base/headercase/lib/index.js", "../base/invcase/lib/main.js", "../base/invcase/lib/index.js", "../base/kebabcase/lib/main.js", "../base/kebabcase/lib/index.js", "../base/repeat/lib/has_builtin.js", "../base/repeat/lib/polyfill.js", "../base/repeat/lib/builtin.js", "../base/repeat/lib/main.js", "../base/repeat/lib/index.js", "../base/left-pad/lib/main.js", "../base/left-pad/lib/index.js", "../base/left-trim/lib/has_builtin.js", "../base/left-trim/lib/polyfill.js", "../base/left-trim/lib/builtin.js", "../base/left-trim/lib/main.js", "../base/left-trim/lib/index.js", "../base/pascalcase/lib/main.js", "../base/pascalcase/lib/index.js", "../utf16-to-utf8-array/lib/main.js", "../utf16-to-utf8-array/lib/index.js", "../base/percent-encode/lib/main.js", "../base/percent-encode/lib/index.js", "../base/remove-first/lib/main.js", "../base/remove-first/lib/index.js", "../base/remove-first-code-point/lib/main.js", "../base/remove-first-code-point/lib/index.js", "../base/remove-first-grapheme-cluster/lib/main.js", "../base/remove-first-grapheme-cluster/lib/index.js", "../base/replace-before/lib/main.js", "../base/replace-before/lib/index.js", "../base/right-pad/lib/main.js", "../base/right-pad/lib/index.js", "../base/right-trim/lib/has_builtin.js", "../base/right-trim/lib/polyfill.js", "../base/right-trim/lib/builtin.js", "../base/right-trim/lib/main.js", "../base/right-trim/lib/index.js", "../base/snakecase/lib/main.js", "../base/snakecase/lib/index.js", "../base/starts-with/lib/has_builtin.js", "../base/starts-with/lib/polyfill.js", "../base/starts-with/lib/builtin.js", "../base/starts-with/lib/main.js", "../base/starts-with/lib/index.js", "../base/uncapitalize/lib/main.js", "../base/uncapitalize/lib/index.js", "../base/lib/index.js", "../camelcase/lib/main.js", "../camelcase/lib/index.js", "../capitalize/lib/main.js", "../capitalize/lib/index.js", "../constantcase/lib/main.js", "../constantcase/lib/index.js", "../dotcase/lib/main.js", "../dotcase/lib/index.js", "../ends-with/lib/main.js", "../ends-with/lib/index.js", "../first/lib/main.js", "../first/lib/index.js", "../for-each/lib/main.js", "../for-each/lib/index.js", "../from-code-point/lib/main.js", "../from-code-point/lib/index.js", "../headercase/lib/main.js", "../headercase/lib/index.js", "../kebabcase/lib/main.js", "../kebabcase/lib/index.js", "../left-pad/lib/main.js", "../left-pad/lib/index.js", "../left-trim/lib/main.js", "../left-trim/lib/index.js", "../split-grapheme-clusters/lib/main.js", "../split-grapheme-clusters/lib/index.js", "../left-trim-n/lib/main.js", "../left-trim-n/lib/index.js", "../lowercase/lib/main.js", "../lowercase/lib/index.js", "../num-grapheme-clusters/lib/main.js", "../num-grapheme-clusters/lib/index.js", "../num2words/lib/units.json", "../num2words/lib/int2words_de.js", "../num2words/lib/int2words_en.js", "../num2words/lib/validate.js", "../num2words/lib/decimals.js", "../num2words/lib/main.js", "../num2words/lib/index.js", "../repeat/lib/main.js", "../repeat/lib/index.js", "../right-pad/lib/main.js", "../right-pad/lib/index.js", "../pad/lib/validate.js", "../pad/lib/main.js", "../pad/lib/index.js", "../pascalcase/lib/main.js", "../pascalcase/lib/index.js", "../percent-encode/lib/main.js", "../percent-encode/lib/index.js", "../prev-grapheme-cluster-break/lib/main.js", "../prev-grapheme-cluster-break/lib/index.js", "../remove-first/lib/main.js", "../remove-first/lib/index.js", "../remove-last/lib/main.js", "../remove-last/lib/index.js", "../remove-utf8-bom/lib/main.js", "../remove-utf8-bom/lib/index.js", "../uppercase/lib/main.js", "../uppercase/lib/index.js", "../remove-words/lib/main.js", "../remove-words/lib/index.js", "../replace-before/lib/main.js", "../replace-before/lib/index.js", "../reverse/lib/main.js", "../reverse/lib/index.js", "../right-trim/lib/main.js", "../right-trim/lib/index.js", "../right-trim-n/lib/main.js", "../right-trim-n/lib/index.js", "../snakecase/lib/main.js", "../snakecase/lib/index.js", "../startcase/lib/main.js", "../startcase/lib/index.js", "../starts-with/lib/main.js", "../starts-with/lib/index.js", "../substring-after/lib/main.js", "../substring-after/lib/index.js", "../substring-after-last/lib/main.js", "../substring-after-last/lib/index.js", "../substring-before/lib/main.js", "../substring-before/lib/index.js", "../substring-before-last/lib/main.js", "../substring-before-last/lib/index.js", "../to-grapheme-cluster-iterator/lib/main.js", "../to-grapheme-cluster-iterator/lib/index.js", "../to-grapheme-cluster-iterator-right/lib/main.js", "../to-grapheme-cluster-iterator-right/lib/index.js", "../trim/lib/main.js", "../trim/lib/index.js", "../truncate/lib/main.js", "../truncate/lib/index.js", "../truncate-middle/lib/main.js", "../truncate-middle/lib/index.js", "../uncapitalize/lib/main.js", "../uncapitalize/lib/index.js", "../lib/index.js"],
- "sourcesContent": ["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tests if a value is a number primitive.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a number primitive\n*\n* @example\n* var bool = isNumber( 3.14 );\n* // returns true\n*\n* @example\n* var bool = isNumber( NaN );\n* // returns true\n*\n* @example\n* var bool = isNumber( new Number( 3.14 ) );\n* // returns false\n*/\nfunction isNumber( value ) {\n\treturn ( typeof value === 'number' ); // NOTE: we inline the `isNumber.isPrimitive` function from `@stdlib/assert/is-number` in order to avoid circular dependencies.\n}\n\n\n// EXPORTS //\n\nmodule.exports = isNumber;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Tests if a string starts with a minus sign (`-`).\n*\n* @private\n* @param {string} str - input string\n* @returns {boolean} boolean indicating if a string starts with a minus sign (`-`)\n*/\nfunction startsWithMinus( str ) {\n\treturn str[ 0 ] === '-';\n}\n\n/**\n* Returns a string of `n` zeros.\n*\n* @private\n* @param {number} n - number of zeros\n* @returns {string} string of zeros\n*/\nfunction zeros( n ) {\n\tvar out = '';\n\tvar i;\n\tfor ( i = 0; i < n; i++ ) {\n\t\tout += '0';\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Pads a token with zeros to the specified width.\n*\n* @private\n* @param {string} str - token argument\n* @param {number} width - token width\n* @param {boolean} [right=false] - boolean indicating whether to pad to the right\n* @returns {string} padded token argument\n*/\nfunction zeroPad( str, width, right ) {\n\tvar negative = false;\n\tvar pad = width - str.length;\n\tif ( pad < 0 ) {\n\t\treturn str;\n\t}\n\tif ( startsWithMinus( str ) ) {\n\t\tnegative = true;\n\t\tstr = str.substr( 1 );\n\t}\n\tstr = ( right ) ?\n\t\tstr + zeros( pad ) :\n\t\tzeros( pad ) + str;\n\tif ( negative ) {\n\t\tstr = '-' + str;\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeroPad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( './is_number.js' );\nvar zeroPad = require( './zero_pad.js' );\n\n// NOTE: for the following, we explicitly avoid using stdlib packages in this particular package in order to avoid circular dependencies.\nvar lowercase = String.prototype.toLowerCase;\nvar uppercase = String.prototype.toUpperCase;\n\n\n// MAIN //\n\n/**\n* Formats a token object argument as an integer.\n*\n* @private\n* @param {Object} token - token object\n* @throws {Error} must provide a valid integer\n* @returns {string} formatted token argument\n*/\nfunction formatInteger( token ) {\n\tvar base;\n\tvar out;\n\tvar i;\n\n\tswitch ( token.specifier ) {\n\tcase 'b':\n\t\t// Case: %b (binary)\n\t\tbase = 2;\n\t\tbreak;\n\tcase 'o':\n\t\t// Case: %o (octal)\n\t\tbase = 8;\n\t\tbreak;\n\tcase 'x':\n\tcase 'X':\n\t\t// Case: %x, %X (hexadecimal)\n\t\tbase = 16;\n\t\tbreak;\n\tcase 'd':\n\tcase 'i':\n\tcase 'u':\n\tdefault:\n\t\t// Case: %d, %i, %u (decimal)\n\t\tbase = 10;\n\t\tbreak;\n\t}\n\tout = token.arg;\n\ti = parseInt( out, 10 );\n\tif ( !isFinite( i ) ) { // NOTE: We use the global `isFinite` function here instead of `@stdlib/math/base/assert/is-finite` in order to avoid circular dependencies.\n\t\tif ( !isNumber( out ) ) {\n\t\t\tthrow new Error( 'invalid integer. Value: ' + out );\n\t\t}\n\t\ti = 0;\n\t}\n\tif ( i < 0 && ( token.specifier === 'u' || base !== 10 ) ) {\n\t\ti = 0xffffffff + i + 1;\n\t}\n\tif ( i < 0 ) {\n\t\tout = ( -i ).toString( base );\n\t\tif ( token.precision ) {\n\t\t\tout = zeroPad( out, token.precision, token.padRight );\n\t\t}\n\t\tout = '-' + out;\n\t} else {\n\t\tout = i.toString( base );\n\t\tif ( !i && !token.precision ) {\n\t\t\tout = '';\n\t\t} else if ( token.precision ) {\n\t\t\tout = zeroPad( out, token.precision, token.padRight );\n\t\t}\n\t\tif ( token.sign ) {\n\t\t\tout = token.sign + out;\n\t\t}\n\t}\n\tif ( base === 16 ) {\n\t\tif ( token.alternate ) {\n\t\t\tout = '0x' + out;\n\t\t}\n\t\tout = ( token.specifier === uppercase.call( token.specifier ) ) ?\n\t\t\tuppercase.call( out ) :\n\t\t\tlowercase.call( out );\n\t}\n\tif ( base === 8 ) {\n\t\tif ( token.alternate && out.charAt( 0 ) !== '0' ) {\n\t\t\tout = '0' + out;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatInteger;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tests if a value is a string primitive.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a string primitive\n*\n* @example\n* var bool = isString( 'beep' );\n* // returns true\n*\n* @example\n* var bool = isString( new String( 'beep' ) );\n* // returns false\n*/\nfunction isString( value ) {\n\treturn ( typeof value === 'string' ); // NOTE: we inline the `isString.isPrimitive` function from `@stdlib/assert/is-string` in order to avoid circular dependencies.\n}\n\n\n// EXPORTS //\n\nmodule.exports = isString;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( './is_number.js' );\n\n// NOTE: for the following, we explicitly avoid using stdlib packages in this particular package in order to avoid circular dependencies.\nvar abs = Math.abs; // eslint-disable-line stdlib/no-builtin-math\nvar lowercase = String.prototype.toLowerCase;\nvar uppercase = String.prototype.toUpperCase;\nvar replace = String.prototype.replace;\n\n\n// VARIABLES //\n\nvar RE_EXP_POS_DIGITS = /e\\+(\\d)$/;\nvar RE_EXP_NEG_DIGITS = /e-(\\d)$/;\nvar RE_ONLY_DIGITS = /^(\\d+)$/;\nvar RE_DIGITS_BEFORE_EXP = /^(\\d+)e/;\nvar RE_TRAILING_PERIOD_ZERO = /\\.0$/;\nvar RE_PERIOD_ZERO_EXP = /\\.0*e/;\nvar RE_ZERO_BEFORE_EXP = /(\\..*[^0])0*e/;\n\n\n// MAIN //\n\n/**\n* Formats a token object argument as a floating-point number.\n*\n* @private\n* @param {Object} token - token object\n* @throws {Error} must provide a valid floating-point number\n* @returns {string} formatted token argument\n*/\nfunction formatDouble( token ) {\n\tvar digits;\n\tvar out;\n\tvar f = parseFloat( token.arg );\n\tif ( !isFinite( f ) ) { // NOTE: We use the global `isFinite` function here instead of `@stdlib/math/base/assert/is-finite` in order to avoid circular dependencies.\n\t\tif ( !isNumber( token.arg ) ) {\n\t\t\tthrow new Error( 'invalid floating-point number. Value: ' + out );\n\t\t}\n\t\t// Case: NaN, Infinity, or -Infinity\n\t\tf = token.arg;\n\t}\n\tswitch ( token.specifier ) {\n\tcase 'e':\n\tcase 'E':\n\t\tout = f.toExponential( token.precision );\n\t\tbreak;\n\tcase 'f':\n\tcase 'F':\n\t\tout = f.toFixed( token.precision );\n\t\tbreak;\n\tcase 'g':\n\tcase 'G':\n\t\tif ( abs( f ) < 0.0001 ) {\n\t\t\tdigits = token.precision;\n\t\t\tif ( digits > 0 ) {\n\t\t\t\tdigits -= 1;\n\t\t\t}\n\t\t\tout = f.toExponential( digits );\n\t\t} else {\n\t\t\tout = f.toPrecision( token.precision );\n\t\t}\n\t\tif ( !token.alternate ) {\n\t\t\tout = replace.call( out, RE_ZERO_BEFORE_EXP, '$1e' );\n\t\t\tout = replace.call( out, RE_PERIOD_ZERO_EXP, 'e');\n\t\t\tout = replace.call( out, RE_TRAILING_PERIOD_ZERO, '' );\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tthrow new Error( 'invalid double notation. Value: ' + token.specifier );\n\t}\n\tout = replace.call( out, RE_EXP_POS_DIGITS, 'e+0$1' );\n\tout = replace.call( out, RE_EXP_NEG_DIGITS, 'e-0$1' );\n\tif ( token.alternate ) {\n\t\tout = replace.call( out, RE_ONLY_DIGITS, '$1.' );\n\t\tout = replace.call( out, RE_DIGITS_BEFORE_EXP, '$1.e' );\n\t}\n\tif ( f >= 0 && token.sign ) {\n\t\tout = token.sign + out;\n\t}\n\tout = ( token.specifier === uppercase.call( token.specifier ) ) ?\n\t\tuppercase.call( out ) :\n\t\tlowercase.call( out );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatDouble;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Returns `n` spaces.\n*\n* @private\n* @param {number} n - number of spaces\n* @returns {string} string of spaces\n*/\nfunction spaces( n ) {\n\tvar out = '';\n\tvar i;\n\tfor ( i = 0; i < n; i++ ) {\n\t\tout += ' ';\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Pads a token with spaces to the specified width.\n*\n* @private\n* @param {string} str - token argument\n* @param {number} width - token width\n* @param {boolean} [right=false] - boolean indicating whether to pad to the right\n* @returns {string} padded token argument\n*/\nfunction spacePad( str, width, right ) {\n\tvar pad = width - str.length;\n\tif ( pad < 0 ) {\n\t\treturn str;\n\t}\n\tstr = ( right ) ?\n\t\tstr + spaces( pad ) :\n\t\tspaces( pad ) + str;\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = spacePad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar formatInteger = require( './format_integer.js' );\nvar isString = require( './is_string.js' );\nvar formatDouble = require( './format_double.js' );\nvar spacePad = require( './space_pad.js' );\nvar zeroPad = require( './zero_pad.js' );\n\n\n// VARIABLES //\n\nvar fromCharCode = String.fromCharCode;\nvar isnan = isNaN; // NOTE: We use the global `isNaN` function here instead of `@stdlib/math/base/assert/is-nan` to avoid circular dependencies.\nvar isArray = Array.isArray; // NOTE: We use the global `Array.isArray` function here instead of `@stdlib/assert/is-array` to avoid circular dependencies.\n\n\n// FUNCTIONS //\n\n/**\n* Initializes token object with properties of supplied format identifier object or default values if not present.\n*\n* @private\n* @param {Object} token - format identifier object\n* @returns {Object} token object\n*/\nfunction initialize( token ) {\n\tvar out = {};\n\tout.specifier = token.specifier;\n\tout.precision = ( token.precision === void 0 ) ? 1 : token.precision;\n\tout.width = token.width;\n\tout.flags = token.flags || '';\n\tout.mapping = token.mapping;\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Generates string from a token array by interpolating values.\n*\n* @param {Array} tokens - string parts and format identifier objects\n* @param {Array} ...args - variable values\n* @throws {TypeError} first argument must be an array\n* @throws {Error} invalid flags\n* @returns {string} formatted string\n*\n* @example\n* var tokens = [ 'beep ', { 'specifier': 's' } ];\n* var out = formatInterpolate( tokens, 'boop' );\n* // returns 'beep boop'\n*/\nfunction formatInterpolate( tokens ) {\n\tvar hasPeriod;\n\tvar flags;\n\tvar token;\n\tvar flag;\n\tvar num;\n\tvar out;\n\tvar pos;\n\tvar i;\n\tvar j;\n\n\tif ( !isArray( tokens ) ) {\n\t\tthrow new TypeError( 'invalid argument. First argument must be an array. Value: `' + tokens + '`.' );\n\t}\n\tout = '';\n\tpos = 1;\n\tfor ( i = 0; i < tokens.length; i++ ) {\n\t\ttoken = tokens[ i ];\n\t\tif ( isString( token ) ) {\n\t\t\tout += token;\n\t\t} else {\n\t\t\thasPeriod = token.precision !== void 0;\n\t\t\ttoken = initialize( token );\n\t\t\tif ( !token.specifier ) {\n\t\t\t\tthrow new TypeError( 'invalid argument. Token is missing `specifier` property. Index: `'+ i +'`. Value: `' + token + '`.' );\n\t\t\t}\n\t\t\tif ( token.mapping ) {\n\t\t\t\tpos = token.mapping;\n\t\t\t}\n\t\t\tflags = token.flags;\n\t\t\tfor ( j = 0; j < flags.length; j++ ) {\n\t\t\t\tflag = flags.charAt( j );\n\t\t\t\tswitch ( flag ) {\n\t\t\t\tcase ' ':\n\t\t\t\t\ttoken.sign = ' ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '+':\n\t\t\t\t\ttoken.sign = '+';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '-':\n\t\t\t\t\ttoken.padRight = true;\n\t\t\t\t\ttoken.padZeros = false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase '0':\n\t\t\t\t\ttoken.padZeros = flags.indexOf( '-' ) < 0; // NOTE: We use built-in `Array.prototype.indexOf` here instead of `@stdlib/assert/contains` in order to avoid circular dependencies.\n\t\t\t\t\tbreak;\n\t\t\t\tcase '#':\n\t\t\t\t\ttoken.alternate = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'invalid flag: ' + flag );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( token.width === '*' ) {\n\t\t\t\ttoken.width = parseInt( arguments[ pos ], 10 );\n\t\t\t\tpos += 1;\n\t\t\t\tif ( isnan( token.width ) ) {\n\t\t\t\t\tthrow new TypeError( 'the argument for * width at position ' + pos + ' is not a number. Value: `' + token.width + '`.' );\n\t\t\t\t}\n\t\t\t\tif ( token.width < 0 ) {\n\t\t\t\t\ttoken.padRight = true;\n\t\t\t\t\ttoken.width = -token.width;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( hasPeriod ) {\n\t\t\t\tif ( token.precision === '*' ) {\n\t\t\t\t\ttoken.precision = parseInt( arguments[ pos ], 10 );\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tif ( isnan( token.precision ) ) {\n\t\t\t\t\t\tthrow new TypeError( 'the argument for * precision at position ' + pos + ' is not a number. Value: `' + token.precision + '`.' );\n\t\t\t\t\t}\n\t\t\t\t\tif ( token.precision < 0 ) {\n\t\t\t\t\t\ttoken.precision = 1;\n\t\t\t\t\t\thasPeriod = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttoken.arg = arguments[ pos ];\n\t\t\tswitch ( token.specifier ) {\n\t\t\tcase 'b':\n\t\t\tcase 'o':\n\t\t\tcase 'x':\n\t\t\tcase 'X':\n\t\t\tcase 'd':\n\t\t\tcase 'i':\n\t\t\tcase 'u':\n\t\t\t\t// Case: %b (binary), %o (octal), %x, %X (hexadecimal), %d, %i (decimal), %u (unsigned decimal)\n\t\t\t\tif ( hasPeriod ) {\n\t\t\t\t\ttoken.padZeros = false;\n\t\t\t\t}\n\t\t\t\ttoken.arg = formatInteger( token );\n\t\t\t\tbreak;\n\t\t\tcase 's':\n\t\t\t\t// Case: %s (string)\n\t\t\t\ttoken.maxWidth = ( hasPeriod ) ? token.precision : -1;\n\t\t\t\tbreak;\n\t\t\tcase 'c':\n\t\t\t\t// Case: %c (character)\n\t\t\t\tif ( !isnan( token.arg ) ) {\n\t\t\t\t\tnum = parseInt( token.arg, 10 );\n\t\t\t\t\tif ( num < 0 || num > 127 ) {\n\t\t\t\t\t\tthrow new Error( 'invalid character code. Value: ' + token.arg );\n\t\t\t\t\t}\n\t\t\t\t\ttoken.arg = ( isnan( num ) ) ?\n\t\t\t\t\t\tString( token.arg ) :\n\t\t\t\t\t\tfromCharCode( num );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'e':\n\t\t\tcase 'E':\n\t\t\tcase 'f':\n\t\t\tcase 'F':\n\t\t\tcase 'g':\n\t\t\tcase 'G':\n\t\t\t\t// Case: %e, %E (scientific notation), %f, %F (decimal floating point), %g, %G (uses the shorter of %e/E or %f/F)\n\t\t\t\tif ( !hasPeriod ) {\n\t\t\t\t\ttoken.precision = 6;\n\t\t\t\t}\n\t\t\t\ttoken.arg = formatDouble( token );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'invalid specifier: ' + token.specifier );\n\t\t\t}\n\t\t\t// Fit argument into field width...\n\t\t\tif ( token.maxWidth >= 0 && token.arg.length > token.maxWidth ) {\n\t\t\t\ttoken.arg = token.arg.substring( 0, token.maxWidth );\n\t\t\t}\n\t\t\tif ( token.padZeros ) {\n\t\t\t\ttoken.arg = zeroPad( token.arg, token.width || token.precision, token.padRight ); // eslint-disable-line max-len\n\t\t\t} else if ( token.width ) {\n\t\t\t\ttoken.arg = spacePad( token.arg, token.width, token.padRight );\n\t\t\t}\n\t\t\tout += token.arg || '';\n\t\t\tpos += 1;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatInterpolate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate string from a token array by interpolating values.\n*\n* @module @stdlib/string/base/format-interpolate\n*\n* @example\n* var formatInterpolate = require( '@stdlib/string/base/format-interpolate' );\n*\n* var tokens = ['Hello ', { 'specifier': 's' }, '!' ];\n* var out = formatInterpolate( tokens, 'World' );\n* // returns 'Hello World!'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE = /%(?:([1-9]\\d*)\\$)?([0 +\\-#]*)(\\*|\\d+)?(?:(\\.)(\\*|\\d+)?)?[hlL]?([%A-Za-z])/g;\n\n\n// FUNCTIONS //\n\n/**\n* Parses a delimiter.\n*\n* @private\n* @param {Array} match - regular expression match\n* @returns {Object} delimiter token object\n*/\nfunction parse( match ) {\n\tvar token = {\n\t\t'mapping': ( match[ 1 ] ) ? parseInt( match[ 1 ], 10 ) : void 0,\n\t\t'flags': match[ 2 ],\n\t\t'width': match[ 3 ],\n\t\t'precision': match[ 5 ],\n\t\t'specifier': match[ 6 ]\n\t};\n\tif ( match[ 4 ] === '.' && match[ 5 ] === void 0 ) {\n\t\ttoken.precision = '1';\n\t}\n\treturn token;\n}\n\n\n// MAIN //\n\n/**\n* Tokenizes a string into an array of string parts and format identifier objects.\n*\n* @param {string} str - input string\n* @returns {Array} tokens\n*\n* @example\n* var tokens = formatTokenize( 'Hello %s!' );\n* // returns [ 'Hello ', {...}, '!' ]\n*/\nfunction formatTokenize( str ) {\n\tvar content;\n\tvar tokens;\n\tvar match;\n\tvar prev;\n\n\ttokens = [];\n\tprev = 0;\n\tmatch = RE.exec( str );\n\twhile ( match ) {\n\t\tcontent = str.slice( prev, RE.lastIndex - match[ 0 ].length );\n\t\tif ( content.length ) {\n\t\t\ttokens.push( content );\n\t\t}\n\t\ttokens.push( parse( match ) );\n\t\tprev = RE.lastIndex;\n\t\tmatch = RE.exec( str );\n\t}\n\tcontent = str.slice( prev );\n\tif ( content.length ) {\n\t\ttokens.push( content );\n\t}\n\treturn tokens;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatTokenize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tokenize a string into an array of string parts and format identifier objects.\n*\n* @module @stdlib/string/base/format-tokenize\n*\n* @example\n* var formatTokenize = require( '@stdlib/string/base/format-tokenize' );\n*\n* var str = 'Hello %s!';\n* var tokens = formatTokenize( str );\n* // returns [ 'Hello ', {...}, '!' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tests if a value is a string primitive.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a string primitive\n*\n* @example\n* var bool = isString( 'beep' );\n* // returns true\n*\n* @example\n* var bool = isString( new String( 'beep' ) );\n* // returns false\n*/\nfunction isString( value ) {\n\treturn ( typeof value === 'string' ); // NOTE: we inline the `isString.isPrimitive` function from `@stdlib/assert/is-string` in order to avoid circular dependencies.\n}\n\n\n// EXPORTS //\n\nmodule.exports = isString;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar interpolate = require( './../../base/format-interpolate' );\nvar tokenize = require( './../../base/format-tokenize' );\nvar isString = require( './is_string.js' );\n\n\n// MAIN //\n\n/**\n* Inserts supplied variable values into a format string.\n*\n* @param {string} str - input string\n* @param {Array} ...args - variable values\n* @throws {TypeError} first argument must be a string\n* @throws {Error} invalid flags\n* @returns {string} formatted string\n*\n* @example\n* var str = format( 'Hello %s!', 'world' );\n* // returns 'Hello world!'\n*\n* @example\n* var str = format( 'Pi: ~%.2f', 3.141592653589793 );\n* // returns 'Pi: ~3.14'\n*/\nfunction format( str ) {\n\tvar tokens;\n\tvar args;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\ttokens = tokenize( str );\n\targs = new Array( arguments.length );\n\targs[ 0 ] = tokens;\n\tfor ( i = 1; i < args.length; i++ ) {\n\t\targs[ i ] = arguments[ i ];\n\t}\n\treturn interpolate.apply( null, args );\n}\n\n\n// EXPORTS //\n\nmodule.exports = format;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Insert supplied variable values into a format string.\n*\n* @module @stdlib/string/format\n*\n* @example\n* var format = require( '@stdlib/string/format' );\n*\n* var out = format( '%s %s!', 'Hello', 'World' );\n* // returns 'Hello World!'\n*\n* out = format( 'Pi: ~%.2f', 3.141592653589793 );\n* // returns 'Pi: ~3.14'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Replaces search occurrences with a replacement string.\n*\n* @param {string} str - input string\n* @param {RegExp} search - search expression\n* @param {(string|Function)} newval - replacement value or function\n* @returns {string} new string containing replacement(s)\n*\n* @example\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*\n* @example\n* var capitalize = require( '@stdlib/string/base/capitalize' );\n*\n* var str = 'Oranges and lemons say the bells of St. Clement\\'s';\n*\n* function replacer( match, p1 ) {\n* return capitalize( p1 );\n* }\n*\n* var out = replace( str, /([^\\s]*)/gi, replacer);\n* // returns 'Oranges And Lemons Say The Bells Of St. Clement\\'s'\n*/\nfunction replace( str, search, newval ) {\n\treturn str.replace( search, newval );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace search occurrences with a replacement string.\n*\n* @module @stdlib/string/base/replace\n*\n* @example\n* var replace = require( '@stdlib/string/base/replace' );\n*\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar rescape = require( '@stdlib/utils/escape-regexp-string' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isRegExp = require( '@stdlib/assert/is-regexp' );\nvar format = require( './../../format' );\nvar base = require( './../../base/replace' );\n\n\n// MAIN //\n\n/**\n* Replaces search occurrences with a replacement string.\n*\n* @param {string} str - input string\n* @param {(string|RegExp)} search - search expression\n* @param {(string|Function)} newval - replacement value or function\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument argument must be a string or regular expression\n* @throws {TypeError} third argument must be a string or function\n* @returns {string} new string containing replacement(s)\n*\n* @example\n* var str = 'beep';\n* var out = replace( str, 'e', 'o' );\n* // returns 'boop'\n*\n* @example\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*\n* @example\n* var capitalize = require( '@stdlib/string/capitalize' );\n*\n* var str = 'Oranges and lemons say the bells of St. Clement\\'s';\n*\n* function replacer( match, p1 ) {\n* return capitalize( p1 );\n* }\n*\n* var out = replace( str, /([^\\s]*)/gi, replacer);\n* // returns 'Oranges And Lemons Say The Bells Of St. Clement\\'s'\n*/\nfunction replace( str, search, newval ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( isString( search ) ) {\n\t\tsearch = new RegExp( rescape( search ), 'g' );\n\t} else if ( !isRegExp( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string or regular expression. Value: `%s`.', search ) );\n\t}\n\tif ( !isString( newval ) && !isFunction( newval ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string or replacement function. Value: `%s`.', newval ) );\n\t}\n\treturn base( str, search, newval );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace search occurrences with a replacement string.\n*\n* @module @stdlib/string/replace\n*\n* @example\n* var replace = require( '@stdlib/string/replace' );\n*\n* var str = 'beep';\n* var out = replace( str, 'e', 'o' );\n* // returns 'boop'\n*\n* str = 'Hello World';\n* out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar replace = require( './../../replace' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar RE = /[!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]]/g; // eslint-disable-line no-useless-escape\n\n\n// MAIN //\n\n/**\n* Removes punctuation characters from a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {string} output string\n*\n* @example\n* var str = 'Sun Tzu said: \"A leader leads by example not by force.\"';\n* var out = removePunctuation( str );\n* // returns 'Sun Tzu said A leader leads by example not by force'\n*\n* @example\n* var str = 'Double, double, toil and trouble; Fire burn, and cauldron bubble!';\n* var out = removePunctuation( str );\n* // returns 'Double double toil and trouble Fire burn and cauldron bubble'\n*\n* @example\n* var str = 'This module removes these characters: `{}[]:,!/<>().;~|?\\'\"';\n* var out = removePunctuation( str );\n* // returns 'This module removes these characters '\n*/\nfunction removePunctuation( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removePunctuation;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove punctuation characters from a string.\n*\n* @module @stdlib/string/remove-punctuation\n*\n* @example\n* var removePunctuation = require( '@stdlib/string/remove-punctuation' );\n*\n* var out = removePunctuation( 'Sun Tzu said: \"A leader leads by example not by force.\"' );\n* // returns 'Sun Tzu said A leader leads by example not by force'\n*\n* out = removePunctuation( 'Double, double, toil and trouble; Fire burn, and cauldron bubble!' ) );\n* // returns 'Double double toil and trouble Fire burn and cauldron bubble'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Converts a string to uppercase.\n*\n* @param {string} str - string to convert\n* @returns {string} uppercase string\n*\n* @example\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\nfunction uppercase( str ) {\n\treturn str.toUpperCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = uppercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to uppercase.\n*\n* @module @stdlib/string/base/uppercase\n*\n* @example\n* var uppercase = require( '@stdlib/string/base/uppercase' );\n*\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Converts a string to lowercase.\n*\n* @param {string} str - string to convert\n* @returns {string} lowercase string\n*\n* @example\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\nfunction lowercase( str ) {\n\treturn str.toLowerCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = lowercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to lowercase.\n*\n* @module @stdlib/string/base/lowercase\n*\n* @example\n* var lowercase = require( '@stdlib/string/base/lowercase' );\n*\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isStringArray = require( '@stdlib/assert/is-string-array' ).primitives;\nvar isEmptyArray = require( '@stdlib/assert/is-empty-array' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - options to validate\n* @param {StringArray} [options.stopwords] - array of custom stop words\n* @returns {(null|Error)} error object or null\n*\n* @example\n* var opts = {};\n* var options = {\n* 'stopwords': [ 'of' ]\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n* throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isPlainObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'stopwords' ) ) {\n\t\topts.stopwords = options.stopwords;\n\t\tif (\n\t\t\t!isStringArray( opts.stopwords ) &&\n\t\t\t!isEmptyArray( opts.stopwords )\n\t\t) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be an array of strings. Option: `%s`.', 'stopwords', opts.stopwords ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "[\n \"a\",\n \"all\",\n \"also\",\n \"although\",\n \"an\",\n \"and\",\n \"any\",\n \"are\",\n \"as\",\n \"at\",\n \"b\",\n \"be\",\n \"been\",\n \"but\",\n \"by\",\n \"c\",\n \"could\",\n \"d\",\n \"e\",\n \"each\",\n \"eg\",\n \"either\",\n \"even\",\n \"ever\",\n \"ex\",\n \"except\",\n \"f\",\n \"far\",\n \"few\",\n \"for\",\n \"from\",\n \"further\",\n \"g\",\n \"get\",\n \"gets\",\n \"given\",\n \"gives\",\n \"go\",\n \"going\",\n \"got\",\n \"h\",\n \"had\",\n \"has\",\n \"have\",\n \"having\",\n \"he\",\n \"her\",\n \"here\",\n \"herself\",\n \"him\",\n \"himself\",\n \"his\",\n \"how\",\n \"i\",\n \"ie\",\n \"if\",\n \"in\",\n \"into\",\n \"is\",\n \"it\",\n \"its\",\n \"itself\",\n \"j\",\n \"just\",\n \"k\",\n \"l\",\n \"less\",\n \"let\",\n \"m\",\n \"many\",\n \"may\",\n \"me\",\n \"might\",\n \"must\",\n \"my\",\n \"myself\",\n \"n\",\n \"need\",\n \"needs\",\n \"next\",\n \"no\",\n \"non\",\n \"not\",\n \"now\",\n \"o\",\n \"of\",\n \"off\",\n \"old\",\n \"on\",\n \"once\",\n \"only\",\n \"or\",\n \"our\",\n \"out\",\n \"p\",\n \"per\",\n \"put\",\n \"q\",\n \"r\",\n \"s\",\n \"same\",\n \"shall\",\n \"she\",\n \"should\",\n \"since\",\n \"so\",\n \"such\",\n \"sure\",\n \"t\",\n \"than\",\n \"that\",\n \"the\",\n \"their\",\n \"them\",\n \"then\",\n \"there\",\n \"these\",\n \"they\",\n \"this\",\n \"those\",\n \"though\",\n \"thus\",\n \"to\",\n \"too\",\n \"u\",\n \"us\",\n \"v\",\n \"w\",\n \"was\",\n \"we\",\n \"well\",\n \"went\",\n \"were\",\n \"what\",\n \"when\",\n \"where\",\n \"which\",\n \"who\",\n \"whose\",\n \"why\",\n \"will\",\n \"would\",\n \"x\",\n \"y\",\n \"yet\",\n \"z\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar removePunctuation = require( './../../remove-punctuation' );\nvar tokenize = require( '@stdlib/nlp/tokenize' );\nvar replace = require( './../../base/replace' );\nvar uppercase = require( './../../base/uppercase' );\nvar lowercase = require( './../../base/lowercase' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar format = require( './../../format' );\nvar validate = require( './validate.js' );\nvar STOPWORDS = require( './stopwords.json' );\n\n\n// VARIABLES //\n\nvar RE_HYPHEN = /-/g;\n\n\n// MAIN //\n\n/**\n* Generates an acronym for a given string.\n*\n* ## Notes\n*\n* - The acronym is generated by capitalizing the first letter of each word in the string.\n* - The function removes stop words from the string before generating the acronym.\n* - The function splits hyphenated words and uses the first character of each hyphenated part.\n*\n* @param {string} str - input string\n* @param {Options} [options] - function options\n* @param {StringArray} [options.stopwords] - custom stop words\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} must provide valid options\n* @returns {string} generated acronym\n*\n* @example\n* var out = acronym( 'the quick brown fox' );\n* // returns 'QBF'\n*\n* @example\n* var out = acronym( 'Hard-boiled eggs' );\n* // returns 'HBE'\n*\n* @example\n* var out = acronym( 'National Association of Securities Dealers Automated Quotation' );\n* // returns 'NASDAQ'\n*/\nfunction acronym( str, options ) {\n\tvar isStopWord;\n\tvar words;\n\tvar opts;\n\tvar err;\n\tvar out;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {};\n\tif ( arguments.length > 1 ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tisStopWord = contains( opts.stopwords || STOPWORDS );\n\tstr = removePunctuation( str );\n\tstr = replace( str, RE_HYPHEN, ' ' );\n\twords = tokenize( str );\n\tout = '';\n\tfor ( i = 0; i < words.length; i++ ) {\n\t\tif ( isStopWord( lowercase( words[ i ] ) ) === false ) {\n\t\t\tout += uppercase( words[ i ].charAt( 0 ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = acronym;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate an acronym for a given string.\n*\n* @module @stdlib/string/acronym\n*\n* @example\n* var acronym = require( '@stdlib/string/acronym' );\n*\n* var out = acronym( 'National Association of Securities Dealers Automated Quotation' );\n* // returns 'NASDAQ'\n*\n* out = acronym( 'To be determined...', {\n* 'stopwords': []\n* });\n* // returns 'TBD'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Capitalizes the first character in a string.\n*\n* @param {string} str - input string\n* @returns {string} capitalized string\n*\n* @example\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* @example\n* var out = capitalize( 'presidential election' );\n* // returns 'Presidential election'\n*\n* @example\n* var out = capitalize( 'javaScript' );\n* // returns 'JavaScript'\n*\n* @example\n* var out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures'\n*/\nfunction capitalize( str ) {\n\tif ( str === '' ) {\n\t\treturn '';\n\t}\n\treturn str.charAt( 0 ).toUpperCase() + str.slice( 1 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = capitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first character in a string.\n*\n* @module @stdlib/string/base/capitalize\n*\n* @example\n* var capitalize = require( '@stdlib/string/base/capitalize' );\n*\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trim !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar trim = String.prototype.trim;\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar trim = require( './builtin.js' );\n\n\n// VARIABLES //\n\nvar str1 = ' \\n\\t\\r\\n\\f\\v\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\nvar str2 = '\\u180e';\n\n\n// MAIN //\n\n/**\n* Tests the built-in `String.prototype.trim()` implementation when provided whitespace.\n*\n* ## Notes\n*\n* - For context, see . In short, we can only rely on the built-in `trim` method when it does not consider the Mongolian space separator as whitespace.\n*\n* @private\n* @returns {boolean} boolean indicating whether the built-in implementation returns the expected value\n*\n* @example\n* var b = test();\n* // returns \n*/\nfunction test() {\n\treturn ( trim.call( str1 ) === '' ) && ( trim.call( str2 ) === str2 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = test;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( './../../../base/replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /^[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]*([\\S\\s]*?)[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]*$/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\treturn replace( str, RE, '$1' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning and end of a string.\n*\n* @module @stdlib/string/base/trim\n*\n* @example\n* var trim = require( '@stdlib/string/base/trim' );\n*\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar check = require( './check.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar trim;\nif ( HAS_BUILTIN && check() ) {\n\ttrim = main;\n} else {\n\ttrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar capitalize = require( './../../../base/capitalize' );\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_TO_CAMEL = /(?:\\s|^)([^\\s]+)(?=\\s|$)/g;\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// FUNCTIONS //\n\n/**\n* Converts first capture group to uppercase.\n*\n* @private\n* @param {string} match - entire match\n* @param {string} p1 - first capture group\n* @param {number} offset - offset of the matched substring in entire string\n* @returns {string} uppercased capture group\n*/\nfunction replacer( match, p1, offset ) {\n\tp1 = lowercase( p1 );\n\treturn ( offset === 0 ) ? p1 : capitalize( p1 );\n}\n\n\n// MAIN //\n\n/**\n* Converts a string to camel case.\n*\n* @param {string} str - string to convert\n* @returns {string} camel-cased string\n*\n* @example\n* var out = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* @example\n* var out = camelcase( 'IS_MOBILE' );\n* // returns 'isMobile'\n*\n* @example\n* var out = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*\n* @example\n* var out = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*/\nfunction camelcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_WHITESPACE, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\treturn replace( str, RE_TO_CAMEL, replacer );\n}\n\n\n// EXPORTS //\n\nmodule.exports = camelcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to camel case.\n*\n* @module @stdlib/string/base/camelcase\n*\n* @example\n* var camelcase = require( '@stdlib/string/base/camelcase' );\n*\n* var str = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* str = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*\n* str = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\n// Factors for converting individual surrogates...\nvar Ox10000 = 0x10000|0; // 65536\nvar Ox400 = 0x400|0; // 1024\n\n// Range for a high surrogate\nvar OxD800 = 0xD800|0; // 55296\nvar OxDBFF = 0xDBFF|0; // 56319\n\n// Range for a low surrogate\nvar OxDC00 = 0xDC00|0; // 56320\nvar OxDFFF = 0xDFFF|0; // 57343\n\n\n// MAIN //\n\n/**\n* Returns a Unicode code point from a string at a specified position.\n*\n* ## Notes\n*\n* - UTF-16 encoding uses one 16-bit unit for non-surrogates (U+0000 to U+D7FF and U+E000 to U+FFFF).\n* - UTF-16 encoding uses two 16-bit units (surrogate pairs) for U+10000 to U+10FFFF and encodes U+10000-U+10FFFF by subtracting 0x10000 from the code point, expressing the result as a 20-bit binary, and splitting the 20 bits of 0x0-0xFFFFF as upper and lower 10-bits. The respective 10-bits are stored in two 16-bit words: a high and a low surrogate.\n*\n* @param {string} str - input string\n* @param {integer} idx - position\n* @param {boolean} backward - backward iteration for low surrogates\n* @returns {NonNegativeInteger} code point\n*\n* @example\n* var out = codePointAt( 'last man standing', 4, false );\n* // returns 32\n*\n* @example\n* var out = codePointAt( 'presidential election', 8, true );\n* // returns 116\n*\n* @example\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2, false );\n* // returns 2369\n*\n* @example\n* var out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\nfunction codePointAt( str, idx, backward ) {\n\tvar code;\n\tvar low;\n\tvar hi;\n\n\tif ( idx < 0 ) {\n\t\tidx += str.length;\n\t}\n\tcode = str.charCodeAt( idx );\n\n\t// High surrogate\n\tif ( code >= OxD800 && code <= OxDBFF && idx < str.length - 1 ) {\n\t\thi = code;\n\t\tlow = str.charCodeAt( idx+1 );\n\t\tif ( OxDC00 <= low && low <= OxDFFF ) {\n\t\t\treturn ( ( hi - OxD800 ) * Ox400 ) + ( low - OxDC00 ) + Ox10000;\n\t\t}\n\t\treturn hi;\n\t}\n\t// Low surrogate - support only if backward iteration is desired\n\tif ( backward ) {\n\t\tif ( code >= OxDC00 && code <= OxDFFF && idx >= 1 ) {\n\t\t\thi = str.charCodeAt( idx-1 );\n\t\t\tlow = code;\n\t\t\tif ( OxD800 <= hi && hi <= OxDBFF ) {\n\t\t\t\treturn ( ( hi - OxD800 ) * Ox400 ) + ( low - OxDC00 ) + Ox10000;\n\t\t\t}\n\t\t\treturn low;\n\t\t}\n\t}\n\treturn code;\n}\n\n\n// EXPORTS //\n\nmodule.exports = codePointAt;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a Unicode code point from a string at a specified position.\n*\n* @module @stdlib/string/base/code-point-at\n*\n* @example\n* var codePointAt = require( '@stdlib/string/base/code-point-at' );\n*\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2, false );\n* // returns 2369\n*\n* out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar uppercase = require( './../../../base/uppercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[\\-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to constant case.\n*\n* @param {string} str - string to convert\n* @returns {string} constant-cased string\n*\n* @example\n* var str = constantcase( 'beep' );\n* // returns 'BEEP'\n*\n* @example\n* var str = constantcase( 'beep boop' );\n* // returns 'BEEP_BOOP'\n*\n* @example\n* var str = constantcase( 'isMobile' );\n* // returns 'IS_MOBILE'\n*\n* @example\n* var str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*/\nfunction constantcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '_' );\n\treturn uppercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = constantcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to constant case.\n*\n* @module @stdlib/string/base/constantcase\n*\n* @example\n* var constantcase = require( '@stdlib/string/base/constantcase' );\n*\n* var str = constantcase( 'aBcDeF' );\n* // returns 'ABCDEF'\n*\n* str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*\n* str = constantcase( 'I am a robot' );\n* // returns 'I_AM_A_ROBOT'\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../../../format' );\nvar min = require( '@stdlib/math/base/special/min' );\n\n\n// MAIN //\n\n/**\n* Calculates the Levenshtein (edit) distance between two strings.\n*\n* @param {string} s1 - first string value\n* @param {string} s2 - second string value\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @returns {NonNegativeInteger} Levenshtein distance\n*\n* @example\n* var distance = levenshteinDistance( 'algorithm', 'altruistic' );\n* // returns 6\n*/\nfunction levenshteinDistance( s1, s2 ) {\n\tvar temp;\n\tvar row;\n\tvar pre;\n\tvar m;\n\tvar n;\n\tvar i;\n\tvar j;\n\tvar k;\n\n\tif ( !isString( s1 ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', s1 ) );\n\t}\n\tif ( !isString( s2 ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', s2 ) );\n\t}\n\tn = s1.length;\n\tm = s2.length;\n\n\t// If either string is empty, the edit distance is equal to the number of characters in the non-empty string...\n\tif ( n === 0 ) {\n\t\treturn m;\n\t}\n\tif ( m === 0 ) {\n\t\treturn n;\n\t}\n\n\trow = [];\n\tfor ( i = 0; i <= m; i++ ) {\n\t\trow.push( i );\n\t}\n\n\tfor ( i = 0; i < n; i++ ) {\n\t\tpre = row[ 0 ];\n\t\trow[ 0 ] = i + 1;\n\t\tfor ( j = 0; j < m; j++ ) {\n\t\t\tk = j + 1;\n\t\t\ttemp = row[ k ];\n\t\t\tif ( s1[ i ] === s2[ j ] ) {\n\t\t\t\trow[ k ] = pre;\n\t\t\t} else {\n\t\t\t\trow[ k ] = min( pre, min( row[ j ], row[ k ] ) ) + 1;\n\t\t\t}\n\t\t\tpre = temp;\n\t\t}\n\t}\n\treturn row[ m ];\n}\n\n\n// EXPORTS //\n\nmodule.exports = levenshteinDistance;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Calculate the Levenshtein (edit) distance between two strings.\n*\n* @module @stdlib/string/base/distances/levenshtein\n*\n* @example\n* var levenshteinDistance = require( '@stdlib/string/base/distances/levenshtein' );\n*\n* var dist = levenshteinDistance( 'fly', 'ant' );\n* // returns 3\n*\n* dist = levenshteinDistance( 'frog', 'fog' );\n* // returns 1\n*\n* dist = levenshteinDistance( 'javascript', 'typescript' );\n* // returns 4\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name levenshteinDistance\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/distances/levenshtein}\n*/\nsetReadOnly( ns, 'levenshteinDistance', require( './../../../base/distances/levenshtein' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[\\-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to dot case.\n*\n* @param {string} str - string to convert\n* @returns {string} dot-cased string\n*\n* @example\n* var str = dotcase( 'beep' );\n* // returns 'beep'\n*\n* @example\n* var str = dotcase( 'beep boop' );\n* // returns 'beep.boop'\n*\n* @example\n* var str = dotcase( 'isMobile' );\n* // returns 'is.mobile'\n*\n* @example\n* var str = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*/\nfunction dotcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '.' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = dotcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to dot case.\n*\n* @module @stdlib/string/base/dotcase\n*\n* @example\n* var dotcase = require( '@stdlib/string/base/dotcase' );\n*\n* var str = dotcase( 'aBcDeF' );\n* // returns 'abcdef'\n*\n* str = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*\n* str = dotcase( 'I am a robot' );\n* // returns 'i.am.a.robot'\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.endsWith !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests if a string ends with the characters of another string.\n*\n* ## Notes\n*\n* - The last parameter restricts the search to a substring within the input string beginning from the leftmost character. If provided a negative value, `len` indicates to ignore the last `len` characters, and is thus equivalent to `str.length + len`.\n*\n* @private\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} len - substring length\n* @returns {boolean} boolean indicating if the input string ends with the search string\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', 19 );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', -23 );\n* // returns true\n*/\nfunction endsWith( str, search, len ) {\n\tvar idx;\n\tvar N;\n\tvar i;\n\n\tN = search.length;\n\tif ( len === 0 ) {\n\t\treturn ( N === 0 );\n\t}\n\tif ( len < 0 ) {\n\t\tidx = str.length + len;\n\t} else {\n\t\tidx = len;\n\t}\n\tif ( N === 0 ) {\n\t\t// Based on the premise that every string can be \"surrounded\" by empty strings (e.g., \"\" + \"a\" + \"\" + \"b\" + \"\" === \"ab\"):\n\t\treturn true;\n\t}\n\tidx -= N;\n\tif ( idx < 0 ) {\n\t\treturn false;\n\t}\n\tfor ( i = 0; i < N; i++) {\n\t\tif ( str.charCodeAt( idx + i ) !== search.charCodeAt( i ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar endsWith = String.prototype.endsWith;\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Tests if a string ends with the characters of another string.\n*\n* ## Notes\n*\n* - The last parameter restricts the search to a substring within the input string beginning from the leftmost character. If provided a negative value, `len` indicates to ignore the last `len` characters, and is thus equivalent to `str.length + len`.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} len - substring length\n* @returns {boolean} boolean indicating if the input string ends with the search string\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', 19 );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', -23 );\n* // returns true\n*/\nfunction endsWith( str, search, len ) {\n\tvar idx;\n\tvar N;\n\n\tN = search.length;\n\tif ( len === 0 ) {\n\t\treturn ( N === 0 );\n\t}\n\tif ( len < 0 ) {\n\t\tidx = str.length + len;\n\t} else {\n\t\tidx = len;\n\t}\n\tif ( N === 0 ) {\n\t\t// Based on the premise that every string can be \"surrounded\" by empty strings (e.g., \"\" + \"a\" + \"\" + \"b\" + \"\" === \"ab\"):\n\t\treturn true;\n\t}\n\tif ( idx - N < 0 || idx > str.length ) {\n\t\treturn false;\n\t}\n\treturn builtin.call( str, search, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string ends with the characters of another string.\n*\n* @module @stdlib/string/base/ends-with\n*\n* @example\n* var endsWith = require( '@stdlib/string/base/ends-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n*\n* var bool = endsWith( str, 'air', str.length );\n* // returns true\n*\n* bool = endsWith( str, 'fair', str.length );\n* // returns false\n*\n* bool = endsWith( str, 'fair', 30 );\n* // returns true\n*\n* bool = endsWith( str, 'fair', -34 );\n* // returns true\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar endsWith;\nif ( HAS_BUILTIN ) {\n\tendsWith = main;\n} else {\n\tendsWith = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns the first `n` UTF-16 code units of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of UTF-16 code units to return\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election', 1 );\n* // returns 'p'\n*\n* @example\n* var out = first( 'JavaScript', 1 );\n* // returns 'J'\n*\n* @example\n* var out = first( 'Hidden Treasures', 1 );\n* // returns 'H'\n*/\nfunction first( str, n ) {\n\treturn str.substring( 0, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first `n` UTF-16 code units of a string.\n*\n* @module @stdlib/string/base/first\n*\n* @example\n* var first = require( '@stdlib/string/base/first' );\n*\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures', 1 );\n* // returns 'H';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar RE_UTF16_SURROGATE_PAIR = require( '@stdlib/regexp/utf16-surrogate-pair' ).REGEXP;\n\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Returns the first `n` Unicode code points of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of Unicode code points to return\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election', 1 );\n* // returns 'p'\n*\n* @example\n* var out = first( 'JavaScript', 1 );\n* // returns 'J'\n*\n* @example\n* var out = first( 'Hidden Treasures', 1 );\n* // returns 'H'\n*/\nfunction first( str, n ) {\n\tvar len;\n\tvar out;\n\tvar ch1;\n\tvar ch2;\n\tvar cnt;\n\tvar i;\n\tif ( str === '' || n === 0 ) {\n\t\treturn '';\n\t}\n\tif ( n === 1 ) {\n\t\tstr = str.substring( 0, 2 );\n\t\tif ( RE_UTF16_SURROGATE_PAIR.test( str ) ) {\n\t\t\treturn str;\n\t\t}\n\t\treturn str[ 0 ];\n\t}\n\tlen = str.length;\n\tout = '';\n\tcnt = 0;\n\n\t// Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\t\tout += ch1;\n\t\tcnt += 1;\n\n\t\t// Check for a high UTF-16 surrogate...\n\t\tif ( RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check for an unpaired surrogate at the end of the input string...\n\t\t\tif ( i === len-1 ) {\n\t\t\t\t// We found an unpaired surrogate...\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\tout += ch2;\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Check whether we've found the desired number of code points...\n\t\tif ( cnt === n ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first `n` Unicode code points of a string.\n*\n* @module @stdlib/string/base/first-code-point\n*\n* @example\n* var first = require( '@stdlib/string/base/first-code-point' );\n*\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures', 1 );\n* // returns 'H';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/code-point-at' );\n\n\n// MAIN //\n\n/**\n* Returns a Unicode code point from a string at a specified position.\n*\n* @param {string} str - input string\n* @param {integer} idx - position\n* @param {boolean} [backward=false] - backward iteration for low surrogates\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an integer\n* @throws {TypeError} third argument must be a boolean\n* @throws {RangeError} position must be a valid index in string\n* @returns {NonNegativeInteger} code point\n*\n* @example\n* var out = codePointAt( 'last man standing', 4 );\n* // returns 32\n*\n* @example\n* var out = codePointAt( 'presidential election', 8, true );\n* // returns 116\n*\n* @example\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 2369\n*\n* @example\n* var out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\nfunction codePointAt( str, idx, backward ) {\n\tvar FLG;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isInteger( idx ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', idx ) );\n\t}\n\tif ( idx < 0 ) {\n\t\tidx += str.length;\n\t}\n\tif ( idx < 0 || idx >= str.length ) {\n\t\tthrow new RangeError( format( 'invalid argument. Second argument must be a valid position (i.e., be within string bounds). Value: `%d`.', idx ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isBoolean( backward ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a boolean. Value: `%s`.', backward ) );\n\t\t}\n\t\tFLG = backward;\n\t} else {\n\t\tFLG = false;\n\t}\n\treturn base( str, idx, FLG );\n}\n\n\n// EXPORTS //\n\nmodule.exports = codePointAt;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a Unicode code point from a string at a specified position.\n*\n* @module @stdlib/string/code-point-at\n*\n* @example\n* var codePointAt = require( '@stdlib/string/code-point-at' );\n*\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 2369\n*\n* out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar consts = {\n\t'CR': 0,\n\t'LF': 1,\n\t'Control': 2,\n\t'Extend': 3,\n\t'RegionalIndicator': 4,\n\t'SpacingMark': 5,\n\t'L': 6,\n\t'V': 7,\n\t'T': 8,\n\t'LV': 9,\n\t'LVT': 10,\n\t'Other': 11,\n\t'Prepend': 12,\n\t'ZWJ': 13,\n\t'NotBreak': 0,\n\t'BreakStart': 1,\n\t'Break': 2,\n\t'BreakLastRegional': 3,\n\t'BreakPenultimateRegional': 4,\n\t'ExtendedPictographic': 101\n};\n\n\n// EXPORTS //\n\nmodule.exports = consts;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar constants = require( './constants.js' );\n\n\n// FUNCTIONS //\n\n/**\n* Returns number of elements in array equal to a provided value.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - input value\n* @returns {NonNegativeInteger} number of elements in array equal to a provided value\n*/\nfunction count( arr, start, end, value ) {\n\tvar cnt;\n\tvar i;\n\n\tif ( end >= arr.length ) {\n\t\tend = arr.length - 1;\n\t}\n\tcnt = 0;\n\tfor ( i = start; i <= end; i++ ) {\n\t\tif ( arr[ i ] === value ) {\n\t\t\tcnt += 1;\n\t\t}\n\t}\n\treturn cnt;\n}\n\n/**\n* Returns whether every indexed array element is equal to a provided value.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - search value\n* @returns {boolean} boolean indicating whether all the values in array in the given range are equal to the provided value\n*/\nfunction every( arr, start, end, value ) {\n\tvar i;\n\n\tif ( end >= arr.length ) {\n\t\tend = arr.length - 1;\n\t}\n\tfor ( i = start; i <= end; i++ ) {\n\t\tif ( arr[ i ] !== value ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n* Returns the index of the first occurrence of a value in a provided array.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - search value\n* @returns {integer} index of the first occurrence\n*/\nfunction indexOf( arr, start, end, value ) {\n\tvar i;\n\n\tif ( end >= arr.length ) {\n\t\tend = arr.length - 1;\n\t}\n\tfor ( i = start; i <= end; i++ ) {\n\t\tif ( arr[ i ] === value ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n* Returns the index of the last occurrence of a value in a provided array.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index at which to start searching backwards (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - search value\n* @returns {integer} index of the last occurrence\n*/\nfunction lastIndexOf( arr, start, end, value ) {\n\tvar i;\n\n\tif ( start >= arr.length-1 ) {\n\t\tstart = arr.length - 1;\n\t}\n\tfor ( i = start; i >= end; i-- ) {\n\t\tif ( arr[ i ] === value ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n// MAIN //\n\n/**\n* Returns the break type between grapheme breaking classes according to _UAX #29 3.1.1 Grapheme Cluster Boundary Rules_ on extended grapheme clusters.\n*\n* @private\n* @param {Array} breaks - list of grapheme break properties\n* @param {Array} emoji - list of emoji properties\n* @returns {NonNegativeInteger} break type\n*\n* @example\n* var out = breakType( [ 11, 3, 11 ], [ 11, 11, 11 ] );\n* // returns 1\n*/\nfunction breakType( breaks, emoji ) {\n\tvar nextEmoji;\n\tvar next;\n\tvar prev;\n\tvar idx;\n\tvar N;\n\tvar M;\n\n\tN = breaks.length;\n\tM = N - 1;\n\n\tprev = breaks[ M-1 ];\n\tnext = breaks[ M ];\n\tnextEmoji = emoji[ M ];\n\n\tidx = lastIndexOf( breaks, M, 0, constants.RegionalIndicator );\n\tif (\n\t\tidx > 0 &&\n\t\tprev !== constants.Prepend &&\n\t\tprev !== constants.RegionalIndicator &&\n\t\tevery( breaks, 1, idx-1, constants.RegionalIndicator )\n\t) {\n\t\tif ( count( breaks, 0, M, constants.RegionalIndicator ) % 2 === 1 ) {\n\t\t\treturn constants.BreakLastRegional;\n\t\t}\n\t\treturn constants.BreakPenultimateRegional;\n\t}\n\t// GB3: CR \u00D7 LF\n\tif (\n\t\tprev === constants.CR &&\n\t\tnext === constants.LF\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB4: (Control|CR|LF) \u00F7\n\tif (\n\t\tprev === constants.Control ||\n\t\tprev === constants.CR ||\n\t\tprev === constants.LF\n\t) {\n\t\treturn constants.BreakStart;\n\t}\n\t// GB5: \u00F7 (Control|CR|LF)\n\tif (\n\t\tnext === constants.Control ||\n\t\tnext === constants.CR ||\n\t\tnext === constants.LF\n\t) {\n\t\treturn constants.BreakStart;\n\t}\n\t// GB6: L \u00D7 (L|V|LV|LVT)\n\tif (\n\t\tprev === constants.L &&\n\t\t(\n\t\t\tnext === constants.L ||\n\t\t\tnext === constants.V ||\n\t\t\tnext === constants.LV ||\n\t\t\tnext === constants.LVT\n\t\t)\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB7: (LV|V) \u00D7 (V|T)\n\tif (\n\t\t( prev === constants.LV || prev === constants.V ) &&\n\t\t( next === constants.V || next === constants.T )\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB8: (LVT|T) \u00D7 (T)\n\tif (\n\t\t( prev === constants.LVT || prev === constants.T ) &&\n\t\tnext === constants.T\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB9: \u00D7 (Extend|ZWJ)\n\tif (\n\t\tnext === constants.Extend ||\n\t\tnext === constants.ZWJ\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB9a: \u00D7 SpacingMark\n\tif ( next === constants.SpacingMark ) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB9b: Prepend \u00D7\n\tif ( prev === constants.Prepend ) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB11: \\p{Extended_Pictographic} Extend* ZWJ \u00D7 \\p{Extended_Pictographic}\n\tidx = lastIndexOf( emoji, M-1, 0, constants.ExtendedPictographic );\n\tif (\n\t\tidx >= 0 &&\n\t\tprev === constants.ZWJ &&\n\t\tnextEmoji === constants.ExtendedPictographic &&\n\t\temoji[ idx ] === constants.ExtendedPictographic &&\n\t\tevery( breaks, idx+1, M-2, constants.Extend )\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB12: ^ (RI RI)* RI \u00D7 RI\n\t// GB13: [^RI] (RI RI)* RI \u00D7 RI\n\tif ( indexOf( breaks, 1, M-1, constants.RegionalIndicator ) >= 0 ) {\n\t\treturn constants.Break;\n\t}\n\tif (\n\t\tprev === constants.RegionalIndicator &&\n\t\tnext === constants.RegionalIndicator\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB999: Any ? Any\n\treturn constants.BreakStart;\n}\n\n\n// EXPORTS //\n\nmodule.exports = breakType;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar constants = require( './constants.js' );\n\n\n// MAIN //\n\n/**\n* Returns the emoji property from the [Unicode Standard][1].\n*\n* [1]: https://www.unicode.org/Public/13.0.0/ucd/emoji/emoji-data.txt\n*\n* @private\n* @param {NonNegativeInteger} code - Unicode code point\n* @returns {NonNegativeInteger} emoji property\n*\n* @example\n* var out = emojiProperty( 0x23EC );\n* // returns 101\n*\n* @example\n* var out = emojiProperty( 0x1FFFE );\n* // returns 11\n*/\nfunction emojiProperty( code ) {\n\tif (\n\t\tcode === 0x00A9 || // E0.6 [1] (\u00A9\uFE0F) copyright\n\t\tcode === 0x00AE || // E0.6 [1] (\u00AE\uFE0F) registered\n\t\tcode === 0x203C || // E0.6 [1] (\u203C\uFE0F) double exclamation mark\n\t\tcode === 0x2049 || // E0.6 [1] (\u2049\uFE0F) exclamation question mark\n\t\tcode === 0x2122 || // E0.6 [1] (\u2122\uFE0F) trade mark\n\t\tcode === 0x2139 || // E0.6 [1] (\u2139\uFE0F) information\n\t\t( 0x2194 <= code && code <= 0x2199 ) || // E0.6 [6] (\u2194\uFE0F..\u2199\uFE0F) left-right arrow..down-left arrow\n\t\t( 0x21A9 <= code && code <= 0x21AA ) || // E0.6 [2] (\u21A9\uFE0F..\u21AA\uFE0F) right arrow curving left..left arrow curving right\n\t\t( 0x231A <= code && code <= 0x231B ) || // E0.6 [2] (\u231A..\u231B) watch..hourglass done\n\t\tcode === 0x2328 || // E1.0 [1] (\u2328\uFE0F) keyboard\n\t\tcode === 0x2388 || // E0.0 [1] (\u2388) HELM SYMBOL\n\t\tcode === 0x23CF || // E1.0 [1] (\u23CF\uFE0F) eject button\n\t\t( 0x23E9 <= code && code <= 0x23EC ) || // E0.6 [4] (\u23E9..\u23EC) fast-forward button..fast down button\n\t\t( 0x23ED <= code && code <= 0x23EE ) || // E0.7 [2] (\u23ED\uFE0F..\u23EE\uFE0F) next track button..last track button\n\t\tcode === 0x23EF || // E1.0 [1] (\u23EF\uFE0F) play or pause button\n\t\tcode === 0x23F0 || // E0.6 [1] (\u23F0) alarm clock\n\t\t( 0x23F1 <= code && code <= 0x23F2 ) || // E1.0 [2] (\u23F1\uFE0F..\u23F2\uFE0F) stopwatch..timer clock\n\t\tcode === 0x23F3 || // E0.6 [1] (\u23F3) hourglass not done\n\t\t( 0x23F8 <= code && code <= 0x23FA ) || // E0.7 [3] (\u23F8\uFE0F..\u23FA\uFE0F) pause button..record button\n\t\tcode === 0x24C2 || // E0.6 [1] (\u24C2\uFE0F) circled M\n\t\t( 0x25AA <= code && code <= 0x25AB ) || // E0.6 [2] (\u25AA\uFE0F..\u25AB\uFE0F) black small square..white small square\n\t\tcode === 0x25B6 || // E0.6 [1] (\u25B6\uFE0F) play button\n\t\tcode === 0x25C0 || // E0.6 [1] (\u25C0\uFE0F) reverse button\n\t\t( 0x25FB <= code && code <= 0x25FE ) || // E0.6 [4] (\u25FB\uFE0F..\u25FE) white medium square..black medium-small square\n\t\t( 0x2600 <= code && code <= 0x2601 ) || // E0.6 [2] (\u2600\uFE0F..\u2601\uFE0F) sun..cloud\n\t\t( 0x2602 <= code && code <= 0x2603 ) || // E0.7 [2] (\u2602\uFE0F..\u2603\uFE0F) umbrella..snowman\n\t\tcode === 0x2604 || // E1.0 [1] (\u2604\uFE0F) comet\n\t\tcode === 0x2605 || // E0.0 [1] (\u2605) BLACK STAR\n\t\t( 0x2607 <= code && code <= 0x260D ) || // E0.0 [7] (\u2607..\u260D) LIGHTNING..OPPOSITION\n\t\tcode === 0x260E || // E0.6 [1] (\u260E\uFE0F) telephone\n\t\t( 0x260F <= code && code <= 0x2610 ) || // E0.0 [2] (\u260F..\u2610) WHITE TELEPHONE..BALLOT BOX\n\t\tcode === 0x2611 || // E0.6 [1] (\u2611\uFE0F) check box with check\n\t\tcode === 0x2612 || // E0.0 [1] (\u2612) BALLOT BOX WITH X\n\t\t( 0x2614 <= code && code <= 0x2615 ) || // E0.6 [2] (\u2614..\u2615) umbrella with rain drops..hot beverage\n\t\t( 0x2616 <= code && code <= 0x2617 ) || // E0.0 [2] (\u2616..\u2617) WHITE SHOGI PIECE..BLACK SHOGI PIECE\n\t\tcode === 0x2618 || // E1.0 [1] (\u2618\uFE0F) shamrock\n\t\t( 0x2619 <= code && code <= 0x261C ) || // E0.0 [4] (\u2619..\u261C) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX\n\t\tcode === 0x261D || // E0.6 [1] (\u261D\uFE0F) index pointing up\n\t\t( 0x261E <= code && code <= 0x261F ) || // E0.0 [2] (\u261E..\u261F) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX\n\t\tcode === 0x2620 || // E1.0 [1] (\u2620\uFE0F) skull and crossbones\n\t\tcode === 0x2621 || // E0.0 [1] (\u2621) CAUTION SIGN\n\t\t( 0x2622 <= code && code <= 0x2623 ) || // E1.0 [2] (\u2622\uFE0F..\u2623\uFE0F) radioactive..biohazard\n\t\t( 0x2624 <= code && code <= 0x2625 ) || // E0.0 [2] (\u2624..\u2625) CADUCEUS..ANKH\n\t\tcode === 0x2626 || // E1.0 [1] (\u2626\uFE0F) orthodox cross\n\t\t( 0x2627 <= code && code <= 0x2629 ) || // E0.0 [3] (\u2627..\u2629) CHI RHO..CROSS OF JERUSALEM\n\t\tcode === 0x262A || // E0.7 [1] (\u262A\uFE0F) star and crescent\n\t\t( 0x262B <= code && code <= 0x262D ) || // E0.0 [3] (\u262B..\u262D) FARSI SYMBOL..HAMMER AND SICKLE\n\t\tcode === 0x262E || // E1.0 [1] (\u262E\uFE0F) peace symbol\n\t\tcode === 0x262F || // E0.7 [1] (\u262F\uFE0F) yin yang\n\t\t( 0x2630 <= code && code <= 0x2637 ) || // E0.0 [8] (\u2630..\u2637) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH\n\t\t( 0x2638 <= code && code <= 0x2639 ) || // E0.7 [2] (\u2638\uFE0F..\u2639\uFE0F) wheel of dharma..frowning face\n\t\tcode === 0x263A || // E0.6 [1] (\u263A\uFE0F) smiling face\n\t\t( 0x263B <= code && code <= 0x263F ) || // E0.0 [5] (\u263B..\u263F) BLACK SMILING FACE..MERCURY\n\t\tcode === 0x2640 || // E4.0 [1] (\u2640\uFE0F) female sign\n\t\tcode === 0x2641 || // E0.0 [1] (\u2641) EARTH\n\t\tcode === 0x2642 || // E4.0 [1] (\u2642\uFE0F) male sign\n\t\t( 0x2643 <= code && code <= 0x2647 ) || // E0.0 [5] (\u2643..\u2647) JUPITER..PLUTO\n\t\t( 0x2648 <= code && code <= 0x2653 ) || // E0.6 [12] (\u2648..\u2653) Aries..Pisces\n\t\t( 0x2654 <= code && code <= 0x265E ) || // E0.0 [11] (\u2654..\u265E) WHITE CHESS KING..BLACK CHESS KNIGHT\n\t\tcode === 0x265F || // E11.0 [1] (\u265F\uFE0F) chess pawn\n\t\tcode === 0x2660 || // E0.6 [1] (\u2660\uFE0F) spade suit\n\t\t( 0x2661 <= code && code <= 0x2662 ) || // E0.0 [2] (\u2661..\u2662) WHITE HEART SUIT..WHITE DIAMOND SUIT\n\t\tcode === 0x2663 || // E0.6 [1] (\u2663\uFE0F) club suit\n\t\tcode === 0x2664 || // E0.0 [1] (\u2664) WHITE SPADE SUIT\n\t\t( 0x2665 <= code && code <= 0x2666 ) || // E0.6 [2] (\u2665\uFE0F..\u2666\uFE0F) heart suit..diamond suit\n\t\tcode === 0x2667 || // E0.0 [1] (\u2667) WHITE CLUB SUIT\n\t\tcode === 0x2668 || // E0.6 [1] (\u2668\uFE0F) hot springs\n\t\t( 0x2669 <= code && code <= 0x267A ) || // E0.0 [18] (\u2669..\u267A) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS\n\t\tcode === 0x267B || // E0.6 [1] (\u267B\uFE0F) recycling symbol\n\t\t( 0x267C <= code && code <= 0x267D ) || // E0.0 [2] (\u267C..\u267D) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL\n\t\tcode === 0x267E || // E11.0 [1] (\u267E\uFE0F) infinity\n\t\tcode === 0x267F || // E0.6 [1] (\u267F) wheelchair symbol\n\t\t( 0x2680 <= code && code <= 0x2685 ) || // E0.0 [6] (\u2680..\u2685) DIE FACE-1..DIE FACE-6\n\t\t( 0x2690 <= code && code <= 0x2691 ) || // E0.0 [2] (\u2690..\u2691) WHITE FLAG..BLACK FLAG\n\t\tcode === 0x2692 || // E1.0 [1] (\u2692\uFE0F) hammer and pick\n\t\tcode === 0x2693 || // E0.6 [1] (\u2693) anchor\n\t\tcode === 0x2694 || // E1.0 [1] (\u2694\uFE0F) crossed swords\n\t\tcode === 0x2695 || // E4.0 [1] (\u2695\uFE0F) medical symbol\n\t\t( 0x2696 <= code && code <= 0x2697 ) || // E1.0 [2] (\u2696\uFE0F..\u2697\uFE0F) balance scale..alembic\n\t\tcode === 0x2698 || // E0.0 [1] (\u2698) FLOWER\n\t\tcode === 0x2699 || // E1.0 [1] (\u2699\uFE0F) gear\n\t\tcode === 0x269A || // E0.0 [1] (\u269A) STAFF OF HERMES\n\t\t( 0x269B <= code && code <= 0x269C ) || // E1.0 [2] (\u269B\uFE0F..\u269C\uFE0F) atom symbol..fleur-de-lis\n\t\t( 0x269D <= code && code <= 0x269F ) || // E0.0 [3] (\u269D..\u269F) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT\n\t\t( 0x26A0 <= code && code <= 0x26A1 ) || // E0.6 [2] (\u26A0\uFE0F..\u26A1) warning..high voltage\n\t\t( 0x26A2 <= code && code <= 0x26A6 ) || // E0.0 [5] (\u26A2..\u26A6) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN\n\t\tcode === 0x26A7 || // E13.0 [1] (\u26A7\uFE0F) transgender symbol\n\t\t( 0x26A8 <= code && code <= 0x26A9 ) || // E0.0 [2] (\u26A8..\u26A9) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN\n\t\t( 0x26AA <= code && code <= 0x26AB ) || // E0.6 [2] (\u26AA..\u26AB) white circle..black circle\n\t\t( 0x26AC <= code && code <= 0x26AF ) || // E0.0 [4] (\u26AC..\u26AF) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL\n\t\t( 0x26B0 <= code && code <= 0x26B1 ) || // E1.0 [2] (\u26B0\uFE0F..\u26B1\uFE0F) coffin..funeral urn\n\t\t( 0x26B2 <= code && code <= 0x26BC ) || // E0.0 [11] (\u26B2..\u26BC) NEUTER..SESQUIQUADRATE\n\t\t( 0x26BD <= code && code <= 0x26BE ) || // E0.6 [2] (\u26BD..\u26BE) soccer ball..baseball\n\t\t( 0x26BF <= code && code <= 0x26C3 ) || // E0.0 [5] (\u26BF..\u26C3) SQUARED KEY..BLACK DRAUGHTS KING\n\t\t( 0x26C4 <= code && code <= 0x26C5 ) || // E0.6 [2] (\u26C4..\u26C5) snowman without snow..sun behind cloud\n\t\t( 0x26C6 <= code && code <= 0x26C7 ) || // E0.0 [2] (\u26C6..\u26C7) RAIN..BLACK SNOWMAN\n\t\tcode === 0x26C8 || // E0.7 [1] (\u26C8\uFE0F) cloud with lightning and rain\n\t\t( 0x26C9 <= code && code <= 0x26CD ) || // E0.0 [5] (\u26C9..\u26CD) TURNED WHITE SHOGI PIECE..DISABLED CAR\n\t\tcode === 0x26CE || // E0.6 [1] (\u26CE) Ophiuchus\n\t\tcode === 0x26CF || // E0.7 [1] (\u26CF\uFE0F) pick\n\t\tcode === 0x26D0 || // E0.0 [1] (\u26D0) CAR SLIDING\n\t\tcode === 0x26D1 || // E0.7 [1] (\u26D1\uFE0F) rescue worker\u2019s helmet\n\t\tcode === 0x26D2 || // E0.0 [1] (\u26D2) CIRCLED CROSSING LANES\n\t\tcode === 0x26D3 || // E0.7 [1] (\u26D3\uFE0F) chains\n\t\tcode === 0x26D4 || // E0.6 [1] (\u26D4) no entry\n\t\t( 0x26D5 <= code && code <= 0x26E8 ) || // E0.0 [20] (\u26D5..\u26E8) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD\n\t\tcode === 0x26E9 || // E0.7 [1] (\u26E9\uFE0F) shinto shrine\n\t\tcode === 0x26EA || // E0.6 [1] (\u26EA) church\n\t\t( 0x26EB <= code && code <= 0x26EF ) || // E0.0 [5] (\u26EB..\u26EF) CASTLE..MAP SYMBOL FOR LIGHTHOUSE\n\t\t( 0x26F0 <= code && code <= 0x26F1 ) || // E0.7 [2] (\u26F0\uFE0F..\u26F1\uFE0F) mountain..umbrella on ground\n\t\t( 0x26F2 <= code && code <= 0x26F3 ) || // E0.6 [2] (\u26F2..\u26F3) fountain..flag in hole\n\t\tcode === 0x26F4 || // E0.7 [1] (\u26F4\uFE0F) ferry\n\t\tcode === 0x26F5 || // E0.6 [1] (\u26F5) sailboat\n\t\tcode === 0x26F6 || // E0.0 [1] (\u26F6) SQUARE FOUR CORNERS\n\t\t( 0x26F7 <= code && code <= 0x26F9 ) || // E0.7 [3] (\u26F7\uFE0F..\u26F9\uFE0F) skier..person bouncing ball\n\t\tcode === 0x26FA || // E0.6 [1] (\u26FA) tent\n\t\t( 0x26FB <= code && code <= 0x26FC ) || // E0.0 [2] (\u26FB..\u26FC) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL\n\t\tcode === 0x26FD || // E0.6 [1] (\u26FD) fuel pump\n\t\t( 0x26FE <= code && code <= 0x2701 ) || // E0.0 [4] (\u26FE..\u2701) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS\n\t\tcode === 0x2702 || // E0.6 [1] (\u2702\uFE0F) scissors\n\t\t( 0x2703 <= code && code <= 0x2704 ) || // E0.0 [2] (\u2703..\u2704) LOWER BLADE SCISSORS..WHITE SCISSORS\n\t\tcode === 0x2705 || // E0.6 [1] (\u2705) check mark button\n\t\t( 0x2708 <= code && code <= 0x270C ) || // E0.6 [5] (\u2708\uFE0F..\u270C\uFE0F) airplane..victory hand\n\t\tcode === 0x270D || // E0.7 [1] (\u270D\uFE0F) writing hand\n\t\tcode === 0x270E || // E0.0 [1] (\u270E) LOWER RIGHT PENCIL\n\t\tcode === 0x270F || // E0.6 [1] (\u270F\uFE0F) pencil\n\t\t( 0x2710 <= code && code <= 0x2711 ) || // E0.0 [2] (\u2710..\u2711) UPPER RIGHT PENCIL..WHITE NIB\n\t\tcode === 0x2712 || // E0.6 [1] (\u2712\uFE0F) black nib\n\t\tcode === 0x2714 || // E0.6 [1] (\u2714\uFE0F) check mark\n\t\tcode === 0x2716 || // E0.6 [1] (\u2716\uFE0F) multiply\n\t\tcode === 0x271D || // E0.7 [1] (\u271D\uFE0F) latin cross\n\t\tcode === 0x2721 || // E0.7 [1] (\u2721\uFE0F) star of David\n\t\tcode === 0x2728 || // E0.6 [1] (\u2728) sparkles\n\t\t( 0x2733 <= code && code <= 0x2734 ) || // E0.6 [2] (\u2733\uFE0F..\u2734\uFE0F) eight-spoked asterisk..eight-pointed star\n\t\tcode === 0x2744 || // E0.6 [1] (\u2744\uFE0F) snowflake\n\t\tcode === 0x2747 || // E0.6 [1] (\u2747\uFE0F) sparkle\n\t\tcode === 0x274C || // E0.6 [1] (\u274C) cross mark\n\t\tcode === 0x274E || // E0.6 [1] (\u274E) cross mark button\n\t\t( 0x2753 <= code && code <= 0x2755 ) || // E0.6 [3] (\u2753..\u2755) question mark..white exclamation mark\n\t\tcode === 0x2757 || // E0.6 [1] (\u2757) exclamation mark\n\t\tcode === 0x2763 || // E1.0 [1] (\u2763\uFE0F) heart exclamation\n\t\tcode === 0x2764 || // E0.6 [1] (\u2764\uFE0F) red heart\n\t\t( 0x2765 <= code && code <= 0x2767 ) || // E0.0 [3] (\u2765..\u2767) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET\n\t\t( 0x2795 <= code && code <= 0x2797 ) || // E0.6 [3] (\u2795..\u2797) plus..divide\n\t\tcode === 0x27A1 || // E0.6 [1] (\u27A1\uFE0F) right arrow\n\t\tcode === 0x27B0 || // E0.6 [1] (\u27B0) curly loop\n\t\tcode === 0x27BF || // E1.0 [1] (\u27BF) double curly loop\n\t\t( 0x2934 <= code && code <= 0x2935 ) || // E0.6 [2] (\u2934\uFE0F..\u2935\uFE0F) right arrow curving up..right arrow curving down\n\t\t( 0x2B05 <= code && code <= 0x2B07 ) || // E0.6 [3] (\u2B05\uFE0F..\u2B07\uFE0F) left arrow..down arrow\n\t\t( 0x2B1B <= code && code <= 0x2B1C ) || // E0.6 [2] (\u2B1B..\u2B1C) black large square..white large square\n\t\tcode === 0x2B50 || // E0.6 [1] (\u2B50) star\n\t\tcode === 0x2B55 || // E0.6 [1] (\u2B55) hollow red circle\n\t\tcode === 0x3030 || // E0.6 [1] (\u3030\uFE0F) wavy dash\n\t\tcode === 0x303D || // E0.6 [1] (\u303D\uFE0F) part alternation mark\n\t\tcode === 0x3297 || // E0.6 [1] (\u3297\uFE0F) Japanese \u201Ccongratulations\u201D button\n\t\tcode === 0x3299 || // E0.6 [1] (\u3299\uFE0F) Japanese \u201Csecret\u201D button\n\t\t( 0x1F000 <= code && code <= 0x1F003 ) || // E0.0 [4] (\uD83C\uDC00..\uD83C\uDC03) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND\n\t\tcode === 0x1F004 || // E0.6 [1] (\uD83C\uDC04) mahjong red dragon\n\t\t( 0x1F005 <= code && code <= 0x1F0CE ) || // E0.0 [202] (\uD83C\uDC05..\uD83C\uDCCE) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS\n\t\tcode === 0x1F0CF || // E0.6 [1] (\uD83C\uDCCF) joker\n\t\t( 0x1F0D0 <= code && code <= 0x1F0FF ) || // E0.0 [48] (\uD83C\uDCD0..\uD83C\uDCFF) ..\n\t\t( 0x1F10D <= code && code <= 0x1F10F ) || // E0.0 [3] (\uD83C\uDD0D..\uD83C\uDD0F) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH\n\t\tcode === 0x1F12F || // E0.0 [1] (\uD83C\uDD2F) COPYLEFT SYMBOL\n\t\t( 0x1F16C <= code && code <= 0x1F16F ) || // E0.0 [4] (\uD83C\uDD6C..\uD83C\uDD6F) RAISED MR SIGN..CIRCLED HUMAN FIGURE\n\t\t( 0x1F170 <= code && code <= 0x1F171 ) || // E0.6 [2] (\uD83C\uDD70\uFE0F..\uD83C\uDD71\uFE0F) A button (blood type)..B button (blood type)\n\t\t( 0x1F17E <= code && code <= 0x1F17F ) || // E0.6 [2] (\uD83C\uDD7E\uFE0F..\uD83C\uDD7F\uFE0F) O button (blood type)..P button\n\t\tcode === 0x1F18E || // E0.6 [1] (\uD83C\uDD8E) AB button (blood type)\n\t\t( 0x1F191 <= code && code <= 0x1F19A ) || // E0.6 [10] (\uD83C\uDD91..\uD83C\uDD9A) CL button..VS button\n\t\t( 0x1F1AD <= code && code <= 0x1F1E5 ) || // E0.0 [57] (\uD83C\uDDAD..\uD83C\uDDE5) MASK WORK SYMBOL..\n\t\t( 0x1F201 <= code && code <= 0x1F202 ) || // E0.6 [2] (\uD83C\uDE01..\uD83C\uDE02\uFE0F) Japanese \u201Chere\u201D button..Japanese \u201Cservice charge\u201D button\n\t\t( 0x1F203 <= code && code <= 0x1F20F ) || // E0.0 [13] (\uD83C\uDE03..\uD83C\uDE0F) ..\n\t\tcode === 0x1F21A || // E0.6 [1] (\uD83C\uDE1A) Japanese \u201Cfree of charge\u201D button\n\t\tcode === 0x1F22F || // E0.6 [1] (\uD83C\uDE2F) Japanese \u201Creserved\u201D button\n\t\t( 0x1F232 <= code && code <= 0x1F23A ) || // E0.6 [9] (\uD83C\uDE32..\uD83C\uDE3A) Japanese \u201Cprohibited\u201D button..Japanese \u201Copen for business\u201D button\n\t\t( 0x1F23C <= code && code <= 0x1F23F ) || // E0.0 [4] (\uD83C\uDE3C..\uD83C\uDE3F) ..\n\t\t( 0x1F249 <= code && code <= 0x1F24F ) || // E0.0 [7] (\uD83C\uDE49..\uD83C\uDE4F) ..\n\t\t( 0x1F250 <= code && code <= 0x1F251 ) || // E0.6 [2] (\uD83C\uDE50..\uD83C\uDE51) Japanese \u201Cbargain\u201D button..Japanese \u201Cacceptable\u201D button\n\t\t( 0x1F252 <= code && code <= 0x1F2FF ) || // E0.0 [174] (\uD83C\uDE52..\uD83C\uDEFF) ..\n\t\t( 0x1F300 <= code && code <= 0x1F30C ) || // E0.6 [13] (\uD83C\uDF00..\uD83C\uDF0C) cyclone..milky way\n\t\t( 0x1F30D <= code && code <= 0x1F30E ) || // E0.7 [2] (\uD83C\uDF0D..\uD83C\uDF0E) globe showing Europe-Africa..globe showing Americas\n\t\tcode === 0x1F30F || // E0.6 [1] (\uD83C\uDF0F) globe showing Asia-Australia\n\t\tcode === 0x1F310 || // E1.0 [1] (\uD83C\uDF10) globe with meridians\n\t\tcode === 0x1F311 || // E0.6 [1] (\uD83C\uDF11) new moon\n\t\tcode === 0x1F312 || // E1.0 [1] (\uD83C\uDF12) waxing crescent moon\n\t\t( 0x1F313 <= code && code <= 0x1F315 ) || // E0.6 [3] (\uD83C\uDF13..\uD83C\uDF15) first quarter moon..full moon\n\t\t( 0x1F316 <= code && code <= 0x1F318 ) || // E1.0 [3] (\uD83C\uDF16..\uD83C\uDF18) waning gibbous moon..waning crescent moon\n\t\tcode === 0x1F319 || // E0.6 [1] (\uD83C\uDF19) crescent moon\n\t\tcode === 0x1F31A || // E1.0 [1] (\uD83C\uDF1A) new moon face\n\t\tcode === 0x1F31B || // E0.6 [1] (\uD83C\uDF1B) first quarter moon face\n\t\tcode === 0x1F31C || // E0.7 [1] (\uD83C\uDF1C) last quarter moon face\n\t\t( 0x1F31D <= code && code <= 0x1F31E ) || // E1.0 [2] (\uD83C\uDF1D..\uD83C\uDF1E) full moon face..sun with face\n\t\t( 0x1F31F <= code && code <= 0x1F320 ) || // E0.6 [2] (\uD83C\uDF1F..\uD83C\uDF20) glowing star..shooting star\n\t\tcode === 0x1F321 || // E0.7 [1] (\uD83C\uDF21\uFE0F) thermometer\n\t\t( 0x1F322 <= code && code <= 0x1F323 ) || // E0.0 [2] (\uD83C\uDF22..\uD83C\uDF23) BLACK DROPLET..WHITE SUN\n\t\t( 0x1F324 <= code && code <= 0x1F32C ) || // E0.7 [9] (\uD83C\uDF24\uFE0F..\uD83C\uDF2C\uFE0F) sun behind small cloud..wind face\n\t\t( 0x1F32D <= code && code <= 0x1F32F ) || // E1.0 [3] (\uD83C\uDF2D..\uD83C\uDF2F) hot dog..burrito\n\t\t( 0x1F330 <= code && code <= 0x1F331 ) || // E0.6 [2] (\uD83C\uDF30..\uD83C\uDF31) chestnut..seedling\n\t\t( 0x1F332 <= code && code <= 0x1F333 ) || // E1.0 [2] (\uD83C\uDF32..\uD83C\uDF33) evergreen tree..deciduous tree\n\t\t( 0x1F334 <= code && code <= 0x1F335 ) || // E0.6 [2] (\uD83C\uDF34..\uD83C\uDF35) palm tree..cactus\n\t\tcode === 0x1F336 || // E0.7 [1] (\uD83C\uDF36\uFE0F) hot pepper\n\t\t( 0x1F337 <= code && code <= 0x1F34A ) || // E0.6 [20] (\uD83C\uDF37..\uD83C\uDF4A) tulip..tangerine\n\t\tcode === 0x1F34B || // E1.0 [1] (\uD83C\uDF4B) lemon\n\t\t( 0x1F34C <= code && code <= 0x1F34F ) || // E0.6 [4] (\uD83C\uDF4C..\uD83C\uDF4F) banana..green apple\n\t\tcode === 0x1F350 || // E1.0 [1] (\uD83C\uDF50) pear\n\t\t( 0x1F351 <= code && code <= 0x1F37B ) || // E0.6 [43] (\uD83C\uDF51..\uD83C\uDF7B) peach..clinking beer mugs\n\t\tcode === 0x1F37C || // E1.0 [1] (\uD83C\uDF7C) baby bottle\n\t\tcode === 0x1F37D || // E0.7 [1] (\uD83C\uDF7D\uFE0F) fork and knife with plate\n\t\t( 0x1F37E <= code && code <= 0x1F37F ) || // E1.0 [2] (\uD83C\uDF7E..\uD83C\uDF7F) bottle with popping cork..popcorn\n\t\t( 0x1F380 <= code && code <= 0x1F393 ) || // E0.6 [20] (\uD83C\uDF80..\uD83C\uDF93) ribbon..graduation cap\n\t\t( 0x1F394 <= code && code <= 0x1F395 ) || // E0.0 [2] (\uD83C\uDF94..\uD83C\uDF95) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS\n\t\t( 0x1F396 <= code && code <= 0x1F397 ) || // E0.7 [2] (\uD83C\uDF96\uFE0F..\uD83C\uDF97\uFE0F) military medal..reminder ribbon\n\t\tcode === 0x1F398 || // E0.0 [1] (\uD83C\uDF98) MUSICAL KEYBOARD WITH JACKS\n\t\t( 0x1F399 <= code && code <= 0x1F39B ) || // E0.7 [3] (\uD83C\uDF99\uFE0F..\uD83C\uDF9B\uFE0F) studio microphone..control knobs\n\t\t( 0x1F39C <= code && code <= 0x1F39D ) || // E0.0 [2] (\uD83C\uDF9C..\uD83C\uDF9D) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES\n\t\t( 0x1F39E <= code && code <= 0x1F39F ) || // E0.7 [2] (\uD83C\uDF9E\uFE0F..\uD83C\uDF9F\uFE0F) film frames..admission tickets\n\t\t( 0x1F3A0 <= code && code <= 0x1F3C4 ) || // E0.6 [37] (\uD83C\uDFA0..\uD83C\uDFC4) carousel horse..person surfing\n\t\tcode === 0x1F3C5 || // E1.0 [1] (\uD83C\uDFC5) sports medal\n\t\tcode === 0x1F3C6 || // E0.6 [1] (\uD83C\uDFC6) trophy\n\t\tcode === 0x1F3C7 || // E1.0 [1] (\uD83C\uDFC7) horse racing\n\t\tcode === 0x1F3C8 || // E0.6 [1] (\uD83C\uDFC8) american football\n\t\tcode === 0x1F3C9 || // E1.0 [1] (\uD83C\uDFC9) rugby football\n\t\tcode === 0x1F3CA || // E0.6 [1] (\uD83C\uDFCA) person swimming\n\t\t( 0x1F3CB <= code && code <= 0x1F3CE ) || // E0.7 [4] (\uD83C\uDFCB\uFE0F..\uD83C\uDFCE\uFE0F) person lifting weights..racing car\n\t\t( 0x1F3CF <= code && code <= 0x1F3D3 ) || // E1.0 [5] (\uD83C\uDFCF..\uD83C\uDFD3) cricket game..ping pong\n\t\t( 0x1F3D4 <= code && code <= 0x1F3DF ) || // E0.7 [12] (\uD83C\uDFD4\uFE0F..\uD83C\uDFDF\uFE0F) snow-capped mountain..stadium\n\t\t( 0x1F3E0 <= code && code <= 0x1F3E3 ) || // E0.6 [4] (\uD83C\uDFE0..\uD83C\uDFE3) house..Japanese post office\n\t\tcode === 0x1F3E4 || // E1.0 [1] (\uD83C\uDFE4) post office\n\t\t( 0x1F3E5 <= code && code <= 0x1F3F0 ) || // E0.6 [12] (\uD83C\uDFE5..\uD83C\uDFF0) hospital..castle\n\t\t( 0x1F3F1 <= code && code <= 0x1F3F2 ) || // E0.0 [2] (\uD83C\uDFF1..\uD83C\uDFF2) WHITE PENNANT..BLACK PENNANT\n\t\tcode === 0x1F3F3 || // E0.7 [1] (\uD83C\uDFF3\uFE0F) white flag\n\t\tcode === 0x1F3F4 || // E1.0 [1] (\uD83C\uDFF4) black flag\n\t\tcode === 0x1F3F5 || // E0.7 [1] (\uD83C\uDFF5\uFE0F) rosette\n\t\tcode === 0x1F3F6 || // E0.0 [1] (\uD83C\uDFF6) BLACK ROSETTE\n\t\tcode === 0x1F3F7 || // E0.7 [1] (\uD83C\uDFF7\uFE0F) label\n\t\t( 0x1F3F8 <= code && code <= 0x1F3FA ) || // E1.0 [3] (\uD83C\uDFF8..\uD83C\uDFFA) badminton..amphora\n\t\t( 0x1F400 <= code && code <= 0x1F407 ) || // E1.0 [8] (\uD83D\uDC00..\uD83D\uDC07) rat..rabbit\n\t\tcode === 0x1F408 || // E0.7 [1] (\uD83D\uDC08) cat\n\t\t( 0x1F409 <= code && code <= 0x1F40B ) || // E1.0 [3] (\uD83D\uDC09..\uD83D\uDC0B) dragon..whale\n\t\t( 0x1F40C <= code && code <= 0x1F40E ) || // E0.6 [3] (\uD83D\uDC0C..\uD83D\uDC0E) snail..horse\n\t\t( 0x1F40F <= code && code <= 0x1F410 ) || // E1.0 [2] (\uD83D\uDC0F..\uD83D\uDC10) ram..goat\n\t\t( 0x1F411 <= code && code <= 0x1F412 ) || // E0.6 [2] (\uD83D\uDC11..\uD83D\uDC12) ewe..monkey\n\t\tcode === 0x1F413 || // E1.0 [1] (\uD83D\uDC13) rooster\n\t\tcode === 0x1F414 || // E0.6 [1] (\uD83D\uDC14) chicken\n\t\tcode === 0x1F415 || // E0.7 [1] (\uD83D\uDC15) dog\n\t\tcode === 0x1F416 || // E1.0 [1] (\uD83D\uDC16) pig\n\t\t( 0x1F417 <= code && code <= 0x1F429 ) || // E0.6 [19] (\uD83D\uDC17..\uD83D\uDC29) boar..poodle\n\t\tcode === 0x1F42A || // E1.0 [1] (\uD83D\uDC2A) camel\n\t\t( 0x1F42B <= code && code <= 0x1F43E ) || // E0.6 [20] (\uD83D\uDC2B..\uD83D\uDC3E) two-hump camel..paw prints\n\t\tcode === 0x1F43F || // E0.7 [1] (\uD83D\uDC3F\uFE0F) chipmunk\n\t\tcode === 0x1F440 || // E0.6 [1] (\uD83D\uDC40) eyes\n\t\tcode === 0x1F441 || // E0.7 [1] (\uD83D\uDC41\uFE0F) eye\n\t\t( 0x1F442 <= code && code <= 0x1F464 ) || // E0.6 [35] (\uD83D\uDC42..\uD83D\uDC64) ear..bust in silhouette\n\t\tcode === 0x1F465 || // E1.0 [1] (\uD83D\uDC65) busts in silhouette\n\t\t( 0x1F466 <= code && code <= 0x1F46B ) || // E0.6 [6] (\uD83D\uDC66..\uD83D\uDC6B) boy..woman and man holding hands\n\t\t( 0x1F46C <= code && code <= 0x1F46D ) || // E1.0 [2] (\uD83D\uDC6C..\uD83D\uDC6D) men holding hands..women holding hands\n\t\t( 0x1F46E <= code && code <= 0x1F4AC ) || // E0.6 [63] (\uD83D\uDC6E..\uD83D\uDCAC) police officer..speech balloon\n\t\tcode === 0x1F4AD || // E1.0 [1] (\uD83D\uDCAD) thought balloon\n\t\t( 0x1F4AE <= code && code <= 0x1F4B5 ) || // E0.6 [8] (\uD83D\uDCAE..\uD83D\uDCB5) white flower..dollar banknote\n\t\t( 0x1F4B6 <= code && code <= 0x1F4B7 ) || // E1.0 [2] (\uD83D\uDCB6..\uD83D\uDCB7) euro banknote..pound banknote\n\t\t( 0x1F4B8 <= code && code <= 0x1F4EB ) || // E0.6 [52] (\uD83D\uDCB8..\uD83D\uDCEB) money with wings..closed mailbox with raised flag\n\t\t( 0x1F4EC <= code && code <= 0x1F4ED ) || // E0.7 [2] (\uD83D\uDCEC..\uD83D\uDCED) open mailbox with raised flag..open mailbox with lowered flag\n\t\tcode === 0x1F4EE || // E0.6 [1] (\uD83D\uDCEE) postbox\n\t\tcode === 0x1F4EF || // E1.0 [1] (\uD83D\uDCEF) postal horn\n\t\t( 0x1F4F0 <= code && code <= 0x1F4F4 ) || // E0.6 [5] (\uD83D\uDCF0..\uD83D\uDCF4) newspaper..mobile phone off\n\t\tcode === 0x1F4F5 || // E1.0 [1] (\uD83D\uDCF5) no mobile phones\n\t\t( 0x1F4F6 <= code && code <= 0x1F4F7 ) || // E0.6 [2] (\uD83D\uDCF6..\uD83D\uDCF7) antenna bars..camera\n\t\tcode === 0x1F4F8 || // E1.0 [1] (\uD83D\uDCF8) camera with flash\n\t\t( 0x1F4F9 <= code && code <= 0x1F4FC ) || // E0.6 [4] (\uD83D\uDCF9..\uD83D\uDCFC) video camera..videocassette\n\t\tcode === 0x1F4FD || // E0.7 [1] (\uD83D\uDCFD\uFE0F) film projector\n\t\tcode === 0x1F4FE || // E0.0 [1] (\uD83D\uDCFE) PORTABLE STEREO\n\t\t( 0x1F4FF <= code && code <= 0x1F502 ) || // E1.0 [4] (\uD83D\uDCFF..\uD83D\uDD02) prayer beads..repeat single button\n\t\tcode === 0x1F503 || // E0.6 [1] (\uD83D\uDD03) clockwise vertical arrows\n\t\t( 0x1F504 <= code && code <= 0x1F507 ) || // E1.0 [4] (\uD83D\uDD04..\uD83D\uDD07) counterclockwise arrows button..muted speaker\n\t\tcode === 0x1F508 || // E0.7 [1] (\uD83D\uDD08) speaker low volume\n\t\tcode === 0x1F509 || // E1.0 [1] (\uD83D\uDD09) speaker medium volume\n\t\t( 0x1F50A <= code && code <= 0x1F514 ) || // E0.6 [11] (\uD83D\uDD0A..\uD83D\uDD14) speaker high volume..bell\n\t\tcode === 0x1F515 || // E1.0 [1] (\uD83D\uDD15) bell with slash\n\t\t( 0x1F516 <= code && code <= 0x1F52B ) || // E0.6 [22] (\uD83D\uDD16..\uD83D\uDD2B) bookmark..pistol\n\t\t( 0x1F52C <= code && code <= 0x1F52D ) || // E1.0 [2] (\uD83D\uDD2C..\uD83D\uDD2D) microscope..telescope\n\t\t( 0x1F52E <= code && code <= 0x1F53D ) || // E0.6 [16] (\uD83D\uDD2E..\uD83D\uDD3D) crystal ball..downwards button\n\t\t( 0x1F546 <= code && code <= 0x1F548 ) || // E0.0 [3] (\uD83D\uDD46..\uD83D\uDD48) WHITE LATIN CROSS..CELTIC CROSS\n\t\t( 0x1F549 <= code && code <= 0x1F54A ) || // E0.7 [2] (\uD83D\uDD49\uFE0F..\uD83D\uDD4A\uFE0F) om..dove\n\t\t( 0x1F54B <= code && code <= 0x1F54E ) || // E1.0 [4] (\uD83D\uDD4B..\uD83D\uDD4E) kaaba..menorah\n\t\tcode === 0x1F54F || // E0.0 [1] (\uD83D\uDD4F) BOWL OF HYGIEIA\n\t\t( 0x1F550 <= code && code <= 0x1F55B ) || // E0.6 [12] (\uD83D\uDD50..\uD83D\uDD5B) one o\u2019clock..twelve o\u2019clock\n\t\t( 0x1F55C <= code && code <= 0x1F567 ) || // E0.7 [12] (\uD83D\uDD5C..\uD83D\uDD67) one-thirty..twelve-thirty\n\t\t( 0x1F568 <= code && code <= 0x1F56E ) || // E0.0 [7] (\uD83D\uDD68..\uD83D\uDD6E) RIGHT SPEAKER..BOOK\n\t\t( 0x1F56F <= code && code <= 0x1F570 ) || // E0.7 [2] (\uD83D\uDD6F\uFE0F..\uD83D\uDD70\uFE0F) candle..mantelpiece clock\n\t\t( 0x1F571 <= code && code <= 0x1F572 ) || // E0.0 [2] (\uD83D\uDD71..\uD83D\uDD72) BLACK SKULL AND CROSSBONES..NO PIRACY\n\t\t( 0x1F573 <= code && code <= 0x1F579 ) || // E0.7 [7] (\uD83D\uDD73\uFE0F..\uD83D\uDD79\uFE0F) hole..joystick\n\t\tcode === 0x1F57A || // E3.0 [1] (\uD83D\uDD7A) man dancing\n\t\t( 0x1F57B <= code && code <= 0x1F586 ) || // E0.0 [12] (\uD83D\uDD7B..\uD83D\uDD86) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE\n\t\tcode === 0x1F587 || // E0.7 [1] (\uD83D\uDD87\uFE0F) linked paperclips\n\t\t( 0x1F588 <= code && code <= 0x1F589 ) || // E0.0 [2] (\uD83D\uDD88..\uD83D\uDD89) BLACK PUSHPIN..LOWER LEFT PENCIL\n\t\t( 0x1F58A <= code && code <= 0x1F58D ) || // E0.7 [4] (\uD83D\uDD8A\uFE0F..\uD83D\uDD8D\uFE0F) pen..crayon\n\t\t( 0x1F58E <= code && code <= 0x1F58F ) || // E0.0 [2] (\uD83D\uDD8E..\uD83D\uDD8F) LEFT WRITING HAND..TURNED OK HAND SIGN\n\t\tcode === 0x1F590 || // E0.7 [1] (\uD83D\uDD90\uFE0F) hand with fingers splayed\n\t\t( 0x1F591 <= code && code <= 0x1F594 ) || // E0.0 [4] (\uD83D\uDD91..\uD83D\uDD94) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND\n\t\t( 0x1F595 <= code && code <= 0x1F596 ) || // E1.0 [2] (\uD83D\uDD95..\uD83D\uDD96) middle finger..vulcan salute\n\t\t( 0x1F597 <= code && code <= 0x1F5A3 ) || // E0.0 [13] (\uD83D\uDD97..\uD83D\uDDA3) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX\n\t\tcode === 0x1F5A4 || // E3.0 [1] (\uD83D\uDDA4) black heart\n\t\tcode === 0x1F5A5 || // E0.7 [1] (\uD83D\uDDA5\uFE0F) desktop computer\n\t\t( 0x1F5A6 <= code && code <= 0x1F5A7 ) || // E0.0 [2] (\uD83D\uDDA6..\uD83D\uDDA7) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS\n\t\tcode === 0x1F5A8 || // E0.7 [1] (\uD83D\uDDA8\uFE0F) printer\n\t\t( 0x1F5A9 <= code && code <= 0x1F5B0 ) || // E0.0 [8] (\uD83D\uDDA9..\uD83D\uDDB0) POCKET CALCULATOR..TWO BUTTON MOUSE\n\t\t( 0x1F5B1 <= code && code <= 0x1F5B2 ) || // E0.7 [2] (\uD83D\uDDB1\uFE0F..\uD83D\uDDB2\uFE0F) computer mouse..trackball\n\t\t( 0x1F5B3 <= code && code <= 0x1F5BB ) || // E0.0 [9] (\uD83D\uDDB3..\uD83D\uDDBB) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE\n\t\tcode === 0x1F5BC || // E0.7 [1] (\uD83D\uDDBC\uFE0F) framed picture\n\t\t( 0x1F5BD <= code && code <= 0x1F5C1 ) || // E0.0 [5] (\uD83D\uDDBD..\uD83D\uDDC1) FRAME WITH TILES..OPEN FOLDER\n\t\t( 0x1F5C2 <= code && code <= 0x1F5C4 ) || // E0.7 [3] (\uD83D\uDDC2\uFE0F..\uD83D\uDDC4\uFE0F) card index dividers..file cabinet\n\t\t( 0x1F5C5 <= code && code <= 0x1F5D0 ) || // E0.0 [12] (\uD83D\uDDC5..\uD83D\uDDD0) EMPTY NOTE..PAGES\n\t\t( 0x1F5D1 <= code && code <= 0x1F5D3 ) || // E0.7 [3] (\uD83D\uDDD1\uFE0F..\uD83D\uDDD3\uFE0F) wastebasket..spiral calendar\n\t\t( 0x1F5D4 <= code && code <= 0x1F5DB ) || // E0.0 [8] (\uD83D\uDDD4..\uD83D\uDDDB) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL\n\t\t( 0x1F5DC <= code && code <= 0x1F5DE ) || // E0.7 [3] (\uD83D\uDDDC\uFE0F..\uD83D\uDDDE\uFE0F) clamp..rolled-up newspaper\n\t\t( 0x1F5DF <= code && code <= 0x1F5E0 ) || // E0.0 [2] (\uD83D\uDDDF..\uD83D\uDDE0) PAGE WITH CIRCLED TEXT..STOCK CHART\n\t\tcode === 0x1F5E1 || // E0.7 [1] (\uD83D\uDDE1\uFE0F) dagger\n\t\tcode === 0x1F5E2 || // E0.0 [1] (\uD83D\uDDE2) LIPS\n\t\tcode === 0x1F5E3 || // E0.7 [1] (\uD83D\uDDE3\uFE0F) speaking head\n\t\t( 0x1F5E4 <= code && code <= 0x1F5E7 ) || // E0.0 [4] (\uD83D\uDDE4..\uD83D\uDDE7) THREE RAYS ABOVE..THREE RAYS RIGHT\n\t\tcode === 0x1F5E8 || // E2.0 [1] (\uD83D\uDDE8\uFE0F) left speech bubble\n\t\t( 0x1F5E9 <= code && code <= 0x1F5EE ) || // E0.0 [6] (\uD83D\uDDE9..\uD83D\uDDEE) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE\n\t\tcode === 0x1F5EF || // E0.7 [1] (\uD83D\uDDEF\uFE0F) right anger bubble\n\t\t( 0x1F5F0 <= code && code <= 0x1F5F2 ) || // E0.0 [3] (\uD83D\uDDF0..\uD83D\uDDF2) MOOD BUBBLE..LIGHTNING MOOD\n\t\tcode === 0x1F5F3 || // E0.7 [1] (\uD83D\uDDF3\uFE0F) ballot box with ballot\n\t\t( 0x1F5F4 <= code && code <= 0x1F5F9 ) || // E0.0 [6] (\uD83D\uDDF4..\uD83D\uDDF9) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK\n\t\tcode === 0x1F5FA || // E0.7 [1] (\uD83D\uDDFA\uFE0F) world map\n\t\t( 0x1F5FB <= code && code <= 0x1F5FF ) || // E0.6 [5] (\uD83D\uDDFB..\uD83D\uDDFF) mount fuji..moai\n\t\tcode === 0x1F600 || // E1.0 [1] (\uD83D\uDE00) grinning face\n\t\t( 0x1F601 <= code && code <= 0x1F606 ) || // E0.6 [6] (\uD83D\uDE01..\uD83D\uDE06) beaming face with smiling eyes..grinning squinting face\n\t\t( 0x1F607 <= code && code <= 0x1F608 ) || // E1.0 [2] (\uD83D\uDE07..\uD83D\uDE08) smiling face with halo..smiling face with horns\n\t\t( 0x1F609 <= code && code <= 0x1F60D ) || // E0.6 [5] (\uD83D\uDE09..\uD83D\uDE0D) winking face..smiling face with heart-eyes\n\t\tcode === 0x1F60E || // E1.0 [1] (\uD83D\uDE0E) smiling face with sunglasses\n\t\tcode === 0x1F60F || // E0.6 [1] (\uD83D\uDE0F) smirking face\n\t\tcode === 0x1F610 || // E0.7 [1] (\uD83D\uDE10) neutral face\n\t\tcode === 0x1F611 || // E1.0 [1] (\uD83D\uDE11) expressionless face\n\t\t( 0x1F612 <= code && code <= 0x1F614 ) || // E0.6 [3] (\uD83D\uDE12..\uD83D\uDE14) unamused face..pensive face\n\t\tcode === 0x1F615 || // E1.0 [1] (\uD83D\uDE15) confused face\n\t\tcode === 0x1F616 || // E0.6 [1] (\uD83D\uDE16) confounded face\n\t\tcode === 0x1F617 || // E1.0 [1] (\uD83D\uDE17) kissing face\n\t\tcode === 0x1F618 || // E0.6 [1] (\uD83D\uDE18) face blowing a kiss\n\t\tcode === 0x1F619 || // E1.0 [1] (\uD83D\uDE19) kissing face with smiling eyes\n\t\tcode === 0x1F61A || // E0.6 [1] (\uD83D\uDE1A) kissing face with closed eyes\n\t\tcode === 0x1F61B || // E1.0 [1] (\uD83D\uDE1B) face with tongue\n\t\t( 0x1F61C <= code && code <= 0x1F61E ) || // E0.6 [3] (\uD83D\uDE1C..\uD83D\uDE1E) winking face with tongue..disappointed face\n\t\tcode === 0x1F61F || // E1.0 [1] (\uD83D\uDE1F) worried face\n\t\t( 0x1F620 <= code && code <= 0x1F625 ) || // E0.6 [6] (\uD83D\uDE20..\uD83D\uDE25) angry face..sad but relieved face\n\t\t( 0x1F626 <= code && code <= 0x1F627 ) || // E1.0 [2] (\uD83D\uDE26..\uD83D\uDE27) frowning face with open mouth..anguished face\n\t\t( 0x1F628 <= code && code <= 0x1F62B ) || // E0.6 [4] (\uD83D\uDE28..\uD83D\uDE2B) fearful face..tired face\n\t\tcode === 0x1F62C || // E1.0 [1] (\uD83D\uDE2C) grimacing face\n\t\tcode === 0x1F62D || // E0.6 [1] (\uD83D\uDE2D) loudly crying face\n\t\t( 0x1F62E <= code && code <= 0x1F62F ) || // E1.0 [2] (\uD83D\uDE2E..\uD83D\uDE2F) face with open mouth..hushed face\n\t\t( 0x1F630 <= code && code <= 0x1F633 ) || // E0.6 [4] (\uD83D\uDE30..\uD83D\uDE33) anxious face with sweat..flushed face\n\t\tcode === 0x1F634 || // E1.0 [1] (\uD83D\uDE34) sleeping face\n\t\tcode === 0x1F635 || // E0.6 [1] (\uD83D\uDE35) dizzy face\n\t\tcode === 0x1F636 || // E1.0 [1] (\uD83D\uDE36) face without mouth\n\t\t( 0x1F637 <= code && code <= 0x1F640 ) || // E0.6 [10] (\uD83D\uDE37..\uD83D\uDE40) face with medical mask..weary cat\n\t\t( 0x1F641 <= code && code <= 0x1F644 ) || // E1.0 [4] (\uD83D\uDE41..\uD83D\uDE44) slightly frowning face..face with rolling eyes\n\t\t( 0x1F645 <= code && code <= 0x1F64F ) || // E0.6 [11] (\uD83D\uDE45..\uD83D\uDE4F) person gesturing NO..folded hands\n\t\tcode === 0x1F680 || // E0.6 [1] (\uD83D\uDE80) rocket\n\t\t( 0x1F681 <= code && code <= 0x1F682 ) || // E1.0 [2] (\uD83D\uDE81..\uD83D\uDE82) helicopter..locomotive\n\t\t( 0x1F683 <= code && code <= 0x1F685 ) || // E0.6 [3] (\uD83D\uDE83..\uD83D\uDE85) railway car..bullet train\n\t\tcode === 0x1F686 || // E1.0 [1] (\uD83D\uDE86) train\n\t\tcode === 0x1F687 || // E0.6 [1] (\uD83D\uDE87) metro\n\t\tcode === 0x1F688 || // E1.0 [1] (\uD83D\uDE88) light rail\n\t\tcode === 0x1F689 || // E0.6 [1] (\uD83D\uDE89) station\n\t\t( 0x1F68A <= code && code <= 0x1F68B ) || // E1.0 [2] (\uD83D\uDE8A..\uD83D\uDE8B) tram..tram car\n\t\tcode === 0x1F68C || // E0.6 [1] (\uD83D\uDE8C) bus\n\t\tcode === 0x1F68D || // E0.7 [1] (\uD83D\uDE8D) oncoming bus\n\t\tcode === 0x1F68E || // E1.0 [1] (\uD83D\uDE8E) trolleybus\n\t\tcode === 0x1F68F || // E0.6 [1] (\uD83D\uDE8F) bus stop\n\t\tcode === 0x1F690 || // E1.0 [1] (\uD83D\uDE90) minibus\n\t\t( 0x1F691 <= code && code <= 0x1F693 ) || // E0.6 [3] (\uD83D\uDE91..\uD83D\uDE93) ambulance..police car\n\t\tcode === 0x1F694 || // E0.7 [1] (\uD83D\uDE94) oncoming police car\n\t\tcode === 0x1F695 || // E0.6 [1] (\uD83D\uDE95) taxi\n\t\tcode === 0x1F696 || // E1.0 [1] (\uD83D\uDE96) oncoming taxi\n\t\tcode === 0x1F697 || // E0.6 [1] (\uD83D\uDE97) automobile\n\t\tcode === 0x1F698 || // E0.7 [1] (\uD83D\uDE98) oncoming automobile\n\t\t( 0x1F699 <= code && code <= 0x1F69A ) || // E0.6 [2] (\uD83D\uDE99..\uD83D\uDE9A) sport utility vehicle..delivery truck\n\t\t( 0x1F69B <= code && code <= 0x1F6A1 ) || // E1.0 [7] (\uD83D\uDE9B..\uD83D\uDEA1) articulated lorry..aerial tramway\n\t\tcode === 0x1F6A2 || // E0.6 [1] (\uD83D\uDEA2) ship\n\t\tcode === 0x1F6A3 || // E1.0 [1] (\uD83D\uDEA3) person rowing boat\n\t\t( 0x1F6A4 <= code && code <= 0x1F6A5 ) || // E0.6 [2] (\uD83D\uDEA4..\uD83D\uDEA5) speedboat..horizontal traffic light\n\t\tcode === 0x1F6A6 || // E1.0 [1] (\uD83D\uDEA6) vertical traffic light\n\t\t( 0x1F6A7 <= code && code <= 0x1F6AD ) || // E0.6 [7] (\uD83D\uDEA7..\uD83D\uDEAD) construction..no smoking\n\t\t( 0x1F6AE <= code && code <= 0x1F6B1 ) || // E1.0 [4] (\uD83D\uDEAE..\uD83D\uDEB1) litter in bin sign..non-potable water\n\t\tcode === 0x1F6B2 || // E0.6 [1] (\uD83D\uDEB2) bicycle\n\t\t( 0x1F6B3 <= code && code <= 0x1F6B5 ) || // E1.0 [3] (\uD83D\uDEB3..\uD83D\uDEB5) no bicycles..person mountain biking\n\t\tcode === 0x1F6B6 || // E0.6 [1] (\uD83D\uDEB6) person walking\n\t\t( 0x1F6B7 <= code && code <= 0x1F6B8 ) || // E1.0 [2] (\uD83D\uDEB7..\uD83D\uDEB8) no pedestrians..children crossing\n\t\t( 0x1F6B9 <= code && code <= 0x1F6BE ) || // E0.6 [6] (\uD83D\uDEB9..\uD83D\uDEBE) men\u2019s room..water closet\n\t\tcode === 0x1F6BF || // E1.0 [1] (\uD83D\uDEBF) shower\n\t\tcode === 0x1F6C0 || // E0.6 [1] (\uD83D\uDEC0) person taking bath\n\t\t( 0x1F6C1 <= code && code <= 0x1F6C5 ) || // E1.0 [5] (\uD83D\uDEC1..\uD83D\uDEC5) bathtub..left luggage\n\t\t( 0x1F6C6 <= code && code <= 0x1F6CA ) || // E0.0 [5] (\uD83D\uDEC6..\uD83D\uDECA) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL\n\t\tcode === 0x1F6CB || // E0.7 [1] (\uD83D\uDECB\uFE0F) couch and lamp\n\t\tcode === 0x1F6CC || // E1.0 [1] (\uD83D\uDECC) person in bed\n\t\t( 0x1F6CD <= code && code <= 0x1F6CF ) || // E0.7 [3] (\uD83D\uDECD\uFE0F..\uD83D\uDECF\uFE0F) shopping bags..bed\n\t\tcode === 0x1F6D0 || // E1.0 [1] (\uD83D\uDED0) place of worship\n\t\t( 0x1F6D1 <= code && code <= 0x1F6D2 ) || // E3.0 [2] (\uD83D\uDED1..\uD83D\uDED2) stop sign..shopping cart\n\t\t( 0x1F6D3 <= code && code <= 0x1F6D4 ) || // E0.0 [2] (\uD83D\uDED3..\uD83D\uDED4) STUPA..PAGODA\n\t\tcode === 0x1F6D5 || // E12.0 [1] (\uD83D\uDED5) hindu temple\n\t\t( 0x1F6D6 <= code && code <= 0x1F6D7 ) || // E13.0 [2] (\uD83D\uDED6..\uD83D\uDED7) hut..elevator\n\t\t( 0x1F6D8 <= code && code <= 0x1F6DF ) || // E0.0 [8] (\uD83D\uDED8..\uD83D\uDEDF) ..\n\t\t( 0x1F6E0 <= code && code <= 0x1F6E5 ) || // E0.7 [6] (\uD83D\uDEE0\uFE0F..\uD83D\uDEE5\uFE0F) hammer and wrench..motor boat\n\t\t( 0x1F6E6 <= code && code <= 0x1F6E8 ) || // E0.0 [3] (\uD83D\uDEE6..\uD83D\uDEE8) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE\n\t\tcode === 0x1F6E9 || // E0.7 [1] (\uD83D\uDEE9\uFE0F) small airplane\n\t\tcode === 0x1F6EA || // E0.0 [1] (\uD83D\uDEEA) NORTHEAST-POINTING AIRPLANE\n\t\t( 0x1F6EB <= code && code <= 0x1F6EC ) || // E1.0 [2] (\uD83D\uDEEB..\uD83D\uDEEC) airplane departure..airplane arrival\n\t\t( 0x1F6ED <= code && code <= 0x1F6EF ) || // E0.0 [3] (\uD83D\uDEED..\uD83D\uDEEF) ..\n\t\tcode === 0x1F6F0 || // E0.7 [1] (\uD83D\uDEF0\uFE0F) satellite\n\t\t( 0x1F6F1 <= code && code <= 0x1F6F2 ) || // E0.0 [2] (\uD83D\uDEF1..\uD83D\uDEF2) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE\n\t\tcode === 0x1F6F3 || // E0.7 [1] (\uD83D\uDEF3\uFE0F) passenger ship\n\t\t( 0x1F6F4 <= code && code <= 0x1F6F6 ) || // E3.0 [3] (\uD83D\uDEF4..\uD83D\uDEF6) kick scooter..canoe\n\t\t( 0x1F6F7 <= code && code <= 0x1F6F8 ) || // E5.0 [2] (\uD83D\uDEF7..\uD83D\uDEF8) sled..flying saucer\n\t\tcode === 0x1F6F9 || // E11.0 [1] (\uD83D\uDEF9) skateboard\n\t\tcode === 0x1F6FA || // E12.0 [1] (\uD83D\uDEFA) auto rickshaw\n\t\t( 0x1F6FB <= code && code <= 0x1F6FC ) || // E13.0 [2] (\uD83D\uDEFB..\uD83D\uDEFC) pickup truck..roller skate\n\t\t( 0x1F6FD <= code && code <= 0x1F6FF ) || // E0.0 [3] (\uD83D\uDEFD..\uD83D\uDEFF) ..\n\t\t( 0x1F774 <= code && code <= 0x1F77F ) || // E0.0 [12] (\uD83D\uDF74..\uD83D\uDF7F) ..\n\t\t( 0x1F7D5 <= code && code <= 0x1F7DF ) || // E0.0 [11] (\uD83D\uDFD5..\uD83D\uDFDF) CIRCLED TRIANGLE..\n\t\t( 0x1F7E0 <= code && code <= 0x1F7EB ) || // E12.0 [12] (\uD83D\uDFE0..\uD83D\uDFEB) orange circle..brown square\n\t\t( 0x1F7EC <= code && code <= 0x1F7FF ) || // E0.0 [20] (\uD83D\uDFEC..\uD83D\uDFFF) ..\n\t\t( 0x1F80C <= code && code <= 0x1F80F ) || // E0.0 [4] (\uD83E\uDC0C..\uD83E\uDC0F) ..\n\t\t( 0x1F848 <= code && code <= 0x1F84F ) || // E0.0 [8] (\uD83E\uDC48..\uD83E\uDC4F) ..\n\t\t( 0x1F85A <= code && code <= 0x1F85F ) || // E0.0 [6] (\uD83E\uDC5A..\uD83E\uDC5F) ..\n\t\t( 0x1F888 <= code && code <= 0x1F88F ) || // E0.0 [8] (\uD83E\uDC88..\uD83E\uDC8F) ..\n\t\t( 0x1F8AE <= code && code <= 0x1F8FF ) || // E0.0 [82] (\uD83E\uDCAE..\uD83E\uDCFF) ..\n\t\tcode === 0x1F90C || // E13.0 [1] (\uD83E\uDD0C) pinched fingers\n\t\t( 0x1F90D <= code && code <= 0x1F90F ) || // E12.0 [3] (\uD83E\uDD0D..\uD83E\uDD0F) white heart..pinching hand\n\t\t( 0x1F910 <= code && code <= 0x1F918 ) || // E1.0 [9] (\uD83E\uDD10..\uD83E\uDD18) zipper-mouth face..sign of the horns\n\t\t( 0x1F919 <= code && code <= 0x1F91E ) || // E3.0 [6] (\uD83E\uDD19..\uD83E\uDD1E) call me hand..crossed fingers\n\t\tcode === 0x1F91F || // E5.0 [1] (\uD83E\uDD1F) love-you gesture\n\t\t( 0x1F920 <= code && code <= 0x1F927 ) || // E3.0 [8] (\uD83E\uDD20..\uD83E\uDD27) cowboy hat face..sneezing face\n\t\t( 0x1F928 <= code && code <= 0x1F92F ) || // E5.0 [8] (\uD83E\uDD28..\uD83E\uDD2F) face with raised eyebrow..exploding head\n\t\tcode === 0x1F930 || // E3.0 [1] (\uD83E\uDD30) pregnant woman\n\t\t( 0x1F931 <= code && code <= 0x1F932 ) || // E5.0 [2] (\uD83E\uDD31..\uD83E\uDD32) breast-feeding..palms up together\n\t\t( 0x1F933 <= code && code <= 0x1F93A ) || // E3.0 [8] (\uD83E\uDD33..\uD83E\uDD3A) selfie..person fencing\n\t\t( 0x1F93C <= code && code <= 0x1F93E ) || // E3.0 [3] (\uD83E\uDD3C..\uD83E\uDD3E) people wrestling..person playing handball\n\t\tcode === 0x1F93F || // E12.0 [1] (\uD83E\uDD3F) diving mask\n\t\t( 0x1F940 <= code && code <= 0x1F945 ) || // E3.0 [6] (\uD83E\uDD40..\uD83E\uDD45) wilted flower..goal net\n\t\t( 0x1F947 <= code && code <= 0x1F94B ) || // E3.0 [5] (\uD83E\uDD47..\uD83E\uDD4B) 1st place medal..martial arts uniform\n\t\tcode === 0x1F94C || // E5.0 [1] (\uD83E\uDD4C) curling stone\n\t\t( 0x1F94D <= code && code <= 0x1F94F ) || // E11.0 [3] (\uD83E\uDD4D..\uD83E\uDD4F) lacrosse..flying disc\n\t\t( 0x1F950 <= code && code <= 0x1F95E ) || // E3.0 [15] (\uD83E\uDD50..\uD83E\uDD5E) croissant..pancakes\n\t\t( 0x1F95F <= code && code <= 0x1F96B ) || // E5.0 [13] (\uD83E\uDD5F..\uD83E\uDD6B) dumpling..canned food\n\t\t( 0x1F96C <= code && code <= 0x1F970 ) || // E11.0 [5] (\uD83E\uDD6C..\uD83E\uDD70) leafy green..smiling face with hearts\n\t\tcode === 0x1F971 || // E12.0 [1] (\uD83E\uDD71) yawning face\n\t\tcode === 0x1F972 || // E13.0 [1] (\uD83E\uDD72) smiling face with tear\n\t\t( 0x1F973 <= code && code <= 0x1F976 ) || // E11.0 [4] (\uD83E\uDD73..\uD83E\uDD76) partying face..cold face\n\t\t( 0x1F977 <= code && code <= 0x1F978 ) || // E13.0 [2] (\uD83E\uDD77..\uD83E\uDD78) ninja..disguised face\n\t\tcode === 0x1F979 || // E0.0 [1] (\uD83E\uDD79) \n\t\tcode === 0x1F97A || // E11.0 [1] (\uD83E\uDD7A) pleading face\n\t\tcode === 0x1F97B || // E12.0 [1] (\uD83E\uDD7B) sari\n\t\t( 0x1F97C <= code && code <= 0x1F97F ) || // E11.0 [4] (\uD83E\uDD7C..\uD83E\uDD7F) lab coat..flat shoe\n\t\t( 0x1F980 <= code && code <= 0x1F984 ) || // E1.0 [5] (\uD83E\uDD80..\uD83E\uDD84) crab..unicorn\n\t\t( 0x1F985 <= code && code <= 0x1F991 ) || // E3.0 [13] (\uD83E\uDD85..\uD83E\uDD91) eagle..squid\n\t\t( 0x1F992 <= code && code <= 0x1F997 ) || // E5.0 [6] (\uD83E\uDD92..\uD83E\uDD97) giraffe..cricket\n\t\t( 0x1F998 <= code && code <= 0x1F9A2 ) || // E11.0 [11] (\uD83E\uDD98..\uD83E\uDDA2) kangaroo..swan\n\t\t( 0x1F9A3 <= code && code <= 0x1F9A4 ) || // E13.0 [2] (\uD83E\uDDA3..\uD83E\uDDA4) mammoth..dodo\n\t\t( 0x1F9A5 <= code && code <= 0x1F9AA ) || // E12.0 [6] (\uD83E\uDDA5..\uD83E\uDDAA) sloth..oyster\n\t\t( 0x1F9AB <= code && code <= 0x1F9AD ) || // E13.0 [3] (\uD83E\uDDAB..\uD83E\uDDAD) beaver..seal\n\t\t( 0x1F9AE <= code && code <= 0x1F9AF ) || // E12.0 [2] (\uD83E\uDDAE..\uD83E\uDDAF) guide dog..white cane\n\t\t( 0x1F9B0 <= code && code <= 0x1F9B9 ) || // E11.0 [10] (\uD83E\uDDB0..\uD83E\uDDB9) red hair..supervillain\n\t\t( 0x1F9BA <= code && code <= 0x1F9BF ) || // E12.0 [6] (\uD83E\uDDBA..\uD83E\uDDBF) safety vest..mechanical leg\n\t\tcode === 0x1F9C0 || // E1.0 [1] (\uD83E\uDDC0) cheese wedge\n\t\t( 0x1F9C1 <= code && code <= 0x1F9C2 ) || // E11.0 [2] (\uD83E\uDDC1..\uD83E\uDDC2) cupcake..salt\n\t\t( 0x1F9C3 <= code && code <= 0x1F9CA ) || // E12.0 [8] (\uD83E\uDDC3..\uD83E\uDDCA) beverage box..ice\n\t\tcode === 0x1F9CB || // E13.0 [1] (\uD83E\uDDCB) bubble tea\n\t\tcode === 0x1F9CC || // E0.0 [1] (\uD83E\uDDCC) \n\t\t( 0x1F9CD <= code && code <= 0x1F9CF ) || // E12.0 [3] (\uD83E\uDDCD..\uD83E\uDDCF) person standing..deaf person\n\t\t( 0x1F9D0 <= code && code <= 0x1F9E6 ) || // E5.0 [23] (\uD83E\uDDD0..\uD83E\uDDE6) face with monocle..socks\n\t\t( 0x1F9E7 <= code && code <= 0x1F9FF ) || // E11.0 [25] (\uD83E\uDDE7..\uD83E\uDDFF) red envelope..nazar amulet\n\t\t( 0x1FA00 <= code && code <= 0x1FA6F ) || // E0.0 [112] (\uD83E\uDE00..\uD83E\uDE6F) NEUTRAL CHESS KING..\n\t\t( 0x1FA70 <= code && code <= 0x1FA73 ) || // E12.0 [4] (\uD83E\uDE70..\uD83E\uDE73) ballet shoes..shorts\n\t\tcode === 0x1FA74 || // E13.0 [1] (\uD83E\uDE74) thong sandal\n\t\t( 0x1FA75 <= code && code <= 0x1FA77 ) || // E0.0 [3] (\uD83E\uDE75..\uD83E\uDE77) ..\n\t\t( 0x1FA78 <= code && code <= 0x1FA7A ) || // E12.0 [3] (\uD83E\uDE78..\uD83E\uDE7A) drop of blood..stethoscope\n\t\t( 0x1FA7B <= code && code <= 0x1FA7F ) || // E0.0 [5] (\uD83E\uDE7B..\uD83E\uDE7F) ..\n\t\t( 0x1FA80 <= code && code <= 0x1FA82 ) || // E12.0 [3] (\uD83E\uDE80..\uD83E\uDE82) yo-yo..parachute\n\t\t( 0x1FA83 <= code && code <= 0x1FA86 ) || // E13.0 [4] (\uD83E\uDE83..\uD83E\uDE86) boomerang..nesting dolls\n\t\t( 0x1FA87 <= code && code <= 0x1FA8F ) || // E0.0 [9] (\uD83E\uDE87..\uD83E\uDE8F) ..\n\t\t( 0x1FA90 <= code && code <= 0x1FA95 ) || // E12.0 [6] (\uD83E\uDE90..\uD83E\uDE95) ringed planet..banjo\n\t\t( 0x1FA96 <= code && code <= 0x1FAA8 ) || // E13.0 [19] (\uD83E\uDE96..\uD83E\uDEA8) military helmet..rock\n\t\t( 0x1FAA9 <= code && code <= 0x1FAAF ) || // E0.0 [7] (\uD83E\uDEA9..\uD83E\uDEAF) ..\n\t\t( 0x1FAB0 <= code && code <= 0x1FAB6 ) || // E13.0 [7] (\uD83E\uDEB0..\uD83E\uDEB6) fly..feather\n\t\t( 0x1FAB7 <= code && code <= 0x1FABF ) || // E0.0 [9] (\uD83E\uDEB7..\uD83E\uDEBF) ..\n\t\t( 0x1FAC0 <= code && code <= 0x1FAC2 ) || // E13.0 [3] (\uD83E\uDEC0..\uD83E\uDEC2) anatomical heart..people hugging\n\t\t( 0x1FAC3 <= code && code <= 0x1FACF ) || // E0.0 [13] (\uD83E\uDEC3..\uD83E\uDECF) ..\n\t\t( 0x1FAD0 <= code && code <= 0x1FAD6 ) || // E13.0 [7] (\uD83E\uDED0..\uD83E\uDED6) blueberries..teapot\n\t\t( 0x1FAD7 <= code && code <= 0x1FAFF ) || // E0.0 [41] (\uD83E\uDED7..\uD83E\uDEFF) ..\n\t\t( 0x1FC00 <= code && code <= 0x1FFFD ) // E0.0[1022] (\uD83F\uDC00..\uD83F\uDFFD) ..\n\t) {\n\t\treturn constants.ExtendedPictographic;\n\t}\n\treturn constants.Other;\n}\n\n\n// EXPORTS //\n\nmodule.exports = emojiProperty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar constants = require( './constants.js' );\n\n\n// MAIN //\n\n/**\n* Returns the grapheme break property from the [Unicode Standard][1].\n*\n* [1]: https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakProperty.txt\n*\n* @private\n* @param {NonNegativeInteger} code - Unicode code point\n* @returns {NonNegativeInteger} grapheme break property\n*\n* @example\n* var out = graphemeBreakProperty( 0x008f );\n* // returns 2\n*\n* @example\n* var out = graphemeBreakProperty( 0x111C2 );\n* // returns 12\n*\n* @example\n* var out = graphemeBreakProperty( 0x1F3FC );\n* // returns 3\n*/\nfunction graphemeBreakProperty( code ) {\n\tif (\n\t\t( 0x0600 <= code && code <= 0x0605 ) || // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE\n\t\tcode === 0x06DD || // Cf ARABIC END OF AYAH\n\t\tcode === 0x070F || // Cf SYRIAC ABBREVIATION MARK\n\t\tcode === 0x08E2 || // Cf ARABIC DISPUTED END OF AYAH\n\t\tcode === 0x0D4E || // Lo MALAYALAM LETTER DOT REPH\n\t\tcode === 0x110BD || // Cf KAITHI NUMBER SIGN\n\t\tcode === 0x110CD || // Cf KAITHI NUMBER SIGN ABOVE\n\t\t( 0x111C2 <= code && code <= 0x111C3 ) || // Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA\n\t\tcode === 0x1193F || // Lo DIVES AKURU PREFIXED NASAL SIGN\n\t\tcode === 0x11941 || // Lo DIVES AKURU INITIAL RA\n\t\tcode === 0x11A3A || // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA\n\t\t( 0x11A84 <= code && code <= 0x11A89 ) || // Lo [6] SOYOMBO SIGN JIHVAMULIYA..SOYOMBO CLUSTER-INITIAL LETTER SA\n\t\tcode === 0x11D46 // Lo MASARAM GONDI REPHA\n\t) {\n\t\treturn constants.Prepend;\n\t}\n\tif (\n\t\tcode === 0x000D // Cc \n\t) {\n\t\treturn constants.CR;\n\t}\n\tif (\n\t\tcode === 0x000A // Cc \n\t) {\n\t\treturn constants.LF;\n\t}\n\tif (\n\t\t( 0x0000 <= code && code <= 0x0009 ) || // Cc [10] ..\n\t\t( 0x000B <= code && code <= 0x000C ) || // Cc [2] ..\n\t\t( 0x000E <= code && code <= 0x001F ) || // Cc [18] ..\n\t\t( 0x007F <= code && code <= 0x009F ) || // Cc [33] ..\n\t\tcode === 0x00AD || // Cf SOFT HYPHEN\n\t\tcode === 0x061C || // Cf ARABIC LETTER MARK\n\t\tcode === 0x180E || // Cf MONGOLIAN VOWEL SEPARATOR\n\t\tcode === 0x200B || // Cf ZERO WIDTH SPACE\n\t\t( 0x200E <= code && code <= 0x200F ) || // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK\n\t\tcode === 0x2028 || // Zl LINE SEPARATOR\n\t\tcode === 0x2029 || // Zp PARAGRAPH SEPARATOR\n\t\t( 0x202A <= code && code <= 0x202E ) || // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE\n\t\t( 0x2060 <= code && code <= 0x2064 ) || // Cf [5] WORD JOINER..INVISIBLE PLUS\n\t\tcode === 0x2065 || // Cn \n\t\t( 0x2066 <= code && code <= 0x206F ) || // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES\n\t\tcode === 0xFEFF || // Cf ZERO WIDTH NO-BREAK SPACE\n\t\t( 0xFFF0 <= code && code <= 0xFFF8 ) || // Cn [9] ..\n\t\t( 0xFFF9 <= code && code <= 0xFFFB ) || // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR\n\t\t( 0x13430 <= code && code <= 0x13438 ) || // Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT\n\t\t( 0x1BCA0 <= code && code <= 0x1BCA3 ) || // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP\n\t\t( 0x1D173 <= code && code <= 0x1D17A ) || // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE\n\t\tcode === 0xE0000 || // Cn \n\t\tcode === 0xE0001 || // Cf LANGUAGE TAG\n\t\t( 0xE0002 <= code && code <= 0xE001F ) || // Cn [30] ..\n\t\t( 0xE0080 <= code && code <= 0xE00FF ) || // Cn [128] ..\n\t\t( 0xE01F0 <= code && code <= 0xE0FFF ) // Cn [3600] ..\n\t) {\n\t\treturn constants.Control;\n\t}\n\tif (\n\t\t( 0x0300 <= code && code <= 0x036F ) || // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X\n\t\t( 0x0483 <= code && code <= 0x0487 ) || // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE\n\t\t( 0x0488 <= code && code <= 0x0489 ) || // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN\n\t\t( 0x0591 <= code && code <= 0x05BD ) || // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG\n\t\tcode === 0x05BF || // Mn HEBREW POINT RAFE\n\t\t( 0x05C1 <= code && code <= 0x05C2 ) || // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT\n\t\t( 0x05C4 <= code && code <= 0x05C5 ) || // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT\n\t\tcode === 0x05C7 || // Mn HEBREW POINT QAMATS QATAN\n\t\t( 0x0610 <= code && code <= 0x061A ) || // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA\n\t\t( 0x064B <= code && code <= 0x065F ) || // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW\n\t\tcode === 0x0670 || // Mn ARABIC LETTER SUPERSCRIPT ALEF\n\t\t( 0x06D6 <= code && code <= 0x06DC ) || // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN\n\t\t( 0x06DF <= code && code <= 0x06E4 ) || // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA\n\t\t( 0x06E7 <= code && code <= 0x06E8 ) || // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON\n\t\t( 0x06EA <= code && code <= 0x06ED ) || // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM\n\t\tcode === 0x0711 || // Mn SYRIAC LETTER SUPERSCRIPT ALAPH\n\t\t( 0x0730 <= code && code <= 0x074A ) || // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH\n\t\t( 0x07A6 <= code && code <= 0x07B0 ) || // Mn [11] THAANA ABAFILI..THAANA SUKUN\n\t\t( 0x07EB <= code && code <= 0x07F3 ) || // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE\n\t\tcode === 0x07FD || // Mn NKO DANTAYALAN\n\t\t( 0x0816 <= code && code <= 0x0819 ) || // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH\n\t\t( 0x081B <= code && code <= 0x0823 ) || // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A\n\t\t( 0x0825 <= code && code <= 0x0827 ) || // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U\n\t\t( 0x0829 <= code && code <= 0x082D ) || // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA\n\t\t( 0x0859 <= code && code <= 0x085B ) || // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK\n\t\t( 0x08D3 <= code && code <= 0x08E1 ) || // Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA\n\t\t( 0x08E3 <= code && code <= 0x0902 ) || // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA\n\t\tcode === 0x093A || // Mn DEVANAGARI VOWEL SIGN OE\n\t\tcode === 0x093C || // Mn DEVANAGARI SIGN NUKTA\n\t\t( 0x0941 <= code && code <= 0x0948 ) || // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI\n\t\tcode === 0x094D || // Mn DEVANAGARI SIGN VIRAMA\n\t\t( 0x0951 <= code && code <= 0x0957 ) || // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE\n\t\t( 0x0962 <= code && code <= 0x0963 ) || // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0981 || // Mn BENGALI SIGN CANDRABINDU\n\t\tcode === 0x09BC || // Mn BENGALI SIGN NUKTA\n\t\tcode === 0x09BE || // Mc BENGALI VOWEL SIGN AA\n\t\t( 0x09C1 <= code && code <= 0x09C4 ) || // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR\n\t\tcode === 0x09CD || // Mn BENGALI SIGN VIRAMA\n\t\tcode === 0x09D7 || // Mc BENGALI AU LENGTH MARK\n\t\t( 0x09E2 <= code && code <= 0x09E3 ) || // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL\n\t\tcode === 0x09FE || // Mn BENGALI SANDHI MARK\n\t\t( 0x0A01 <= code && code <= 0x0A02 ) || // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI\n\t\tcode === 0x0A3C || // Mn GURMUKHI SIGN NUKTA\n\t\t( 0x0A41 <= code && code <= 0x0A42 ) || // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU\n\t\t( 0x0A47 <= code && code <= 0x0A48 ) || // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI\n\t\t( 0x0A4B <= code && code <= 0x0A4D ) || // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA\n\t\tcode === 0x0A51 || // Mn GURMUKHI SIGN UDAAT\n\t\t( 0x0A70 <= code && code <= 0x0A71 ) || // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK\n\t\tcode === 0x0A75 || // Mn GURMUKHI SIGN YAKASH\n\t\t( 0x0A81 <= code && code <= 0x0A82 ) || // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA\n\t\tcode === 0x0ABC || // Mn GUJARATI SIGN NUKTA\n\t\t( 0x0AC1 <= code && code <= 0x0AC5 ) || // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E\n\t\t( 0x0AC7 <= code && code <= 0x0AC8 ) || // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI\n\t\tcode === 0x0ACD || // Mn GUJARATI SIGN VIRAMA\n\t\t( 0x0AE2 <= code && code <= 0x0AE3 ) || // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL\n\t\t( 0x0AFA <= code && code <= 0x0AFF ) || // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE\n\t\tcode === 0x0B01 || // Mn ORIYA SIGN CANDRABINDU\n\t\tcode === 0x0B3C || // Mn ORIYA SIGN NUKTA\n\t\tcode === 0x0B3E || // Mc ORIYA VOWEL SIGN AA\n\t\tcode === 0x0B3F || // Mn ORIYA VOWEL SIGN I\n\t\t( 0x0B41 <= code && code <= 0x0B44 ) || // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR\n\t\tcode === 0x0B4D || // Mn ORIYA SIGN VIRAMA\n\t\t( 0x0B55 <= code && code <= 0x0B56 ) || // Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK\n\t\tcode === 0x0B57 || // Mc ORIYA AU LENGTH MARK\n\t\t( 0x0B62 <= code && code <= 0x0B63 ) || // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0B82 || // Mn TAMIL SIGN ANUSVARA\n\t\tcode === 0x0BBE || // Mc TAMIL VOWEL SIGN AA\n\t\tcode === 0x0BC0 || // Mn TAMIL VOWEL SIGN II\n\t\tcode === 0x0BCD || // Mn TAMIL SIGN VIRAMA\n\t\tcode === 0x0BD7 || // Mc TAMIL AU LENGTH MARK\n\t\tcode === 0x0C00 || // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE\n\t\tcode === 0x0C04 || // Mn TELUGU SIGN COMBINING ANUSVARA ABOVE\n\t\t( 0x0C3E <= code && code <= 0x0C40 ) || // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II\n\t\t( 0x0C46 <= code && code <= 0x0C48 ) || // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI\n\t\t( 0x0C4A <= code && code <= 0x0C4D ) || // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA\n\t\t( 0x0C55 <= code && code <= 0x0C56 ) || // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK\n\t\t( 0x0C62 <= code && code <= 0x0C63 ) || // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0C81 || // Mn KANNADA SIGN CANDRABINDU\n\t\tcode === 0x0CBC || // Mn KANNADA SIGN NUKTA\n\t\tcode === 0x0CBF || // Mn KANNADA VOWEL SIGN I\n\t\tcode === 0x0CC2 || // Mc KANNADA VOWEL SIGN UU\n\t\tcode === 0x0CC6 || // Mn KANNADA VOWEL SIGN E\n\t\t( 0x0CCC <= code && code <= 0x0CCD ) || // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA\n\t\t( 0x0CD5 <= code && code <= 0x0CD6 ) || // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK\n\t\t( 0x0CE2 <= code && code <= 0x0CE3 ) || // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL\n\t\t( 0x0D00 <= code && code <= 0x0D01 ) || // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU\n\t\t( 0x0D3B <= code && code <= 0x0D3C ) || // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA\n\t\tcode === 0x0D3E || // Mc MALAYALAM VOWEL SIGN AA\n\t\t( 0x0D41 <= code && code <= 0x0D44 ) || // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR\n\t\tcode === 0x0D4D || // Mn MALAYALAM SIGN VIRAMA\n\t\tcode === 0x0D57 || // Mc MALAYALAM AU LENGTH MARK\n\t\t( 0x0D62 <= code && code <= 0x0D63 ) || // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0D81 || // Mn SINHALA SIGN CANDRABINDU\n\t\tcode === 0x0DCA || // Mn SINHALA SIGN AL-LAKUNA\n\t\tcode === 0x0DCF || // Mc SINHALA VOWEL SIGN AELA-PILLA\n\t\t( 0x0DD2 <= code && code <= 0x0DD4 ) || // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA\n\t\tcode === 0x0DD6 || // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA\n\t\tcode === 0x0DDF || // Mc SINHALA VOWEL SIGN GAYANUKITTA\n\t\tcode === 0x0E31 || // Mn THAI CHARACTER MAI HAN-AKAT\n\t\t( 0x0E34 <= code && code <= 0x0E3A ) || // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU\n\t\t( 0x0E47 <= code && code <= 0x0E4E ) || // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN\n\t\tcode === 0x0EB1 || // Mn LAO VOWEL SIGN MAI KAN\n\t\t( 0x0EB4 <= code && code <= 0x0EBC ) || // Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO\n\t\t( 0x0EC8 <= code && code <= 0x0ECD ) || // Mn [6] LAO TONE MAI EK..LAO NIGGAHITA\n\t\t( 0x0F18 <= code && code <= 0x0F19 ) || // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS\n\t\tcode === 0x0F35 || // Mn TIBETAN MARK NGAS BZUNG NYI ZLA\n\t\tcode === 0x0F37 || // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS\n\t\tcode === 0x0F39 || // Mn TIBETAN MARK TSA -PHRU\n\t\t( 0x0F71 <= code && code <= 0x0F7E ) || // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO\n\t\t( 0x0F80 <= code && code <= 0x0F84 ) || // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA\n\t\t( 0x0F86 <= code && code <= 0x0F87 ) || // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS\n\t\t( 0x0F8D <= code && code <= 0x0F97 ) || // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA\n\t\t( 0x0F99 <= code && code <= 0x0FBC ) || // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA\n\t\tcode === 0x0FC6 || // Mn TIBETAN SYMBOL PADMA GDAN\n\t\t( 0x102D <= code && code <= 0x1030 ) || // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU\n\t\t( 0x1032 <= code && code <= 0x1037 ) || // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW\n\t\t( 0x1039 <= code && code <= 0x103A ) || // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT\n\t\t( 0x103D <= code && code <= 0x103E ) || // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA\n\t\t( 0x1058 <= code && code <= 0x1059 ) || // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL\n\t\t( 0x105E <= code && code <= 0x1060 ) || // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA\n\t\t( 0x1071 <= code && code <= 0x1074 ) || // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE\n\t\tcode === 0x1082 || // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA\n\t\t( 0x1085 <= code && code <= 0x1086 ) || // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y\n\t\tcode === 0x108D || // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE\n\t\tcode === 0x109D || // Mn MYANMAR VOWEL SIGN AITON AI\n\t\t( 0x135D <= code && code <= 0x135F ) || // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK\n\t\t( 0x1712 <= code && code <= 0x1714 ) || // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA\n\t\t( 0x1732 <= code && code <= 0x1734 ) || // Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD\n\t\t( 0x1752 <= code && code <= 0x1753 ) || // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U\n\t\t( 0x1772 <= code && code <= 0x1773 ) || // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U\n\t\t( 0x17B4 <= code && code <= 0x17B5 ) || // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA\n\t\t( 0x17B7 <= code && code <= 0x17BD ) || // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA\n\t\tcode === 0x17C6 || // Mn KHMER SIGN NIKAHIT\n\t\t( 0x17C9 <= code && code <= 0x17D3 ) || // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT\n\t\tcode === 0x17DD || // Mn KHMER SIGN ATTHACAN\n\t\t( 0x180B <= code && code <= 0x180D ) || // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE\n\t\t( 0x1885 <= code && code <= 0x1886 ) || // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA\n\t\tcode === 0x18A9 || // Mn MONGOLIAN LETTER ALI GALI DAGALGA\n\t\t( 0x1920 <= code && code <= 0x1922 ) || // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U\n\t\t( 0x1927 <= code && code <= 0x1928 ) || // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O\n\t\tcode === 0x1932 || // Mn LIMBU SMALL LETTER ANUSVARA\n\t\t( 0x1939 <= code && code <= 0x193B ) || // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I\n\t\t( 0x1A17 <= code && code <= 0x1A18 ) || // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U\n\t\tcode === 0x1A1B || // Mn BUGINESE VOWEL SIGN AE\n\t\tcode === 0x1A56 || // Mn TAI THAM CONSONANT SIGN MEDIAL LA\n\t\t( 0x1A58 <= code && code <= 0x1A5E ) || // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA\n\t\tcode === 0x1A60 || // Mn TAI THAM SIGN SAKOT\n\t\tcode === 0x1A62 || // Mn TAI THAM VOWEL SIGN MAI SAT\n\t\t( 0x1A65 <= code && code <= 0x1A6C ) || // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW\n\t\t( 0x1A73 <= code && code <= 0x1A7C ) || // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN\n\t\tcode === 0x1A7F || // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT\n\t\t( 0x1AB0 <= code && code <= 0x1ABD ) || // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW\n\t\tcode === 0x1ABE || // Me COMBINING PARENTHESES OVERLAY\n\t\t( 0x1ABF <= code && code <= 0x1AC0 ) || // Mn [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW\n\t\t( 0x1B00 <= code && code <= 0x1B03 ) || // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG\n\t\tcode === 0x1B34 || // Mn BALINESE SIGN REREKAN\n\t\tcode === 0x1B35 || // Mc BALINESE VOWEL SIGN TEDUNG\n\t\t( 0x1B36 <= code && code <= 0x1B3A) || // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA\n\t\tcode === 0x1B3C || // Mn BALINESE VOWEL SIGN LA LENGA\n\t\tcode === 0x1B42 || // Mn BALINESE VOWEL SIGN PEPET\n\t\t( 0x1B6B <= code && code <= 0x1B73 ) || // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG\n\t\t( 0x1B80 <= code && code <= 0x1B81 ) || // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR\n\t\t( 0x1BA2 <= code && code <= 0x1BA5 ) || // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU\n\t\t( 0x1BA8 <= code && code <= 0x1BA9 ) || // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG\n\t\t( 0x1BAB <= code && code <= 0x1BAD ) || // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA\n\t\tcode === 0x1BE6 || // Mn BATAK SIGN TOMPI\n\t\t( 0x1BE8 <= code && code <= 0x1BE9) || // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE\n\t\tcode === 0x1BED || // Mn BATAK VOWEL SIGN KARO O\n\t\t( 0x1BEF <= code && code <= 0x1BF1 ) || // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H\n\t\t( 0x1C2C <= code && code <= 0x1C33 ) || // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T\n\t\t( 0x1C36 <= code && code <= 0x1C37 ) || // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA\n\t\t( 0x1CD0 <= code && code <= 0x1CD2 ) || // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA\n\t\t( 0x1CD4 <= code && code <= 0x1CE0 ) || // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA\n\t\t( 0x1CE2 <= code && code <= 0x1CE8 ) || // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL\n\t\tcode === 0x1CED || // Mn VEDIC SIGN TIRYAK\n\t\tcode === 0x1CF4 || // Mn VEDIC TONE CANDRA ABOVE\n\t\t( 0x1CF8 <= code && code <= 0x1CF9 ) || // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE\n\t\t( 0x1DC0 <= code && code <= 0x1DF9 ) || // Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW\n\t\t( 0x1DFB <= code && code <= 0x1DFF ) || // Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW\n\t\tcode === 0x200C || // Cf ZERO WIDTH NON-JOINER\n\t\t( 0x20D0 <= code && code <= 0x20DC ) || // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE\n\t\t( 0x20DD <= code && code <= 0x20E0 ) || // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH\n\t\tcode === 0x20E1 || // Mn COMBINING LEFT RIGHT ARROW ABOVE\n\t\t( 0x20E2 <= code && code <= 0x20E4 ) || // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE\n\t\t( 0x20E5 <= code && code <= 0x20F0 ) || // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE\n\t\t( 0x2CEF <= code && code <= 0x2CF1 ) || // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS\n\t\tcode === 0x2D7F || // Mn TIFINAGH CONSONANT JOINER\n\t\t( 0x2DE0 <= code && code <= 0x2DFF ) || // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS\n\t\t( 0x302A <= code && code <= 0x302D ) || // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK\n\t\t( 0x302E <= code && code <= 0x302F ) || // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK\n\t\t( 0x3099 <= code && code <= 0x309A ) || // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK\n\t\tcode === 0xA66F || // Mn COMBINING CYRILLIC VZMET\n\t\t( 0xA670 <= code && code <= 0xA672 ) || // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN\n\t\t( 0xA674 <= code && code <= 0xA67D ) || // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK\n\t\t( 0xA69E <= code && code <= 0xA69F ) || // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E\n\t\t( 0xA6F0 <= code && code <= 0xA6F1 ) || // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS\n\t\tcode === 0xA802 || // Mn SYLOTI NAGRI SIGN DVISVARA\n\t\tcode === 0xA806 || // Mn SYLOTI NAGRI SIGN HASANTA\n\t\tcode === 0xA80B || // Mn SYLOTI NAGRI SIGN ANUSVARA\n\t\t( 0xA825 <= code && code <= 0xA826 ) || // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E\n\t\tcode === 0xA82C || // Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA\n\t\t( 0xA8C4 <= code && code <= 0xA8C5 ) || // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU\n\t\t( 0xA8E0 <= code && code <= 0xA8F1 ) || // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA\n\t\tcode === 0xA8FF || // Mn DEVANAGARI VOWEL SIGN AY\n\t\t( 0xA926 <= code && code <= 0xA92D ) || // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU\n\t\t( 0xA947 <= code && code <= 0xA951 ) || // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R\n\t\t( 0xA980 <= code && code <= 0xA982 ) || // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR\n\t\tcode === 0xA9B3 || // Mn JAVANESE SIGN CECAK TELU\n\t\t( 0xA9B6 <= code && code <= 0xA9B9 ) || // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT\n\t\t( 0xA9BC <= code && code <= 0xA9BD ) || // Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET\n\t\tcode === 0xA9E5 || // Mn MYANMAR SIGN SHAN SAW\n\t\t( 0xAA29 <= code && code <= 0xAA2E ) || // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE\n\t\t( 0xAA31 <= code && code <= 0xAA32 ) || // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE\n\t\t( 0xAA35 <= code && code <= 0xAA36 ) || // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA\n\t\tcode === 0xAA43 || // Mn CHAM CONSONANT SIGN FINAL NG\n\t\tcode === 0xAA4C || // Mn CHAM CONSONANT SIGN FINAL M\n\t\tcode === 0xAA7C || // Mn MYANMAR SIGN TAI LAING TONE-2\n\t\tcode === 0xAAB0 || // Mn TAI VIET MAI KANG\n\t\t( 0xAAB2 <= code && code <= 0xAAB4 ) || // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U\n\t\t( 0xAAB7 <= code && code <= 0xAAB8 ) || // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA\n\t\t( 0xAABE <= code && code <= 0xAABF ) || // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK\n\t\tcode === 0xAAC1 || // Mn TAI VIET TONE MAI THO\n\t\t( 0xAAEC <= code && code <= 0xAAED ) || // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI\n\t\tcode === 0xAAF6 || // Mn MEETEI MAYEK VIRAMA\n\t\tcode === 0xABE5 || // Mn MEETEI MAYEK VOWEL SIGN ANAP\n\t\tcode === 0xABE8 || // Mn MEETEI MAYEK VOWEL SIGN UNAP\n\t\tcode === 0xABED || // Mn MEETEI MAYEK APUN IYEK\n\t\tcode === 0xFB1E || // Mn HEBREW POINT JUDEO-SPANISH VARIKA\n\t\t( 0xFE00 <= code && code <= 0xFE0F ) || // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16\n\t\t( 0xFE20 <= code && code <= 0xFE2F ) || // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF\n\t\t( 0xFF9E <= code && code <= 0xFF9F ) || // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK\n\t\tcode === 0x101FD || // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE\n\t\tcode === 0x102E0 || // Mn COPTIC EPACT THOUSANDS MARK\n\t\t( 0x10376 <= code && code <= 0x1037A ) || // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII\n\t\t( 0x10A01 <= code && code <= 0x10A03 ) || // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R\n\t\t( 0x10A05 <= code && code <= 0x10A06 ) || // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O\n\t\t( 0x10A0C <= code && code <= 0x10A0F ) || // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA\n\t\t( 0x10A38 <= code && code <= 0x10A3A ) || // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW\n\t\tcode === 0x10A3F || // Mn KHAROSHTHI VIRAMA\n\t\t( 0x10AE5 <= code && code <= 0x10AE6 ) || // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW\n\t\t( 0x10D24 <= code && code <= 0x10D27 ) || // Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI\n\t\t( 0x10EAB <= code && code <= 0x10EAC ) || // Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK\n\t\t( 0x10F46 <= code && code <= 0x10F50 ) || // Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW\n\t\tcode === 0x11001 || // Mn BRAHMI SIGN ANUSVARA\n\t\t( 0x11038 <= code && code <= 0x11046 ) || // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA\n\t\t( 0x1107F <= code && code <= 0x11081 ) || // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA\n\t\t( 0x110B3 <= code && code <= 0x110B6 ) || // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI\n\t\t( 0x110B9 <= code && code <= 0x110BA ) || // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA\n\t\t( 0x11100 <= code && code <= 0x11102 ) || // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA\n\t\t( 0x11127 <= code && code <= 0x1112B ) || // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU\n\t\t( 0x1112D <= code && code <= 0x11134 ) || // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA\n\t\tcode === 0x11173 || // Mn MAHAJANI SIGN NUKTA\n\t\t( 0x11180 <= code && code <= 0x11181 ) || // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA\n\t\t( 0x111B6 <= code && code <= 0x111BE ) || // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O\n\t\t( 0x111C9 <= code && code <= 0x111CC ) || // Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK\n\t\tcode === 0x111CF || // Mn SHARADA SIGN INVERTED CANDRABINDU\n\t\t( 0x1122F <= code && code <= 0x11231 ) || // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI\n\t\tcode === 0x11234 || // Mn KHOJKI SIGN ANUSVARA\n\t\t( 0x11236 <= code && code <= 0x11237 ) || // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA\n\t\tcode === 0x1123E || // Mn KHOJKI SIGN SUKUN\n\t\tcode === 0x112DF || // Mn KHUDAWADI SIGN ANUSVARA\n\t\t( 0x112E3 <= code && code <= 0x112EA ) || // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA\n\t\t( 0x11300 <= code && code <= 0x11301 ) || // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU\n\t\t( 0x1133B <= code && code <= 0x1133C ) || // Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA\n\t\tcode === 0x1133E || // Mc GRANTHA VOWEL SIGN AA\n\t\tcode === 0x11340 || // Mn GRANTHA VOWEL SIGN II\n\t\tcode === 0x11357 || // Mc GRANTHA AU LENGTH MARK\n\t\t( 0x11366 <= code && code <= 0x1136C ) || // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX\n\t\t( 0x11370 <= code && code <= 0x11374 ) || // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA\n\t\t( 0x11438 <= code && code <= 0x1143F ) || // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI\n\t\t( 0x11442 <= code && code <= 0x11444 ) || // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA\n\t\tcode === 0x11446 || // Mn NEWA SIGN NUKTA\n\t\tcode === 0x1145E || // Mn NEWA SANDHI MARK\n\t\tcode === 0x114B0 || // Mc TIRHUTA VOWEL SIGN AA\n\t\t( 0x114B3 <= code && code <= 0x114B8 ) || // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL\n\t\tcode === 0x114BA || // Mn TIRHUTA VOWEL SIGN SHORT E\n\t\tcode === 0x114BD || // Mc TIRHUTA VOWEL SIGN SHORT O\n\t\t( 0x114BF <= code && code <= 0x114C0 ) || // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA\n\t\t( 0x114C2 <= code && code <= 0x114C3 ) || // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA\n\t\tcode === 0x115AF || // Mc SIDDHAM VOWEL SIGN AA\n\t\t( 0x115B2 <= code && code <= 0x115B5 ) || // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR\n\t\t( 0x115BC <= code && code <= 0x115BD ) || // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA\n\t\t( 0x115BF <= code && code <= 0x115C0 ) || // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA\n\t\t( 0x115DC <= code && code <= 0x115DD ) || // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU\n\t\t( 0x11633 <= code && code <= 0x1163A ) || // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI\n\t\tcode === 0x1163D || // Mn MODI SIGN ANUSVARA\n\t\t( 0x1163F <= code && code <= 0x11640 ) || // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA\n\t\tcode === 0x116AB || // Mn TAKRI SIGN ANUSVARA\n\t\tcode === 0x116AD || // Mn TAKRI VOWEL SIGN AA\n\t\t( 0x116B0 <= code && code <= 0x116B5 ) || // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU\n\t\tcode === 0x116B7 || // Mn TAKRI SIGN NUKTA\n\t\t( 0x1171D <= code && code <= 0x1171F ) || // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA\n\t\t( 0x11722 <= code && code <= 0x11725 ) || // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU\n\t\t( 0x11727 <= code && code <= 0x1172B ) || // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER\n\t\t( 0x1182F <= code && code <= 0x11837 ) || // Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA\n\t\t( 0x11839 <= code && code <= 0x1183A ) || // Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA\n\t\tcode === 0x11930 || // Mc DIVES AKURU VOWEL SIGN AA\n\t\t( 0x1193B <= code && code <= 0x1193C ) || // Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU\n\t\tcode === 0x1193E || // Mn DIVES AKURU VIRAMA\n\t\tcode === 0x11943 || // Mn DIVES AKURU SIGN NUKTA\n\t\t( 0x119D4 <= code && code <= 0x119D7 ) || // Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR\n\t\t( 0x119DA <= code && code <= 0x119DB ) || // Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI\n\t\tcode === 0x119E0 || // Mn NANDINAGARI SIGN VIRAMA\n\t\t( 0x11A01 <= code && code <= 0x11A0A ) || // Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK\n\t\t( 0x11A33 <= code && code <= 0x11A38 ) || // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA\n\t\t( 0x11A3B <= code && code <= 0x11A3E ) || // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA\n\t\tcode === 0x11A47 || // Mn ZANABAZAR SQUARE SUBJOINER\n\t\t( 0x11A51 <= code && code <= 0x11A56 ) || // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE\n\t\t( 0x11A59 <= code && code <= 0x11A5B ) || // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK\n\t\t( 0x11A8A <= code && code <= 0x11A96 ) || // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA\n\t\t( 0x11A98 <= code && code <= 0x11A99 ) || // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER\n\t\t( 0x11C30 <= code && code <= 0x11C36 ) || // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L\n\t\t( 0x11C38 <= code && code <= 0x11C3D ) || // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA\n\t\tcode === 0x11C3F || // Mn BHAIKSUKI SIGN VIRAMA\n\t\t( 0x11C92 <= code && code <= 0x11CA7 ) || // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA\n\t\t( 0x11CAA <= code && code <= 0x11CB0 ) || // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA\n\t\t( 0x11CB2 <= code && code <= 0x11CB3 ) || // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E\n\t\t( 0x11CB5 <= code && code <= 0x11CB6 ) || // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU\n\t\t( 0x11D31 <= code && code <= 0x11D36 ) || // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R\n\t\tcode === 0x11D3A || // Mn MASARAM GONDI VOWEL SIGN E\n\t\t( 0x11D3C <= code && code <= 0x11D3D ) || // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O\n\t\t( 0x11D3F <= code && code <= 0x11D45 ) || // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA\n\t\tcode === 0x11D47 || // Mn MASARAM GONDI RA-KARA\n\t\t( 0x11D90 <= code && code <= 0x11D91 ) || // Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI\n\t\tcode === 0x11D95 || // Mn GUNJALA GONDI SIGN ANUSVARA\n\t\tcode === 0x11D97 || // Mn GUNJALA GONDI VIRAMA\n\t\t( 0x11EF3 <= code && code <= 0x11EF4 ) || // Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U\n\t\t( 0x16AF0 <= code && code <= 0x16AF4 ) || // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE\n\t\t( 0x16B30 <= code && code <= 0x16B36 ) || // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM\n\t\tcode === 0x16F4F || // Mn MIAO SIGN CONSONANT MODIFIER BAR\n\t\t( 0x16F8F <= code && code <= 0x16F92 ) || // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW\n\t\tcode === 0x16FE4 || // Mn KHITAN SMALL SCRIPT FILLER\n\t\t( 0x1BC9D <= code && code <= 0x1BC9E ) || // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK\n\t\tcode === 0x1D165 || // Mc MUSICAL SYMBOL COMBINING STEM\n\t\t( 0x1D167 <= code && code <= 0x1D169 ) || // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3\n\t\t( 0x1D16E <= code && code <= 0x1D172 ) || // Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5\n\t\t( 0x1D17B <= code && code <= 0x1D182 ) || // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE\n\t\t( 0x1D185 <= code && code <= 0x1D18B ) || // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE\n\t\t( 0x1D1AA <= code && code <= 0x1D1AD ) || // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO\n\t\t( 0x1D242 <= code && code <= 0x1D244 ) || // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME\n\t\t( 0x1DA00 <= code && code <= 0x1DA36 ) || // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN\n\t\t( 0x1DA3B <= code && code <= 0x1DA6C ) || // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT\n\t\tcode === 0x1DA75 || // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS\n\t\tcode === 0x1DA84 || // Mn SIGNWRITING LOCATION HEAD NECK\n\t\t( 0x1DA9B <= code && code <= 0x1DA9F ) || // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6\n\t\t( 0x1DAA1 <= code && code <= 0x1DAAF ) || // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16\n\t\t( 0x1E000 <= code && code <= 0x1E006 ) || // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE\n\t\t( 0x1E008 <= code && code <= 0x1E018 ) || // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU\n\t\t( 0x1E01B <= code && code <= 0x1E021 ) || // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI\n\t\t( 0x1E023 <= code && code <= 0x1E024 ) || // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS\n\t\t( 0x1E026 <= code && code <= 0x1E02A ) || // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA\n\t\t( 0x1E130 <= code && code <= 0x1E136 ) || // Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D\n\t\t( 0x1E2EC <= code && code <= 0x1E2EF ) || // Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI\n\t\t( 0x1E8D0 <= code && code <= 0x1E8D6 ) || // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS\n\t\t( 0x1E944 <= code && code <= 0x1E94A ) || // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA\n\t\t( 0x1F3FB <= code && code <= 0x1F3FF ) || // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6\n\t\t( 0xE0020 <= code && code <= 0xE007F ) || // Cf [96] TAG SPACE..CANCEL TAG\n\t\t( 0xE0100 <= code && code <= 0xE01EF ) // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256\n\t) {\n\t\treturn constants.Extend;\n\t}\n\tif (\n\t\t( 0x1F1E6 <= code && code <= 0x1F1FF ) // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z\n\t) {\n\t\treturn constants.RegionalIndicator;\n\t}\n\tif (\n\t\tcode === 0x0903 || // Mc DEVANAGARI SIGN VISARGA\n\t\tcode === 0x093B || // Mc DEVANAGARI VOWEL SIGN OOE\n\t\t( 0x093E <= code && code <= 0x0940 ) || // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II\n\t\t( 0x0949 <= code && code <= 0x094C ) || // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU\n\t\t( 0x094E <= code && code <= 0x094F ) || // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW\n\t\t( 0x0982 <= code && code <= 0x0983 ) || // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA\n\t\t( 0x09BF <= code && code <= 0x09C0 ) || // Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II\n\t\t( 0x09C7 <= code && code <= 0x09C8 ) || // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI\n\t\t( 0x09CB <= code && code <= 0x09CC ) || // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU\n\t\tcode === 0x0A03 || // Mc GURMUKHI SIGN VISARGA\n\t\t( 0x0A3E <= code && code <= 0x0A40 ) || // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II\n\t\tcode === 0x0A83 || // Mc GUJARATI SIGN VISARGA\n\t\t( 0x0ABE <= code && code <= 0x0AC0 ) || // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II\n\t\tcode === 0x0AC9 || // Mc GUJARATI VOWEL SIGN CANDRA O\n\t\t( 0x0ACB <= code && code <= 0x0ACC ) || // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU\n\t\t( 0x0B02 <= code && code <= 0x0B03 ) || // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA\n\t\tcode === 0x0B40 || // Mc ORIYA VOWEL SIGN II\n\t\t( 0x0B47 <= code && code <= 0x0B48 ) || // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI\n\t\t( 0x0B4B <= code && code <= 0x0B4C ) || // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU\n\t\tcode === 0x0BBF || // Mc TAMIL VOWEL SIGN I\n\t\t( 0x0BC1 <= code && code <= 0x0BC2 ) || // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU\n\t\t( 0x0BC6 <= code && code <= 0x0BC8 ) || // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI\n\t\t( 0x0BCA <= code && code <= 0x0BCC ) || // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU\n\t\t( 0x0C01 <= code && code <= 0x0C03 ) || // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA\n\t\t( 0x0C41 <= code && code <= 0x0C44 ) || // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR\n\t\t( 0x0C82 <= code && code <= 0x0C83 ) || // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA\n\t\tcode === 0x0CBE || // Mc KANNADA VOWEL SIGN AA\n\t\t( 0x0CC0 <= code && code <= 0x0CC1 ) || // Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U\n\t\t( 0x0CC3 <= code && code <= 0x0CC4 ) || // Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR\n\t\t( 0x0CC7 <= code && code <= 0x0CC8 ) || // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI\n\t\t( 0x0CCA <= code && code <= 0x0CCB ) || // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO\n\t\t( 0x0D02 <= code && code <= 0x0D03 ) || // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA\n\t\t( 0x0D3F <= code && code <= 0x0D40 ) || // Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II\n\t\t( 0x0D46 <= code && code <= 0x0D48 ) || // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI\n\t\t( 0x0D4A <= code && code <= 0x0D4C ) || // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU\n\t\t( 0x0D82 <= code && code <= 0x0D83 ) || // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA\n\t\t( 0x0DD0 <= code && code <= 0x0DD1 ) || // Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA\n\t\t( 0x0DD8 <= code && code <= 0x0DDE ) || // Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA\n\t\t( 0x0DF2 <= code && code <= 0x0DF3 ) || // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA\n\t\tcode === 0x0E33 || // Lo THAI CHARACTER SARA AM\n\t\tcode === 0x0EB3 || // Lo LAO VOWEL SIGN AM\n\t\t( 0x0F3E <= code && code <= 0x0F3F ) || // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES\n\t\tcode === 0x0F7F || // Mc TIBETAN SIGN RNAM BCAD\n\t\tcode === 0x1031 || // Mc MYANMAR VOWEL SIGN E\n\t\t( 0x103B <= code && code <= 0x103C ) || // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA\n\t\t( 0x1056 <= code && code <= 0x1057 ) || // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR\n\t\tcode === 0x1084 || // Mc MYANMAR VOWEL SIGN SHAN E\n\t\tcode === 0x17B6 || // Mc KHMER VOWEL SIGN AA\n\t\t( 0x17BE <= code && code <= 0x17C5 ) || // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU\n\t\t( 0x17C7 <= code && code <= 0x17C8 ) || // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU\n\t\t( 0x1923 <= code && code <= 0x1926 ) || // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU\n\t\t( 0x1929 <= code && code <= 0x192B ) || // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA\n\t\t( 0x1930 <= code && code <= 0x1931 ) || // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA\n\t\t( 0x1933 <= code && code <= 0x1938 ) || // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA\n\t\t( 0x1A19 <= code && code <= 0x1A1A ) || // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O\n\t\tcode === 0x1A55 || // Mc TAI THAM CONSONANT SIGN MEDIAL RA\n\t\tcode === 0x1A57 || // Mc TAI THAM CONSONANT SIGN LA TANG LAI\n\t\t( 0x1A6D <= code && code <= 0x1A72 ) || // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI\n\t\tcode === 0x1B04 || // Mc BALINESE SIGN BISAH\n\t\tcode === 0x1B3B || // Mc BALINESE VOWEL SIGN RA REPA TEDUNG\n\t\t( 0x1B3D <= code && code <= 0x1B41 ) || // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG\n\t\t( 0x1B43 <= code && code <= 0x1B44 ) || // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG\n\t\tcode === 0x1B82 || // Mc SUNDANESE SIGN PANGWISAD\n\t\tcode === 0x1BA1 || // Mc SUNDANESE CONSONANT SIGN PAMINGKAL\n\t\t( 0x1BA6 <= code && code <= 0x1BA7 ) || // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG\n\t\tcode === 0x1BAA || // Mc SUNDANESE SIGN PAMAAEH\n\t\tcode === 0x1BE7 || // Mc BATAK VOWEL SIGN E\n\t\t( 0x1BEA <= code && code <= 0x1BEC ) || // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O\n\t\tcode === 0x1BEE || // Mc BATAK VOWEL SIGN U\n\t\t( 0x1BF2 <= code && code <= 0x1BF3 ) || // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN\n\t\t( 0x1C24 <= code && code <= 0x1C2B ) || // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU\n\t\t( 0x1C34 <= code && code <= 0x1C35 ) || // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG\n\t\tcode === 0x1CE1 || // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA\n\t\tcode === 0x1CF7 || // Mc VEDIC SIGN ATIKRAMA\n\t\t( 0xA823 <= code && code <= 0xA824 ) || // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I\n\t\tcode === 0xA827 || // Mc SYLOTI NAGRI VOWEL SIGN OO\n\t\t( 0xA880 <= code && code <= 0xA881 ) || // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA\n\t\t( 0xA8B4 <= code && code <= 0xA8C3 ) || // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU\n\t\t( 0xA952 <= code && code <= 0xA953 ) || // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA\n\t\tcode === 0xA983 || // Mc JAVANESE SIGN WIGNYAN\n\t\t( 0xA9B4 <= code && code <= 0xA9B5 ) || // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG\n\t\t( 0xA9BA <= code && code <= 0xA9BB ) || // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE\n\t\t( 0xA9BE <= code && code <= 0xA9C0 ) || // Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON\n\t\t( 0xAA2F <= code && code <= 0xAA30 ) || // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI\n\t\t( 0xAA33 <= code && code <= 0xAA34 ) || // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA\n\t\tcode === 0xAA4D || // Mc CHAM CONSONANT SIGN FINAL H\n\t\tcode === 0xAAEB || // Mc MEETEI MAYEK VOWEL SIGN II\n\t\t( 0xAAEE <= code && code <= 0xAAEF ) || // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU\n\t\tcode === 0xAAF5 || // Mc MEETEI MAYEK VOWEL SIGN VISARGA\n\t\t( 0xABE3 <= code && code <= 0xABE4 ) || // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP\n\t\t( 0xABE6 <= code && code <= 0xABE7 ) || // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP\n\t\t( 0xABE9 <= code && code <= 0xABEA ) || // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG\n\t\tcode === 0xABEC || // Mc MEETEI MAYEK LUM IYEK\n\t\tcode === 0x11000 || // Mc BRAHMI SIGN CANDRABINDU\n\t\tcode === 0x11002 || // Mc BRAHMI SIGN VISARGA\n\t\tcode === 0x11082 || // Mc KAITHI SIGN VISARGA\n\t\t( 0x110B0 <= code && code <= 0x110B2 ) || // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II\n\t\t( 0x110B7 <= code && code <= 0x110B8 ) || // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU\n\t\tcode === 0x1112C || // Mc CHAKMA VOWEL SIGN E\n\t\t( 0x11145 <= code && code <= 0x11146 ) || // Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI\n\t\tcode === 0x11182 || // Mc SHARADA SIGN VISARGA\n\t\t( 0x111B3 <= code && code <= 0x111B5 ) || // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II\n\t\t( 0x111BF <= code && code <= 0x111C0 ) || // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA\n\t\tcode === 0x111CE || // Mc SHARADA VOWEL SIGN PRISHTHAMATRA E\n\t\t( 0x1122C <= code && code <= 0x1122E ) || // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II\n\t\t( 0x11232 <= code && code <= 0x11233 ) || // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU\n\t\tcode === 0x11235 || // Mc KHOJKI SIGN VIRAMA\n\t\t( 0x112E0 <= code && code <= 0x112E2 ) || // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II\n\t\t( 0x11302 <= code && code <= 0x11303 ) || // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA\n\t\tcode === 0x1133F || // Mc GRANTHA VOWEL SIGN I\n\t\t( 0x11341 <= code && code <= 0x11344 ) || // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR\n\t\t( 0x11347 <= code && code <= 0x11348 ) || // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI\n\t\t( 0x1134B <= code && code <= 0x1134D ) || // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA\n\t\t( 0x11362 <= code && code <= 0x11363 ) || // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL\n\t\t( 0x11435 <= code && code <= 0x11437 ) || // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II\n\t\t( 0x11440 <= code && code <= 0x11441 ) || // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU\n\t\tcode === 0x11445 || // Mc NEWA SIGN VISARGA\n\t\t( 0x114B1 <= code && code <= 0x114B2 ) || // Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II\n\t\tcode === 0x114B9 || // Mc TIRHUTA VOWEL SIGN E\n\t\t( 0x114BB <= code && code <= 0x114BC ) || // Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O\n\t\tcode === 0x114BE || // Mc TIRHUTA VOWEL SIGN AU\n\t\tcode === 0x114C1 || // Mc TIRHUTA SIGN VISARGA\n\t\t( 0x115B0 <= code && code <= 0x115B1 ) || // Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II\n\t\t( 0x115B8 <= code && code <= 0x115BB ) || // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU\n\t\tcode === 0x115BE || // Mc SIDDHAM SIGN VISARGA\n\t\t( 0x11630 <= code && code <= 0x11632 ) || // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II\n\t\t( 0x1163B <= code && code <= 0x1163C ) || // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU\n\t\tcode === 0x1163E || // Mc MODI SIGN VISARGA\n\t\tcode === 0x116AC || // Mc TAKRI SIGN VISARGA\n\t\t( 0x116AE <= code && code <= 0x116AF ) || // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II\n\t\tcode === 0x116B6 || // Mc TAKRI SIGN VIRAMA\n\t\t( 0x11720 <= code && code <= 0x11721 ) || // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA\n\t\tcode === 0x11726 || // Mc AHOM VOWEL SIGN E\n\t\t( 0x1182C <= code && code <= 0x1182E ) || // Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II\n\t\tcode === 0x11838 || // Mc DOGRA SIGN VISARGA\n\t\t( 0x11931 <= code && code <= 0x11935 ) || // Mc [5] DIVES AKURU VOWEL SIGN I..DIVES AKURU VOWEL SIGN E\n\t\t( 0x11937 <= code && code <= 0x11938 ) || // Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O\n\t\tcode === 0x1193D || // Mc DIVES AKURU SIGN HALANTA\n\t\tcode === 0x11940 || // Mc DIVES AKURU MEDIAL YA\n\t\tcode === 0x11942 || // Mc DIVES AKURU MEDIAL RA\n\t\t( 0x119D1 <= code && code <= 0x119D3 ) || // Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II\n\t\t( 0x119DC <= code && code <= 0x119DF ) || // Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA\n\t\tcode === 0x119E4 || // Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E\n\t\tcode === 0x11A39 || // Mc ZANABAZAR SQUARE SIGN VISARGA\n\t\t( 0x11A57 <= code && code <= 0x11A58 ) || // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU\n\t\tcode === 0x11A97 || // Mc SOYOMBO SIGN VISARGA\n\t\tcode === 0x11C2F || // Mc BHAIKSUKI VOWEL SIGN AA\n\t\tcode === 0x11C3E || // Mc BHAIKSUKI SIGN VISARGA\n\t\tcode === 0x11CA9 || // Mc MARCHEN SUBJOINED LETTER YA\n\t\tcode === 0x11CB1 || // Mc MARCHEN VOWEL SIGN I\n\t\tcode === 0x11CB4 || // Mc MARCHEN VOWEL SIGN O\n\t\t( 0x11D8A <= code && code <= 0x11D8E ) || // Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU\n\t\t( 0x11D93 <= code && code <= 0x11D94 ) || // Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU\n\t\tcode === 0x11D96 || // Mc GUNJALA GONDI SIGN VISARGA\n\t\t( 0x11EF5 <= code && code <= 0x11EF6 ) || // Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O\n\t\t( 0x16F51 <= code && code <= 0x16F87 ) || // Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI\n\t\t( 0x16FF0 <= code && code <= 0x16FF1 ) || // Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY\n\t\tcode === 0x1D166 || // Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM\n\t\tcode === 0x1D16D // Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT\n\t) {\n\t\treturn constants.SpacingMark;\n\t}\n\tif (\n\t\t( 0x1100 <= code && code <= 0x115F ) || // Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER\n\t\t( 0xA960 <= code && code <= 0xA97C ) // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH\n\t) {\n\t\treturn constants.L;\n\t}\n\tif (\n\t\t( 0x1160 <= code && code <= 0x11A7 ) || // Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE\n\t\t( 0xD7B0 <= code && code <= 0xD7C6 ) // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E\n\t) {\n\t\treturn constants.V;\n\t}\n\tif (\n\t\t( 0x11A8 <= code && code <= 0x11FF ) || // Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN\n\t\t( 0xD7CB <= code && code <= 0xD7FB ) // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH\n\t) {\n\t\treturn constants.T;\n\t}\n\tif (\n\t\tcode === 0xAC00 || // Lo HANGUL SYLLABLE GA\n\t\tcode === 0xAC1C || // Lo HANGUL SYLLABLE GAE\n\t\tcode === 0xAC38 || // Lo HANGUL SYLLABLE GYA\n\t\tcode === 0xAC54 || // Lo HANGUL SYLLABLE GYAE\n\t\tcode === 0xAC70 || // Lo HANGUL SYLLABLE GEO\n\t\tcode === 0xAC8C || // Lo HANGUL SYLLABLE GE\n\t\tcode === 0xACA8 || // Lo HANGUL SYLLABLE GYEO\n\t\tcode === 0xACC4 || // Lo HANGUL SYLLABLE GYE\n\t\tcode === 0xACE0 || // Lo HANGUL SYLLABLE GO\n\t\tcode === 0xACFC || // Lo HANGUL SYLLABLE GWA\n\t\tcode === 0xAD18 || // Lo HANGUL SYLLABLE GWAE\n\t\tcode === 0xAD34 || // Lo HANGUL SYLLABLE GOE\n\t\tcode === 0xAD50 || // Lo HANGUL SYLLABLE GYO\n\t\tcode === 0xAD6C || // Lo HANGUL SYLLABLE GU\n\t\tcode === 0xAD88 || // Lo HANGUL SYLLABLE GWEO\n\t\tcode === 0xADA4 || // Lo HANGUL SYLLABLE GWE\n\t\tcode === 0xADC0 || // Lo HANGUL SYLLABLE GWI\n\t\tcode === 0xADDC || // Lo HANGUL SYLLABLE GYU\n\t\tcode === 0xADF8 || // Lo HANGUL SYLLABLE GEU\n\t\tcode === 0xAE14 || // Lo HANGUL SYLLABLE GYI\n\t\tcode === 0xAE30 || // Lo HANGUL SYLLABLE GI\n\t\tcode === 0xAE4C || // Lo HANGUL SYLLABLE GGA\n\t\tcode === 0xAE68 || // Lo HANGUL SYLLABLE GGAE\n\t\tcode === 0xAE84 || // Lo HANGUL SYLLABLE GGYA\n\t\tcode === 0xAEA0 || // Lo HANGUL SYLLABLE GGYAE\n\t\tcode === 0xAEBC || // Lo HANGUL SYLLABLE GGEO\n\t\tcode === 0xAED8 || // Lo HANGUL SYLLABLE GGE\n\t\tcode === 0xAEF4 || // Lo HANGUL SYLLABLE GGYEO\n\t\tcode === 0xAF10 || // Lo HANGUL SYLLABLE GGYE\n\t\tcode === 0xAF2C || // Lo HANGUL SYLLABLE GGO\n\t\tcode === 0xAF48 || // Lo HANGUL SYLLABLE GGWA\n\t\tcode === 0xAF64 || // Lo HANGUL SYLLABLE GGWAE\n\t\tcode === 0xAF80 || // Lo HANGUL SYLLABLE GGOE\n\t\tcode === 0xAF9C || // Lo HANGUL SYLLABLE GGYO\n\t\tcode === 0xAFB8 || // Lo HANGUL SYLLABLE GGU\n\t\tcode === 0xAFD4 || // Lo HANGUL SYLLABLE GGWEO\n\t\tcode === 0xAFF0 || // Lo HANGUL SYLLABLE GGWE\n\t\tcode === 0xB00C || // Lo HANGUL SYLLABLE GGWI\n\t\tcode === 0xB028 || // Lo HANGUL SYLLABLE GGYU\n\t\tcode === 0xB044 || // Lo HANGUL SYLLABLE GGEU\n\t\tcode === 0xB060 || // Lo HANGUL SYLLABLE GGYI\n\t\tcode === 0xB07C || // Lo HANGUL SYLLABLE GGI\n\t\tcode === 0xB098 || // Lo HANGUL SYLLABLE NA\n\t\tcode === 0xB0B4 || // Lo HANGUL SYLLABLE NAE\n\t\tcode === 0xB0D0 || // Lo HANGUL SYLLABLE NYA\n\t\tcode === 0xB0EC || // Lo HANGUL SYLLABLE NYAE\n\t\tcode === 0xB108 || // Lo HANGUL SYLLABLE NEO\n\t\tcode === 0xB124 || // Lo HANGUL SYLLABLE NE\n\t\tcode === 0xB140 || // Lo HANGUL SYLLABLE NYEO\n\t\tcode === 0xB15C || // Lo HANGUL SYLLABLE NYE\n\t\tcode === 0xB178 || // Lo HANGUL SYLLABLE NO\n\t\tcode === 0xB194 || // Lo HANGUL SYLLABLE NWA\n\t\tcode === 0xB1B0 || // Lo HANGUL SYLLABLE NWAE\n\t\tcode === 0xB1CC || // Lo HANGUL SYLLABLE NOE\n\t\tcode === 0xB1E8 || // Lo HANGUL SYLLABLE NYO\n\t\tcode === 0xB204 || // Lo HANGUL SYLLABLE NU\n\t\tcode === 0xB220 || // Lo HANGUL SYLLABLE NWEO\n\t\tcode === 0xB23C || // Lo HANGUL SYLLABLE NWE\n\t\tcode === 0xB258 || // Lo HANGUL SYLLABLE NWI\n\t\tcode === 0xB274 || // Lo HANGUL SYLLABLE NYU\n\t\tcode === 0xB290 || // Lo HANGUL SYLLABLE NEU\n\t\tcode === 0xB2AC || // Lo HANGUL SYLLABLE NYI\n\t\tcode === 0xB2C8 || // Lo HANGUL SYLLABLE NI\n\t\tcode === 0xB2E4 || // Lo HANGUL SYLLABLE DA\n\t\tcode === 0xB300 || // Lo HANGUL SYLLABLE DAE\n\t\tcode === 0xB31C || // Lo HANGUL SYLLABLE DYA\n\t\tcode === 0xB338 || // Lo HANGUL SYLLABLE DYAE\n\t\tcode === 0xB354 || // Lo HANGUL SYLLABLE DEO\n\t\tcode === 0xB370 || // Lo HANGUL SYLLABLE DE\n\t\tcode === 0xB38C || // Lo HANGUL SYLLABLE DYEO\n\t\tcode === 0xB3A8 || // Lo HANGUL SYLLABLE DYE\n\t\tcode === 0xB3C4 || // Lo HANGUL SYLLABLE DO\n\t\tcode === 0xB3E0 || // Lo HANGUL SYLLABLE DWA\n\t\tcode === 0xB3FC || // Lo HANGUL SYLLABLE DWAE\n\t\tcode === 0xB418 || // Lo HANGUL SYLLABLE DOE\n\t\tcode === 0xB434 || // Lo HANGUL SYLLABLE DYO\n\t\tcode === 0xB450 || // Lo HANGUL SYLLABLE DU\n\t\tcode === 0xB46C || // Lo HANGUL SYLLABLE DWEO\n\t\tcode === 0xB488 || // Lo HANGUL SYLLABLE DWE\n\t\tcode === 0xB4A4 || // Lo HANGUL SYLLABLE DWI\n\t\tcode === 0xB4C0 || // Lo HANGUL SYLLABLE DYU\n\t\tcode === 0xB4DC || // Lo HANGUL SYLLABLE DEU\n\t\tcode === 0xB4F8 || // Lo HANGUL SYLLABLE DYI\n\t\tcode === 0xB514 || // Lo HANGUL SYLLABLE DI\n\t\tcode === 0xB530 || // Lo HANGUL SYLLABLE DDA\n\t\tcode === 0xB54C || // Lo HANGUL SYLLABLE DDAE\n\t\tcode === 0xB568 || // Lo HANGUL SYLLABLE DDYA\n\t\tcode === 0xB584 || // Lo HANGUL SYLLABLE DDYAE\n\t\tcode === 0xB5A0 || // Lo HANGUL SYLLABLE DDEO\n\t\tcode === 0xB5BC || // Lo HANGUL SYLLABLE DDE\n\t\tcode === 0xB5D8 || // Lo HANGUL SYLLABLE DDYEO\n\t\tcode === 0xB5F4 || // Lo HANGUL SYLLABLE DDYE\n\t\tcode === 0xB610 || // Lo HANGUL SYLLABLE DDO\n\t\tcode === 0xB62C || // Lo HANGUL SYLLABLE DDWA\n\t\tcode === 0xB648 || // Lo HANGUL SYLLABLE DDWAE\n\t\tcode === 0xB664 || // Lo HANGUL SYLLABLE DDOE\n\t\tcode === 0xB680 || // Lo HANGUL SYLLABLE DDYO\n\t\tcode === 0xB69C || // Lo HANGUL SYLLABLE DDU\n\t\tcode === 0xB6B8 || // Lo HANGUL SYLLABLE DDWEO\n\t\tcode === 0xB6D4 || // Lo HANGUL SYLLABLE DDWE\n\t\tcode === 0xB6F0 || // Lo HANGUL SYLLABLE DDWI\n\t\tcode === 0xB70C || // Lo HANGUL SYLLABLE DDYU\n\t\tcode === 0xB728 || // Lo HANGUL SYLLABLE DDEU\n\t\tcode === 0xB744 || // Lo HANGUL SYLLABLE DDYI\n\t\tcode === 0xB760 || // Lo HANGUL SYLLABLE DDI\n\t\tcode === 0xB77C || // Lo HANGUL SYLLABLE RA\n\t\tcode === 0xB798 || // Lo HANGUL SYLLABLE RAE\n\t\tcode === 0xB7B4 || // Lo HANGUL SYLLABLE RYA\n\t\tcode === 0xB7D0 || // Lo HANGUL SYLLABLE RYAE\n\t\tcode === 0xB7EC || // Lo HANGUL SYLLABLE REO\n\t\tcode === 0xB808 || // Lo HANGUL SYLLABLE RE\n\t\tcode === 0xB824 || // Lo HANGUL SYLLABLE RYEO\n\t\tcode === 0xB840 || // Lo HANGUL SYLLABLE RYE\n\t\tcode === 0xB85C || // Lo HANGUL SYLLABLE RO\n\t\tcode === 0xB878 || // Lo HANGUL SYLLABLE RWA\n\t\tcode === 0xB894 || // Lo HANGUL SYLLABLE RWAE\n\t\tcode === 0xB8B0 || // Lo HANGUL SYLLABLE ROE\n\t\tcode === 0xB8CC || // Lo HANGUL SYLLABLE RYO\n\t\tcode === 0xB8E8 || // Lo HANGUL SYLLABLE RU\n\t\tcode === 0xB904 || // Lo HANGUL SYLLABLE RWEO\n\t\tcode === 0xB920 || // Lo HANGUL SYLLABLE RWE\n\t\tcode === 0xB93C || // Lo HANGUL SYLLABLE RWI\n\t\tcode === 0xB958 || // Lo HANGUL SYLLABLE RYU\n\t\tcode === 0xB974 || // Lo HANGUL SYLLABLE REU\n\t\tcode === 0xB990 || // Lo HANGUL SYLLABLE RYI\n\t\tcode === 0xB9AC || // Lo HANGUL SYLLABLE RI\n\t\tcode === 0xB9C8 || // Lo HANGUL SYLLABLE MA\n\t\tcode === 0xB9E4 || // Lo HANGUL SYLLABLE MAE\n\t\tcode === 0xBA00 || // Lo HANGUL SYLLABLE MYA\n\t\tcode === 0xBA1C || // Lo HANGUL SYLLABLE MYAE\n\t\tcode === 0xBA38 || // Lo HANGUL SYLLABLE MEO\n\t\tcode === 0xBA54 || // Lo HANGUL SYLLABLE ME\n\t\tcode === 0xBA70 || // Lo HANGUL SYLLABLE MYEO\n\t\tcode === 0xBA8C || // Lo HANGUL SYLLABLE MYE\n\t\tcode === 0xBAA8 || // Lo HANGUL SYLLABLE MO\n\t\tcode === 0xBAC4 || // Lo HANGUL SYLLABLE MWA\n\t\tcode === 0xBAE0 || // Lo HANGUL SYLLABLE MWAE\n\t\tcode === 0xBAFC || // Lo HANGUL SYLLABLE MOE\n\t\tcode === 0xBB18 || // Lo HANGUL SYLLABLE MYO\n\t\tcode === 0xBB34 || // Lo HANGUL SYLLABLE MU\n\t\tcode === 0xBB50 || // Lo HANGUL SYLLABLE MWEO\n\t\tcode === 0xBB6C || // Lo HANGUL SYLLABLE MWE\n\t\tcode === 0xBB88 || // Lo HANGUL SYLLABLE MWI\n\t\tcode === 0xBBA4 || // Lo HANGUL SYLLABLE MYU\n\t\tcode === 0xBBC0 || // Lo HANGUL SYLLABLE MEU\n\t\tcode === 0xBBDC || // Lo HANGUL SYLLABLE MYI\n\t\tcode === 0xBBF8 || // Lo HANGUL SYLLABLE MI\n\t\tcode === 0xBC14 || // Lo HANGUL SYLLABLE BA\n\t\tcode === 0xBC30 || // Lo HANGUL SYLLABLE BAE\n\t\tcode === 0xBC4C || // Lo HANGUL SYLLABLE BYA\n\t\tcode === 0xBC68 || // Lo HANGUL SYLLABLE BYAE\n\t\tcode === 0xBC84 || // Lo HANGUL SYLLABLE BEO\n\t\tcode === 0xBCA0 || // Lo HANGUL SYLLABLE BE\n\t\tcode === 0xBCBC || // Lo HANGUL SYLLABLE BYEO\n\t\tcode === 0xBCD8 || // Lo HANGUL SYLLABLE BYE\n\t\tcode === 0xBCF4 || // Lo HANGUL SYLLABLE BO\n\t\tcode === 0xBD10 || // Lo HANGUL SYLLABLE BWA\n\t\tcode === 0xBD2C || // Lo HANGUL SYLLABLE BWAE\n\t\tcode === 0xBD48 || // Lo HANGUL SYLLABLE BOE\n\t\tcode === 0xBD64 || // Lo HANGUL SYLLABLE BYO\n\t\tcode === 0xBD80 || // Lo HANGUL SYLLABLE BU\n\t\tcode === 0xBD9C || // Lo HANGUL SYLLABLE BWEO\n\t\tcode === 0xBDB8 || // Lo HANGUL SYLLABLE BWE\n\t\tcode === 0xBDD4 || // Lo HANGUL SYLLABLE BWI\n\t\tcode === 0xBDF0 || // Lo HANGUL SYLLABLE BYU\n\t\tcode === 0xBE0C || // Lo HANGUL SYLLABLE BEU\n\t\tcode === 0xBE28 || // Lo HANGUL SYLLABLE BYI\n\t\tcode === 0xBE44 || // Lo HANGUL SYLLABLE BI\n\t\tcode === 0xBE60 || // Lo HANGUL SYLLABLE BBA\n\t\tcode === 0xBE7C || // Lo HANGUL SYLLABLE BBAE\n\t\tcode === 0xBE98 || // Lo HANGUL SYLLABLE BBYA\n\t\tcode === 0xBEB4 || // Lo HANGUL SYLLABLE BBYAE\n\t\tcode === 0xBED0 || // Lo HANGUL SYLLABLE BBEO\n\t\tcode === 0xBEEC || // Lo HANGUL SYLLABLE BBE\n\t\tcode === 0xBF08 || // Lo HANGUL SYLLABLE BBYEO\n\t\tcode === 0xBF24 || // Lo HANGUL SYLLABLE BBYE\n\t\tcode === 0xBF40 || // Lo HANGUL SYLLABLE BBO\n\t\tcode === 0xBF5C || // Lo HANGUL SYLLABLE BBWA\n\t\tcode === 0xBF78 || // Lo HANGUL SYLLABLE BBWAE\n\t\tcode === 0xBF94 || // Lo HANGUL SYLLABLE BBOE\n\t\tcode === 0xBFB0 || // Lo HANGUL SYLLABLE BBYO\n\t\tcode === 0xBFCC || // Lo HANGUL SYLLABLE BBU\n\t\tcode === 0xBFE8 || // Lo HANGUL SYLLABLE BBWEO\n\t\tcode === 0xC004 || // Lo HANGUL SYLLABLE BBWE\n\t\tcode === 0xC020 || // Lo HANGUL SYLLABLE BBWI\n\t\tcode === 0xC03C || // Lo HANGUL SYLLABLE BBYU\n\t\tcode === 0xC058 || // Lo HANGUL SYLLABLE BBEU\n\t\tcode === 0xC074 || // Lo HANGUL SYLLABLE BBYI\n\t\tcode === 0xC090 || // Lo HANGUL SYLLABLE BBI\n\t\tcode === 0xC0AC || // Lo HANGUL SYLLABLE SA\n\t\tcode === 0xC0C8 || // Lo HANGUL SYLLABLE SAE\n\t\tcode === 0xC0E4 || // Lo HANGUL SYLLABLE SYA\n\t\tcode === 0xC100 || // Lo HANGUL SYLLABLE SYAE\n\t\tcode === 0xC11C || // Lo HANGUL SYLLABLE SEO\n\t\tcode === 0xC138 || // Lo HANGUL SYLLABLE SE\n\t\tcode === 0xC154 || // Lo HANGUL SYLLABLE SYEO\n\t\tcode === 0xC170 || // Lo HANGUL SYLLABLE SYE\n\t\tcode === 0xC18C || // Lo HANGUL SYLLABLE SO\n\t\tcode === 0xC1A8 || // Lo HANGUL SYLLABLE SWA\n\t\tcode === 0xC1C4 || // Lo HANGUL SYLLABLE SWAE\n\t\tcode === 0xC1E0 || // Lo HANGUL SYLLABLE SOE\n\t\tcode === 0xC1FC || // Lo HANGUL SYLLABLE SYO\n\t\tcode === 0xC218 || // Lo HANGUL SYLLABLE SU\n\t\tcode === 0xC234 || // Lo HANGUL SYLLABLE SWEO\n\t\tcode === 0xC250 || // Lo HANGUL SYLLABLE SWE\n\t\tcode === 0xC26C || // Lo HANGUL SYLLABLE SWI\n\t\tcode === 0xC288 || // Lo HANGUL SYLLABLE SYU\n\t\tcode === 0xC2A4 || // Lo HANGUL SYLLABLE SEU\n\t\tcode === 0xC2C0 || // Lo HANGUL SYLLABLE SYI\n\t\tcode === 0xC2DC || // Lo HANGUL SYLLABLE SI\n\t\tcode === 0xC2F8 || // Lo HANGUL SYLLABLE SSA\n\t\tcode === 0xC314 || // Lo HANGUL SYLLABLE SSAE\n\t\tcode === 0xC330 || // Lo HANGUL SYLLABLE SSYA\n\t\tcode === 0xC34C || // Lo HANGUL SYLLABLE SSYAE\n\t\tcode === 0xC368 || // Lo HANGUL SYLLABLE SSEO\n\t\tcode === 0xC384 || // Lo HANGUL SYLLABLE SSE\n\t\tcode === 0xC3A0 || // Lo HANGUL SYLLABLE SSYEO\n\t\tcode === 0xC3BC || // Lo HANGUL SYLLABLE SSYE\n\t\tcode === 0xC3D8 || // Lo HANGUL SYLLABLE SSO\n\t\tcode === 0xC3F4 || // Lo HANGUL SYLLABLE SSWA\n\t\tcode === 0xC410 || // Lo HANGUL SYLLABLE SSWAE\n\t\tcode === 0xC42C || // Lo HANGUL SYLLABLE SSOE\n\t\tcode === 0xC448 || // Lo HANGUL SYLLABLE SSYO\n\t\tcode === 0xC464 || // Lo HANGUL SYLLABLE SSU\n\t\tcode === 0xC480 || // Lo HANGUL SYLLABLE SSWEO\n\t\tcode === 0xC49C || // Lo HANGUL SYLLABLE SSWE\n\t\tcode === 0xC4B8 || // Lo HANGUL SYLLABLE SSWI\n\t\tcode === 0xC4D4 || // Lo HANGUL SYLLABLE SSYU\n\t\tcode === 0xC4F0 || // Lo HANGUL SYLLABLE SSEU\n\t\tcode === 0xC50C || // Lo HANGUL SYLLABLE SSYI\n\t\tcode === 0xC528 || // Lo HANGUL SYLLABLE SSI\n\t\tcode === 0xC544 || // Lo HANGUL SYLLABLE A\n\t\tcode === 0xC560 || // Lo HANGUL SYLLABLE AE\n\t\tcode === 0xC57C || // Lo HANGUL SYLLABLE YA\n\t\tcode === 0xC598 || // Lo HANGUL SYLLABLE YAE\n\t\tcode === 0xC5B4 || // Lo HANGUL SYLLABLE EO\n\t\tcode === 0xC5D0 || // Lo HANGUL SYLLABLE E\n\t\tcode === 0xC5EC || // Lo HANGUL SYLLABLE YEO\n\t\tcode === 0xC608 || // Lo HANGUL SYLLABLE YE\n\t\tcode === 0xC624 || // Lo HANGUL SYLLABLE O\n\t\tcode === 0xC640 || // Lo HANGUL SYLLABLE WA\n\t\tcode === 0xC65C || // Lo HANGUL SYLLABLE WAE\n\t\tcode === 0xC678 || // Lo HANGUL SYLLABLE OE\n\t\tcode === 0xC694 || // Lo HANGUL SYLLABLE YO\n\t\tcode === 0xC6B0 || // Lo HANGUL SYLLABLE U\n\t\tcode === 0xC6CC || // Lo HANGUL SYLLABLE WEO\n\t\tcode === 0xC6E8 || // Lo HANGUL SYLLABLE WE\n\t\tcode === 0xC704 || // Lo HANGUL SYLLABLE WI\n\t\tcode === 0xC720 || // Lo HANGUL SYLLABLE YU\n\t\tcode === 0xC73C || // Lo HANGUL SYLLABLE EU\n\t\tcode === 0xC758 || // Lo HANGUL SYLLABLE YI\n\t\tcode === 0xC774 || // Lo HANGUL SYLLABLE I\n\t\tcode === 0xC790 || // Lo HANGUL SYLLABLE JA\n\t\tcode === 0xC7AC || // Lo HANGUL SYLLABLE JAE\n\t\tcode === 0xC7C8 || // Lo HANGUL SYLLABLE JYA\n\t\tcode === 0xC7E4 || // Lo HANGUL SYLLABLE JYAE\n\t\tcode === 0xC800 || // Lo HANGUL SYLLABLE JEO\n\t\tcode === 0xC81C || // Lo HANGUL SYLLABLE JE\n\t\tcode === 0xC838 || // Lo HANGUL SYLLABLE JYEO\n\t\tcode === 0xC854 || // Lo HANGUL SYLLABLE JYE\n\t\tcode === 0xC870 || // Lo HANGUL SYLLABLE JO\n\t\tcode === 0xC88C || // Lo HANGUL SYLLABLE JWA\n\t\tcode === 0xC8A8 || // Lo HANGUL SYLLABLE JWAE\n\t\tcode === 0xC8C4 || // Lo HANGUL SYLLABLE JOE\n\t\tcode === 0xC8E0 || // Lo HANGUL SYLLABLE JYO\n\t\tcode === 0xC8FC || // Lo HANGUL SYLLABLE JU\n\t\tcode === 0xC918 || // Lo HANGUL SYLLABLE JWEO\n\t\tcode === 0xC934 || // Lo HANGUL SYLLABLE JWE\n\t\tcode === 0xC950 || // Lo HANGUL SYLLABLE JWI\n\t\tcode === 0xC96C || // Lo HANGUL SYLLABLE JYU\n\t\tcode === 0xC988 || // Lo HANGUL SYLLABLE JEU\n\t\tcode === 0xC9A4 || // Lo HANGUL SYLLABLE JYI\n\t\tcode === 0xC9C0 || // Lo HANGUL SYLLABLE JI\n\t\tcode === 0xC9DC || // Lo HANGUL SYLLABLE JJA\n\t\tcode === 0xC9F8 || // Lo HANGUL SYLLABLE JJAE\n\t\tcode === 0xCA14 || // Lo HANGUL SYLLABLE JJYA\n\t\tcode === 0xCA30 || // Lo HANGUL SYLLABLE JJYAE\n\t\tcode === 0xCA4C || // Lo HANGUL SYLLABLE JJEO\n\t\tcode === 0xCA68 || // Lo HANGUL SYLLABLE JJE\n\t\tcode === 0xCA84 || // Lo HANGUL SYLLABLE JJYEO\n\t\tcode === 0xCAA0 || // Lo HANGUL SYLLABLE JJYE\n\t\tcode === 0xCABC || // Lo HANGUL SYLLABLE JJO\n\t\tcode === 0xCAD8 || // Lo HANGUL SYLLABLE JJWA\n\t\tcode === 0xCAF4 || // Lo HANGUL SYLLABLE JJWAE\n\t\tcode === 0xCB10 || // Lo HANGUL SYLLABLE JJOE\n\t\tcode === 0xCB2C || // Lo HANGUL SYLLABLE JJYO\n\t\tcode === 0xCB48 || // Lo HANGUL SYLLABLE JJU\n\t\tcode === 0xCB64 || // Lo HANGUL SYLLABLE JJWEO\n\t\tcode === 0xCB80 || // Lo HANGUL SYLLABLE JJWE\n\t\tcode === 0xCB9C || // Lo HANGUL SYLLABLE JJWI\n\t\tcode === 0xCBB8 || // Lo HANGUL SYLLABLE JJYU\n\t\tcode === 0xCBD4 || // Lo HANGUL SYLLABLE JJEU\n\t\tcode === 0xCBF0 || // Lo HANGUL SYLLABLE JJYI\n\t\tcode === 0xCC0C || // Lo HANGUL SYLLABLE JJI\n\t\tcode === 0xCC28 || // Lo HANGUL SYLLABLE CA\n\t\tcode === 0xCC44 || // Lo HANGUL SYLLABLE CAE\n\t\tcode === 0xCC60 || // Lo HANGUL SYLLABLE CYA\n\t\tcode === 0xCC7C || // Lo HANGUL SYLLABLE CYAE\n\t\tcode === 0xCC98 || // Lo HANGUL SYLLABLE CEO\n\t\tcode === 0xCCB4 || // Lo HANGUL SYLLABLE CE\n\t\tcode === 0xCCD0 || // Lo HANGUL SYLLABLE CYEO\n\t\tcode === 0xCCEC || // Lo HANGUL SYLLABLE CYE\n\t\tcode === 0xCD08 || // Lo HANGUL SYLLABLE CO\n\t\tcode === 0xCD24 || // Lo HANGUL SYLLABLE CWA\n\t\tcode === 0xCD40 || // Lo HANGUL SYLLABLE CWAE\n\t\tcode === 0xCD5C || // Lo HANGUL SYLLABLE COE\n\t\tcode === 0xCD78 || // Lo HANGUL SYLLABLE CYO\n\t\tcode === 0xCD94 || // Lo HANGUL SYLLABLE CU\n\t\tcode === 0xCDB0 || // Lo HANGUL SYLLABLE CWEO\n\t\tcode === 0xCDCC || // Lo HANGUL SYLLABLE CWE\n\t\tcode === 0xCDE8 || // Lo HANGUL SYLLABLE CWI\n\t\tcode === 0xCE04 || // Lo HANGUL SYLLABLE CYU\n\t\tcode === 0xCE20 || // Lo HANGUL SYLLABLE CEU\n\t\tcode === 0xCE3C || // Lo HANGUL SYLLABLE CYI\n\t\tcode === 0xCE58 || // Lo HANGUL SYLLABLE CI\n\t\tcode === 0xCE74 || // Lo HANGUL SYLLABLE KA\n\t\tcode === 0xCE90 || // Lo HANGUL SYLLABLE KAE\n\t\tcode === 0xCEAC || // Lo HANGUL SYLLABLE KYA\n\t\tcode === 0xCEC8 || // Lo HANGUL SYLLABLE KYAE\n\t\tcode === 0xCEE4 || // Lo HANGUL SYLLABLE KEO\n\t\tcode === 0xCF00 || // Lo HANGUL SYLLABLE KE\n\t\tcode === 0xCF1C || // Lo HANGUL SYLLABLE KYEO\n\t\tcode === 0xCF38 || // Lo HANGUL SYLLABLE KYE\n\t\tcode === 0xCF54 || // Lo HANGUL SYLLABLE KO\n\t\tcode === 0xCF70 || // Lo HANGUL SYLLABLE KWA\n\t\tcode === 0xCF8C || // Lo HANGUL SYLLABLE KWAE\n\t\tcode === 0xCFA8 || // Lo HANGUL SYLLABLE KOE\n\t\tcode === 0xCFC4 || // Lo HANGUL SYLLABLE KYO\n\t\tcode === 0xCFE0 || // Lo HANGUL SYLLABLE KU\n\t\tcode === 0xCFFC || // Lo HANGUL SYLLABLE KWEO\n\t\tcode === 0xD018 || // Lo HANGUL SYLLABLE KWE\n\t\tcode === 0xD034 || // Lo HANGUL SYLLABLE KWI\n\t\tcode === 0xD050 || // Lo HANGUL SYLLABLE KYU\n\t\tcode === 0xD06C || // Lo HANGUL SYLLABLE KEU\n\t\tcode === 0xD088 || // Lo HANGUL SYLLABLE KYI\n\t\tcode === 0xD0A4 || // Lo HANGUL SYLLABLE KI\n\t\tcode === 0xD0C0 || // Lo HANGUL SYLLABLE TA\n\t\tcode === 0xD0DC || // Lo HANGUL SYLLABLE TAE\n\t\tcode === 0xD0F8 || // Lo HANGUL SYLLABLE TYA\n\t\tcode === 0xD114 || // Lo HANGUL SYLLABLE TYAE\n\t\tcode === 0xD130 || // Lo HANGUL SYLLABLE TEO\n\t\tcode === 0xD14C || // Lo HANGUL SYLLABLE TE\n\t\tcode === 0xD168 || // Lo HANGUL SYLLABLE TYEO\n\t\tcode === 0xD184 || // Lo HANGUL SYLLABLE TYE\n\t\tcode === 0xD1A0 || // Lo HANGUL SYLLABLE TO\n\t\tcode === 0xD1BC || // Lo HANGUL SYLLABLE TWA\n\t\tcode === 0xD1D8 || // Lo HANGUL SYLLABLE TWAE\n\t\tcode === 0xD1F4 || // Lo HANGUL SYLLABLE TOE\n\t\tcode === 0xD210 || // Lo HANGUL SYLLABLE TYO\n\t\tcode === 0xD22C || // Lo HANGUL SYLLABLE TU\n\t\tcode === 0xD248 || // Lo HANGUL SYLLABLE TWEO\n\t\tcode === 0xD264 || // Lo HANGUL SYLLABLE TWE\n\t\tcode === 0xD280 || // Lo HANGUL SYLLABLE TWI\n\t\tcode === 0xD29C || // Lo HANGUL SYLLABLE TYU\n\t\tcode === 0xD2B8 || // Lo HANGUL SYLLABLE TEU\n\t\tcode === 0xD2D4 || // Lo HANGUL SYLLABLE TYI\n\t\tcode === 0xD2F0 || // Lo HANGUL SYLLABLE TI\n\t\tcode === 0xD30C || // Lo HANGUL SYLLABLE PA\n\t\tcode === 0xD328 || // Lo HANGUL SYLLABLE PAE\n\t\tcode === 0xD344 || // Lo HANGUL SYLLABLE PYA\n\t\tcode === 0xD360 || // Lo HANGUL SYLLABLE PYAE\n\t\tcode === 0xD37C || // Lo HANGUL SYLLABLE PEO\n\t\tcode === 0xD398 || // Lo HANGUL SYLLABLE PE\n\t\tcode === 0xD3B4 || // Lo HANGUL SYLLABLE PYEO\n\t\tcode === 0xD3D0 || // Lo HANGUL SYLLABLE PYE\n\t\tcode === 0xD3EC || // Lo HANGUL SYLLABLE PO\n\t\tcode === 0xD408 || // Lo HANGUL SYLLABLE PWA\n\t\tcode === 0xD424 || // Lo HANGUL SYLLABLE PWAE\n\t\tcode === 0xD440 || // Lo HANGUL SYLLABLE POE\n\t\tcode === 0xD45C || // Lo HANGUL SYLLABLE PYO\n\t\tcode === 0xD478 || // Lo HANGUL SYLLABLE PU\n\t\tcode === 0xD494 || // Lo HANGUL SYLLABLE PWEO\n\t\tcode === 0xD4B0 || // Lo HANGUL SYLLABLE PWE\n\t\tcode === 0xD4CC || // Lo HANGUL SYLLABLE PWI\n\t\tcode === 0xD4E8 || // Lo HANGUL SYLLABLE PYU\n\t\tcode === 0xD504 || // Lo HANGUL SYLLABLE PEU\n\t\tcode === 0xD520 || // Lo HANGUL SYLLABLE PYI\n\t\tcode === 0xD53C || // Lo HANGUL SYLLABLE PI\n\t\tcode === 0xD558 || // Lo HANGUL SYLLABLE HA\n\t\tcode === 0xD574 || // Lo HANGUL SYLLABLE HAE\n\t\tcode === 0xD590 || // Lo HANGUL SYLLABLE HYA\n\t\tcode === 0xD5AC || // Lo HANGUL SYLLABLE HYAE\n\t\tcode === 0xD5C8 || // Lo HANGUL SYLLABLE HEO\n\t\tcode === 0xD5E4 || // Lo HANGUL SYLLABLE HE\n\t\tcode === 0xD600 || // Lo HANGUL SYLLABLE HYEO\n\t\tcode === 0xD61C || // Lo HANGUL SYLLABLE HYE\n\t\tcode === 0xD638 || // Lo HANGUL SYLLABLE HO\n\t\tcode === 0xD654 || // Lo HANGUL SYLLABLE HWA\n\t\tcode === 0xD670 || // Lo HANGUL SYLLABLE HWAE\n\t\tcode === 0xD68C || // Lo HANGUL SYLLABLE HOE\n\t\tcode === 0xD6A8 || // Lo HANGUL SYLLABLE HYO\n\t\tcode === 0xD6C4 || // Lo HANGUL SYLLABLE HU\n\t\tcode === 0xD6E0 || // Lo HANGUL SYLLABLE HWEO\n\t\tcode === 0xD6FC || // Lo HANGUL SYLLABLE HWE\n\t\tcode === 0xD718 || // Lo HANGUL SYLLABLE HWI\n\t\tcode === 0xD734 || // Lo HANGUL SYLLABLE HYU\n\t\tcode === 0xD750 || // Lo HANGUL SYLLABLE HEU\n\t\tcode === 0xD76C || // Lo HANGUL SYLLABLE HYI\n\t\tcode === 0xD788 // Lo HANGUL SYLLABLE HI\n\t) {\n\t\treturn constants.LV;\n\t}\n\tif (\n\t\t( 0xAC01 <= code && code <= 0xAC1B ) || // Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH\n\t\t( 0xAC1D <= code && code <= 0xAC37 ) || // Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH\n\t\t( 0xAC39 <= code && code <= 0xAC53 ) || // Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH\n\t\t( 0xAC55 <= code && code <= 0xAC6F ) || // Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH\n\t\t( 0xAC71 <= code && code <= 0xAC8B ) || // Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH\n\t\t( 0xAC8D <= code && code <= 0xACA7 ) || // Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH\n\t\t( 0xACA9 <= code && code <= 0xACC3 ) || // Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH\n\t\t( 0xACC5 <= code && code <= 0xACDF ) || // Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH\n\t\t( 0xACE1 <= code && code <= 0xACFB ) || // Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH\n\t\t( 0xACFD <= code && code <= 0xAD17 ) || // Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH\n\t\t( 0xAD19 <= code && code <= 0xAD33 ) || // Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH\n\t\t( 0xAD35 <= code && code <= 0xAD4F ) || // Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH\n\t\t( 0xAD51 <= code && code <= 0xAD6B ) || // Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH\n\t\t( 0xAD6D <= code && code <= 0xAD87 ) || // Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH\n\t\t( 0xAD89 <= code && code <= 0xADA3 ) || // Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH\n\t\t( 0xADA5 <= code && code <= 0xADBF ) || // Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH\n\t\t( 0xADC1 <= code && code <= 0xADDB ) || // Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH\n\t\t( 0xADDD <= code && code <= 0xADF7 ) || // Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH\n\t\t( 0xADF9 <= code && code <= 0xAE13 ) || // Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH\n\t\t( 0xAE15 <= code && code <= 0xAE2F ) || // Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH\n\t\t( 0xAE31 <= code && code <= 0xAE4B ) || // Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH\n\t\t( 0xAE4D <= code && code <= 0xAE67 ) || // Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH\n\t\t( 0xAE69 <= code && code <= 0xAE83 ) || // Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH\n\t\t( 0xAE85 <= code && code <= 0xAE9F ) || // Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH\n\t\t( 0xAEA1 <= code && code <= 0xAEBB ) || // Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH\n\t\t( 0xAEBD <= code && code <= 0xAED7 ) || // Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH\n\t\t( 0xAED9 <= code && code <= 0xAEF3 ) || // Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH\n\t\t( 0xAEF5 <= code && code <= 0xAF0F ) || // Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH\n\t\t( 0xAF11 <= code && code <= 0xAF2B ) || // Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH\n\t\t( 0xAF2D <= code && code <= 0xAF47 ) || // Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH\n\t\t( 0xAF49 <= code && code <= 0xAF63 ) || // Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH\n\t\t( 0xAF65 <= code && code <= 0xAF7F ) || // Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH\n\t\t( 0xAF81 <= code && code <= 0xAF9B ) || // Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH\n\t\t( 0xAF9D <= code && code <= 0xAFB7 ) || // Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH\n\t\t( 0xAFB9 <= code && code <= 0xAFD3 ) || // Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH\n\t\t( 0xAFD5 <= code && code <= 0xAFEF ) || // Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH\n\t\t( 0xAFF1 <= code && code <= 0xB00B ) || // Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH\n\t\t( 0xB00D <= code && code <= 0xB027 ) || // Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH\n\t\t( 0xB029 <= code && code <= 0xB043 ) || // Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH\n\t\t( 0xB045 <= code && code <= 0xB05F ) || // Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH\n\t\t( 0xB061 <= code && code <= 0xB07B ) || // Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH\n\t\t( 0xB07D <= code && code <= 0xB097 ) || // Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH\n\t\t( 0xB099 <= code && code <= 0xB0B3 ) || // Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH\n\t\t( 0xB0B5 <= code && code <= 0xB0CF ) || // Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH\n\t\t( 0xB0D1 <= code && code <= 0xB0EB ) || // Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH\n\t\t( 0xB0ED <= code && code <= 0xB107 ) || // Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH\n\t\t( 0xB109 <= code && code <= 0xB123 ) || // Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH\n\t\t( 0xB125 <= code && code <= 0xB13F ) || // Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH\n\t\t( 0xB141 <= code && code <= 0xB15B ) || // Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH\n\t\t( 0xB15D <= code && code <= 0xB177 ) || // Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH\n\t\t( 0xB179 <= code && code <= 0xB193 ) || // Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH\n\t\t( 0xB195 <= code && code <= 0xB1AF ) || // Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH\n\t\t( 0xB1B1 <= code && code <= 0xB1CB ) || // Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH\n\t\t( 0xB1CD <= code && code <= 0xB1E7 ) || // Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH\n\t\t( 0xB1E9 <= code && code <= 0xB203 ) || // Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH\n\t\t( 0xB205 <= code && code <= 0xB21F ) || // Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH\n\t\t( 0xB221 <= code && code <= 0xB23B ) || // Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH\n\t\t( 0xB23D <= code && code <= 0xB257 ) || // Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH\n\t\t( 0xB259 <= code && code <= 0xB273 ) || // Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH\n\t\t( 0xB275 <= code && code <= 0xB28F ) || // Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH\n\t\t( 0xB291 <= code && code <= 0xB2AB ) || // Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH\n\t\t( 0xB2AD <= code && code <= 0xB2C7 ) || // Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH\n\t\t( 0xB2C9 <= code && code <= 0xB2E3 ) || // Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH\n\t\t( 0xB2E5 <= code && code <= 0xB2FF ) || // Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH\n\t\t( 0xB301 <= code && code <= 0xB31B ) || // Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH\n\t\t( 0xB31D <= code && code <= 0xB337 ) || // Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH\n\t\t( 0xB339 <= code && code <= 0xB353 ) || // Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH\n\t\t( 0xB355 <= code && code <= 0xB36F ) || // Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH\n\t\t( 0xB371 <= code && code <= 0xB38B ) || // Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH\n\t\t( 0xB38D <= code && code <= 0xB3A7 ) || // Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH\n\t\t( 0xB3A9 <= code && code <= 0xB3C3 ) || // Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH\n\t\t( 0xB3C5 <= code && code <= 0xB3DF ) || // Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH\n\t\t( 0xB3E1 <= code && code <= 0xB3FB ) || // Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH\n\t\t( 0xB3FD <= code && code <= 0xB417 ) || // Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH\n\t\t( 0xB419 <= code && code <= 0xB433 ) || // Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH\n\t\t( 0xB435 <= code && code <= 0xB44F ) || // Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH\n\t\t( 0xB451 <= code && code <= 0xB46B ) || // Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH\n\t\t( 0xB46D <= code && code <= 0xB487 ) || // Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH\n\t\t( 0xB489 <= code && code <= 0xB4A3 ) || // Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH\n\t\t( 0xB4A5 <= code && code <= 0xB4BF ) || // Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH\n\t\t( 0xB4C1 <= code && code <= 0xB4DB ) || // Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH\n\t\t( 0xB4DD <= code && code <= 0xB4F7 ) || // Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH\n\t\t( 0xB4F9 <= code && code <= 0xB513 ) || // Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH\n\t\t( 0xB515 <= code && code <= 0xB52F ) || // Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH\n\t\t( 0xB531 <= code && code <= 0xB54B ) || // Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH\n\t\t( 0xB54D <= code && code <= 0xB567 ) || // Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH\n\t\t( 0xB569 <= code && code <= 0xB583 ) || // Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH\n\t\t( 0xB585 <= code && code <= 0xB59F ) || // Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH\n\t\t( 0xB5A1 <= code && code <= 0xB5BB ) || // Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH\n\t\t( 0xB5BD <= code && code <= 0xB5D7 ) || // Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH\n\t\t( 0xB5D9 <= code && code <= 0xB5F3 ) || // Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH\n\t\t( 0xB5F5 <= code && code <= 0xB60F ) || // Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH\n\t\t( 0xB611 <= code && code <= 0xB62B ) || // Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH\n\t\t( 0xB62D <= code && code <= 0xB647 ) || // Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH\n\t\t( 0xB649 <= code && code <= 0xB663 ) || // Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH\n\t\t( 0xB665 <= code && code <= 0xB67F ) || // Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH\n\t\t( 0xB681 <= code && code <= 0xB69B ) || // Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH\n\t\t( 0xB69D <= code && code <= 0xB6B7 ) || // Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH\n\t\t( 0xB6B9 <= code && code <= 0xB6D3 ) || // Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH\n\t\t( 0xB6D5 <= code && code <= 0xB6EF ) || // Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH\n\t\t( 0xB6F1 <= code && code <= 0xB70B ) || // Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH\n\t\t( 0xB70D <= code && code <= 0xB727 ) || // Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH\n\t\t( 0xB729 <= code && code <= 0xB743 ) || // Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH\n\t\t( 0xB745 <= code && code <= 0xB75F ) || // Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH\n\t\t( 0xB761 <= code && code <= 0xB77B ) || // Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH\n\t\t( 0xB77D <= code && code <= 0xB797 ) || // Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH\n\t\t( 0xB799 <= code && code <= 0xB7B3 ) || // Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH\n\t\t( 0xB7B5 <= code && code <= 0xB7CF ) || // Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH\n\t\t( 0xB7D1 <= code && code <= 0xB7EB ) || // Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH\n\t\t( 0xB7ED <= code && code <= 0xB807 ) || // Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH\n\t\t( 0xB809 <= code && code <= 0xB823 ) || // Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH\n\t\t( 0xB825 <= code && code <= 0xB83F ) || // Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH\n\t\t( 0xB841 <= code && code <= 0xB85B ) || // Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH\n\t\t( 0xB85D <= code && code <= 0xB877 ) || // Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH\n\t\t( 0xB879 <= code && code <= 0xB893 ) || // Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH\n\t\t( 0xB895 <= code && code <= 0xB8AF ) || // Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH\n\t\t( 0xB8B1 <= code && code <= 0xB8CB ) || // Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH\n\t\t( 0xB8CD <= code && code <= 0xB8E7 ) || // Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH\n\t\t( 0xB8E9 <= code && code <= 0xB903 ) || // Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH\n\t\t( 0xB905 <= code && code <= 0xB91F ) || // Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH\n\t\t( 0xB921 <= code && code <= 0xB93B ) || // Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH\n\t\t( 0xB93D <= code && code <= 0xB957 ) || // Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH\n\t\t( 0xB959 <= code && code <= 0xB973 ) || // Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH\n\t\t( 0xB975 <= code && code <= 0xB98F ) || // Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH\n\t\t( 0xB991 <= code && code <= 0xB9AB ) || // Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH\n\t\t( 0xB9AD <= code && code <= 0xB9C7 ) || // Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH\n\t\t( 0xB9C9 <= code && code <= 0xB9E3 ) || // Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH\n\t\t( 0xB9E5 <= code && code <= 0xB9FF ) || // Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH\n\t\t( 0xBA01 <= code && code <= 0xBA1B ) || // Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH\n\t\t( 0xBA1D <= code && code <= 0xBA37 ) || // Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH\n\t\t( 0xBA39 <= code && code <= 0xBA53 ) || // Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH\n\t\t( 0xBA55 <= code && code <= 0xBA6F ) || // Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH\n\t\t( 0xBA71 <= code && code <= 0xBA8B ) || // Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH\n\t\t( 0xBA8D <= code && code <= 0xBAA7 ) || // Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH\n\t\t( 0xBAA9 <= code && code <= 0xBAC3 ) || // Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH\n\t\t( 0xBAC5 <= code && code <= 0xBADF ) || // Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH\n\t\t( 0xBAE1 <= code && code <= 0xBAFB ) || // Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH\n\t\t( 0xBAFD <= code && code <= 0xBB17 ) || // Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH\n\t\t( 0xBB19 <= code && code <= 0xBB33 ) || // Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH\n\t\t( 0xBB35 <= code && code <= 0xBB4F ) || // Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH\n\t\t( 0xBB51 <= code && code <= 0xBB6B ) || // Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH\n\t\t( 0xBB6D <= code && code <= 0xBB87 ) || // Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH\n\t\t( 0xBB89 <= code && code <= 0xBBA3 ) || // Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH\n\t\t( 0xBBA5 <= code && code <= 0xBBBF ) || // Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH\n\t\t( 0xBBC1 <= code && code <= 0xBBDB ) || // Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH\n\t\t( 0xBBDD <= code && code <= 0xBBF7 ) || // Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH\n\t\t( 0xBBF9 <= code && code <= 0xBC13 ) || // Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH\n\t\t( 0xBC15 <= code && code <= 0xBC2F ) || // Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH\n\t\t( 0xBC31 <= code && code <= 0xBC4B ) || // Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH\n\t\t( 0xBC4D <= code && code <= 0xBC67 ) || // Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH\n\t\t( 0xBC69 <= code && code <= 0xBC83 ) || // Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH\n\t\t( 0xBC85 <= code && code <= 0xBC9F ) || // Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH\n\t\t( 0xBCA1 <= code && code <= 0xBCBB ) || // Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH\n\t\t( 0xBCBD <= code && code <= 0xBCD7 ) || // Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH\n\t\t( 0xBCD9 <= code && code <= 0xBCF3 ) || // Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH\n\t\t( 0xBCF5 <= code && code <= 0xBD0F ) || // Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH\n\t\t( 0xBD11 <= code && code <= 0xBD2B ) || // Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH\n\t\t( 0xBD2D <= code && code <= 0xBD47 ) || // Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH\n\t\t( 0xBD49 <= code && code <= 0xBD63 ) || // Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH\n\t\t( 0xBD65 <= code && code <= 0xBD7F ) || // Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH\n\t\t( 0xBD81 <= code && code <= 0xBD9B ) || // Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH\n\t\t( 0xBD9D <= code && code <= 0xBDB7 ) || // Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH\n\t\t( 0xBDB9 <= code && code <= 0xBDD3 ) || // Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH\n\t\t( 0xBDD5 <= code && code <= 0xBDEF ) || // Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH\n\t\t( 0xBDF1 <= code && code <= 0xBE0B ) || // Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH\n\t\t( 0xBE0D <= code && code <= 0xBE27 ) || // Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH\n\t\t( 0xBE29 <= code && code <= 0xBE43 ) || // Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH\n\t\t( 0xBE45 <= code && code <= 0xBE5F ) || // Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH\n\t\t( 0xBE61 <= code && code <= 0xBE7B ) || // Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH\n\t\t( 0xBE7D <= code && code <= 0xBE97 ) || // Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH\n\t\t( 0xBE99 <= code && code <= 0xBEB3 ) || // Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH\n\t\t( 0xBEB5 <= code && code <= 0xBECF ) || // Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH\n\t\t( 0xBED1 <= code && code <= 0xBEEB ) || // Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH\n\t\t( 0xBEED <= code && code <= 0xBF07 ) || // Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH\n\t\t( 0xBF09 <= code && code <= 0xBF23 ) || // Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH\n\t\t( 0xBF25 <= code && code <= 0xBF3F ) || // Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH\n\t\t( 0xBF41 <= code && code <= 0xBF5B ) || // Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH\n\t\t( 0xBF5D <= code && code <= 0xBF77 ) || // Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH\n\t\t( 0xBF79 <= code && code <= 0xBF93 ) || // Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH\n\t\t( 0xBF95 <= code && code <= 0xBFAF ) || // Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH\n\t\t( 0xBFB1 <= code && code <= 0xBFCB ) || // Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH\n\t\t( 0xBFCD <= code && code <= 0xBFE7 ) || // Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH\n\t\t( 0xBFE9 <= code && code <= 0xC003 ) || // Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH\n\t\t( 0xC005 <= code && code <= 0xC01F ) || // Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH\n\t\t( 0xC021 <= code && code <= 0xC03B ) || // Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH\n\t\t( 0xC03D <= code && code <= 0xC057 ) || // Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH\n\t\t( 0xC059 <= code && code <= 0xC073 ) || // Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH\n\t\t( 0xC075 <= code && code <= 0xC08F ) || // Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH\n\t\t( 0xC091 <= code && code <= 0xC0AB ) || // Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH\n\t\t( 0xC0AD <= code && code <= 0xC0C7 ) || // Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH\n\t\t( 0xC0C9 <= code && code <= 0xC0E3 ) || // Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH\n\t\t( 0xC0E5 <= code && code <= 0xC0FF ) || // Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH\n\t\t( 0xC101 <= code && code <= 0xC11B ) || // Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH\n\t\t( 0xC11D <= code && code <= 0xC137 ) || // Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH\n\t\t( 0xC139 <= code && code <= 0xC153 ) || // Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH\n\t\t( 0xC155 <= code && code <= 0xC16F ) || // Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH\n\t\t( 0xC171 <= code && code <= 0xC18B ) || // Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH\n\t\t( 0xC18D <= code && code <= 0xC1A7 ) || // Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH\n\t\t( 0xC1A9 <= code && code <= 0xC1C3 ) || // Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH\n\t\t( 0xC1C5 <= code && code <= 0xC1DF ) || // Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH\n\t\t( 0xC1E1 <= code && code <= 0xC1FB ) || // Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH\n\t\t( 0xC1FD <= code && code <= 0xC217 ) || // Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH\n\t\t( 0xC219 <= code && code <= 0xC233 ) || // Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH\n\t\t( 0xC235 <= code && code <= 0xC24F ) || // Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH\n\t\t( 0xC251 <= code && code <= 0xC26B ) || // Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH\n\t\t( 0xC26D <= code && code <= 0xC287 ) || // Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH\n\t\t( 0xC289 <= code && code <= 0xC2A3 ) || // Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH\n\t\t( 0xC2A5 <= code && code <= 0xC2BF ) || // Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH\n\t\t( 0xC2C1 <= code && code <= 0xC2DB ) || // Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH\n\t\t( 0xC2DD <= code && code <= 0xC2F7 ) || // Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH\n\t\t( 0xC2F9 <= code && code <= 0xC313 ) || // Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH\n\t\t( 0xC315 <= code && code <= 0xC32F ) || // Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH\n\t\t( 0xC331 <= code && code <= 0xC34B ) || // Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH\n\t\t( 0xC34D <= code && code <= 0xC367 ) || // Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH\n\t\t( 0xC369 <= code && code <= 0xC383 ) || // Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH\n\t\t( 0xC385 <= code && code <= 0xC39F ) || // Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH\n\t\t( 0xC3A1 <= code && code <= 0xC3BB ) || // Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH\n\t\t( 0xC3BD <= code && code <= 0xC3D7 ) || // Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH\n\t\t( 0xC3D9 <= code && code <= 0xC3F3 ) || // Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH\n\t\t( 0xC3F5 <= code && code <= 0xC40F ) || // Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH\n\t\t( 0xC411 <= code && code <= 0xC42B ) || // Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH\n\t\t( 0xC42D <= code && code <= 0xC447 ) || // Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH\n\t\t( 0xC449 <= code && code <= 0xC463 ) || // Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH\n\t\t( 0xC465 <= code && code <= 0xC47F ) || // Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH\n\t\t( 0xC481 <= code && code <= 0xC49B ) || // Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH\n\t\t( 0xC49D <= code && code <= 0xC4B7 ) || // Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH\n\t\t( 0xC4B9 <= code && code <= 0xC4D3 ) || // Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH\n\t\t( 0xC4D5 <= code && code <= 0xC4EF ) || // Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH\n\t\t( 0xC4F1 <= code && code <= 0xC50B ) || // Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH\n\t\t( 0xC50D <= code && code <= 0xC527 ) || // Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH\n\t\t( 0xC529 <= code && code <= 0xC543 ) || // Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH\n\t\t( 0xC545 <= code && code <= 0xC55F ) || // Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH\n\t\t( 0xC561 <= code && code <= 0xC57B ) || // Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH\n\t\t( 0xC57D <= code && code <= 0xC597 ) || // Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH\n\t\t( 0xC599 <= code && code <= 0xC5B3 ) || // Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH\n\t\t( 0xC5B5 <= code && code <= 0xC5CF ) || // Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH\n\t\t( 0xC5D1 <= code && code <= 0xC5EB ) || // Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH\n\t\t( 0xC5ED <= code && code <= 0xC607 ) || // Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH\n\t\t( 0xC609 <= code && code <= 0xC623 ) || // Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH\n\t\t( 0xC625 <= code && code <= 0xC63F ) || // Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH\n\t\t( 0xC641 <= code && code <= 0xC65B ) || // Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH\n\t\t( 0xC65D <= code && code <= 0xC677 ) || // Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH\n\t\t( 0xC679 <= code && code <= 0xC693 ) || // Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH\n\t\t( 0xC695 <= code && code <= 0xC6AF ) || // Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH\n\t\t( 0xC6B1 <= code && code <= 0xC6CB ) || // Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH\n\t\t( 0xC6CD <= code && code <= 0xC6E7 ) || // Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH\n\t\t( 0xC6E9 <= code && code <= 0xC703 ) || // Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH\n\t\t( 0xC705 <= code && code <= 0xC71F ) || // Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH\n\t\t( 0xC721 <= code && code <= 0xC73B ) || // Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH\n\t\t( 0xC73D <= code && code <= 0xC757 ) || // Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH\n\t\t( 0xC759 <= code && code <= 0xC773 ) || // Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH\n\t\t( 0xC775 <= code && code <= 0xC78F ) || // Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH\n\t\t( 0xC791 <= code && code <= 0xC7AB ) || // Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH\n\t\t( 0xC7AD <= code && code <= 0xC7C7 ) || // Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH\n\t\t( 0xC7C9 <= code && code <= 0xC7E3 ) || // Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH\n\t\t( 0xC7E5 <= code && code <= 0xC7FF ) || // Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH\n\t\t( 0xC801 <= code && code <= 0xC81B ) || // Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH\n\t\t( 0xC81D <= code && code <= 0xC837 ) || // Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH\n\t\t( 0xC839 <= code && code <= 0xC853 ) || // Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH\n\t\t( 0xC855 <= code && code <= 0xC86F ) || // Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH\n\t\t( 0xC871 <= code && code <= 0xC88B ) || // Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH\n\t\t( 0xC88D <= code && code <= 0xC8A7 ) || // Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH\n\t\t( 0xC8A9 <= code && code <= 0xC8C3 ) || // Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH\n\t\t( 0xC8C5 <= code && code <= 0xC8DF ) || // Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH\n\t\t( 0xC8E1 <= code && code <= 0xC8FB ) || // Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH\n\t\t( 0xC8FD <= code && code <= 0xC917 ) || // Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH\n\t\t( 0xC919 <= code && code <= 0xC933 ) || // Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH\n\t\t( 0xC935 <= code && code <= 0xC94F ) || // Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH\n\t\t( 0xC951 <= code && code <= 0xC96B ) || // Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH\n\t\t( 0xC96D <= code && code <= 0xC987 ) || // Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH\n\t\t( 0xC989 <= code && code <= 0xC9A3 ) || // Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH\n\t\t( 0xC9A5 <= code && code <= 0xC9BF ) || // Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH\n\t\t( 0xC9C1 <= code && code <= 0xC9DB ) || // Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH\n\t\t( 0xC9DD <= code && code <= 0xC9F7 ) || // Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH\n\t\t( 0xC9F9 <= code && code <= 0xCA13 ) || // Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH\n\t\t( 0xCA15 <= code && code <= 0xCA2F ) || // Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH\n\t\t( 0xCA31 <= code && code <= 0xCA4B ) || // Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH\n\t\t( 0xCA4D <= code && code <= 0xCA67 ) || // Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH\n\t\t( 0xCA69 <= code && code <= 0xCA83 ) || // Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH\n\t\t( 0xCA85 <= code && code <= 0xCA9F ) || // Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH\n\t\t( 0xCAA1 <= code && code <= 0xCABB ) || // Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH\n\t\t( 0xCABD <= code && code <= 0xCAD7 ) || // Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH\n\t\t( 0xCAD9 <= code && code <= 0xCAF3 ) || // Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH\n\t\t( 0xCAF5 <= code && code <= 0xCB0F ) || // Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH\n\t\t( 0xCB11 <= code && code <= 0xCB2B ) || // Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH\n\t\t( 0xCB2D <= code && code <= 0xCB47 ) || // Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH\n\t\t( 0xCB49 <= code && code <= 0xCB63 ) || // Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH\n\t\t( 0xCB65 <= code && code <= 0xCB7F ) || // Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH\n\t\t( 0xCB81 <= code && code <= 0xCB9B ) || // Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH\n\t\t( 0xCB9D <= code && code <= 0xCBB7 ) || // Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH\n\t\t( 0xCBB9 <= code && code <= 0xCBD3 ) || // Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH\n\t\t( 0xCBD5 <= code && code <= 0xCBEF ) || // Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH\n\t\t( 0xCBF1 <= code && code <= 0xCC0B ) || // Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH\n\t\t( 0xCC0D <= code && code <= 0xCC27 ) || // Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH\n\t\t( 0xCC29 <= code && code <= 0xCC43 ) || // Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH\n\t\t( 0xCC45 <= code && code <= 0xCC5F ) || // Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH\n\t\t( 0xCC61 <= code && code <= 0xCC7B ) || // Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH\n\t\t( 0xCC7D <= code && code <= 0xCC97 ) || // Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH\n\t\t( 0xCC99 <= code && code <= 0xCCB3 ) || // Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH\n\t\t( 0xCCB5 <= code && code <= 0xCCCF ) || // Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH\n\t\t( 0xCCD1 <= code && code <= 0xCCEB ) || // Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH\n\t\t( 0xCCED <= code && code <= 0xCD07 ) || // Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH\n\t\t( 0xCD09 <= code && code <= 0xCD23 ) || // Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH\n\t\t( 0xCD25 <= code && code <= 0xCD3F ) || // Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH\n\t\t( 0xCD41 <= code && code <= 0xCD5B ) || // Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH\n\t\t( 0xCD5D <= code && code <= 0xCD77 ) || // Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH\n\t\t( 0xCD79 <= code && code <= 0xCD93 ) || // Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH\n\t\t( 0xCD95 <= code && code <= 0xCDAF ) || // Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH\n\t\t( 0xCDB1 <= code && code <= 0xCDCB ) || // Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH\n\t\t( 0xCDCD <= code && code <= 0xCDE7 ) || // Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH\n\t\t( 0xCDE9 <= code && code <= 0xCE03 ) || // Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH\n\t\t( 0xCE05 <= code && code <= 0xCE1F ) || // Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH\n\t\t( 0xCE21 <= code && code <= 0xCE3B ) || // Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH\n\t\t( 0xCE3D <= code && code <= 0xCE57 ) || // Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH\n\t\t( 0xCE59 <= code && code <= 0xCE73 ) || // Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH\n\t\t( 0xCE75 <= code && code <= 0xCE8F ) || // Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH\n\t\t( 0xCE91 <= code && code <= 0xCEAB ) || // Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH\n\t\t( 0xCEAD <= code && code <= 0xCEC7 ) || // Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH\n\t\t( 0xCEC9 <= code && code <= 0xCEE3 ) || // Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH\n\t\t( 0xCEE5 <= code && code <= 0xCEFF ) || // Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH\n\t\t( 0xCF01 <= code && code <= 0xCF1B ) || // Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH\n\t\t( 0xCF1D <= code && code <= 0xCF37 ) || // Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH\n\t\t( 0xCF39 <= code && code <= 0xCF53 ) || // Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH\n\t\t( 0xCF55 <= code && code <= 0xCF6F ) || // Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH\n\t\t( 0xCF71 <= code && code <= 0xCF8B ) || // Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH\n\t\t( 0xCF8D <= code && code <= 0xCFA7 ) || // Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH\n\t\t( 0xCFA9 <= code && code <= 0xCFC3 ) || // Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH\n\t\t( 0xCFC5 <= code && code <= 0xCFDF ) || // Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH\n\t\t( 0xCFE1 <= code && code <= 0xCFFB ) || // Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH\n\t\t( 0xCFFD <= code && code <= 0xD017 ) || // Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH\n\t\t( 0xD019 <= code && code <= 0xD033 ) || // Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH\n\t\t( 0xD035 <= code && code <= 0xD04F ) || // Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH\n\t\t( 0xD051 <= code && code <= 0xD06B ) || // Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH\n\t\t( 0xD06D <= code && code <= 0xD087 ) || // Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH\n\t\t( 0xD089 <= code && code <= 0xD0A3 ) || // Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH\n\t\t( 0xD0A5 <= code && code <= 0xD0BF ) || // Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH\n\t\t( 0xD0C1 <= code && code <= 0xD0DB ) || // Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH\n\t\t( 0xD0DD <= code && code <= 0xD0F7 ) || // Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH\n\t\t( 0xD0F9 <= code && code <= 0xD113 ) || // Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH\n\t\t( 0xD115 <= code && code <= 0xD12F ) || // Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH\n\t\t( 0xD131 <= code && code <= 0xD14B ) || // Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH\n\t\t( 0xD14D <= code && code <= 0xD167 ) || // Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH\n\t\t( 0xD169 <= code && code <= 0xD183 ) || // Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH\n\t\t( 0xD185 <= code && code <= 0xD19F ) || // Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH\n\t\t( 0xD1A1 <= code && code <= 0xD1BB ) || // Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH\n\t\t( 0xD1BD <= code && code <= 0xD1D7 ) || // Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH\n\t\t( 0xD1D9 <= code && code <= 0xD1F3 ) || // Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH\n\t\t( 0xD1F5 <= code && code <= 0xD20F ) || // Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH\n\t\t( 0xD211 <= code && code <= 0xD22B ) || // Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH\n\t\t( 0xD22D <= code && code <= 0xD247 ) || // Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH\n\t\t( 0xD249 <= code && code <= 0xD263 ) || // Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH\n\t\t( 0xD265 <= code && code <= 0xD27F ) || // Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH\n\t\t( 0xD281 <= code && code <= 0xD29B ) || // Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH\n\t\t( 0xD29D <= code && code <= 0xD2B7 ) || // Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH\n\t\t( 0xD2B9 <= code && code <= 0xD2D3 ) || // Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH\n\t\t( 0xD2D5 <= code && code <= 0xD2EF ) || // Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH\n\t\t( 0xD2F1 <= code && code <= 0xD30B ) || // Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH\n\t\t( 0xD30D <= code && code <= 0xD327 ) || // Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH\n\t\t( 0xD329 <= code && code <= 0xD343 ) || // Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH\n\t\t( 0xD345 <= code && code <= 0xD35F ) || // Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH\n\t\t( 0xD361 <= code && code <= 0xD37B ) || // Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH\n\t\t( 0xD37D <= code && code <= 0xD397 ) || // Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH\n\t\t( 0xD399 <= code && code <= 0xD3B3 ) || // Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH\n\t\t( 0xD3B5 <= code && code <= 0xD3CF ) || // Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH\n\t\t( 0xD3D1 <= code && code <= 0xD3EB ) || // Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH\n\t\t( 0xD3ED <= code && code <= 0xD407 ) || // Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH\n\t\t( 0xD409 <= code && code <= 0xD423 ) || // Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH\n\t\t( 0xD425 <= code && code <= 0xD43F ) || // Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH\n\t\t( 0xD441 <= code && code <= 0xD45B ) || // Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH\n\t\t( 0xD45D <= code && code <= 0xD477 ) || // Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH\n\t\t( 0xD479 <= code && code <= 0xD493 ) || // Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH\n\t\t( 0xD495 <= code && code <= 0xD4AF ) || // Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH\n\t\t( 0xD4B1 <= code && code <= 0xD4CB ) || // Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH\n\t\t( 0xD4CD <= code && code <= 0xD4E7 ) || // Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH\n\t\t( 0xD4E9 <= code && code <= 0xD503 ) || // Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH\n\t\t( 0xD505 <= code && code <= 0xD51F ) || // Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH\n\t\t( 0xD521 <= code && code <= 0xD53B ) || // Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH\n\t\t( 0xD53D <= code && code <= 0xD557 ) || // Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH\n\t\t( 0xD559 <= code && code <= 0xD573 ) || // Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH\n\t\t( 0xD575 <= code && code <= 0xD58F ) || // Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH\n\t\t( 0xD591 <= code && code <= 0xD5AB ) || // Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH\n\t\t( 0xD5AD <= code && code <= 0xD5C7 ) || // Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH\n\t\t( 0xD5C9 <= code && code <= 0xD5E3 ) || // Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH\n\t\t( 0xD5E5 <= code && code <= 0xD5FF ) || // Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH\n\t\t( 0xD601 <= code && code <= 0xD61B ) || // Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH\n\t\t( 0xD61D <= code && code <= 0xD637 ) || // Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH\n\t\t( 0xD639 <= code && code <= 0xD653 ) || // Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH\n\t\t( 0xD655 <= code && code <= 0xD66F ) || // Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH\n\t\t( 0xD671 <= code && code <= 0xD68B ) || // Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH\n\t\t( 0xD68D <= code && code <= 0xD6A7 ) || // Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH\n\t\t( 0xD6A9 <= code && code <= 0xD6C3 ) || // Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH\n\t\t( 0xD6C5 <= code && code <= 0xD6DF ) || // Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH\n\t\t( 0xD6E1 <= code && code <= 0xD6FB ) || // Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH\n\t\t( 0xD6FD <= code && code <= 0xD717 ) || // Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH\n\t\t( 0xD719 <= code && code <= 0xD733 ) || // Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH\n\t\t( 0xD735 <= code && code <= 0xD74F ) || // Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH\n\t\t( 0xD751 <= code && code <= 0xD76B ) || // Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH\n\t\t( 0xD76D <= code && code <= 0xD787 ) || // Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH\n\t\t( 0xD789 <= code && code <= 0xD7A3 ) // Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH\n\t) {\n\t\treturn constants.LVT;\n\t}\n\tif (\n\t\tcode === 0x200D // Cf ZERO WIDTH JOINER\n\t) {\n\t\treturn constants.ZWJ;\n\t}\n\t// All unlisted characters have a grapheme break property of \"Other\":\n\treturn constants.Other;\n}\n\n\n// EXPORTS //\n\nmodule.exports = graphemeBreakProperty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Grapheme cluster break tooling.\n*\n* @module @stdlib/string/tools/grapheme-cluster-break\n*\n* @example\n* var grapheme = require( '@stdlib/string/tools/grapheme-cluster-break' );\n*\n* var out = grapheme.emojiProperty( 0x23EC );\n* // returns 101\n*\n* out = grapheme.breakProperty( 0x008f );\n* // returns 2\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar constants = require( './constants.js' );\nvar breakType = require( './break_type.js' );\nvar emojiProperty = require( './emoji_property.js' );\nvar breakProperty = require( './break_property.js' );\n\n\n// MAIN //\n\nvar main = {};\nsetReadOnly( main, 'constants', constants );\nsetReadOnly( main, 'breakType', breakType );\nsetReadOnly( main, 'emojiProperty', emojiProperty );\nsetReadOnly( main, 'breakProperty', breakProperty );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar codePointAt = require( './../../code-point-at' );\nvar hasUTF16SurrogatePairAt = require( '@stdlib/assert/has-utf16-surrogate-pair-at' );\nvar grapheme = require( './../../tools/grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar breakType = grapheme.breakType;\nvar breakProperty = grapheme.breakProperty;\nvar emojiProperty = grapheme.emojiProperty;\n\n\n// MAIN //\n\n/**\n* Returns the next extended grapheme cluster break in a string after a specified position.\n*\n* @param {string} str - input string\n* @param {integer} [fromIndex=0] - position\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an integer\n* @returns {NonNegativeInteger} next grapheme break position\n*\n* @example\n* var out = nextGraphemeClusterBreak( 'last man standing', 4 );\n* // returns 5\n*\n* @example\n* var out = nextGraphemeClusterBreak( 'presidential election', 8 );\n* // returns 9\n*\n* @example\n* var out = nextGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 1 );\n* // returns 3\n*\n* @example\n* var out = nextGraphemeClusterBreak( '\uD83C\uDF37' );\n* // returns -1\n*/\nfunction nextGraphemeClusterBreak( str, fromIndex ) {\n\tvar breaks;\n\tvar emoji;\n\tvar len;\n\tvar idx;\n\tvar cp;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = fromIndex;\n\t} else {\n\t\tidx = 0;\n\t}\n\tlen = str.length;\n\tif ( idx < 0 ) {\n\t\tidx += len;\n\t\tif ( idx < 0 ) {\n\t\t\tidx = 0;\n\t\t}\n\t}\n\tif ( len === 0 || idx >= len ) {\n\t\treturn -1;\n\t}\n\t// Initialize caches for storing grapheme break and emoji properties:\n\tbreaks = [];\n\temoji = [];\n\n\t// Get the code point for the starting index:\n\tcp = codePointAt( str, idx );\n\n\t// Get the corresponding grapheme break and emoji properties:\n\tbreaks.push( breakProperty( cp ) );\n\temoji.push( emojiProperty( cp ) );\n\n\t// Begin searching for the next grapheme cluster break...\n\tfor ( i = idx+1; i < len; i++ ) {\n\t\t// If the current character is part of a surrogate pair, move along...\n\t\tif ( hasUTF16SurrogatePairAt( str, i-1 ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\t// Get the next code point:\n\t\tcp = codePointAt( str, i );\n\n\t\t// Get the corresponding grapheme break and emoji properties:\n\t\tbreaks.push( breakProperty( cp ) );\n\t\temoji.push( emojiProperty( cp ) );\n\n\t\t// Determine if we've encountered a grapheme cluster break...\n\t\tif ( breakType( breaks, emoji ) > 0 ) {\n\t\t\t// We've found a break!\n\t\t\treturn i;\n\t\t}\n\t}\n\t// Unable to find a grapheme cluster break:\n\treturn -1;\n}\n\n\n// EXPORTS //\n\nmodule.exports = nextGraphemeClusterBreak;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the next extended grapheme cluster break in a string after a specified position.\n*\n* @module @stdlib/string/next-grapheme-cluster-break\n*\n* @example\n* var nextGraphemeClusterBreak = require( '@stdlib/string/next-grapheme-cluster-break' );\n*\n* var out = nextGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 1 );\n* // returns 3\n*\n* out = nextGraphemeClusterBreak( '\uD83C\uDF37', 0 );\n* // returns -1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Returns the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of grapheme clusters to return\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election', 1 );\n* // returns 'p'\n*\n* @example\n* var out = first( 'JavaScript', 1 );\n* // returns 'J'\n*\n* @example\n* var out = first( 'Hidden Treasures', 1 );\n* // returns 'H'\n*\n* @example\n* var out = first( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC36\uD83D\uDC2E'\n*\n* @example\n* var out = first( 'foo bar', 5 );\n* // returns 'foo b'\n*/\nfunction first( str, n ) {\n\tvar i = 0;\n\twhile ( n > 0 ) {\n\t\ti = nextGraphemeClusterBreak( str, i );\n\t\tn -= 1;\n\t}\n\t// Value of `i` will be -1 if and only if `str` is an empty string or `str` has only 1 extended grapheme cluster...\n\tif ( str === '' || i === -1 ) {\n\t\treturn str;\n\t}\n\treturn str.substring( 0, i );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @module @stdlib/string/base/first-grapheme-cluster\n*\n* @example\n* var first = require( '@stdlib/string/base/first-grapheme-cluster' );\n*\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures', 1 );\n* // returns 'H';\n*\n* out = first( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Invokes a function for each UTF-16 code unit in a string.\n*\n* @param {string} str - input string\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, clbk, thisArg ) {\n\tvar i;\n\tfor ( i = 0; i < str.length; i++ ) {\n\t\tclbk.call( thisArg, str[ i ], i, str );\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each UTF-16 code unit in a string.\n*\n* @module @stdlib/string/base/for-each\n*\n* @example\n* var forEach = require( '@stdlib/string/base/for-each' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Invokes a function for each Unicode code point in a string.\n*\n* @param {string} str - input string\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, clbk, thisArg ) {\n\tvar len;\n\tvar ch1;\n\tvar ch2;\n\tvar idx;\n\tvar ch;\n\tvar i;\n\n\tlen = str.length;\n\n\t// Process the string one Unicode code unit at a time and handle UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\t\tidx = i;\n\t\tch = ch1;\n\n\t\t// Check for a UTF-16 surrogate pair...\n\t\tif ( i < len-1 && RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\tch += ch2;\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Note: `ch` may be a lone surrogate (e.g., a low surrogate without a preceding high surrogate or a high surrogate at the end of the input string).\n\n\t\t// Invoke the callback with the code point:\n\t\tclbk.call( thisArg, ch, idx, str );\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each Unicode code point in a string.\n*\n* @module @stdlib/string/base/for-each-code-point\n*\n* @example\n* var forEach = require( '@stdlib/string/base/for-each-code-point' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Invokes a function for each grapheme cluster (i.e., user-perceived character) in a string.\n*\n* @param {string} str - input string\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, clbk, thisArg ) {\n\tvar len;\n\tvar idx;\n\tvar brk;\n\n\tlen = str.length;\n\tidx = 0;\n\twhile ( idx < len ) {\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t\tif ( brk === -1 ) {\n\t\t\tbrk = len;\n\t\t}\n\t\tclbk.call( thisArg, str.substring( idx, brk ), idx, str );\n\t\tidx = brk;\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each grapheme cluster (i.e., user-perceived character) in a string.\n*\n* @module @stdlib/string/base/for-each-grapheme-cluster\n*\n* @example\n* var forEach = require( '@stdlib/string/base/for-each-grapheme-cluster' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar reWhitespace = require( '@stdlib/regexp/whitespace' ).REGEXP;\n\n\n// MAIN //\n\n/**\n* Capitalizes the first letter of each word in an input string.\n*\n* @param {string} str - string to convert\n* @returns {string} start case string\n*\n* @example\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\nfunction startcase( str ) {\n\tvar cap;\n\tvar out;\n\tvar ch;\n\tvar i;\n\n\tcap = true;\n\tout = '';\n\tfor ( i = 0; i < str.length; i++ ) {\n\t\tch = str.charAt( i );\n\t\tif ( reWhitespace.test( ch ) ) {\n\t\t\tcap = true;\n\t\t} else if ( cap ) {\n\t\t\tch = ch.toUpperCase();\n\t\t\tcap = false;\n\t\t}\n\t\tout += ch;\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = startcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first letter of each word in an input string.\n*\n* @module @stdlib/string/base/startcase\n*\n* @example\n* var startcase = require( '@stdlib/string/base/startcase' );\n*\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar startcase = require( './../../../base/startcase' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to HTTP header case.\n*\n* @param {string} str - string to convert\n* @returns {string} HTTP header-cased string\n*\n* @example\n* var out = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* @example\n* var out = headercase( 'IS_MOBILE' );\n* // returns 'Is-Mobile'\n*\n* @example\n* var out = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*\n* @example\n* var out = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*/\nfunction headercase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = lowercase( str );\n\tstr = startcase( str );\n\treturn replace( str, RE_WHITESPACE, '-' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = headercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to HTTP header case.\n*\n* @module @stdlib/string/base/headercase\n*\n* @example\n* var headercase = require( '@stdlib/string/base/headercase' );\n*\n* var str = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar uppercase = require( './../../../base/uppercase' );\nvar lowercase = require( './../../../base/lowercase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to inverse case.\n*\n* @param {string} str - string to convert\n* @returns {string} inverse-cased string\n*\n* @example\n* var str = invcase( 'beep' );\n* // returns 'BEEP'\n*\n* @example\n* var str = invcase( 'beep BOOP' );\n* // returns 'BEEP boop'\n*\n* @example\n* var str = invcase( 'isMobile' );\n* // returns 'ISmOBILE'\n*\n* @example\n* var str = invcase( 'HeLlO wOrLd!' );\n* // returns 'hElLo WoRlD!'\n*/\nfunction invcase( str ) {\n\tvar out;\n\tvar ch;\n\tvar s;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < str.length; i++ ) {\n\t\tch = str[ i ];\n\t\ts = uppercase( ch );\n\t\tif ( s === ch ) {\n\t\t\ts = lowercase( ch );\n\t\t}\n\t\tout.push( s );\n\t}\n\treturn out.join( '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = invcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to inverse case.\n*\n* @module @stdlib/string/base/invcase\n*\n* @example\n* var invcase = require( '@stdlib/string/base/invcase' );\n*\n* var str = invcase( 'aBcDeF' );\n* // returns 'AbCdEf'\n*\n* str = invcase( 'Hello World!' );\n* // returns 'hELLO wORLD!'\n*\n* str = invcase( 'I am a robot' );\n* // returns 'i AM A ROBOT'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to kebab case.\n*\n* @param {string} str - string to convert\n* @returns {string} kebab-cased string\n*\n* @example\n* var str = kebabCase( 'Hello World!' );\n* // returns 'hello-world'\n*\n* @example\n* var str = kebabCase( 'foo bar' );\n* // returns 'foo-bar'\n*\n* @example\n* var str = kebabCase( 'I am a tiny little teapot' );\n* // returns 'i-am-a-tiny-little-teapot'\n*\n* @example\n* var str = kebabCase( 'BEEP boop' );\n* // returns 'beep-boop'\n*\n* @example\n* var str = kebabCase( 'isMobile' );\n* // returns 'is-mobile'\n*/\nfunction kebabCase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '-' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = kebabCase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to kebab case.\n*\n* @module @stdlib/string/base/kebabcase\n*\n* @example\n* var kebabcase = require( '@stdlib/string/base/kebabcase' );\n*\n* var str = kebabcase( 'Foo Bar' );\n* // returns 'foo-bar'\n*\n* str = kebabcase( 'I am a tiny little house' );\n* // returns 'i-am-a-tiny-little-house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.repeat !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Repeats a string a specified number of times and returns the concatenated result.\n*\n* ## Method\n*\n* The algorithmic trick used in the implementation is to treat string concatenation the same as binary addition (i.e., any natural number (nonnegative integer) can be expressed as a sum of powers of two).\n*\n* For example,\n*\n* ```text\n* n = 10 => 1010 => 2^3 + 2^0 + 2^1 + 2^0\n* ```\n*\n* We can produce a 10-repeat string by \"adding\" the results of a 8-repeat string and a 2-repeat string.\n*\n* The implementation is then as follows:\n*\n* 1. Let `s` be the string to be repeated and `o` be an output string.\n*\n* 2. Initialize an output string `o`.\n*\n* 3. Check the least significant bit to determine if the current `s` string should be \"added\" to the output \"total\".\n*\n* - if the bit is a one, add\n* - otherwise, move on\n*\n* 4. Double the string `s` by adding `s` to `s`.\n*\n* 5. Right-shift the bits of `n`.\n*\n* 6. Check if we have shifted off all bits.\n*\n* - if yes, done.\n* - otherwise, move on\n*\n* 7. Repeat 3-6.\n*\n* The result is that, as the string is repeated, we continually check to see if the doubled string is one which we want to add to our \"total\".\n*\n* The algorithm runs in `O(log_2(n))` compared to `O(n)`.\n*\n* @private\n* @param {string} str - string to repeat\n* @param {NonNegativeInteger} n - number of times to repeat the string\n* @returns {string} repeated string\n*\n* @example\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* @example\n* var str = repeat( '', 100 );\n* // returns ''\n*\n* @example\n* var str = repeat( 'beep', 0 );\n* // returns ''\n*/\nfunction repeat( str, n ) {\n\tvar rpt;\n\tvar cnt;\n\tif ( str.length === 0 || n === 0 ) {\n\t\treturn '';\n\t}\n\trpt = '';\n\tcnt = n;\n\tfor ( ; ; ) {\n\t\t// If the count is odd, append the current concatenated string:\n\t\tif ( (cnt&1) === 1 ) {\n\t\t\trpt += str;\n\t\t}\n\t\t// Right-shift the bits:\n\t\tcnt >>>= 1;\n\t\tif ( cnt === 0 ) {\n\t\t\tbreak;\n\t\t}\n\t\t// Double the string:\n\t\tstr += str;\n\t}\n\treturn rpt;\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar repeat = String.prototype.repeat;\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Repeats a string a specified number of times and returns the concatenated result.\n*\n* @param {string} str - string to repeat\n* @param {NonNegativeInteger} n - number of times to repeat the string\n* @returns {string} repeated string\n*\n* @example\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* @example\n* var str = repeat( '', 100 );\n* // returns ''\n*\n* @example\n* var str = repeat( 'beep', 0 );\n* // returns ''\n*/\nfunction repeat( str, n ) {\n\treturn builtin.call( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Repeat a string a specified number of times and return the concatenated result.\n*\n* @module @stdlib/string/base/repeat\n*\n* @example\n* var replace = require( '@stdlib/string/base/repeat' );\n*\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* str = repeat( '', 100 );\n* // returns ''\n*\n* str = repeat( 'beep', 0 );\n* // returns ''\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar repeat;\nif ( HAS_BUILTIN ) {\n\trepeat = main;\n} else {\n\trepeat = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar repeat = require( './../../../base/repeat' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\n\n\n// MAIN //\n\n/**\n* Left pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} pad - string used to pad\n* @returns {string} padded string\n*\n* @example\n* var str = lpad( 'a', 5, ' ' );\n* // returns ' a'\n*\n* @example\n* var str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* @example\n* var str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\nfunction lpad( str, len, pad ) {\n\tvar n = ( len - str.length ) / pad.length;\n\tif ( n <= 0 ) {\n\t\treturn str;\n\t}\n\tn = ceil( n );\n\treturn repeat( pad, n ) + str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = lpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Left pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/base/left-pad\n*\n* @example\n* var lpad = require( '@stdlib/string/base/left-pad' );\n*\n* var str = lpad( 'a', 5, ' ' );\n* // returns ' a'\n*\n* str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trimLeft !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( './../../../base/replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /^[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* @example\n* var out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*\n* @example\n* var out = ltrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines\\n\\n\\n'\n*/\nfunction ltrim( str ) {\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ltrim = String.prototype.trimLeft;\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* @example\n* var out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*\n* @example\n* var out = ltrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines\\n\\n\\n'\n*/\nfunction ltrim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning of a string.\n*\n* @module @stdlib/string/base/left-trim\n*\n* @example\n* var ltrim = require( '@stdlib/string/base/left-trim' );\n*\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar ltrim;\nif ( HAS_BUILTIN ) {\n\tltrim = main;\n} else {\n\tltrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar capitalize = require( './../../../base/capitalize' );\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_TO_PASCAL = /(?:\\s|^)([^\\s]+)(?=\\s|$)/g;\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// FUNCTIONS //\n\n/**\n* Callback invoked upon a match.\n*\n* @private\n* @param {string} match - entire match\n* @param {string} p1 - first capture group\n* @returns {string} capitalized capture group\n*/\nfunction replacer( match, p1 ) {\n\treturn capitalize( lowercase( p1 ) );\n}\n\n\n// MAIN //\n\n/**\n* Converts a string to Pascal case.\n*\n* @param {string} str - string to convert\n* @returns {string} Pascal-cased string\n*\n* @example\n* var out = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* @example\n* var out = pascalcase( 'IS_MOBILE' );\n* // returns 'IsMobile'\n*\n* @example\n* var out = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*\n* @example\n* var out = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*/\nfunction pascalcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_WHITESPACE, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\treturn replace( str, RE_TO_PASCAL, replacer );\n}\n\n\n// EXPORTS //\n\nmodule.exports = pascalcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to Pascal case.\n*\n* @module @stdlib/string/base/pascalcase\n*\n* @example\n* var pascalcase = require( '@stdlib/string/base/pascalcase' );\n*\n* var str = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* str = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*\n* str = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\n// 2^6-1 = 63 => 0x3f => 00111111\nvar Ox3F = 63|0;\n\n// 2^7 = 128 => 0x80 => 10000000\nvar Ox80 = 128|0;\n\n// 192 => 0xc0 => 11000000\nvar OxC0 = 192|0;\n\n// 224 => 0xe0 => 11100000\nvar OxE0 = 224|0;\n\n// 240 => 0xf0 => 11110000\nvar OxF0 = 240|0;\n\n// 2^10-1 = 1023 => 0x3ff => 00000011 11111111\nvar Ox3FF = 1023|0;\n\n// 2^11 = 2048 => 0x800 => 00001000 00000000\nvar Ox800 = 2048|0;\n\n// 55296 => 11011000 00000000\nvar OxD800 = 55296|0;\n\n// 57344 => 11100000 00000000\nvar OxE000 = 57344|0;\n\n// 2^16 = 65536 => 00000000 00000001 00000000 00000000\nvar Ox10000 = 65536|0;\n\n\n// MAIN //\n\n/**\n* Converts a UTF-16 encoded string to an array of integers using UTF-8 encoding.\n*\n* ## Method\n*\n* - UTF-8 is defined to encode code points in one to four bytes, depending on the number of significant bits in the numerical value of the code point.\n*\n* - UTF-16 encoding uses one 16-bit unit for non-surrogates (U+0000 to U+D7FF and U+E000 to U+FFFF).\n*\n* - UTF-16 encoding uses two 16-bit units (surrogate pairs) for U+10000 to U+10FFFF and encodes U+10000-U+10FFFF by subtracting 0x10000 from the code point, expressing the result as a 20-bit binary, and splitting the 20 bits of 0x0-0xFFFFF as upper and lower 10-bits. The respective 10-bits are stored in two 16-bit words.\n*\n* - Let `N` be the number of significant bits.\n*\n* - If `N <= 7` (i.e., U+0000 to U+007F), a code point is encoded in a single byte.\n*\n* ```text\n* 0xxxxxxx\n* ```\n*\n* where an `x` refers to a code point bit.\n*\n* - If `N <= 11` (i.e., U+0080 to U+07FF; ASCII characters), a code point is encoded in two bytes (5+6 bits).\n*\n* ```text\n* 110xxxxx 10xxxxxx\n* ```\n*\n* - If `N <= 16` (i.e., U+0800 to U+FFFF), a code point is encoded in three bytes (4+6+6 bits).\n*\n* ```text\n* 1110xxxx 10xxxxxx 10xxxxxx\n* ```\n*\n* - If `N <= 21` (i.e., U+10000 to U+10FFFF), a code point is encoded in four bytes (3+6+6+6 bits).\n*\n* ```text\n* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n* ```\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {Array} array of integers\n* @see [UTF-8]{@link https://en.wikipedia.org/wiki/UTF-8}\n* @see [Stack Overflow]{@link https://stackoverflow.com/questions/6240055/manually-converting-unicode-codepoints-into-utf-8-and-utf-16}\n*\n* @example\n* var str = '\u2603';\n* var out = utf16ToUTF8Array( str );\n* // returns [ 226, 152, 131 ]\n*/\nfunction utf16ToUTF8Array( str ) {\n\tvar code;\n\tvar out;\n\tvar len;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tlen = str.length;\n\tout = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tcode = str.charCodeAt( i );\n\n\t\t// ASCII...\n\t\tif ( code < Ox80 ) {\n\t\t\tout.push( code );\n\t\t}\n\t\t// UTF-16 non-surrogate pair...\n\t\telse if ( code < Ox800 ) {\n\t\t\tout.push( OxC0 | (code>>6) );\n\t\t\tout.push( Ox80 | (code & Ox3F) );\n\t\t}\n\t\telse if ( code < OxD800 || code >= OxE000 ) {\n\t\t\tout.push( OxE0 | (code>>12) );\n\t\t\tout.push( Ox80 | ((code>>6) & Ox3F) );\n\t\t\tout.push( Ox80 | (code & Ox3F) );\n\t\t}\n\t\t// UTF-16 surrogate pair...\n\t\telse {\n\t\t\ti += 1;\n\n\t\t\t// eslint-disable-next-line max-len\n\t\t\tcode = Ox10000 + (((code & Ox3FF)<<10) | (str.charCodeAt(i) & Ox3FF));\n\n\t\t\tout.push( OxF0 | (code>>18) );\n\t\t\tout.push( Ox80 | ((code>>12) & Ox3F) );\n\t\t\tout.push( Ox80 | ((code>>6) & Ox3F) );\n\t\t\tout.push( Ox80 | (code & Ox3F) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = utf16ToUTF8Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a UTF-16 encoded string to an array of integers using UTF-8 encoding.\n*\n* @module @stdlib/string/utf16-to-utf8-array\n*\n* @example\n* var utf16ToUTF8Array = require( '@stdlib/string/utf16-to-utf8-array' );\n*\n* var str = '\u2603';\n* var out = utf16ToUTF8Array( str );\n* // returns [ 226, 152, 131 ]\n*/\n\n// MODULES //\n\nvar utf16ToUTF8Array = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = utf16ToUTF8Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar utf16ToUTF8Array = require( './../../../utf16-to-utf8-array' );\n\n\n// VARIABLES //\n\n// Character codes:\nvar UNDERSCORE = 95|0;\nvar PERIOD = 46|0;\nvar HYPHEN = 45|0;\nvar TILDE = 126|0;\nvar ZERO = 48|0;\nvar NINE = 57|0;\nvar A = 65|0;\nvar Z = 90|0;\nvar a = 97|0;\nvar z = 122|0;\n\n\n// MAIN //\n\n/**\n* Percent-encodes a UTF-16 encoded string according to [RFC 3986][1].\n*\n* [1]: https://tools.ietf.org/html/rfc3986#section-2.1\n*\n* @param {string} str - string to percent-encode\n* @returns {string} percent-encoded string\n*\n* @example\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\nfunction percentEncode( str ) {\n\tvar byte;\n\tvar out;\n\tvar len;\n\tvar buf;\n\tvar i;\n\n\t// Convert to an array of octets using UTF-8 encoding (see https://tools.ietf.org/html/rfc3986#section-2.5):\n\tbuf = utf16ToUTF8Array( str );\n\n\t// Encode the string...\n\tlen = buf.length;\n\tout = '';\n\tfor ( i = 0; i < len; i++ ) {\n\t\tbyte = buf[ i ];\n\t\tif (\n\t\t\t// ASCII Digits:\n\t\t\t( byte >= ZERO && byte <= NINE ) ||\n\n\t\t\t// ASCII uppercase letters:\n\t\t\t( byte >= A && byte <= Z ) ||\n\n\t\t\t// ASCII lowercase letters:\n\t\t\t( byte >= a && byte <= z ) ||\n\n\t\t\t// ASCII unreserved characters (see https://tools.ietf.org/html/rfc3986#section-2.3):\n\t\t\tbyte === HYPHEN ||\n\t\t\tbyte === PERIOD ||\n\t\t\tbyte === UNDERSCORE ||\n\t\t\tbyte === TILDE\n\t\t) {\n\t\t\tout += str.charAt( i );\n\t\t} else {\n\t\t\t// Convert an octet to hexadecimal and uppercase according to the RFC (see https://tools.ietf.org/html/rfc3986#section-2.1):\n\t\t\tout += '%' + byte.toString( 16 ).toUpperCase();\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = percentEncode;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Percent-encode a UTF-16 encoded string according to RFC 3986.\n*\n* @module @stdlib/string/base/percent-encode\n*\n* @example\n* var percentEncode = require( '@stdlib/string/base/percent-encode' );\n*\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Removes the first `n` UTF-16 code units of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of UTF-16 code units to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election', 1 );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript', 1 );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures'\n*/\nfunction removeFirst( str, n ) {\n\treturn str.substring( n, str.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first `n` UTF-16 code units of a string.\n*\n* @module @stdlib/string/base/remove-first\n*\n* @example\n* var removeFirst = require( '@stdlib/string/base/remove-first' );\n*\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Removes the first `n` Unicode code points of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of Unicode code points to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election', 1 );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript', 1 );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures'\n*/\nfunction removeFirst( str, n ) {\n\tvar len;\n\tvar ch1;\n\tvar ch2;\n\tvar cnt;\n\tvar i;\n\tif ( n === 0 ) {\n\t\treturn str;\n\t}\n\tlen = str.length;\n\tcnt = 0;\n\n\t// Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\t\tcnt += 1;\n\n\t\t// Check for a high UTF-16 surrogate...\n\t\tif ( RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check for an unpaired surrogate at the end of the input string...\n\t\t\tif ( i === len-1 ) {\n\t\t\t\t// We found an unpaired surrogate...\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Check whether we've found the desired number of code points...\n\t\tif ( cnt === n ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn str.substring( cnt, str.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first `n` Unicode code points of a string.\n*\n* @module @stdlib/string/base/remove-first-code-point\n*\n* @example\n* var removeFirst = require( '@stdlib/string/base/remove-first-code-point' );\n*\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Removes the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of grapheme clusters to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election', 1 );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript', 1 );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures'\n*\n* @example\n* var out = removeFirst( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38'\n*\n* @example\n* var out = removeFirst( 'foo bar', 5 );\n* // returns 'ar'\n*/\nfunction removeFirst( str, n ) {\n\tvar i = 0;\n\twhile ( n > 0 ) {\n\t\ti = nextGraphemeClusterBreak( str, i );\n\t\tn -= 1;\n\t}\n\t// Value of `i` will be -1 if and only if `str` is an empty string or `str` has only 1 extended grapheme cluster...\n\tif ( str === '' || i === -1 ) {\n\t\treturn '';\n\t}\n\treturn str.substring( i, str.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @module @stdlib/string/base/remove-first-grapheme-cluster\n*\n* @example\n* var removeFirst = require( '@stdlib/string/base/remove-first-grapheme-cluster' );\n*\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures';\n*\n* out = removeFirst( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC38\uD83D\uDC35'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Replaces the substring before the first occurrence of a specified search string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {string} replacement - replacement string\n* @returns {string} string\n*\n* @example\n* var out = replaceBefore( 'beep boop', ' ', 'foo' );\n* // returns 'foo boop'\n*\n* @example\n* var out = replaceBefore( 'beep boop', 'p', 'foo' );\n* // returns 'foop boop'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', '', 'foo' );\n* // returns 'Hello World!'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', 'xyz', 'foo' );\n* // returns 'Hello World!'\n*/\nfunction replaceBefore( str, search, replacement ) {\n\tvar idx = str.indexOf( search );\n\tif ( str === '' || search === '' || replacement === '' || idx < 0 ) {\n\t\treturn str;\n\t}\n\treturn replacement + str.substring( idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replaceBefore;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace the substring before the first occurrence of a specified search string.\n*\n* @module @stdlib/string/base/replace-before\n*\n* @example\n* var replaceBefore = require( '@stdlib/string/base/replace-before' );\n*\n* var str = 'beep boop';\n*\n* var out = replaceBefore( str, ' ', 'foo' );\n* // returns 'foo boop'\n*\n* out = replaceBefore( str, 'o', 'bar' );\n* // returns 'baroop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar repeat = require( './../../../base/repeat' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\n\n\n// MAIN //\n\n/**\n* Right pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} pad - string used to pad\n* @returns {string} padded string\n*\n* @example\n* var str = rpad( 'a', 5, ' ' );\n* // returns 'a '\n*\n* @example\n* var str = rpad( 'beep', 10, 'b' );\n* // returns 'beepbbbbbb'\n*\n* @example\n* var str = rpad( 'boop', 12, 'beep' );\n* // returns 'boopbeepbeep'\n*/\nfunction rpad( str, len, pad ) {\n\tvar n = ( len - str.length ) / pad.length;\n\tif ( n <= 0 ) {\n\t\treturn str;\n\t}\n\tn = ceil( n );\n\treturn str + repeat( pad, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Right pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/base/right-pad\n*\n* @example\n* var rpad = require( '@stdlib/string/base/right-pad' );\n*\n* var str = rpad( 'a', 5, ' ' );\n* // returns 'a '\n*\n* str = rpad( 'beep', 10, 'b' );\n* // returns 'beepbbbbbb'\n*\n* str = rpad( 'boop', 12, 'beep' );\n* // returns 'boopbeepbeep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trimRight !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( './../../../base/replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+$/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace from the end of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* @example\n* var out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* @example\n* var out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\nfunction rtrim( str ) {\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar rtrim = String.prototype.trimRight;\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace from the end of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* @example\n* var out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* @example\n* var out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\nfunction rtrim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the end of a string.\n*\n* @module @stdlib/string/base/right-trim\n*\n* @example\n* var rtrim = require( '@stdlib/string/base/right-trim' );\n*\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar rtrim;\nif ( HAS_BUILTIN ) {\n\trtrim = main;\n} else {\n\trtrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[\\-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to snake case.\n*\n* @param {string} str - string to convert\n* @returns {string} snake-cased string\n*\n* @example\n* var str = snakecase( 'Hello World!' );\n* // returns 'hello_world'\n*\n* @example\n* var str = snakecase( 'foo bar' );\n* // returns 'foo_bar'\n*\n* @example\n* var str = snakecase( 'I am a tiny little teapot' );\n* // returns 'i_am_a_tiny_little_teapot'\n*\n* @example\n* var str = snakecase( 'BEEP boop' );\n* // returns 'beep_boop'\n*\n* @example\n* var str = snakecase( 'isMobile' );\n* // returns 'is_mobile'\n*/\nfunction snakecase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '_' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = snakecase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to snake case.\n*\n* @module @stdlib/string/base/snakecase\n*\n* @example\n* var snakecase = require( '@stdlib/string/base/snakecase' );\n*\n* var str = snakecase( 'Foo Bar' );\n* // returns 'foo_bar'\n*\n* str = snakecase( 'I am a tiny little house' );\n* // returns 'i_am_a_tiny_little_house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.startsWith !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests if a string starts with the characters of another string.\n*\n* @private\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} position - position at which to start searching\n* @returns {boolean} boolean indicating if the input string starts with the search string\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember, remember', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'To be', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 14 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'quest', -9 );\n* // returns true\n*/\nfunction startsWith( str, search, position ) {\n\tvar pos;\n\tvar i;\n\tif ( position < 0 ) {\n\t\tpos = str.length + position;\n\t} else {\n\t\tpos = position;\n\t}\n\tif ( search.length === 0 ) {\n\t\treturn true;\n\t}\n\tif (\n\t\tpos < 0 ||\n\t\tpos + search.length > str.length\n\t) {\n\t\treturn false;\n\t}\n\tfor ( i = 0; i < search.length; i++ ) {\n\t\tif ( str.charCodeAt( pos + i ) !== search.charCodeAt( i ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar startsWith = String.prototype.startsWith;\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Tests if a string starts with the characters of another string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} position - position at which to start searching\n* @returns {boolean} boolean indicating if the input string starts with the search string\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember, remember', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'To be', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 14 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'quest', -9 );\n* // returns true\n*/\nfunction startsWith( str, search, position ) {\n\tvar pos;\n\tif ( position < 0 ) {\n\t\tpos = str.length + position;\n\t} else {\n\t\tpos = position;\n\t}\n\tif ( search.length === 0 ) {\n\t\treturn true;\n\t}\n\tif (\n\t\tpos < 0 ||\n\t\tpos + search.length > str.length\n\t) {\n\t\treturn false;\n\t}\n\treturn builtin.call( str, search, pos );\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string starts with the characters of another string.\n*\n* @module @stdlib/string/base/starts-with\n*\n* @example\n* var startsWith = require( '@stdlib/string/base/starts-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n* var bool = startsWith( str, 'Fair', 0 );\n* // returns true\n*\n* bool = startsWith( str, 'fair', 0 );\n* // returns false\n*\n* bool = startsWith( str, 'foul', 8 );\n* // returns true\n*\n* bool = startsWith( str, 'filthy', -10 );\n* // returns true\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar startsWith;\nif ( HAS_BUILTIN ) {\n\tstartsWith = main;\n} else {\n\tstartsWith = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Uncapitalizes the first character of a string.\n*\n* @param {string} str - input string\n* @returns {string} input string with first character converted to lowercase\n*\n* @example\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* @example\n* var out = uncapitalize( 'Presidential election' );\n* // returns 'presidential election'\n*\n* @example\n* var out = uncapitalize( 'JavaScript' );\n* // returns 'javaScript'\n*\n* @example\n* var out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures'\n*/\nfunction uncapitalize( str ) {\n\tif ( str === '' ) {\n\t\treturn '';\n\t}\n\treturn str.charAt( 0 ).toLowerCase() + str.slice( 1 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = uncapitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Uncapitalize the first character of a string.\n*\n* @module @stdlib/string/base/uncapitalize\n*\n* @example\n* var uncapitalize = require( '@stdlib/string/base/uncapitalize' );\n*\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name camelcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/camelcase}\n*/\nsetReadOnly( ns, 'camelcase', require( './../../base/camelcase' ) );\n\n/**\n* @name capitalize\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/capitalize}\n*/\nsetReadOnly( ns, 'capitalize', require( './../../base/capitalize' ) );\n\n/**\n* @name codePointAt\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/code-point-at}\n*/\nsetReadOnly( ns, 'codePointAt', require( './../../base/code-point-at' ) );\n\n/**\n* @name constantcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/constantcase}\n*/\nsetReadOnly( ns, 'constantcase', require( './../../base/constantcase' ) );\n\n/**\n* @name distances\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/string/base/distances}\n*/\nsetReadOnly( ns, 'distances', require( './../../base/distances' ) );\n\n/**\n* @name dotcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/dotcase}\n*/\nsetReadOnly( ns, 'dotcase', require( './../../base/dotcase' ) );\n\n/**\n* @name endsWith\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/ends-with}\n*/\nsetReadOnly( ns, 'endsWith', require( './../../base/ends-with' ) );\n\n/**\n* @name first\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/first}\n*/\nsetReadOnly( ns, 'first', require( './../../base/first' ) );\n\n/**\n* @name firstCodePoint\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/first-code-point}\n*/\nsetReadOnly( ns, 'firstCodePoint', require( './../../base/first-code-point' ) );\n\n/**\n* @name firstGraphemeCluster\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/first-grapheme-cluster}\n*/\nsetReadOnly( ns, 'firstGraphemeCluster', require( './../../base/first-grapheme-cluster' ) );\n\n/**\n* @name forEach\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/for-each}\n*/\nsetReadOnly( ns, 'forEach', require( './../../base/for-each' ) );\n\n/**\n* @name forEachCodePoint\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/for-each-code-point}\n*/\nsetReadOnly( ns, 'forEachCodePoint', require( './../../base/for-each-code-point' ) );\n\n/**\n* @name forEachGraphemeCluster\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/for-each-grapheme-cluster}\n*/\nsetReadOnly( ns, 'forEachGraphemeCluster', require( './../../base/for-each-grapheme-cluster' ) );\n\n/**\n* @name formatInterpolate\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/format-interpolate}\n*/\nsetReadOnly( ns, 'formatInterpolate', require( './../../base/format-interpolate' ) );\n\n/**\n* @name formatTokenize\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/format-tokenize}\n*/\nsetReadOnly( ns, 'formatTokenize', require( './../../base/format-tokenize' ) );\n\n/**\n* @name headercase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/headercase}\n*/\nsetReadOnly( ns, 'headercase', require( './../../base/headercase' ) );\n\n/**\n* @name invcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/invcase}\n*/\nsetReadOnly( ns, 'invcase', require( './../../base/invcase' ) );\n\n/**\n* @name kebabcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/kebabcase}\n*/\nsetReadOnly( ns, 'kebabcase', require( './../../base/kebabcase' ) );\n\n/**\n* @name lpad\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/left-pad}\n*/\nsetReadOnly( ns, 'lpad', require( './../../base/left-pad' ) );\n\n/**\n* @name ltrim\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/left-trim}\n*/\nsetReadOnly( ns, 'ltrim', require( './../../base/left-trim' ) );\n\n/**\n* @name lowercase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/lowercase}\n*/\nsetReadOnly( ns, 'lowercase', require( './../../base/lowercase' ) );\n\n/**\n* @name pascalcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/pascalcase}\n*/\nsetReadOnly( ns, 'pascalcase', require( './../../base/pascalcase' ) );\n\n/**\n* @name percentEncode\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/percent-encode}\n*/\nsetReadOnly( ns, 'percentEncode', require( './../../base/percent-encode' ) );\n\n/**\n* @name removeFirst\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/remove-first}\n*/\nsetReadOnly( ns, 'removeFirst', require( './../../base/remove-first' ) );\n\n/**\n* @name removeFirstCodePoint\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/remove-first-code-point}\n*/\nsetReadOnly( ns, 'removeFirstCodePoint', require( './../../base/remove-first-code-point' ) );\n\n/**\n* @name removeFirstGraphemeCluster\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/remove-first-grapheme-cluster}\n*/\nsetReadOnly( ns, 'removeFirstGraphemeCluster', require( './../../base/remove-first-grapheme-cluster' ) );\n\n/**\n* @name repeat\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/repeat}\n*/\nsetReadOnly( ns, 'repeat', require( './../../base/repeat' ) );\n\n/**\n* @name replace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/replace}\n*/\nsetReadOnly( ns, 'replace', require( './../../base/replace' ) );\n\n/**\n* @name replaceBefore\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/replace-before}\n*/\nsetReadOnly( ns, 'replaceBefore', require( './../../base/replace-before' ) );\n\n/**\n* @name rpad\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/right-pad}\n*/\nsetReadOnly( ns, 'rpad', require( './../../base/right-pad' ) );\n\n/**\n* @name rtrim\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/right-trim}\n*/\nsetReadOnly( ns, 'rtrim', require( './../../base/right-trim' ) );\n\n/**\n* @name snakecase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/snakecase}\n*/\nsetReadOnly( ns, 'snakecase', require( './../../base/snakecase' ) );\n\n/**\n* @name startcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/startcase}\n*/\nsetReadOnly( ns, 'startcase', require( './../../base/startcase' ) );\n\n/**\n* @name startsWith\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/starts-with}\n*/\nsetReadOnly( ns, 'startsWith', require( './../../base/starts-with' ) );\n\n/**\n* @name trim\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/trim}\n*/\nsetReadOnly( ns, 'trim', require( './../../base/trim' ) );\n\n/**\n* @name uncapitalize\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/uncapitalize}\n*/\nsetReadOnly( ns, 'uncapitalize', require( './../../base/uncapitalize' ) );\n\n/**\n* @name uppercase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/uppercase}\n*/\nsetReadOnly( ns, 'uppercase', require( './../../base/uppercase' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/camelcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to camel case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} camel-cased string\n*\n* @example\n* var out = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* @example\n* var out = camelcase( 'IS_MOBILE' );\n* // returns 'isMobile'\n*\n* @example\n* var out = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*\n* @example\n* var out = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*/\nfunction camelcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = camelcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to camel case.\n*\n* @module @stdlib/string/camelcase\n*\n* @example\n* var camelcase = require( '@stdlib/string/camelcase' );\n*\n* var str = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* str = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*\n* str = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/capitalize' );\n\n\n// MAIN //\n\n/**\n* Capitalizes the first character in a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} capitalized string\n*\n* @example\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* @example\n* var out = capitalize( 'presidential election' );\n* // returns 'Presidential election'\n*\n* @example\n* var out = capitalize( 'javaScript' );\n* // returns 'JavaScript'\n*\n* @example\n* var out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures'\n*/\nfunction capitalize( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = capitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first character in a string.\n*\n* @module @stdlib/string/capitalize\n*\n* @example\n* var capitalize = require( '@stdlib/string/capitalize' );\n*\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/constantcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to constant case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} constant-cased string\n*\n* @example\n* var str = constantcase( 'beep' );\n* // returns 'BEEP'\n*\n* @example\n* var str = constantcase( 'beep boop' );\n* // returns 'BEEP_BOOP'\n*\n* @example\n* var str = constantcase( 'isMobile' );\n* // returns 'IS_MOBILE'\n*\n* @example\n* var str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*/\nfunction constantcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = constantcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to constant case.\n*\n* @module @stdlib/string/constantcase\n*\n* @example\n* var constantcase = require( '@stdlib/string/constantcase' );\n*\n* var str = constantcase( 'aBcDeF' );\n* // returns 'ABCDEF'\n*\n* str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*\n* str = constantcase( 'I am a robot' );\n* // returns 'I_AM_A_ROBOT'\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/dotcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to dot case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} dot-cased string\n*\n* @example\n* var out = dotcase( 'foo bar' );\n* // returns 'foo.bar'\n*\n* @example\n* var out = dotcase( 'IS_MOBILE' );\n* // returns 'is.mobile'\n*\n* @example\n* var out = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*\n* @example\n* var out = dotcase( '--foo-bar--' );\n* // returns 'foo.bar'\n*/\nfunction dotcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = dotcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to dot case.\n*\n* @module @stdlib/string/dotcase\n*\n* @example\n* var dotcase = require( '@stdlib/string/dotcase' );\n*\n* var str = dotcase( 'foo bar' );\n* // returns 'foo.bar'\n*\n* str = dotcase( '--foo-bar--' );\n* // returns 'foo.bar'\n*\n* str = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/ends-with' );\n\n\n// MAIN //\n\n/**\n* Test if a string ends with the characters of another string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} [len=str.length] - substring length\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {boolean} boolean indicating if the input string ends with the search string\n*\n* @example\n* var bool = endsWith( 'Remember the story I used to tell you when you were a boy?', 'boy?' );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'Remember the story I used to tell you when you were a boy?', 'Boy?' );\n* // returns false\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be' );\n* // returns false\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', 19 );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', -23 );\n* // returns true\n*/\nfunction endsWith( str, search, len ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( len ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', len ) );\n\t\t}\n\t} else {\n\t\tlen = str.length;\n\t}\n\treturn base( str, search, len );\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string ends with the characters of another string.\n*\n* @module @stdlib/string/ends-with\n*\n* @example\n* var endsWith = require( '@stdlib/string/ends-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n*\n* var bool = endsWith( str, 'air' );\n* // returns true\n*\n* bool = endsWith( str, 'fair' );\n* // returns false\n*\n* bool = endsWith( str, 'fair', 30 );\n* // returns true\n*\n* bool = endsWith( str, 'fair', -34 );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar firstCodeUnit = require( './../../base/first' );\nvar firstCodePoint = require( './../../base/first-code-point' );\nvar firstGraphemeCluster = require( './../../base/first-grapheme-cluster' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': firstGraphemeCluster,\n\t'code_point': firstCodePoint,\n\t'code_unit': firstCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Returns the first character(s) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} [n=1] - number of characters to return\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" to return (must be either `grapheme`, `code_point`, or `code_unit`)\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing' );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election' );\n* // returns 'p'\n*\n* @example\n* var out = first( 'javaScript' );\n* // returns 'j'\n*\n* @example\n* var out = first( 'Hidden Treasures' );\n* // returns 'H'\n*\n* @example\n* var out = first( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC36\uD83D\uDC2E'\n*\n* @example\n* var out = first( 'foo bar', 5 );\n* // returns 'foo b'\n*/\nfunction first( str ) {\n\tvar options;\n\tvar nargs;\n\tvar opts;\n\tvar n;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tn = 1;\n\t} else if ( nargs === 2 ) {\n\t\tn = arguments[ 1 ];\n\t\tif ( isPlainObject( n ) ) {\n\t\t\toptions = n;\n\t\t\tn = 1;\n\t\t} else if ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t} else { // nargs > 2\n\t\tn = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t\toptions = arguments[ 2 ];\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\treturn FCNS[ opts.mode ]( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first character(s) of a string.\n*\n* @module @stdlib/string/first\n*\n* @example\n* var first = require( '@stdlib/string/first' );\n*\n* var out = first( 'last man standing' );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures' );\n* // returns 'H';\n*\n* out = first( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar forEachCodeUnit = require( './../../base/for-each' );\nvar forEachCodePoint = require( './../../base/for-each-code-point' );\nvar forEachGraphemeCluster = require( './../../base/for-each-grapheme-cluster' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': forEachGraphemeCluster,\n\t'code_point': forEachCodePoint,\n\t'code_unit': forEachCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Invokes a function for each character in a string.\n*\n* @param {string} str - input string\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" over which to iterate (must be either `grapheme`, `code_point`, or `code_unit`)\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} callback argument must be a function\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, options, clbk ) {\n\tvar thisArg;\n\tvar nargs;\n\tvar opts;\n\tvar cb;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 2 ) {\n\t\tcb = options;\n\t\toptions = null;\n\t} else if ( nargs === 3 ) {\n\t\tif ( isPlainObject( options ) ) {\n\t\t\tcb = clbk;\n\t\t} else {\n\t\t\tcb = options;\n\t\t\toptions = null;\n\t\t\tthisArg = clbk;\n\t\t}\n\t} else { // nargs === 4\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t\tcb = clbk;\n\t\tthisArg = arguments[ 3 ];\n\t}\n\tif ( !isFunction( cb ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Callback argument must be a function. Value: `%s`.', cb ) );\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\tFCNS[ opts.mode ]( str, cb, thisArg );\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each character in a string.\n*\n* @module @stdlib/string/for-each\n*\n* @example\n* var forEach = require( '@stdlib/string/for-each' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar format = require( './../../format' );\nvar UNICODE_MAX = require( '@stdlib/constants/unicode/max' );\nvar UNICODE_MAX_BMP = require( '@stdlib/constants/unicode/max-bmp' );\n\n\n// VARIABLES //\n\nvar fromCharCode = String.fromCharCode;\n\n// Factor to rescale a code point from a supplementary plane:\nvar Ox10000 = 0x10000|0; // 65536\n\n// Factor added to obtain a high surrogate:\nvar OxD800 = 0xD800|0; // 55296\n\n// Factor added to obtain a low surrogate:\nvar OxDC00 = 0xDC00|0; // 56320\n\n// 10-bit mask: 2^10-1 = 1023 => 0x3ff => 00000000 00000000 00000011 11111111\nvar Ox3FF = 1023|0;\n\n\n// MAIN //\n\n/**\n* Creates a string from a sequence of Unicode code points.\n*\n* ## Notes\n*\n* - UTF-16 encoding uses one 16-bit unit for non-surrogates (U+0000 to U+D7FF and U+E000 to U+FFFF).\n* - UTF-16 encoding uses two 16-bit units (surrogate pairs) for U+10000 to U+10FFFF and encodes U+10000-U+10FFFF by subtracting 0x10000 from the code point, expressing the result as a 20-bit binary, and splitting the 20 bits of 0x0-0xFFFFF as upper and lower 10-bits. The respective 10-bits are stored in two 16-bit words: a high and a low surrogate.\n*\n* @param {...NonNegativeInteger} args - sequence of code points\n* @throws {Error} must provide either an array-like object of code points or one or more code points as separate arguments\n* @throws {TypeError} a code point must be a nonnegative integer\n* @throws {RangeError} must provide a valid Unicode code point\n* @returns {string} created string\n*\n* @example\n* var str = fromCodePoint( 9731 );\n* // returns '\u2603'\n*/\nfunction fromCodePoint( args ) {\n\tvar len;\n\tvar str;\n\tvar arr;\n\tvar low;\n\tvar hi;\n\tvar pt;\n\tvar i;\n\n\tlen = arguments.length;\n\tif ( len === 1 && isCollection( args ) ) {\n\t\tarr = arguments[ 0 ];\n\t\tlen = arr.length;\n\t} else {\n\t\tarr = [];\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tarr.push( arguments[ i ] );\n\t\t}\n\t}\n\tif ( len === 0 ) {\n\t\tthrow new Error( 'insufficient arguments. Must provide either an array of code points or one or more code points as separate arguments.' );\n\t}\n\tstr = '';\n\tfor ( i = 0; i < len; i++ ) {\n\t\tpt = arr[ i ];\n\t\tif ( !isNonNegativeInteger( pt ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide valid code points (i.e., nonnegative integers). Value: `%s`.', pt ) );\n\t\t}\n\t\tif ( pt > UNICODE_MAX ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Must provide a valid code point (i.e., cannot exceed %u). Value: `%s`.', UNICODE_MAX, pt ) );\n\t\t}\n\t\tif ( pt <= UNICODE_MAX_BMP ) {\n\t\t\tstr += fromCharCode( pt );\n\t\t} else {\n\t\t\t// Code point from a supplementary plane. Split into two 16-bit code units (surrogate pair).\n\t\t\tpt -= Ox10000;\n\t\t\thi = (pt >> 10) + OxD800;\n\t\t\tlow = (pt & Ox3FF) + OxDC00;\n\t\t\tstr += fromCharCode( hi, low );\n\t\t}\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromCodePoint;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a string from a sequence of Unicode code points.\n*\n* @module @stdlib/string/from-code-point\n*\n* @example\n* var fromCodePoint = require( '@stdlib/string/from-code-point' );\n*\n* var str = fromCodePoint( 9731 );\n* // returns '\u2603'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/headercase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to HTTP header case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} HTTP header-cased string\n*\n* @example\n* var out = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* @example\n* var out = headercase( 'IS_MOBILE' );\n* // returns 'Is-Mobile'\n*\n* @example\n* var out = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*\n* @example\n* var out = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*/\nfunction headercase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = headercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to HTTP header case.\n*\n* @module @stdlib/string/headercase\n*\n* @example\n* var headercase = require( '@stdlib/string/headercase' );\n*\n* var str = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/kebabcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to kebab case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} kebab-cased string\n*\n* @example\n* var str = kebabCase( 'Hello World!' );\n* // returns 'hello-world'\n*\n* @example\n* var str = kebabCase( 'foo bar' );\n* // returns 'foo-bar'\n*\n* @example\n* var str = kebabCase( 'I am a tiny little teapot' );\n* // returns 'i-am-a-tiny-little-teapot'\n*\n* @example\n* var str = kebabCase( 'BEEP boop' );\n* // returns 'beep-boop'\n*\n* @example\n* var str = kebabCase( 'isMobile' );\n* // returns 'is-mobile'\n*/\nfunction kebabCase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = kebabCase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to kebab case.\n*\n* @module @stdlib/string/kebabcase\n*\n* @example\n* var kebabcase = require( '@stdlib/string/kebabcase' );\n*\n* var str = kebabcase( 'Foo Bar' );\n* // returns 'foo-bar'\n*\n* str = kebabcase( 'I am a tiny little house' );\n* // returns 'i-am-a-tiny-little-house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar FLOAT64_MAX_SAFE_INTEGER = require( '@stdlib/constants/float64/max-safe-integer' );\nvar base = require( './../../base/left-pad' );\n\n\n// MAIN //\n\n/**\n* Left pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} [pad=' '] - string used to pad\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @throws {RangeError} padding must have a length greater than `0`\n* @returns {string} padded string\n*\n* @example\n* var str = lpad( 'a', 5 );\n* // returns ' a'\n*\n* @example\n* var str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* @example\n* var str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\nfunction lpad( str, len, pad ) {\n\tvar p;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tp = pad;\n\t\tif ( !isString( p ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', p ) );\n\t\t}\n\t\tif ( p.length === 0 ) {\n\t\t\tthrow new RangeError( 'invalid argument. Third argument must not be an empty string.' );\n\t\t}\n\t} else {\n\t\tp = ' ';\n\t}\n\tif ( len > FLOAT64_MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( format( 'invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.', len ) );\n\t}\n\treturn base( str, len, p );\n}\n\n\n// EXPORTS //\n\nmodule.exports = lpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Left pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/left-pad\n*\n* @example\n* var lpad = require( '@stdlib/string/left-pad' );\n*\n* var str = lpad( 'a', 5 );\n* // returns ' a'\n*\n* str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/left-trim' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} trimmed string\n*\n* @example\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* @example\n* var out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*\n* @example\n* var out = ltrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines\\n\\n\\n'\n*/\nfunction ltrim( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning of a string.\n*\n* @module @stdlib/string/left-trim\n*\n* @example\n* var ltrim = require( '@stdlib/string/left-trim' );\n*\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Splits a string by its grapheme cluster breaks.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {StringArray} array of grapheme clusters\n*\n* @example\n* var out = splitGraphemeClusters( 'caf\u00E9' );\n* // returns [ 'c', 'a', 'f', '\u00E9' ]\n*\n* @example\n* var out = splitGraphemeClusters( '\uD83C\uDF55\uD83C\uDF55\uD83C\uDF55' );\n* // returns [ '\uD83C\uDF55', '\uD83C\uDF55', '\uD83C\uDF55' ]\n*/\nfunction splitGraphemeClusters( str ) {\n\tvar idx;\n\tvar brk;\n\tvar out;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tidx = 0;\n\tout = [];\n\tif ( str.length === 0 ) {\n\t\treturn out;\n\t}\n\tbrk = nextGraphemeClusterBreak( str, idx );\n\twhile ( brk !== -1 ) {\n\t\tout.push( str.substring( idx, brk ) );\n\t\tidx = brk;\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t}\n\tout.push( str.substring( idx ) );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = splitGraphemeClusters;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split a string by its grapheme cluster breaks.\n*\n* @module @stdlib/string/split-grapheme-clusters\n*\n* @example\n* var splitGraphemeClusters = require( '@stdlib/string/split-grapheme-clusters' );\n*\n* var out = splitGraphemeClusters( 'caf\u00E9' );\n* // returns [ 'c', 'a', 'f', '\u00E9' ]\n*\n* out = splitGraphemeClusters( '\uD83C\uDF55\uD83C\uDF55\uD83C\uDF55' );\n* // returns [ '\uD83C\uDF55', '\uD83C\uDF55', '\uD83C\uDF55' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar splitGraphemeClusters = require( './../../split-grapheme-clusters' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isStringArray = require( '@stdlib/assert/is-string-array' ).primitives;\nvar replace = require( './../../replace' );\nvar rescape = require( '@stdlib/utils/escape-regexp-string' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar WHITESPACE_CHARS = '\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\n\n\n// MAIN //\n\n/**\n* Trims `n` characters from the beginning of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of characters to trim\n* @param {(string|StringArray)} [chars] - characters to trim (defaults to whitespace characters)\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string or an array of strings\n* @returns {string} trimmed string\n*\n* @example\n* var str = ' abc ';\n* var out = ltrimN( str, 2 );\n* // returns ' abc '\n*\n* @example\n* var str = ' abc ';\n* var out = ltrimN( str, str.length );\n* // returns 'abc '\n*\n* @example\n* var str = '~~abc!~~';\n* var out = ltrimN( str, str.length, [ '~', '!' ] );\n* // returns 'abc!~~'\n*\n* @example\n* var str = '\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8';\n* var out = ltrimN( str, str.length, '\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16' );\n* // returns ''\n*/\nfunction ltrimN( str, n, chars ) {\n\tvar nElems;\n\tvar reStr;\n\tvar isStr;\n\tvar RE;\n\tvar i;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( n ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tisStr = isString( chars );\n\t\tif ( !isStr && !isStringArray( chars ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string or an array of strings. Value: `%s`.', chars ) );\n\t\t}\n\t\tif ( isStr ) {\n\t\t\tchars = splitGraphemeClusters( chars );\n\t\t}\n\t\tnElems = chars.length - 1;\n\t\treStr = '';\n\t\tfor ( i = 0; i < nElems; i++ ) {\n\t\t\treStr += rescape( chars[ i ] );\n\t\t\treStr += '|';\n\t\t}\n\t\treStr += rescape( chars[ nElems ] );\n\n\t\t// Case: Trim a specific set of characters from the beginning of a string..\n\t\tRE = new RegExp( '^(?:' + reStr + '){0,'+n+'}' );\n\t} else {\n\t\t// Case: Trim `n` whitespace characters from the beginning of a string...\n\t\tRE = new RegExp( '^[' + WHITESPACE_CHARS + ']{0,'+n+'}' );\n\t}\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrimN;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim `n` characters from the beginning of a string.\n*\n* @module @stdlib/string/left-trim-n\n*\n* @example\n* var ltrimN = require( '@stdlib/string/left-trim-n' );\n*\n* var str = 'foo ';\n* var out = ltrimN( str, str.length );\n* // returns 'foo '\n*\n* str = '\uD83D\uDC36\uD83D\uDC36\uD83D\uDC36 Animals \uD83D\uDC36\uD83D\uDC36\uD83D\uDC36';\n* out = ltrimN( str, 4, [ '\uD83D\uDC36', ' ' ] );\n* // returns 'Animals \uD83D\uDC36\uD83D\uDC36\uD83D\uDC36'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/lowercase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to lowercase.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} lowercase string\n*\n* @example\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\nfunction lowercase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = lowercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to lowercase.\n*\n* @module @stdlib/string/lowercase\n*\n* @example\n* var lowercase = require( '@stdlib/string/lowercase' );\n*\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the number of grapheme clusters in a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {NonNegativeInteger} number of grapheme clusters\n*\n* @example\n* var out = numGraphemeClusters( 'last man standing' );\n* // returns 17\n*\n* @example\n* var out = numGraphemeClusters( 'presidential election' );\n* // returns 21\n*\n* @example\n* var out = numGraphemeClusters( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926' );\n* // returns 5\n*\n* @example\n* var out = numGraphemeClusters( '\uD83C\uDF37' );\n* // returns 1\n*/\nfunction numGraphemeClusters( str ) {\n\tvar count;\n\tvar idx;\n\tvar brk;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tcount = 0;\n\tidx = 0;\n\n\tbrk = nextGraphemeClusterBreak( str, idx );\n\twhile ( brk !== -1 ) {\n\t\tcount += 1;\n\t\tidx = brk;\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t}\n\tif ( idx < str.length ) {\n\t\tcount += 1;\n\t}\n\treturn count;\n}\n\n\n// EXPORTS //\n\nmodule.exports = numGraphemeClusters;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the number of grapheme clusters in a string.\n*\n* @module @stdlib/string/num-grapheme-clusters\n*\n* @example\n* var numGraphemeClusters = require( '@stdlib/string/num-grapheme-clusters' );\n*\n* var out = numGraphemeClusters( 'last man standing' );\n* // returns 17\n*\n* out = numGraphemeClusters( '\uD83C\uDF37' );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t{ \"VAL\": 1e0, \"EN\": \"zero\", \"DE\": \"null\" },\n\t{ \"VAL\": 1e1, \"EN\": \"ten\", \"DE\": \"zehn\" },\n\t{ \"VAL\": 1e2, \"EN\": \"hundred\", \"DE\": \"hundert\" },\n\t{ \"VAL\": 1e3, \"EN\": \"thousand\", \"DE\": \"tausend\" },\n\t{ \"VAL\": 1e6, \"EN\": \"million\", \"DE\": \"Million\" },\n\t{ \"VAL\": 1e9, \"EN\": \"billion\", \"DE\": \"Milliarde\" },\n\t{ \"VAL\": 1e12, \"EN\": \"trillion\", \"DE\": \"Billion\" },\n\t{ \"VAL\": 1e15, \"EN\": \"quadrillion\", \"DE\": \"Billiarde\" },\n\t{ \"VAL\": 1e18, \"EN\": \"quintillion\", \"DE\": \"Trillion\" },\n\t{ \"VAL\": 1e21, \"EN\": \"sextillion\", \"DE\": \"Trilliarde\" },\n\t{ \"VAL\": 1e24, \"EN\": \"septillion\", \"DE\": \"Quadrillion\" },\n\t{ \"VAL\": 1e27, \"EN\": \"octillion\", \"DE\": \"Quadrilliarde\" },\n\t{ \"VAL\": 1e30, \"EN\": \"nonillion\", \"DE\": \"Quintillion\" },\n\t{ \"VAL\": 1e33, \"EN\": \"decillion\", \"DE\": \"Quintilliarde\" },\n\t{ \"VAL\": 1e36, \"EN\": \"undecillion\", \"DE\": \"Sextillion\" },\n\t{ \"VAL\": 1e39, \"EN\": \"duodecillion\", \"DE\": \"Sextilliarde\" },\n\t{ \"VAL\": 1e42, \"EN\": \"tredecillion\", \"DE\": \"Septillion\" },\n\t{ \"VAL\": 1e45, \"EN\": \"quattuordecillion\", \"DE\": \"Septilliarde\" },\n\t{ \"VAL\": 1e48, \"EN\": \"quindecillion\", \"DE\": \"Octillion\" },\n\t{ \"VAL\": 1e51, \"EN\": \"sedecillion\", \"DE\": \"Octilliarde\" },\n\t{ \"VAL\": 1e54, \"EN\": \"septendecillion\", \"DE\": \"Nonillion\" },\n\t{ \"VAL\": 1e57, \"EN\": \"octodecillion\", \"DE\": \"Nonilliarde\" },\n\t{ \"VAL\": 1e60, \"EN\": \"novendecillion\", \"DE\": \"Decillion\" },\n\t{ \"VAL\": 1e63, \"EN\": \"vigintillion\", \"DE\": \"Decilliarde\" },\n\t{ \"VAL\": 1e66, \"EN\": \"unvigintillion\", \"DE\": \"Undecillion\" },\n\t{ \"VAL\": 1e69, \"EN\": \"duovigintillion\", \"DE\": \"Undecilliarde\" },\n\t{ \"VAL\": 1e72, \"EN\": \"tresvigintillion\", \"DE\": \"Duodecillion\" },\n\t{ \"VAL\": 1e75, \"EN\": \"quattuorvigintillion\", \"DE\": \"Duodecilliarde\" },\n\t{ \"VAL\": 1e78, \"EN\": \"quinquavigintillion\", \"DE\": \"Tredecillion\" },\n\t{ \"VAL\": 1e81, \"EN\": \"sesvigintillion\", \"DE\": \"Tredecilliarde\" },\n\t{ \"VAL\": 1e84, \"EN\": \"septemvigintillion\", \"DE\": \"Quattuordecillion\" },\n\t{ \"VAL\": 1e87, \"EN\": \"octovigintillion\", \"DE\": \"Quattuordecilliarde\" },\n\t{ \"VAL\": 1e90, \"EN\": \"novemvigintillion\", \"DE\": \"Quindecillion\" },\n\t{ \"VAL\": 1e93, \"EN\": \"trigintillion\", \"DE\": \"Quindecilliarde\" },\n\t{ \"VAL\": 1e96, \"EN\": \"untrigintillion\", \"DE\": \"Sedecillion\" },\n\t{ \"VAL\": 1e99, \"EN\": \"duotrigintillion\", \"DE\": \"Sedecilliarde\" },\n\t{ \"VAL\": 1e102, \"EN\": \"trestrigintillion\", \"DE\": \"Septendecillion\" },\n\t{ \"VAL\": 1e105, \"EN\": \"quattuortrigintillion\", \"DE\": \"Septendecilliarde\" },\n\t{ \"VAL\": 1e108, \"EN\": \"quinquatrigintillion\", \"DE\": \"Octodecillion\" },\n\t{ \"VAL\": 1e111, \"EN\": \"sestrigintillion\", \"DE\": \"Octodecilliarde\" },\n\t{ \"VAL\": 1e114, \"EN\": \"septentrigintillion\", \"DE\": \"Novendecillion\" },\n\t{ \"VAL\": 1e117, \"EN\": \"octotrigintillion\", \"DE\": \"Novendecilliarde\" },\n\t{ \"VAL\": 1e120, \"EN\": \"noventrigintillion\", \"DE\": \"Vigintillion\" },\n\t{ \"VAL\": 1e123, \"EN\": \"quadragintillion\", \"DE\": \"Vigintilliarde\" },\n\t{ \"VAL\": 1e153, \"EN\": \"quinquagintillion\", \"DE\": \"Quinvigintilliarde\" },\n\t{ \"VAL\": 1e183, \"EN\": \"sexagintillion\", \"DE\": \"Trigintilliarde\" },\n\t{ \"VAL\": 1e213, \"EN\": \"septuagintillion\", \"DE\": \"Quintrigintilliarde\" },\n\t{ \"VAL\": 1e243, \"EN\": \"octogintillion\", \"DE\": \"Quadragintilliarde\" },\n\t{ \"VAL\": 1e273, \"EN\": \"nonagintillion\", \"DE\": \"Quin\u00ADquadra\u00ADgint\u00ADilliarde\" },\n\t{ \"VAL\": 1e303, \"EN\": \"centillion\", \"DE\": \"Quinquagintilliarde\" },\n\t{ \"VAL\": 1e306, \"EN\": \"uncentillion\", \"DE\": \"Unquinquagintillione\" }\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar endsWith = require( './../../base/ends-with' );\nvar UNITS = require( './units.json' );\n\n\n// VARIABLES //\n\nvar ONES = [ 'null', 'eins', 'zwei', 'drei', 'vier', 'f\u00FCnf', 'sechs', 'sieben', 'acht', 'neun', 'zehn', 'elf', 'zw\u00F6lf', 'dreizehn', 'vierzehn', 'f\u00FCnfzehn', 'sechzehn', 'siebzehn', 'achtzehn', 'neunzehn' ];\nvar TENS = [ 'null', 'zehn', 'zwanzig', 'drei\u00DFig', 'vierzig', 'f\u00FCnfzig', 'sechzig', 'siebzig', 'achtzig', 'neunzig' ];\n\n\n// FUNCTIONS //\n\n/**\n* Pluralizes a word by adding a 'n' or 'en' suffix.\n*\n* @private\n* @param {string} word - word to pluralize\n* @returns {string} pluralized word\n*/\nfunction pluralize( word ) {\n\tif ( endsWith( word, 'e' ) ) {\n\t\treturn word + 'n';\n\t}\n\treturn word + 'en';\n}\n\n\n// MAIN //\n\n/**\n* Converts a number to a word representation in German.\n*\n* @private\n* @param {number} num - number to convert\n* @param {string} out - output string\n* @returns {string} word representation\n*\n* @example\n* var words = int2wordsDE( 1243, '' );\n* // returns 'eintausendzweihundertdreiundvierzig'\n*\n* @example\n* var words = int2wordsDE( 387, '' );\n* // returns 'dreihundertsiebenundachtzig'\n*\n* @example\n* var words = int2wordsDE( 100, '' );\n* // returns 'einhundert'\n*\n* @example\n* var words = int2wordsDE( 1421, '' );\n* // returns 'eintausendvierhunderteinundzwanzig'\n*\n* @example\n* var words = int2wordsDE( 100381, '' );\n* // returns 'einhunderttausenddreihunderteinundachtzig'\n*\n* @example\n* var words = int2wordsDE( -13, '' );\n* // returns 'minus dreizehn'\n*/\nfunction int2wordsDE( num, out ) {\n\tvar word;\n\tvar rem;\n\tvar i;\n\tif ( num === 0 ) {\n\t\t// Case: We have reached the end of the number and the number is zero.\n\t\treturn out || 'null';\n\t}\n\tif ( num < 0 ) {\n\t\tout += 'minus ';\n\t\tnum *= -1;\n\t}\n\tif ( num < 20 ) {\n\t\trem = 0;\n\t\tif ( num === 1 && out.length === 0 ) {\n\t\t\tword = 'ein';\n\t\t} else {\n\t\t\tword = ONES[ num ];\n\t\t}\n\t}\n\telse if ( num < 100 ) {\n\t\trem = num % 10;\n\t\tword = TENS[ floor( num / 10 ) ];\n\t\tif ( rem ) {\n\t\t\tword = ( ( rem === 1 ) ? 'ein' : ONES[ rem ] ) + 'und' + word;\n\t\t\trem = 0;\n\t\t}\n\t}\n\telse if ( num < 1e3 ) {\n\t\trem = num % 100;\n\t\tword = int2wordsDE( floor( num / 100 ), '' ) + 'hundert';\n\t}\n\telse if ( num < 1e6 ) {\n\t\trem = num % 1e3;\n\t\tword = int2wordsDE( floor( num / 1e3 ), '' ) + 'tausend';\n\t}\n\telse {\n\t\tfor ( i = 5; i < UNITS.length; i++ ) {\n\t\t\tif ( num < UNITS[ i ].VAL ) {\n\t\t\t\trem = num % UNITS[ i-1 ].VAL;\n\t\t\t\tif ( floor( num / UNITS[ i-1 ].VAL ) === 1 ) {\n\t\t\t\t\tword = 'eine ' + UNITS[ i-1 ].DE;\n\t\t\t\t} else {\n\t\t\t\t\tword = int2wordsDE( floor( num / UNITS[ i-1 ].VAL ), '' ) + ' ' + pluralize( UNITS[ i-1 ].DE );\n\t\t\t\t}\n\t\t\t\tif ( rem ) {\n\t\t\t\t\tword += ' ';\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tout += word;\n\treturn int2wordsDE( rem, out );\n}\n\n\n// EXPORTS //\n\nmodule.exports = int2wordsDE;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar UNITS = require( './units.json' );\n\n\n// VARIABLES //\n\nvar ONES = [ 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen' ];\nvar TENS = [ 'zero', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety' ];\n\n\n// MAIN //\n\n/**\n* Converts a number to a word representation in English.\n*\n* @private\n* @param {number} num - number to convert\n* @param {string} out - output string\n* @returns {string} word representation\n*\n* @example\n* var words = int2wordsEN( 1234, '' );\n* // returns 'one thousand two hundred thirty-four'\n*\n* @example\n* var words = int2wordsEN( -129, '' );\n* // returns 'minus one hundred twenty-nine'\n*\n* @example\n* var words = int2wordsEN( 0, '' );\n* // returns 'zero'\n*/\nfunction int2wordsEN( num, out ) {\n\tvar word;\n\tvar rem;\n\tvar i;\n\tif ( num === 0 ) {\n\t\t// Case: We have reached the end of the number and the number is zero.\n\t\treturn out || 'zero';\n\t}\n\tif ( num < 0 ) {\n\t\tout += 'minus';\n\t\tnum *= -1;\n\t}\n\tif ( num < 20 ) {\n\t\trem = 0;\n\t\tword = ONES[ num ];\n\t}\n\telse if ( num < 100 ) {\n\t\trem = num % 10;\n\t\tword = TENS[ floor( num / 10 ) ];\n\t\tif ( rem > 0 ) {\n\t\t\tword += '-' + ONES[ rem ];\n\t\t\trem = 0;\n\t\t}\n\t}\n\telse {\n\t\tfor ( i = 3; i < UNITS.length - 1; i++ ) {\n\t\t\tif ( num < UNITS[ i ].VAL ) {\n\t\t\t\trem = num % UNITS[ i-1 ].VAL;\n\t\t\t\tword = int2wordsEN( floor( num / UNITS[ i-1 ].VAL ), '' ) + ' ' + UNITS[ i-1 ].EN;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif ( i === UNITS.length - 1 ) {\n\t\t\trem = num % UNITS[ i-1 ].VAL;\n\t\t\tword = int2wordsEN( floor( num / UNITS[ i-1 ].VAL ), '' ) + ' ' + UNITS[ i-1 ].EN;\n\t\t}\n\t}\n\tif ( out.length > 0 ) {\n\t\tout += ' ';\n\t}\n\tout += word;\n\treturn int2wordsEN( rem, out );\n}\n\n\n// EXPORTS //\n\nmodule.exports = int2wordsEN;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar indexOf = require( '@stdlib/utils/index-of' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar LANGUAGE_CODES = [ 'en', 'de' ];\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - options to validate\n* @param {string} [options.lang] - language code\n* @returns {(null|Error)} error object or null\n*\n* @example\n* var opts = {};\n* var options = {\n* 'lang': 'es'\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n* throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isPlainObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'lang' ) ) {\n\t\topts.lang = options.lang;\n\t\tif ( indexOf( LANGUAGE_CODES, opts.lang ) === -1 ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'lang', LANGUAGE_CODES.join( '\", \"' ), opts.lang ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Processes a string of decimal numbers and applies a function mapping decimal numbers to words to each character.\n*\n* @private\n* @param {string} x - string of decimal numbers\n* @param {Function} fcn - function mapping decimal numbers to words\n* @returns {string} string of words\n*/\nfunction decimals( x, fcn ) {\n\tvar out;\n\tvar len;\n\tvar i;\n\n\tlen = x.length;\n\tout = '';\n\tfor ( i = 0; i < len; i++ ) {\n\t\tout += fcn( x[ i ], '' );\n\t\tif ( i < len-1 ) {\n\t\t\tout += ' ';\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = decimals;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isfinite = require( '@stdlib/math/base/assert/is-finite' );\nvar format = require( './../../format' );\nvar int2wordsDE = require( './int2words_de.js' );\nvar int2wordsEN = require( './int2words_en.js' );\nvar validate = require( './validate.js' );\nvar decimals = require( './decimals.js' );\n\n\n// MAIN //\n\n/**\n* Converts a number to a word representation.\n*\n* @param {number} num - number to convert\n* @param {Object} [options] - options\n* @param {string} [options.lang='en'] - language code\n* @throws {TypeError} must provide valid options\n* @returns {string} word representation of number\n*\n* @example\n* var out = num2words( 12 );\n* // returns 'twelve'\n*\n* @example\n* var out = num2words( 21.8 );\n* // returns 'twenty-one point eight'\n*\n* @example\n* var out = num2words( 1234 );\n* // returns 'one thousand two hundred thirty-four'\n*\n* @example\n* var out = num2words( 100381 );\n* // returns 'one hundred thousand three hundred eighty-one'\n*/\nfunction num2words( num, options ) {\n\tvar parts;\n\tvar opts;\n\tvar err;\n\n\tif ( !isNumber( num ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a number. Value: `%s`.', num ) );\n\t}\n\topts = {};\n\tif ( arguments.length > 1 ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tif ( isInteger( num ) ) {\n\t\tswitch ( opts.lang ) {\n\t\tcase 'de':\n\t\t\treturn int2wordsDE( num, '' );\n\t\tcase 'en':\n\t\tdefault:\n\t\t\treturn int2wordsEN( num, '' );\n\t\t}\n\t}\n\tif ( !isfinite( num ) ) {\n\t\tswitch ( opts.lang ) {\n\t\tcase 'de':\n\t\t\treturn ( num < 0 ) ? 'minus unendlich' : 'unendlich';\n\t\tcase 'en':\n\t\tdefault:\n\t\t\treturn ( num < 0 ) ? 'negative infinity' : 'infinity';\n\t\t}\n\t}\n\tparts = num.toString().split( '.' );\n\tswitch ( opts.lang ) {\n\tcase 'de':\n\t\treturn int2wordsDE( parts[ 0 ], '' ) + ' Komma ' + decimals( parts[ 1 ], int2wordsDE );\n\tcase 'en':\n\tdefault:\n\t\treturn int2wordsEN( parts[ 0 ], '' ) + ' point ' + decimals( parts[ 1 ], int2wordsEN );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = num2words;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a number to a word representation.\n*\n* @module @stdlib/string/num2words\n*\n* @example\n* var num2words = require( '@stdlib/string/num2words' );\n*\n* var out = num2words( 29 );\n* // returns 'twenty-nine'\n*\n* out = num2words( 13072 );\n* // returns 'thirteen thousand seventy-two'\n*\n* out = num2words( 183, { 'lang': 'de' } );\n* // returns 'einhundertdreiundachtzig'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/repeat' );\n\n\n// MAIN //\n\n/**\n* Repeats a string a specified number of times and returns the concatenated result.\n*\n* @param {string} str - string to repeat\n* @param {NonNegativeInteger} n - number of times to repeat the string\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {RangeError} output string length must not exceed maximum allowed string length\n* @returns {string} repeated string\n*\n* @example\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* @example\n* var str = repeat( '', 100 );\n* // returns ''\n*\n* @example\n* var str = repeat( 'beep', 0 );\n* // returns ''\n*/\nfunction repeat( str, n ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( n ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t}\n\treturn base( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Repeat a string a specified number of times and return the concatenated result.\n*\n* @module @stdlib/string/repeat\n*\n* @example\n* var replace = require( '@stdlib/string/repeat' );\n*\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* str = repeat( '', 100 );\n* // returns ''\n*\n* str = repeat( 'beep', 0 );\n* // returns ''\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar FLOAT64_MAX_SAFE_INTEGER = require( '@stdlib/constants/float64/max-safe-integer' );\nvar base = require( './../../base/right-pad' );\n\n\n// MAIN //\n\n/**\n* Right pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} [pad=' '] - string used to pad\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @throws {RangeError} padding must have a length greater than `0`\n* @returns {string} padded string\n*\n* @example\n* var str = rpad( 'a', 5 );\n* // returns 'a '\n*\n* @example\n* var str = rpad( 'beep', 10, 'p' );\n* // returns 'beeppppppp'\n*\n* @example\n* var str = rpad( 'beep', 12, 'boop' );\n* // returns 'beepboopboop'\n*/\nfunction rpad( str, len, pad ) {\n\tvar p;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tp = pad;\n\t\tif ( !isString( p ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', p ) );\n\t\t}\n\t\tif ( p.length === 0 ) {\n\t\t\tthrow new RangeError( 'invalid argument. Pad string must not be an empty string.' );\n\t\t}\n\t} else {\n\t\tp = ' ';\n\t}\n\tif ( len > FLOAT64_MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( format( 'invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.', len ) );\n\t}\n\treturn base( str, len, p );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Right pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/right-pad\n*\n* @example\n* var rpad = require( '@stdlib/string/right-pad' );\n*\n* var str = rpad( 'a', 5 );\n* // returns 'a '\n*\n* str = rpad( 'beep', 10, 'p' );\n* // returns 'beeppppppp'\n*\n* str = rpad( 'beep', 12, 'boop' );\n* // returns 'beepboopboop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - options to validate\n* @param {string} [options.lpad] - string used to left pad\n* @param {string} [options.rpad] - string used to right pad\n* @param {boolean} [options.centerRight] - boolean indicating whether to center right in the event of a tie\n* @returns {(null|Error)} error object or null\n*\n* @example\n* var opts = {};\n* var options = {\n* 'lpad': 'a',\n* 'rpad': 'b'\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n* throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isPlainObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'lpad' ) ) {\n\t\topts.lpad = options.lpad;\n\t\tif ( !isString( opts.lpad ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a string. Option: `%s`.', 'lpad', opts.lpad ) );\n\t\t}\n\t}\n\tif ( hasOwnProp( options, 'rpad' ) ) {\n\t\topts.rpad = options.rpad;\n\t\tif ( !isString( opts.rpad ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a string. Option: `%s`.', 'rpad', opts.rpad ) );\n\t\t}\n\t}\n\tif ( hasOwnProp( options, 'centerRight' ) ) {\n\t\topts.centerRight = options.centerRight;\n\t\tif ( !isBoolean( opts.centerRight ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a boolean. Option: `%s`.', 'centerRight', opts.centerRight ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar repeat = require( './../../repeat' );\nvar format = require( './../../format' );\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\nvar lpad = require( './../../left-pad' );\nvar rpad = require( './../../right-pad' );\nvar abs = require( '@stdlib/math/base/special/abs' );\nvar FLOAT64_MAX_SAFE_INTEGER = require( '@stdlib/constants/float64/max-safe-integer' );\nvar validate = require( './validate.js' );\n\n\n// MAIN //\n\n/**\n* Pads a string such that the padded string has a length of `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - string length\n* @param {Options} [options] - function options\n* @param {string} [options.lpad=''] - string used to left pad\n* @param {string} [options.rpad=' '] - string used to right pad\n* @param {boolean} [options.centerRight=false] - boolean indicating whether to center right in the event of a tie\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @throws {RangeError} at least one padding must have a length greater than `0`\n* @returns {string} padded string\n*\n* @example\n* var str = pad( 'a', 5 );\n* // returns 'a '\n*\n* @example\n* var str = pad( 'a', 10, {\n* 'lpad': 'b'\n* });\n* // returns 'bbbbbbbbba'\n*\n* @example\n* var str = pad( 'a', 12, {\n* 'rpad': 'b'\n* });\n* // returns 'abbbbbbbbbbb'\n*\n* @example\n* var opts = {\n* 'lpad': 'a',\n* 'rpad': 'c'\n* };\n* var str = pad( 'b', 10, opts );\n* // returns 'aaaabccccc'\n*\n* @example\n* var opts = {\n* 'lpad': 'a',\n* 'rpad': 'c',\n* 'centerRight': true\n* };\n* var str = pad( 'b', 10, opts );\n* // returns 'aaaaabcccc'\n*/\nfunction pad( str, len, options ) {\n\tvar nright;\n\tvar nleft;\n\tvar isodd;\n\tvar right;\n\tvar left;\n\tvar opts;\n\tvar err;\n\tvar tmp;\n\tvar n;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( len > FLOAT64_MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( format( 'invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.', len ) );\n\t}\n\topts = {};\n\tif ( arguments.length > 2 ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tif ( opts.lpad && opts.rpad ) {\n\t\tn = ( len-str.length ) / 2;\n\t\tif ( n === 0 ) {\n\t\t\treturn str;\n\t\t}\n\t\ttmp = floor( n );\n\t\tif ( tmp !== n ) {\n\t\t\tisodd = true;\n\t\t}\n\t\tif ( n < 0 ) {\n\t\t\tn = floor( abs( n ) );\n\t\t\tnleft = n;\n\t\t\tnright = str.length - n;\n\n\t\t\t// If |len-str.length| is an odd number, take away an additional character from one side...\n\t\t\tif ( isodd ) {\n\t\t\t\tif ( opts.centerRight ) {\n\t\t\t\t\tnright -= 1;\n\t\t\t\t} else {\n\t\t\t\t\tnleft += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn str.substring( nleft, nright );\n\t\t}\n\t\tnleft = ceil( n / opts.lpad.length );\n\t\tleft = repeat( opts.lpad, nleft );\n\n\t\tnright = ceil( n / opts.rpad.length );\n\t\tright = repeat( opts.rpad, nright );\n\n\t\t// If (len-str.length) is an odd number, give one side one extra character...\n\t\tn = tmp;\n\t\tnleft = n;\n\t\tnright = n;\n\t\tif ( isodd ) {\n\t\t\tif ( opts.centerRight ) {\n\t\t\t\tnleft += 1;\n\t\t\t} else {\n\t\t\t\tnright += 1;\n\t\t\t}\n\t\t}\n\t\tleft = left.substring( 0, nleft );\n\t\tright = right.substring( 0, nright );\n\t\treturn left + str + right;\n\t}\n\tif ( opts.lpad ) {\n\t\ttmp = lpad( str, len, opts.lpad );\n\t\treturn tmp.substring( tmp.length-len );\n\t}\n\tif ( opts.rpad ) {\n\t\treturn ( rpad( str, len, opts.rpad ) ).substring( 0, len );\n\t}\n\tif ( opts.rpad === void 0 ) {\n\t\treturn ( rpad( str, len, ' ' ) ).substring( 0, len );\n\t}\n\tthrow new RangeError( format( 'invalid argument. At least one padding option must have a length greater than 0. Left padding: `%s`. Right padding: `%s`.', opts.lpad, opts.rpad ) );\n}\n\n\n// EXPORTS //\n\nmodule.exports = pad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Pad a string.\n*\n* @module @stdlib/string/pad\n*\n* @example\n* var pad = require( '@stdlib/string/pad' );\n*\n* var str = pad( 'a', 5 );\n* // returns 'a '\n*\n* str = pad( 'a', 10, {\n* 'lpad': 'b'\n* });\n* // returns 'bbbbbbbbba'\n*\n* str = pad( 'a', 12, {\n* 'rpad': 'b'\n* });\n* // returns 'abbbbbbbbbbb'\n*\n* var opts = {\n* 'lpad': 'a',\n* 'rpad': 'c'\n* };\n* str = pad( 'b', 10, opts );\n* // returns 'aaaabccccc'\n*\n* opts = {\n* 'lpad': 'a',\n* 'rpad': 'c',\n* 'centerRight': true\n* };\n* str = pad( 'b', 10, opts );\n* // returns 'aaaaabcccc'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/pascalcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to Pascal case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} Pascal-cased string\n*\n* @example\n* var out = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* @example\n* var out = pascalcase( 'IS_MOBILE' );\n* // returns 'IsMobile'\n*\n* @example\n* var out = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*\n* @example\n* var out = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*/\nfunction pascalcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = pascalcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to Pascal case.\n*\n* @module @stdlib/string/pascalcase\n*\n* @example\n* var pascalcase = require( '@stdlib/string/pascalcase' );\n*\n* var str = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* str = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*\n* str = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/percent-encode' );\n\n\n// MAIN //\n\n/**\n* Percent-encodes a UTF-16 encoded string according to [RFC 3986][1].\n*\n* [1]: https://tools.ietf.org/html/rfc3986#section-2.1\n*\n* @param {string} str - string to percent-encode\n* @throws {TypeError} must provide a string\n* @returns {string} percent-encoded string\n*\n* @example\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\nfunction percentEncode( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = percentEncode;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Percent-encode a UTF-16 encoded string according to RFC 3986.\n*\n* @module @stdlib/string/percent-encode\n*\n* @example\n* var percentEncode = require( '@stdlib/string/percent-encode' );\n*\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' );\nvar codePointAt = require( './../../code-point-at' );\nvar hasUTF16SurrogatePairAt = require( '@stdlib/assert/has-utf16-surrogate-pair-at' );\nvar grapheme = require( './../../tools/grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar breakType = grapheme.breakType;\nvar breakProperty = grapheme.breakProperty;\nvar emojiProperty = grapheme.emojiProperty;\n\n\n// MAIN //\n\n/**\n* Returns the previous extended grapheme cluster break in a string before a specified position.\n*\n* @param {string} str - input string\n* @param {integer} [fromIndex=str.length-1] - position\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an integer\n* @returns {NonNegativeInteger} previous grapheme break position\n*\n* @example\n* var out = prevGraphemeClusterBreak( 'last man standing', 4 );\n* // returns 3\n*\n* @example\n* var out = prevGraphemeClusterBreak( 'presidential election', 8 );\n* // returns 7\n*\n* @example\n* var out = prevGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 0\n*\n* @example\n* var out = prevGraphemeClusterBreak( '\uD83C\uDF37', 1 );\n* // returns -1\n*/\nfunction prevGraphemeClusterBreak( str, fromIndex ) {\n\tvar breaks;\n\tvar emoji;\n\tvar ans;\n\tvar len;\n\tvar idx;\n\tvar cp;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tlen = str.length;\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = fromIndex;\n\t} else {\n\t\tidx = len - 1;\n\t}\n\tif ( len === 0 || idx <= 0 ) {\n\t\treturn -1;\n\t}\n\tif ( idx >= len ) {\n\t\tidx = len - 1;\n\t}\n\n\t// Initialize caches for storing grapheme break and emoji properties:\n\tbreaks = [];\n\temoji = [];\n\n\t// Get the code point for the starting index:\n\tcp = codePointAt( str, 0 );\n\n\t// Get the corresponding grapheme break and emoji properties:\n\tbreaks.push( breakProperty( cp ) );\n\temoji.push( emojiProperty( cp ) );\n\n\tans = -1;\n\tfor ( i = 1; i <= idx; i++ ) {\n\t\t// If the current character is part of a surrogate pair, move along...\n\t\tif ( hasUTF16SurrogatePairAt( str, i-1 ) ) {\n\t\t\tans = i-2;\n\t\t\tbreaks.length = 0;\n\t\t\temoji.length = 0;\n\t\t\tcontinue;\n\t\t}\n\t\tcp = codePointAt( str, i );\n\n\t\t// Get the corresponding grapheme break and emoji properties:\n\t\tbreaks.push( breakProperty( cp ) );\n\t\temoji.push( emojiProperty( cp ) );\n\n\t\t// Determine if we've encountered a grapheme cluster break...\n\t\tif ( breakType( breaks, emoji ) > 0 ) {\n\t\t\tans = i-1;\n\t\t\tbreaks.length = 0;\n\t\t\temoji.length = 0;\n\t\t\tcontinue;\n\t\t}\n\t}\n\treturn ans;\n}\n\n\n// EXPORTS //\n\nmodule.exports = prevGraphemeClusterBreak;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the prev extended grapheme cluster break in a string before a specified position.\n*\n* @module @stdlib/string/prev-grapheme-cluster-break\n*\n* @example\n* var prevGraphemeClusterBreak = require( '@stdlib/string/prev-grapheme-cluster-break' );\n*\n* var out = prevGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 0\n*\n* out = prevGraphemeClusterBreak( '\uD83C\uDF37', 1 );\n* // returns -1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar removeFirstCodeUnit = require( './../../base/remove-first' );\nvar removeFirstCodePoint = require( './../../base/remove-first-code-point' );\nvar removeFirstGraphemeCluster = require( './../../base/remove-first-grapheme-cluster' ); // eslint-disable-line id-length\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': removeFirstGraphemeCluster,\n\t'code_point': removeFirstCodePoint,\n\t'code_unit': removeFirstCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Removes the first character(s) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} [n=1] - number of characters to remove\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" to return (must be either `grapheme`, `code_point`, or `code_unit`)\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} updated string\n*\n* @example\n* var out = removeFirst( 'last man standing' );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election' );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript' );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures' );\n* // returns 'idden Treasures'\n*\n* @example\n* var out = removeFirst( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38'\n*\n* @example\n* var out = removeFirst( 'foo bar', 4 );\n* // returns 'bar'\n*/\nfunction removeFirst( str ) {\n\tvar options;\n\tvar nargs;\n\tvar opts;\n\tvar n;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tn = 1;\n\t} else if ( nargs === 2 ) {\n\t\tn = arguments[ 1 ];\n\t\tif ( isPlainObject( n ) ) {\n\t\t\toptions = n;\n\t\t\tn = 1;\n\t\t} else if ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t} else { // nargs > 2\n\t\tn = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t\toptions = arguments[ 2 ];\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\treturn FCNS[ opts.mode ]( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first character(s) of a string.\n*\n* @module @stdlib/string/remove-first\n*\n* @example\n* var removeFirst = require( '@stdlib/string/remove-first' );\n*\n* var out = removeFirst( 'last man standing' );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures' );\n* // returns 'idden Treasures';\n*\n* out = removeFirst( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC38\uD83D\uDC35\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar prevGraphemeClusterBreak = require( './../../prev-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Removes the last character(s) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} [n=1] - number of character to remove\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} second argument must be a nonnegative integer\n* @returns {string} updated string\n*\n* @example\n* var out = removeLast( 'last man standing' );\n* // returns 'last man standin'\n*\n* @example\n* var out = removeLast( 'presidential election' );\n* // returns 'presidential electio'\n*\n* @example\n* var out = removeLast( 'javaScript' );\n* // returns 'javaScrip'\n*\n* @example\n* var out = removeLast( 'Hidden Treasures' );\n* // returns 'Hidden Treasure'\n*\n* @example\n* var out = removeLast( 'leader', 2 );\n* // returns 'lead'\n*/\nfunction removeLast( str, n ) {\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( str === '' ) {\n\t\treturn '';\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t\tif ( n === 0 ) {\n\t\t\treturn str;\n\t\t}\n\t\ti = str.length - 1;\n\t\twhile ( n > 0 ) {\n\t\t\ti = prevGraphemeClusterBreak( str, i );\n\t\t\tn -= 1;\n\t\t}\n\t\treturn str.substring( 0, i + 1 );\n\t}\n\treturn str.substring( 0, prevGraphemeClusterBreak( str, str.length-1 ) + 1 ); // eslint-disable-line max-len\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the last character(s) of a string.\n*\n* @module @stdlib/string/remove-last\n*\n* @example\n* var removeLast = require( '@stdlib/string/remove-last' );\n*\n* var out = removeLast( 'last man standing' );\n* // returns 'last man standin'\n*\n* out = removeLast( 'Hidden Treasures' );\n* // returns 'Hidden Treasure';\n*\n* out = removeLast( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 ) );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\n// '\\ufeff' => 1111111011111111 => 0xFEFF => 65279\nvar BOM = 65279;\n\n\n// MAIN //\n\n/**\n* Removes a UTF-8 byte order mark (BOM) from the beginning of a string.\n*\n* ## Notes\n*\n* - A UTF-8 byte order mark ([BOM][1]) is the byte sequence `0xEF,0xBB,0xBF`.\n* - To convert a UTF-8 encoded `Buffer` to a `string`, the `Buffer` must be converted to [UTF-16][2]. The BOM thus gets converted to the single 16-bit code point `'\\ufeff'` (UTF-16 BOM).\n*\n* [1]: https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8\n* [2]: http://es5.github.io/#x4.3.16\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {string} string with BOM removed\n*\n* @example\n* var str = removeUTF8BOM( '\\ufeffbeep' );\n* // returns 'beep'\n*/\nfunction removeUTF8BOM( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tif ( str.charCodeAt( 0 ) === BOM ) {\n\t\treturn str.slice( 1 );\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeUTF8BOM;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove a UTF-8 byte order mark (BOM) from the beginning of a string.\n*\n* @module @stdlib/string/remove-utf8-bom\n*\n* @example\n* var removeUTF8BOM = require( '@stdlib/string/remove-utf8-bom' );\n*\n* var str = removeUTF8BOM( '\\ufeffbeep' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar removeUTF8BOM = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = removeUTF8BOM;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Converts a string to uppercase.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} uppercase string\n*\n* @example\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\nfunction uppercase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn str.toUpperCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = uppercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to uppercase.\n*\n* @module @stdlib/string/uppercase\n*\n* @example\n* var uppercase = require( '@stdlib/string/uppercase' );\n*\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isStringArray = require( '@stdlib/assert/is-string-array' );\nvar uppercase = require( './../../uppercase' );\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar tokenize = require( '@stdlib/nlp/tokenize' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Removes a list of words from a string.\n*\n* @param {string} str - input string\n* @param {StringArray} words - array of words to be removed\n* @param {boolean} [ignoreCase=false] - boolean indicating whether to perform a case-insensitive operation\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an array of strings\n* @throws {TypeError} third argument must be a boolean\n* @returns {string} output string\n*\n* @example\n* var str = 'beep boop Foo bar';\n* var out = removeWords( str, [ 'boop', 'foo' ] );\n* // returns 'beep Foo bar'\n*\n* @example\n* var str = 'beep boop Foo bar';\n* var out = removeWords( str, [ 'boop', 'foo' ], true );\n* // returns 'beep bar'\n*/\nfunction removeWords( str, words, ignoreCase ) {\n\tvar tokens;\n\tvar token;\n\tvar list;\n\tvar flg;\n\tvar out;\n\tvar N;\n\tvar i;\n\tvar j;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isStringArray( words ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an array of strings. Value: `%s`.', words ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isBoolean( ignoreCase ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a boolean. Value: `%s`.', ignoreCase ) );\n\t\t}\n\t}\n\ttokens = tokenize( str, true );\n\tN = words.length;\n\tout = [];\n\tif ( ignoreCase ) {\n\t\tlist = words.slice();\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tlist[ i ] = uppercase( list[ i ] );\n\t\t}\n\t\tfor ( i = 0; i < tokens.length; i++ ) {\n\t\t\tflg = true;\n\t\t\ttoken = uppercase( tokens[ i ] );\n\t\t\tfor ( j = 0; j < N; j++ ) {\n\t\t\t\tif ( list[ j ] === token ) {\n\t\t\t\t\tflg = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( flg ) {\n\t\t\t\tout.push( tokens[ i ] );\n\t\t\t}\n\t\t}\n\t\treturn out.join( '' );\n\t}\n\t// Case: case-sensitive\n\tfor ( i = 0; i < tokens.length; i++ ) {\n\t\ttoken = tokens[ i ];\n\t\tflg = true;\n\t\tfor ( j = 0; j < N; j++ ) {\n\t\t\tif ( words[ j ] === token ) {\n\t\t\t\tflg = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif ( flg ) {\n\t\t\tout.push( token );\n\t\t}\n\t}\n\treturn out.join( '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeWords;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove a list of words from a string.\n*\n* @module @stdlib/string/remove-words\n*\n* @example\n* var removeWords = require( '@stdlib/string/remove-words' );\n*\n* var str = 'beep boop Foo bar';\n* var words = [ 'boop', 'foo' ];\n*\n* var out = removeWords( str, words );\n* // returns 'beep Foo bar'\n*\n* // Case-insensitive:\n* out = removeWords( str, words, true )\n* //returns 'beep bar'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/replace-before' );\n\n\n// MAIN //\n\n/**\n* Replaces the substring before the first occurrence of a specified search string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {string} replacement - replacement string\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be a string\n* @returns {string} output string\n*\n* @example\n* var out = replaceBefore( 'beep boop', ' ', 'foo' );\n* // returns 'foo boop'\n*\n* @example\n* var out = replaceBefore( 'beep boop', 'p', 'foo' );\n* // returns 'foop boop'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', '', 'foo' );\n* // returns 'Hello World!'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', 'xyz', 'foo' );\n* // returns 'Hello World!'\n*/\nfunction replaceBefore( str, search, replacement ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( !isString( replacement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', replacement ) );\n\t}\n\treturn base( str, search, replacement );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replaceBefore;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace the substring before the first occurrence of a specified search string.\n*\n* @module @stdlib/string/replace-before\n*\n* @example\n* var replaceBefore = require( '@stdlib/string/replace-before' );\n*\n* var str = 'beep boop';\n*\n* var out = replaceBefore( str, ' ', 'foo' );\n* // returns 'foo boop'\n*\n* out = replaceBefore( str, 'o', 'bar' );\n* // returns 'baroop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar prevGraphemeClusterBreak = require( './../../prev-grapheme-cluster-break' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Reverses a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {string} reversed string\n*\n* @example\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* @example\n* var out = reverse( 'presidential election' );\n* // returns 'noitcele laitnediserp'\n*\n* @example\n* var out = reverse( 'javaScript' );\n* // returns 'tpircSavaj'\n*\n* @example\n* var out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH'\n*/\nfunction reverse( str ) {\n\tvar out;\n\tvar brk;\n\tvar idx;\n\tvar i;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( str === '' ) {\n\t\treturn '';\n\t}\n\n\tout = [];\n\tidx = str.length - 1;\n\twhile ( idx >= 0 ) {\n\t\tbrk = prevGraphemeClusterBreak( str, idx );\n\t\tfor ( i = brk + 1; i <= idx; i++ ) {\n\t\t\tout.push( str.charAt( i ) );\n\t\t}\n\t\tidx = brk;\n\t}\n\treturn out.join( '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = reverse;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse a string.\n*\n* @module @stdlib/string/reverse\n*\n* @example\n* var reverseString = require( '@stdlib/string/reverse' );\n*\n* var out = reverseString( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* out = reverseString( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/right-trim' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace from the end of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} trimmed string\n*\n* @example\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* @example\n* var out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* @example\n* var out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\nfunction rtrim( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the end of a string.\n*\n* @module @stdlib/string/right-trim\n*\n* @example\n* var rtrim = require( '@stdlib/string/right-trim' );\n*\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar splitGraphemeClusters = require( './../../split-grapheme-clusters' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isStringArray = require( '@stdlib/assert/is-string-array' ).primitives;\nvar replace = require( './../../replace' );\nvar rescape = require( '@stdlib/utils/escape-regexp-string' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar WHITESPACE_CHARS = '\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\n\n\n// MAIN //\n\n/**\n* Trims `n` characters from the end of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of characters to trim\n* @param {(string|StringArray)} [chars] - characters to trim (defaults to whitespace characters)\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string or an array of strings\n* @returns {string} trimmed string\n*\n* @example\n* var str = ' abc ';\n* var out = rtrimN( str, 2 );\n* // returns ' abc '\n*\n* @example\n* var str = ' abc ';\n* var out = rtrimN( str, str.length );\n* // returns ' abc'\n*\n* @example\n* var str = '~~abc!~~';\n* var out = rtrimN( str, str.length, [ '~', '!' ] );\n* // returns '~~abc'\n*\n* @example\n* var str = '\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8';\n* var out = rtrimN( str, str.length, '\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16' );\n* // returns ''\n*/\nfunction rtrimN( str, n, chars ) {\n\tvar nElems;\n\tvar reStr;\n\tvar isStr;\n\tvar RE;\n\tvar i;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( n ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a nonnegative integer. Value: `%s`.', n ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tisStr = isString( chars );\n\t\tif ( !isStr && !isStringArray( chars ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a string or an array of strings. Value: `%s`.', chars ) );\n\t\t}\n\t\tif ( isStr ) {\n\t\t\tchars = splitGraphemeClusters( chars );\n\t\t}\n\t\tnElems = chars.length - 1;\n\t\treStr = '';\n\t\tfor ( i = 0; i < nElems; i++ ) {\n\t\t\treStr += rescape( chars[ i ] );\n\t\t\treStr += '|';\n\t\t}\n\t\treStr += rescape( chars[ nElems ] );\n\n\t\t// Case: Trim a specific set of characters from the end of a string..\n\t\tRE = new RegExp( '(?:' + reStr + '){0,'+n+'}$' );\n\t} else {\n\t\t// Case: Trim `n` whitespace characters from the end of a string...\n\t\tRE = new RegExp( '[' + WHITESPACE_CHARS + ']{0,'+n+'}$' );\n\t}\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrimN;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim `n` characters from the end of a string.\n*\n* @module @stdlib/string/right-trim-n\n*\n* @example\n* var rtrimN = require( '@stdlib/string/right-trim-n' );\n*\n* var str = ' foo ';\n* var out = rtrimN( str, str.length );\n* // returns ' foo'\n*\n* str = '\uD83D\uDC36\uD83D\uDC36\uD83D\uDC36 Animals \uD83D\uDC36\uD83D\uDC36\uD83D\uDC36';\n* out = rtrimN( str, 4, [ '\uD83D\uDC36', ' ' ] );\n* // returns '\uD83D\uDC36\uD83D\uDC36\uD83D\uDC36 Animals'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/snakecase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to snake case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} snake-cased string\n*\n* @example\n* var str = snakecase( 'Hello World!' );\n* // returns 'hello_world'\n*\n* @example\n* var str = snakecase( 'foo bar' );\n* // returns 'foo_bar'\n*\n* @example\n* var str = snakecase( 'I am a tiny little teapot' );\n* // returns 'i_am_a_tiny_little_teapot'\n*\n* @example\n* var str = snakecase( 'BEEP boop' );\n* // returns 'beep_boop'\n*\n* @example\n* var str = snakecase( 'isMobile' );\n* // returns 'is_mobile'\n*/\nfunction snakecase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = snakecase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to snake case.\n*\n* @module @stdlib/string/snakecase\n*\n* @example\n* var snakecase = require( '@stdlib/string/snakecase' );\n*\n* var str = snakecase( 'Foo Bar' );\n* // returns 'foo_bar'\n*\n* str = snakecase( 'I am a tiny little house' );\n* // returns 'i_am_a_tiny_little_house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/startcase' );\n\n\n// MAIN //\n\n/**\n* Capitalizes the first letter of each word in an input string.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} start case string\n*\n* @example\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\nfunction startcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = startcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first letter of each word in an input string.\n*\n* @module @stdlib/string/startcase\n*\n* @example\n* var startcase = require( '@stdlib/string/startcase' );\n*\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/starts-with' );\n\n\n// MAIN //\n\n/**\n* Tests if a string starts with the characters of another string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} [position=0] - position at which to start searching\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {boolean} boolean indicating if the input string starts with the search string\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember' );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember, remember' );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'To be' );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be' );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 14 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'quest', -9 );\n* // returns true\n*/\nfunction startsWith( str, search, position ) {\n\tvar pos;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( position ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', position ) );\n\t\t}\n\t\tpos = position;\n\t} else {\n\t\tpos = 0;\n\t}\n\treturn base( str, search, pos );\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string starts with the characters of another string.\n*\n* @module @stdlib/string/starts-with\n*\n* @example\n* var startsWith = require( '@stdlib/string/starts-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n* var bool = startsWith( str, 'Fair' );\n* // returns true\n*\n* bool = startsWith( str, 'fair' );\n* // returns false\n*\n* bool = startsWith( str, 'foul', 8 );\n* // returns true\n*\n* bool = startsWith( str, 'filthy', -10 );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string after a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} [fromIndex=0] - index at which to start the search\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {string} substring\n*\n* @example\n* var out = substringAfter( 'Hello, world!', ', ' );\n* // returns 'world!'\n*\n* @example\n* var out = substringAfter( 'beep boop', 'beep' );\n* // returns ' boop'\n*\n* @example\n* var out = substringAfter( 'beep boop', 'boop' );\n* // returns ''\n*\n* @example\n* var out = substringAfter( 'beep boop', 'xyz' );\n* // returns ''\n*\n* @example\n* var out = substringAfter( 'beep boop', 'beep', 5 );\n* // returns ''\n*\n* @example\n* var out = substringAfter( 'beep boop beep baz', 'beep', 5 );\n* // returns ' baz'\n*/\nfunction substringAfter( str, search, fromIndex ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = str.indexOf( search, fromIndex );\n\t} else {\n\t\tidx = str.indexOf( search );\n\t}\n\tif ( idx === -1 ) {\n\t\treturn '';\n\t}\n\treturn str.substring( idx+search.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringAfter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string after a specified substring.\n*\n* @module @stdlib/string/substring-after\n*\n* @example\n* var substringAfter = require( '@stdlib/string/substring-after' );\n*\n* var str = 'beep boop';\n* var out = substringAfter( str, 'o' );\n* // returns 'op'\n*\n* out = substringAfter( str, ' ' );\n* // returns 'boop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string after the last occurrence of a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search value\n* @param {integer} [fromIndex=str.length] - index of last character to be considered beginning of a match\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {string} substring\n*\n* @example\n* var out = substringAfterLast( 'beep boop', 'b' );\n* // returns 'oop'\n*\n* @example\n* var out = substringAfterLast( 'beep boop', 'o' );\n* // returns 'p'\n*\n* @example\n* var out = substringAfterLast( 'Hello World', 'o' );\n* // returns 'rld'\n*\n* @example\n* var out = substringAfterLast( 'Hello World', '!' );\n* // returns ''\n*\n* @example\n* var out = substringAfterLast( 'Hello World', '' );\n* // returns ''\n*\n* @example\n* var out = substringAfterLast( 'beep boop baz', 'p b', 6 );\n* // returns 'oop baz'\n*/\nfunction substringAfterLast( str, search, fromIndex ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a nonnegative integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = str.lastIndexOf( search, fromIndex );\n\t} else {\n\t\tidx = str.lastIndexOf( search );\n\t}\n\tif ( idx === -1 ) {\n\t\treturn '';\n\t}\n\treturn str.substring( idx+search.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringAfterLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string after the last occurrence of a specified substring.\n*\n* @module @stdlib/string/substring-after-last\n*\n* @example\n* var substringAfterLast = require( '@stdlib/string/substring-after-last' );\n*\n* var str = 'beep boop';\n* var out = substringAfterLast( str, 'b' ):\n* // returns 'oop'\n*\n* out = substringAfterLast( str, 'o' ):\n* // returns 'p'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string before a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @returns {string} substring\n*\n* @example\n* var out = substringBefore( 'beep boop', ' ' );\n* // returns 'beep'\n*\n* @example\n* var out = substringBefore( 'beep boop', 'p' );\n* // returns 'bee'\n*\n* @example\n* var out = substringBefore( 'Hello World!', '' );\n* // returns ''\n*\n* @example\n* var out = substringBefore( 'Hello World!', 'XYZ' );\n* // returns 'Hello World!'\n*/\nfunction substringBefore( str, search ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tidx = str.indexOf( search );\n\tif ( idx === -1 ) {\n\t\treturn str;\n\t}\n\treturn str.substring( 0, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringBefore;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string before a specified substring.\n*\n* @module @stdlib/string/substring-before\n*\n* @example\n* var substringBefore = require( '@stdlib/string/substring-before' );\n*\n* var str = 'beep boop';\n* var out = substringBefore( str, ' ' );\n* // returns 'beep'\n*\n* out = substringBefore( str, 'o' );\n* // returns 'beep b'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string before the last occurrence of a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search value\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @returns {string} substring\n*\n* @example\n* var out = substringBeforeLast( 'abcba', 'b' );\n* // returns 'abc'\n*\n* @example\n* var out = substringBeforeLast( 'Hello World, my friend!', ' ' );\n* // returns 'Hello World, my'\n*\n* @example\n* var out = substringBeforeLast( 'abcba', ' ' );\n* // returns 'abcba'\n*\n* @example\n* var out = substringBeforeLast( 'abcba', '' );\n* // returns 'abcba'\n*/\nfunction substringBeforeLast( str, search ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tidx = str.lastIndexOf( search );\n\tif ( idx === -1 ) {\n\t\treturn str;\n\t}\n\treturn str.substring( 0, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringBeforeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string before the last occurrence of a specified substring.\n*\n* @module @stdlib/string/substring-before-last\n*\n* @example\n* var substringBeforeLast = require( '@stdlib/string/substring-before-last' );\n*\n* var str = 'Beep Boop Beep';\n* var out = substringBeforeLast( str, 'Beep' );\n* // returns 'Beep Boop '\n*\n* out = substringBeforeLast( str, 'Boop' );\n* // returns 'Beep '\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates over each grapheme cluster in a string.\n*\n* @param {string} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = graphemeClusters2iterator( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\nfunction graphemeClusters2iterator( src ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar i;\n\tif ( !isString( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be astring. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\ti = 0;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = nextGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': fcn.call( thisArg, src.substring( i ), i, src ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = fcn.call( thisArg, src.substring( i, j ), i, src );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = nextGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': src.substring( i ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = src.substring( i, j );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn graphemeClusters2iterator( src, fcn, thisArg );\n\t\t}\n\t\treturn graphemeClusters2iterator( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = graphemeClusters2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator which iterates over grapheme clusters.\n*\n* @module @stdlib/string/to-grapheme-cluster-iterator\n*\n* @example\n* var graphemeClusters2iterator = require( '@stdlib/string/to-grapheme-cluster-iterator' );\n*\n* var iter = graphemeClusters2iterator( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar prevGraphemeClusterBreak = require( './../../prev-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates from right to left over each grapheme cluster in a string.\n*\n* @param {string} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = graphemeClusters2iteratorRight( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\nfunction graphemeClusters2iteratorRight( src ) { // eslint-disable-line id-length\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar i;\n\tif ( !isString( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be astring. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\ti = src.length - 1;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = prevGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': fcn.call( thisArg, src.substring( j+1, i+1 ), j+1, src ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = fcn.call( thisArg, src.substring( j+1, i+1 ), j+1, src );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = prevGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': src.substring( j+1, i+1 ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = src.substring( j+1, i+1 );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn graphemeClusters2iteratorRight( src, fcn, thisArg );\n\t\t}\n\t\treturn graphemeClusters2iteratorRight( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = graphemeClusters2iteratorRight;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator which iterates from right to left over grapheme clusters.\n*\n* @module @stdlib/string/to-grapheme-cluster-iterator-right\n*\n* @example\n* var graphemeClusters2iteratorRight = require( '@stdlib/string/to-grapheme-cluster-iterator-right' );\n*\n* var iter = graphemeClusters2iteratorRight( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/trim' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning and end of a string.\n*\n* @module @stdlib/string/trim\n*\n* @example\n* var trim = require( '@stdlib/string/trim' );\n*\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar numGraphemeClusters = require( './../../num-grapheme-clusters' );\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Truncates a string to a specified length.\n*\n* @param {string} str - input string\n* @param {integer} len - output string length (including ending)\n* @param {string} [ending='...'] - custom ending\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @returns {string} truncated string\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 7 );\n* // returns 'beep...'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 5, '>>>' );\n* // returns 'be>>>'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 10 );\n* // returns 'beep boop'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 0 );\n* // returns ''\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 2 );\n* // returns '..'\n*\n* @example\n* var str = '\uD83D\uDC3A Wolf Brothers \uD83D\uDC3A';\n* var out = truncate( str, 6 );\n* // returns '\uD83D\uDC3A W...'\n*/\nfunction truncate( str, len, ending ) {\n\tvar endingLength;\n\tvar fromIndex;\n\tvar nVisual;\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isString( ending ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', ending ) );\n\t\t}\n\t}\n\tending = ending || '...';\n\tendingLength = numGraphemeClusters( ending );\n\tfromIndex = 0;\n\tif ( len > numGraphemeClusters( str ) ) {\n\t\treturn str;\n\t}\n\tif ( len - endingLength < 0 ) {\n\t\treturn ending.slice( 0, len );\n\t}\n\tnVisual = 0;\n\twhile ( nVisual < len - endingLength ) {\n\t\tidx = nextGraphemeClusterBreak( str, fromIndex );\n\t\tfromIndex = idx;\n\t\tnVisual += 1;\n\t}\n\treturn str.substring( 0, idx ) + ending;\n}\n\n\n// EXPORTS //\n\nmodule.exports = truncate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Truncate a string to a specified length.\n*\n* @module @stdlib/string/truncate\n*\n* @example\n* var truncate = require( '@stdlib/string/truncate' );\n*\n* var out = truncate( 'beep boop', 7 );\n* // returns 'beep...'\n*\n* out = truncate( 'beep boop', 7, '|' );\n* // returns 'beep b|'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar numGraphemeClusters = require( './../../num-grapheme-clusters' );\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\nvar round = require( '@stdlib/math/base/special/round' );\nvar floor = require( '@stdlib/math/base/special/floor' );\n\n\n// MAIN //\n\n/**\n* Truncates a string in the middle to a specified length.\n*\n* @param {string} str - input string\n* @param {integer} len - output string length (including sequence)\n* @param {string} [seq='...'] - custom replacement sequence\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @returns {string} truncated string\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 5 );\n* // returns 'b...p'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 5, '>>>' );\n* // returns 'b>>>p'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 10 );\n* // returns 'beep boop'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 0 );\n* // returns ''\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 2 );\n* // returns '..'\n*\n* @example\n* var str = '\uD83D\uDC3A Wolf Brothers \uD83D\uDC3A';\n* var out = truncateMiddle( str, 7 );\n* // returns '\uD83D\uDC3A ... \uD83D\uDC3A'\n*/\nfunction truncateMiddle( str, len, seq ) {\n\tvar seqLength;\n\tvar fromIndex;\n\tvar strLength;\n\tvar seqStart;\n\tvar nVisual;\n\tvar seqEnd;\n\tvar idx2;\n\tvar idx1;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isString( seq ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', seq ) );\n\t\t}\n\t}\n\tseq = seq || '...';\n\tseqLength = numGraphemeClusters( seq );\n\tstrLength = numGraphemeClusters( str );\n\tfromIndex = 0;\n\tif ( len > strLength ) {\n\t\treturn str;\n\t}\n\tif ( len - seqLength < 0 ) {\n\t\treturn seq.slice( 0, len );\n\t}\n\tseqStart = round( ( len - seqLength ) / 2 );\n\tseqEnd = strLength - floor( ( len - seqLength ) / 2 );\n\tnVisual = 0;\n\twhile ( nVisual < seqStart ) {\n\t\tidx1 = nextGraphemeClusterBreak( str, fromIndex );\n\t\tfromIndex = idx1;\n\t\tnVisual += 1;\n\t}\n\tidx2 = idx1;\n\twhile ( idx2 > 0 ) {\n\t\tidx2 = nextGraphemeClusterBreak( str, fromIndex );\n\t\tif ( idx2 >= seqEnd + fromIndex - nVisual ) {\n\t\t\tbreak;\n\t\t}\n\t\tfromIndex = idx2;\n\t\tnVisual += 1;\n\t}\n\treturn str.substring( 0, idx1 ) + seq + str.substring( idx2 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = truncateMiddle;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Truncate a string in the middle to a specified length.\n*\n* @module @stdlib/string/truncate-middle\n*\n* @example\n* var truncateMiddle = require( '@stdlib/string/truncate-middle' );\n*\n* var out = truncateMiddle( 'beep boop', 7 );\n* // returns 'be...op'\n*\n* out = truncateMiddle( 'beep boop', 7, '|' );\n* // returns 'bee|oop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/uncapitalize' );\n\n\n// MAIN //\n\n/**\n* Uncapitalizes the first character of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} input string with first character converted to lowercase\n*\n* @example\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* @example\n* var out = uncapitalize( 'Presidential election' );\n* // returns 'presidential election'\n*\n* @example\n* var out = uncapitalize( 'JavaScript' );\n* // returns 'javaScript'\n*\n* @example\n* var out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures'\n*/\nfunction uncapitalize( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = uncapitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Uncapitalize the first character of a string.\n*\n* @module @stdlib/string/uncapitalize\n*\n* @example\n* var uncapitalize = require( '@stdlib/string/uncapitalize' );\n*\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n/*\n* The following modules are intentionally not exported: tools\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace string\n*/\nvar string = {};\n\n/**\n* @name acronym\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/acronym}\n*/\nsetReadOnly( string, 'acronym', require( './../acronym' ) );\n\n/**\n* @name base\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base}\n*/\nsetReadOnly( string, 'base', require( './../base' ) );\n\n/**\n* @name camelcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/camelcase}\n*/\nsetReadOnly( string, 'camelcase', require( './../camelcase' ) );\n\n/**\n* @name capitalize\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/capitalize}\n*/\nsetReadOnly( string, 'capitalize', require( './../capitalize' ) );\n\n/**\n* @name codePointAt\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/code-point-at}\n*/\nsetReadOnly( string, 'codePointAt', require( './../code-point-at' ) );\n\n/**\n* @name constantcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/constantcase}\n*/\nsetReadOnly( string, 'constantcase', require( './../constantcase' ) );\n\n/**\n* @name dotcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/dotcase}\n*/\nsetReadOnly( string, 'dotcase', require( './../dotcase' ) );\n\n/**\n* @name endsWith\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/ends-with}\n*/\nsetReadOnly( string, 'endsWith', require( './../ends-with' ) );\n\n/**\n* @name first\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/first}\n*/\nsetReadOnly( string, 'first', require( './../first' ) );\n\n/**\n* @name forEach\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/for-each}\n*/\nsetReadOnly( string, 'forEach', require( './../for-each' ) );\n\n/**\n* @name format\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/format}\n*/\nsetReadOnly( string, 'format', require( './../format' ) );\n\n/**\n* @name fromCodePoint\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/from-code-point}\n*/\nsetReadOnly( string, 'fromCodePoint', require( './../from-code-point' ) );\n\n/**\n* @name headercase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/headercase}\n*/\nsetReadOnly( string, 'headercase', require( './../headercase' ) );\n\n/**\n* @name kebabcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/kebabcase}\n*/\nsetReadOnly( string, 'kebabcase', require( './../kebabcase' ) );\n\n/**\n* @name lpad\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/left-pad}\n*/\nsetReadOnly( string, 'lpad', require( './../left-pad' ) );\n\n/**\n* @name ltrim\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/left-trim}\n*/\nsetReadOnly( string, 'ltrim', require( './../left-trim' ) );\n\n/**\n* @name ltrimN\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/left-trim-n}\n*/\nsetReadOnly( string, 'ltrimN', require( './../left-trim-n' ) );\n\n/**\n* @name lowercase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/lowercase}\n*/\nsetReadOnly( string, 'lowercase', require( './../lowercase' ) );\n\n/**\n* @name nextGraphemeClusterBreak\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/next-grapheme-cluster-break}\n*/\nsetReadOnly( string, 'nextGraphemeClusterBreak', require( './../next-grapheme-cluster-break' ) );\n\n/**\n* @name numGraphemeClusters\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/num-grapheme-clusters}\n*/\nsetReadOnly( string, 'numGraphemeClusters', require( './../num-grapheme-clusters' ) );\n\n/**\n* @name num2words\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/num2words}\n*/\nsetReadOnly( string, 'num2words', require( './../num2words' ) );\n\n/**\n* @name pad\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/pad}\n*/\nsetReadOnly( string, 'pad', require( './../pad' ) );\n\n/**\n* @name pascalcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/pascalcase}\n*/\nsetReadOnly( string, 'pascalcase', require( './../pascalcase' ) );\n\n/**\n* @name percentEncode\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/percent-encode}\n*/\nsetReadOnly( string, 'percentEncode', require( './../percent-encode' ) );\n\n/**\n* @name prevGraphemeClusterBreak\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/prev-grapheme-cluster-break}\n*/\nsetReadOnly( string, 'prevGraphemeClusterBreak', require( './../prev-grapheme-cluster-break' ) );\n\n/**\n* @name removeFirst\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-first}\n*/\nsetReadOnly( string, 'removeFirst', require( './../remove-first' ) );\n\n/**\n* @name removeLast\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-last}\n*/\nsetReadOnly( string, 'removeLast', require( './../remove-last' ) );\n\n/**\n* @name removePunctuation\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-punctuation}\n*/\nsetReadOnly( string, 'removePunctuation', require( './../remove-punctuation' ) );\n\n/**\n* @name removeUTF8BOM\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-utf8-bom}\n*/\nsetReadOnly( string, 'removeUTF8BOM', require( './../remove-utf8-bom' ) );\n\n/**\n* @name removeWords\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-words}\n*/\nsetReadOnly( string, 'removeWords', require( './../remove-words' ) );\n\n/**\n* @name repeat\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/repeat}\n*/\nsetReadOnly( string, 'repeat', require( './../repeat' ) );\n\n/**\n* @name replace\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/replace}\n*/\nsetReadOnly( string, 'replace', require( './../replace' ) );\n\n/**\n* @name replaceBefore\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/replace-before}\n*/\nsetReadOnly( string, 'replaceBefore', require( './../replace-before' ) );\n\n/**\n* @name reverseString\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/reverse}\n*/\nsetReadOnly( string, 'reverseString', require( './../reverse' ) );\n\n/**\n* @name rpad\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/right-pad}\n*/\nsetReadOnly( string, 'rpad', require( './../right-pad' ) );\n\n/**\n* @name rtrim\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/right-trim}\n*/\nsetReadOnly( string, 'rtrim', require( './../right-trim' ) );\n\n/**\n* @name rtrimN\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/right-trim-n}\n*/\nsetReadOnly( string, 'rtrimN', require( './../right-trim-n' ) );\n\n/**\n* @name snakecase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/snakecase}\n*/\nsetReadOnly( string, 'snakecase', require( './../snakecase' ) );\n\n/**\n* @name splitGraphemeClusters\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/split-grapheme-clusters}\n*/\nsetReadOnly( string, 'splitGraphemeClusters', require( './../split-grapheme-clusters' ) );\n\n/**\n* @name startcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/startcase}\n*/\nsetReadOnly( string, 'startcase', require( './../startcase' ) );\n\n/**\n* @name startsWith\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/starts-with}\n*/\nsetReadOnly( string, 'startsWith', require( './../starts-with' ) );\n\n/**\n* @name substringAfter\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-after}\n*/\nsetReadOnly( string, 'substringAfter', require( './../substring-after' ) );\n\n/**\n* @name substringAfterLast\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-after-last}\n*/\nsetReadOnly( string, 'substringAfterLast', require( './../substring-after-last' ) );\n\n/**\n* @name substringBefore\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-before}\n*/\nsetReadOnly( string, 'substringBefore', require( './../substring-before' ) );\n\n/**\n* @name substringBeforeLast\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-before-last}\n*/\nsetReadOnly( string, 'substringBeforeLast', require( './../substring-before-last' ) );\n\n/**\n* @name graphemeClusters2iterator\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/to-grapheme-cluster-iterator}\n*/\nsetReadOnly( string, 'graphemeClusters2iterator', require( './../to-grapheme-cluster-iterator' ) );\n\n/**\n* @name graphemeClusters2iteratorRight\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/to-grapheme-cluster-iterator-right}\n*/\nsetReadOnly( string, 'graphemeClusters2iteratorRight', require( './../to-grapheme-cluster-iterator-right' ) );\n\n/**\n* @name trim\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/trim}\n*/\nsetReadOnly( string, 'trim', require( './../trim' ) );\n\n/**\n* @name truncate\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/truncate}\n*/\nsetReadOnly( string, 'truncate', require( './../truncate' ) );\n\n/**\n* @name truncateMiddle\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/truncate-middle}\n*/\nsetReadOnly( string, 'truncateMiddle', require( './../truncate-middle' ) );\n\n/**\n* @name uncapitalize\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/uncapitalize}\n*/\nsetReadOnly( string, 'uncapitalize', require( './../uncapitalize' ) );\n\n/**\n* @name uppercase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/uppercase}\n*/\nsetReadOnly( string, 'uppercase', require( './../uppercase' ) );\n\n/**\n* @name utf16ToUTF8Array\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/utf16-to-utf8-array}\n*/\nsetReadOnly( string, 'utf16ToUTF8Array', require( './../utf16-to-utf8-array' ) );\n\n\n// EXPORTS //\n\nmodule.exports = string;\n"],
- "mappings": "uGAAA,IAAAA,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsCA,SAASC,GAAUC,EAAQ,CAC1B,OAAS,OAAOA,GAAU,QAC3B,CAKAF,GAAO,QAAUC,KC7CjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,GAAiBC,EAAM,CAC/B,OAAOA,EAAK,CAAE,IAAM,GACrB,CASA,SAASC,GAAOC,EAAI,CACnB,IAAIC,EAAM,GACNC,EACJ,IAAMA,EAAI,EAAGA,EAAIF,EAAGE,IACnBD,GAAO,IAER,OAAOA,CACR,CAcA,SAASE,GAASL,EAAKM,EAAOC,EAAQ,CACrC,IAAIC,EAAW,GACXC,EAAMH,EAAQN,EAAI,OACtB,OAAKS,EAAM,IAGNV,GAAiBC,CAAI,IACzBQ,EAAW,GACXR,EAAMA,EAAI,OAAQ,CAAE,GAErBA,EAAQO,EACPP,EAAMC,GAAOQ,CAAI,EACjBR,GAAOQ,CAAI,EAAIT,EACXQ,IACJR,EAAM,IAAMA,IAENA,CACR,CAKAF,GAAO,QAAUO,KCnFjB,IAAAK,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KACXC,GAAU,KAGVC,GAAY,OAAO,UAAU,YAC7BC,GAAY,OAAO,UAAU,YAajC,SAASC,GAAeC,EAAQ,CAC/B,IAAIC,EACAC,EACAC,EAEJ,OAASH,EAAM,UAAY,CAC3B,IAAK,IAEJC,EAAO,EACP,MACD,IAAK,IAEJA,EAAO,EACP,MACD,IAAK,IACL,IAAK,IAEJA,EAAO,GACP,MACD,IAAK,IACL,IAAK,IACL,IAAK,IACL,QAECA,EAAO,GACP,KACD,CAGA,GAFAC,EAAMF,EAAM,IACZG,EAAI,SAAUD,EAAK,EAAG,EACjB,CAAC,SAAUC,CAAE,EAAI,CACrB,GAAK,CAACR,GAAUO,CAAI,EACnB,MAAM,IAAI,MAAO,2BAA6BA,CAAI,EAEnDC,EAAI,CACL,CACA,OAAKA,EAAI,IAAOH,EAAM,YAAc,KAAOC,IAAS,MACnDE,EAAI,WAAaA,EAAI,GAEjBA,EAAI,GACRD,GAAQ,CAACC,GAAI,SAAUF,CAAK,EACvBD,EAAM,YACVE,EAAMN,GAASM,EAAKF,EAAM,UAAWA,EAAM,QAAS,GAErDE,EAAM,IAAMA,IAEZA,EAAMC,EAAE,SAAUF,CAAK,EAClB,CAACE,GAAK,CAACH,EAAM,UACjBE,EAAM,GACKF,EAAM,YACjBE,EAAMN,GAASM,EAAKF,EAAM,UAAWA,EAAM,QAAS,GAEhDA,EAAM,OACVE,EAAMF,EAAM,KAAOE,IAGhBD,IAAS,KACRD,EAAM,YACVE,EAAM,KAAOA,GAEdA,EAAQF,EAAM,YAAcF,GAAU,KAAME,EAAM,SAAU,EAC3DF,GAAU,KAAMI,CAAI,EACpBL,GAAU,KAAMK,CAAI,GAEjBD,IAAS,GACRD,EAAM,WAAaE,EAAI,OAAQ,CAAE,IAAM,MAC3CA,EAAM,IAAMA,GAGPA,CACR,CAKAR,GAAO,QAAUK,KClHjB,IAAAK,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,SAASC,GAAUC,EAAQ,CAC1B,OAAS,OAAOA,GAAU,QAC3B,CAKAF,GAAO,QAAUC,KCzCjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,KAGXC,GAAM,KAAK,IACXC,GAAY,OAAO,UAAU,YAC7BC,GAAY,OAAO,UAAU,YAC7BC,EAAU,OAAO,UAAU,QAK3BC,GAAoB,WACpBC,GAAoB,UACpBC,GAAiB,UACjBC,GAAuB,UACvBC,GAA0B,OAC1BC,GAAqB,QACrBC,GAAqB,gBAazB,SAASC,GAAcC,EAAQ,CAC9B,IAAIC,EACAC,EACAC,EAAI,WAAYH,EAAM,GAAI,EAC9B,GAAK,CAAC,SAAUG,CAAE,EAAI,CACrB,GAAK,CAAChB,GAAUa,EAAM,GAAI,EACzB,MAAM,IAAI,MAAO,yCAA2CE,CAAI,EAGjEC,EAAIH,EAAM,GACX,CACA,OAASA,EAAM,UAAY,CAC3B,IAAK,IACL,IAAK,IACJE,EAAMC,EAAE,cAAeH,EAAM,SAAU,EACvC,MACD,IAAK,IACL,IAAK,IACJE,EAAMC,EAAE,QAASH,EAAM,SAAU,EACjC,MACD,IAAK,IACL,IAAK,IACCZ,GAAKe,CAAE,EAAI,MACfF,EAASD,EAAM,UACVC,EAAS,IACbA,GAAU,GAEXC,EAAMC,EAAE,cAAeF,CAAO,GAE9BC,EAAMC,EAAE,YAAaH,EAAM,SAAU,EAEhCA,EAAM,YACXE,EAAMX,EAAQ,KAAMW,EAAKJ,GAAoB,KAAM,EACnDI,EAAMX,EAAQ,KAAMW,EAAKL,GAAoB,GAAG,EAChDK,EAAMX,EAAQ,KAAMW,EAAKN,GAAyB,EAAG,GAEtD,MACD,QACC,MAAM,IAAI,MAAO,mCAAqCI,EAAM,SAAU,CACvE,CACA,OAAAE,EAAMX,EAAQ,KAAMW,EAAKV,GAAmB,OAAQ,EACpDU,EAAMX,EAAQ,KAAMW,EAAKT,GAAmB,OAAQ,EAC/CO,EAAM,YACVE,EAAMX,EAAQ,KAAMW,EAAKR,GAAgB,KAAM,EAC/CQ,EAAMX,EAAQ,KAAMW,EAAKP,GAAsB,MAAO,GAElDQ,GAAK,GAAKH,EAAM,OACpBE,EAAMF,EAAM,KAAOE,GAEpBA,EAAQF,EAAM,YAAcV,GAAU,KAAMU,EAAM,SAAU,EAC3DV,GAAU,KAAMY,CAAI,EACpBb,GAAU,KAAMa,CAAI,EACdA,CACR,CAKAhB,GAAO,QAAUa,KC9GjB,IAAAK,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6BA,SAASC,GAAQC,EAAI,CACpB,IAAIC,EAAM,GACNC,EACJ,IAAMA,EAAI,EAAGA,EAAIF,EAAGE,IACnBD,GAAO,IAER,OAAOA,CACR,CAcA,SAASE,GAAUC,EAAKC,EAAOC,EAAQ,CACtC,IAAIC,EAAMF,EAAQD,EAAI,OACtB,OAAKG,EAAM,IAGXH,EAAQE,EACPF,EAAML,GAAQQ,CAAI,EAClBR,GAAQQ,CAAI,EAAIH,GACVA,CACR,CAKAN,GAAO,QAAUK,KChEjB,IAAAK,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,KAChBC,GAAW,KACXC,GAAe,KACfC,GAAW,KACXC,GAAU,KAKVC,GAAe,OAAO,aACtBC,EAAQ,MACRC,GAAU,MAAM,QAYpB,SAASC,GAAYC,EAAQ,CAC5B,IAAIC,EAAM,CAAC,EACX,OAAAA,EAAI,UAAYD,EAAM,UACtBC,EAAI,UAAcD,EAAM,YAAc,OAAW,EAAIA,EAAM,UAC3DC,EAAI,MAAQD,EAAM,MAClBC,EAAI,MAAQD,EAAM,OAAS,GAC3BC,EAAI,QAAUD,EAAM,QACbC,CACR,CAmBA,SAASC,GAAmBC,EAAS,CACpC,IAAIC,EACAC,EACAL,EACAM,EACAC,EACAN,EACAO,EACAC,EACAC,EAEJ,GAAK,CAACZ,GAASK,CAAO,EACrB,MAAM,IAAI,UAAW,8DAAgEA,EAAS,IAAK,EAIpG,IAFAF,EAAM,GACNO,EAAM,EACAC,EAAI,EAAGA,EAAIN,EAAO,OAAQM,IAE/B,GADAT,EAAQG,EAAQM,CAAE,EACbjB,GAAUQ,CAAM,EACpBC,GAAOD,MACD,CAGN,GAFAI,EAAYJ,EAAM,YAAc,OAChCA,EAAQD,GAAYC,CAAM,EACrB,CAACA,EAAM,UACX,MAAM,IAAI,UAAW,oEAAqES,EAAG,cAAgBT,EAAQ,IAAK,EAM3H,IAJKA,EAAM,UACVQ,EAAMR,EAAM,SAEbK,EAAQL,EAAM,MACRU,EAAI,EAAGA,EAAIL,EAAM,OAAQK,IAE9B,OADAJ,EAAOD,EAAM,OAAQK,CAAE,EACdJ,EAAO,CAChB,IAAK,IACJN,EAAM,KAAO,IACb,MACD,IAAK,IACJA,EAAM,KAAO,IACb,MACD,IAAK,IACJA,EAAM,SAAW,GACjBA,EAAM,SAAW,GACjB,MACD,IAAK,IACJA,EAAM,SAAWK,EAAM,QAAS,GAAI,EAAI,EACxC,MACD,IAAK,IACJL,EAAM,UAAY,GAClB,MACD,QACC,MAAM,IAAI,MAAO,iBAAmBM,CAAK,CAC1C,CAED,GAAKN,EAAM,QAAU,IAAM,CAG1B,GAFAA,EAAM,MAAQ,SAAU,UAAWQ,CAAI,EAAG,EAAG,EAC7CA,GAAO,EACFX,EAAOG,EAAM,KAAM,EACvB,MAAM,IAAI,UAAW,wCAA0CQ,EAAM,6BAA+BR,EAAM,MAAQ,IAAK,EAEnHA,EAAM,MAAQ,IAClBA,EAAM,SAAW,GACjBA,EAAM,MAAQ,CAACA,EAAM,MAEvB,CACA,GAAKI,GACCJ,EAAM,YAAc,IAAM,CAG9B,GAFAA,EAAM,UAAY,SAAU,UAAWQ,CAAI,EAAG,EAAG,EACjDA,GAAO,EACFX,EAAOG,EAAM,SAAU,EAC3B,MAAM,IAAI,UAAW,4CAA8CQ,EAAM,6BAA+BR,EAAM,UAAY,IAAK,EAE3HA,EAAM,UAAY,IACtBA,EAAM,UAAY,EAClBI,EAAY,GAEd,CAGD,OADAJ,EAAM,IAAM,UAAWQ,CAAI,EAClBR,EAAM,UAAY,CAC3B,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAECI,IACJJ,EAAM,SAAW,IAElBA,EAAM,IAAMT,GAAeS,CAAM,EACjC,MACD,IAAK,IAEJA,EAAM,SAAaI,EAAcJ,EAAM,UAAY,GACnD,MACD,IAAK,IAEJ,GAAK,CAACH,EAAOG,EAAM,GAAI,EAAI,CAE1B,GADAO,EAAM,SAAUP,EAAM,IAAK,EAAG,EACzBO,EAAM,GAAKA,EAAM,IACrB,MAAM,IAAI,MAAO,kCAAoCP,EAAM,GAAI,EAEhEA,EAAM,IAAQH,EAAOU,CAAI,EACxB,OAAQP,EAAM,GAAI,EAClBJ,GAAcW,CAAI,CACpB,CACA,MACD,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAEEH,IACLJ,EAAM,UAAY,GAEnBA,EAAM,IAAMP,GAAcO,CAAM,EAChC,MACD,QACC,MAAM,IAAI,MAAO,sBAAwBA,EAAM,SAAU,CAC1D,CAEKA,EAAM,UAAY,GAAKA,EAAM,IAAI,OAASA,EAAM,WACpDA,EAAM,IAAMA,EAAM,IAAI,UAAW,EAAGA,EAAM,QAAS,GAE/CA,EAAM,SACVA,EAAM,IAAML,GAASK,EAAM,IAAKA,EAAM,OAASA,EAAM,UAAWA,EAAM,QAAS,EACpEA,EAAM,QACjBA,EAAM,IAAMN,GAAUM,EAAM,IAAKA,EAAM,MAAOA,EAAM,QAAS,GAE9DC,GAAOD,EAAM,KAAO,GACpBQ,GAAO,CACR,CAED,OAAOP,CACR,CAKAX,GAAO,QAAUY,KCtNjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCxCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,EAAK,6EAYT,SAASC,GAAOC,EAAQ,CACvB,IAAIC,EAAQ,CACX,QAAaD,EAAO,CAAE,EAAM,SAAUA,EAAO,CAAE,EAAG,EAAG,EAAI,OACzD,MAASA,EAAO,CAAE,EAClB,MAASA,EAAO,CAAE,EAClB,UAAaA,EAAO,CAAE,EACtB,UAAaA,EAAO,CAAE,CACvB,EACA,OAAKA,EAAO,CAAE,IAAM,KAAOA,EAAO,CAAE,IAAM,SACzCC,EAAM,UAAY,KAEZA,CACR,CAeA,SAASC,GAAgBC,EAAM,CAC9B,IAAIC,EACAC,EACAL,EACAM,EAKJ,IAHAD,EAAS,CAAC,EACVC,EAAO,EACPN,EAAQF,EAAG,KAAMK,CAAI,EACbH,GACPI,EAAUD,EAAI,MAAOG,EAAMR,EAAG,UAAYE,EAAO,CAAE,EAAE,MAAO,EACvDI,EAAQ,QACZC,EAAO,KAAMD,CAAQ,EAEtBC,EAAO,KAAMN,GAAOC,CAAM,CAAE,EAC5BM,EAAOR,EAAG,UACVE,EAAQF,EAAG,KAAMK,CAAI,EAEtB,OAAAC,EAAUD,EAAI,MAAOG,CAAK,EACrBF,EAAQ,QACZC,EAAO,KAAMD,CAAQ,EAEfC,CACR,CAKAR,GAAO,QAAUK,KCzFjB,IAAAK,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCxCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,SAASC,GAAUC,EAAQ,CAC1B,OAAS,OAAOA,GAAU,QAC3B,CAKAF,GAAO,QAAUC,KCzCjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAc,KACdC,GAAW,KACXC,GAAW,KAsBf,SAASC,GAAQC,EAAM,CACtB,IAAIC,EACAC,EACAC,EAEJ,GAAK,CAACL,GAAUE,CAAI,EACnB,MAAM,IAAI,UAAWD,GAAQ,kEAAmEC,CAAI,CAAE,EAKvG,IAHAC,EAASJ,GAAUG,CAAI,EACvBE,EAAO,IAAI,MAAO,UAAU,MAAO,EACnCA,EAAM,CAAE,EAAID,EACNE,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC7BD,EAAMC,CAAE,EAAI,UAAWA,CAAE,EAE1B,OAAOP,GAAY,MAAO,KAAMM,CAAK,CACtC,CAKAP,GAAO,QAAUI,KClEjB,IAAAK,EAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA+CA,SAASC,GAASC,EAAKC,EAAQC,EAAS,CACvC,OAAOF,EAAI,QAASC,EAAQC,CAAO,CACpC,CAKAJ,GAAO,QAAUC,KCtDjB,IAAAI,EAAAC,EAAA,SAAAC,GAAAC,GAAA,cAmCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCxCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,QAAS,oCAAqC,EACxDC,GAAa,QAAS,4BAA6B,EACnDC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAW,QAAS,0BAA2B,EAC/CC,GAAS,IACTC,GAAO,IAsCX,SAASC,GAASC,EAAKC,EAAQC,EAAS,CACvC,GAAK,CAACP,GAAUK,CAAI,EACnB,MAAM,IAAI,UAAWH,GAAQ,kEAAmEG,CAAI,CAAE,EAEvG,GAAKL,GAAUM,CAAO,EACrBA,EAAS,IAAI,OAAQR,GAASQ,CAAO,EAAG,GAAI,UACjC,CAACL,GAAUK,CAAO,EAC7B,MAAM,IAAI,UAAWJ,GAAQ,yFAA0FI,CAAO,CAAE,EAEjI,GAAK,CAACN,GAAUO,CAAO,GAAK,CAACR,GAAYQ,CAAO,EAC/C,MAAM,IAAI,UAAWL,GAAQ,0FAA2FK,CAAO,CAAE,EAElI,OAAOJ,GAAME,EAAKC,EAAQC,CAAO,CAClC,CAKAV,GAAO,QAAUO,KCnFjB,IAAAI,EAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC5CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAU,IACVC,GAAS,IAKTC,GAAK,gCA2BT,SAASC,GAAmBC,EAAM,CACjC,GAAK,CAACL,GAAUK,CAAI,EACnB,MAAM,IAAI,UAAWH,GAAQ,wDAAyDG,CAAI,CAAE,EAE7F,OAAOJ,GAASI,EAAKF,GAAI,EAAG,CAC7B,CAKAJ,GAAO,QAAUK,KClEjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAgCA,SAASC,GAAWC,EAAM,CACzB,OAAOA,EAAI,YAAY,CACxB,CAKAF,GAAO,QAAUC,KCvCjB,IAAAE,EAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAgCA,SAASC,GAAWC,EAAM,CACzB,OAAOA,EAAI,YAAY,CACxB,CAKAF,GAAO,QAAUC,KCvCjB,IAAAE,EAAAC,EAAA,SAAAC,GAAAC,GAAA,cAkCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KCvCjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAgB,QAAS,gCAAiC,EAC1DC,GAAa,QAAS,iCAAkC,EACxDC,GAAgB,QAAS,gCAAiC,EAAE,WAC5DC,GAAe,QAAS,+BAAgC,EACxDC,GAAS,IAwBb,SAASC,GAAUC,EAAMC,EAAU,CAClC,OAAMP,GAAeO,CAAQ,EAGxBN,GAAYM,EAAS,WAAY,IACrCD,EAAK,UAAYC,EAAQ,UAExB,CAACL,GAAeI,EAAK,SAAU,GAC/B,CAACH,GAAcG,EAAK,SAAU,GAEvB,IAAI,UAAWF,GAAQ,yEAA0E,YAAaE,EAAK,SAAU,CAAE,EAGjI,KAXC,IAAI,UAAWF,GAAQ,qEAAsEG,CAAQ,CAAE,CAYhH,CAKAR,GAAO,QAAUM,KCrEjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,CAAAA,GAAA,SACI,IACA,MACA,OACA,WACA,KACA,MACA,MACA,MACA,KACA,KACA,IACA,KACA,OACA,MACA,KACA,IACA,QACA,IACA,IACA,OACA,KACA,SACA,OACA,OACA,KACA,SACA,IACA,MACA,MACA,MACA,OACA,UACA,IACA,MACA,OACA,QACA,QACA,KACA,QACA,MACA,IACA,MACA,MACA,OACA,SACA,KACA,MACA,OACA,UACA,MACA,UACA,MACA,MACA,IACA,KACA,KACA,KACA,OACA,KACA,KACA,MACA,SACA,IACA,OACA,IACA,IACA,OACA,MACA,IACA,OACA,MACA,KACA,QACA,OACA,KACA,SACA,IACA,OACA,QACA,OACA,KACA,MACA,MACA,MACA,IACA,KACA,MACA,MACA,KACA,OACA,OACA,KACA,MACA,MACA,IACA,MACA,MACA,IACA,IACA,IACA,OACA,QACA,MACA,SACA,QACA,KACA,OACA,OACA,IACA,OACA,OACA,MACA,QACA,OACA,OACA,QACA,QACA,OACA,OACA,QACA,SACA,OACA,KACA,MACA,IACA,KACA,IACA,IACA,MACA,KACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,MACA,QACA,MACA,OACA,QACA,IACA,IACA,MACA,GACJ,ICnJA,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAoB,KACpBC,GAAW,QAAS,sBAAuB,EAC3CC,GAAU,IACVC,GAAY,IACZC,GAAY,IACZC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAW,QAAS,oCAAqC,EAAE,QAC3DC,GAAS,IACTC,GAAW,KACXC,GAAY,KAKZC,GAAY,KAiChB,SAASC,GAASC,EAAKC,EAAU,CAChC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,GAAK,CAACd,GAAUO,CAAI,EACnB,MAAM,IAAI,UAAWL,GAAQ,kEAAmEK,CAAI,CAAE,EAGvG,GADAI,EAAO,CAAC,EACH,UAAU,OAAS,IACvBC,EAAMT,GAAUQ,EAAMH,CAAQ,EACzBI,GACJ,MAAMA,EAQR,IALAH,EAAaR,GAAUU,EAAK,WAAaP,EAAU,EACnDG,EAAMZ,GAAmBY,CAAI,EAC7BA,EAAMV,GAASU,EAAKF,GAAW,GAAI,EACnCK,EAAQd,GAAUW,CAAI,EACtBM,EAAM,GACAC,EAAI,EAAGA,EAAIJ,EAAM,OAAQI,IACzBL,EAAYV,GAAWW,EAAOI,CAAE,CAAE,CAAE,IAAM,KAC9CD,GAAOf,GAAWY,EAAOI,CAAE,EAAE,OAAQ,CAAE,CAAE,GAG3C,OAAOD,CACR,CAKAnB,GAAO,QAAUY,KCvGjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC5CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA4CA,SAASC,GAAYC,EAAM,CAC1B,OAAKA,IAAQ,GACL,GAEDA,EAAI,OAAQ,CAAE,EAAE,YAAY,EAAIA,EAAI,MAAO,CAAE,CACrD,CAKAF,GAAO,QAAUC,KCtDjB,IAAAE,EAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,OAAO,UAAU,MAAS,YAK9CD,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAO,OAAO,UAAU,KAK5BD,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAO,KAKPC,GAAO,2HACPC,GAAO,SAmBX,SAASC,IAAO,CACf,OAASH,GAAK,KAAMC,EAAK,IAAM,IAAUD,GAAK,KAAME,EAAK,IAAMA,EAChE,CAKAH,GAAO,QAAUI,KCtDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,IAMVC,GAAK,+KAwBT,SAASC,GAAMC,EAAM,CACpB,OAAOH,GAASG,EAAKF,GAAI,IAAK,CAC/B,CAKAF,GAAO,QAAUG,KC3DjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,KAuBd,SAASC,GAAMC,EAAM,CACpB,OAAOF,GAAQ,KAAME,CAAI,CAC1B,CAKAH,GAAO,QAAUE,KCpDjB,IAAAE,EAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAc,KACdC,GAAQ,KACRC,GAAW,KACXC,GAAO,KAKPC,GACCJ,IAAeC,GAAM,EACzBG,GAAOD,GAEPC,GAAOF,GAMRH,GAAO,QAAUK,KC1DjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAa,IACbC,GAAY,IACZC,EAAU,IACVC,GAAO,IAKPC,GAAgB,OAChBC,GAAa,0CACbC,GAAc,4BACdC,GAAW,qBAcf,SAASC,GAAUC,EAAOC,EAAIC,EAAS,CACtC,OAAAD,EAAKT,GAAWS,CAAG,EACVC,IAAW,EAAMD,EAAKV,GAAYU,CAAG,CAC/C,CA2BA,SAASE,GAAWC,EAAM,CACzB,OAAAA,EAAMX,EAASW,EAAKR,GAAY,GAAI,EACpCQ,EAAMX,EAASW,EAAKT,GAAe,GAAI,EACvCS,EAAMX,EAASW,EAAKN,GAAU,OAAQ,EACtCM,EAAMV,GAAMU,CAAI,EACTX,EAASW,EAAKP,GAAaE,EAAS,CAC5C,CAKAT,GAAO,QAAUa,KCxFjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAwCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC7CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAuBA,IAAIC,GAAU,MACVC,GAAQ,KAGRC,EAAS,MACTC,GAAS,MAGTC,EAAS,MACTC,GAAS,MAkCb,SAASC,GAAaC,EAAKC,EAAKC,EAAW,CAC1C,IAAIC,EACAC,EACAC,EAQJ,OANKJ,EAAM,IACVA,GAAOD,EAAI,QAEZG,EAAOH,EAAI,WAAYC,CAAI,EAGtBE,GAAQR,GAAUQ,GAAQP,IAAUK,EAAMD,EAAI,OAAS,GAC3DK,EAAKF,EACLC,EAAMJ,EAAI,WAAYC,EAAI,CAAE,EACvBJ,GAAUO,GAAOA,GAAON,IACjBO,EAAKV,GAAWD,IAAYU,EAAMP,GAAWJ,GAElDY,GAGHH,GACCC,GAAQN,GAAUM,GAAQL,IAAUG,GAAO,GAC/CI,EAAKL,EAAI,WAAYC,EAAI,CAAE,EAC3BG,EAAMD,EACDR,GAAUU,GAAMA,GAAMT,IACfS,EAAKV,GAAWD,IAAYU,EAAMP,GAAWJ,GAElDW,GAGFD,CACR,CAKAX,GAAO,QAAUO,KCtGjB,IAAAO,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAY,IACZC,GAAU,IACVC,GAAO,IAKPC,GAAgB,OAChBC,GAAa,2CACbC,GAAW,qBA2Bf,SAASC,GAAcC,EAAM,CAC5B,OAAAA,EAAMN,GAASM,EAAKH,GAAY,GAAI,EACpCG,EAAMN,GAASM,EAAKF,GAAU,OAAQ,EACtCE,EAAML,GAAMK,CAAI,EAChBA,EAAMN,GAASM,EAAKJ,GAAe,GAAI,EAChCH,GAAWO,CAAI,CACvB,CAKAR,GAAO,QAAUO,KCrEjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAyCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC9CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAS,IACTC,GAAM,QAAS,+BAAgC,EAkBnD,SAASC,GAAqBC,EAAIC,EAAK,CACtC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAEJ,GAAK,CAACb,GAAUI,CAAG,EAClB,MAAM,IAAI,UAAWH,GAAQ,kEAAmEG,CAAG,CAAE,EAEtG,GAAK,CAACJ,GAAUK,CAAG,EAClB,MAAM,IAAI,UAAWJ,GAAQ,mEAAoEI,CAAG,CAAE,EAMvG,GAJAK,EAAIN,EAAG,OACPK,EAAIJ,EAAG,OAGFK,IAAM,EACV,OAAOD,EAER,GAAKA,IAAM,EACV,OAAOC,EAIR,IADAH,EAAM,CAAC,EACDI,EAAI,EAAGA,GAAKF,EAAGE,IACpBJ,EAAI,KAAMI,CAAE,EAGb,IAAMA,EAAI,EAAGA,EAAID,EAAGC,IAGnB,IAFAH,EAAMD,EAAK,CAAE,EACbA,EAAK,CAAE,EAAII,EAAI,EACTC,EAAI,EAAGA,EAAIH,EAAGG,IACnBC,EAAID,EAAI,EACRN,EAAOC,EAAKM,CAAE,EACTT,EAAIO,CAAE,IAAMN,EAAIO,CAAE,EACtBL,EAAKM,CAAE,EAAIL,EAEXD,EAAKM,CAAE,EAAIX,GAAKM,EAAKN,GAAKK,EAAKK,CAAE,EAAGL,EAAKM,CAAE,CAAE,CAAE,EAAI,EAEpDL,EAAMF,EAGR,OAAOC,EAAKE,CAAE,CACf,CAKAV,GAAO,QAAUI,KC9FjB,IAAAW,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAyCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC9CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA0BA,IAAIC,GAAc,QAAS,yCAA0C,EAUjEC,GAAK,CAAC,EASVD,GAAaC,GAAI,sBAAuB,IAAmD,EAK3FF,GAAO,QAAUE,KClDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAY,IACZC,GAAU,IACVC,GAAO,IAKPC,GAAgB,OAChBC,GAAa,2CACbC,GAAW,qBA2Bf,SAASC,GAASC,EAAM,CACvB,OAAAA,EAAMN,GAASM,EAAKH,GAAY,GAAI,EACpCG,EAAMN,GAASM,EAAKF,GAAU,OAAQ,EACtCE,EAAML,GAAMK,CAAI,EAChBA,EAAMN,GAASM,EAAKJ,GAAe,GAAI,EAChCH,GAAWO,CAAI,CACvB,CAKAR,GAAO,QAAUO,KCrEjB,IAAAE,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAyCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC9CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,OAAO,OAAO,UAAU,UAAa,YAKlDD,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA2CA,SAASC,GAAUC,EAAKC,EAAQC,EAAM,CACrC,IAAIC,EACAC,EACAC,EAGJ,GADAD,EAAIH,EAAO,OACNC,IAAQ,EACZ,OAASE,IAAM,EAOhB,GALKF,EAAM,EACVC,EAAMH,EAAI,OAASE,EAEnBC,EAAMD,EAEFE,IAAM,EAEV,MAAO,GAGR,GADAD,GAAOC,EACFD,EAAM,EACV,MAAO,GAER,IAAME,EAAI,EAAGA,EAAID,EAAGC,IACnB,GAAKL,EAAI,WAAYG,EAAME,CAAE,IAAMJ,EAAO,WAAYI,CAAE,EACvD,MAAO,GAGT,MAAO,EACR,CAKAP,GAAO,QAAUC,KC5EjB,IAAAO,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAW,OAAO,UAAU,SAKhCD,GAAO,QAAUC,KC3BjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAU,KAyBd,SAASC,GAAUC,EAAKC,EAAQC,EAAM,CACrC,IAAIC,EACAC,EAGJ,OADAA,EAAIH,EAAO,OACNC,IAAQ,EACHE,IAAM,GAEXF,EAAM,EACVC,EAAMH,EAAI,OAASE,EAEnBC,EAAMD,EAEFE,IAAM,EAEH,GAEHD,EAAMC,EAAI,GAAKD,EAAMH,EAAI,OACtB,GAEDF,GAAQ,KAAME,EAAKC,EAAQE,CAAI,EACvC,CAKAN,GAAO,QAAUE,KCzEjB,IAAAM,EAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6CA,IAAIC,GAAc,KACdC,GAAW,KACXC,GAAO,KAKPC,GACCH,GACJG,GAAWD,GAEXC,GAAWF,GAMZF,GAAO,QAAUI,KC9DjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cA6CA,SAASC,GAAOC,EAAKC,EAAI,CACxB,OAAOD,EAAI,UAAW,EAAGC,CAAE,CAC5B,CAKAH,GAAO,QAAUC,KCpDjB,IAAAG,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAA0B,QAAS,qCAAsC,EAAE,OAK3EC,GAAyB,kBACzBC,GAA0B,kBA4B9B,SAASC,GAAOC,EAAKC,EAAI,CACxB,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,GAAKP,IAAQ,IAAMC,IAAM,EACxB,MAAO,GAER,GAAKA,IAAM,EAEV,OADAD,EAAMA,EAAI,UAAW,EAAG,CAAE,EACrBJ,GAAwB,KAAMI,CAAI,EAC/BA,EAEDA,EAAK,CAAE,EAOf,IALAE,EAAMF,EAAI,OACVG,EAAM,GACNG,EAAM,EAGAC,EAAI,EAAGA,EAAIL,EAAKK,IAAM,CAM3B,GALAH,EAAMJ,EAAKO,CAAE,EACbJ,GAAOC,EACPE,GAAO,EAGFR,GAAwB,KAAMM,CAAI,EAAI,CAE1C,GAAKG,IAAML,EAAI,EAEd,MAGDG,EAAML,EAAKO,EAAE,CAAE,EACVV,GAAuB,KAAMQ,CAAI,IAErCF,GAAOE,EACPE,GAAK,EAEP,CAEA,GAAKD,IAAQL,EACZ,KAEF,CACA,OAAOE,CACR,CAKAR,GAAO,QAAUI,KC7GjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAY,QAAS,2BAA4B,EAAE,YACnDC,GAAW,QAAS,0BAA2B,EAAE,YACjDC,GAAY,QAAS,2BAA4B,EAAE,YACnDC,EAAS,IACTC,GAAO,KAiCX,SAASC,GAAaC,EAAKC,EAAKC,EAAW,CAC1C,IAAIC,EAEJ,GAAK,CAACR,GAAUK,CAAI,EACnB,MAAM,IAAI,UAAWH,EAAQ,kEAAmEG,CAAI,CAAE,EAEvG,GAAK,CAACJ,GAAWK,CAAI,EACpB,MAAM,IAAI,UAAWJ,EAAQ,qEAAsEI,CAAI,CAAE,EAK1G,GAHKA,EAAM,IACVA,GAAOD,EAAI,QAEPC,EAAM,GAAKA,GAAOD,EAAI,OAC1B,MAAM,IAAI,WAAYH,EAAQ,2GAA4GI,CAAI,CAAE,EAEjJ,GAAK,UAAU,OAAS,EAAI,CAC3B,GAAK,CAACP,GAAWQ,CAAS,EACzB,MAAM,IAAI,UAAWL,EAAQ,mEAAoEK,CAAS,CAAE,EAE7GC,EAAMD,CACP,MACCC,EAAM,GAEP,OAAOL,GAAME,EAAKC,EAAKE,CAAI,CAC5B,CAKAV,GAAO,QAAUM,KCxFjB,IAAAK,EAAAC,EAAA,SAAAC,GAAAC,GAAA,cAqCA,IAAIC,GAAO,KAKXD,GAAO,QAAUC,KC1CjB,IAAAC,EAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAS,CACZ,GAAM,EACN,GAAM,EACN,QAAW,EACX,OAAU,EACV,kBAAqB,EACrB,YAAe,EACf,EAAK,EACL,EAAK,EACL,EAAK,EACL,GAAM,EACN,IAAO,GACP,MAAS,GACT,QAAW,GACX,IAAO,GACP,SAAY,EACZ,WAAc,EACd,MAAS,EACT,kBAAqB,EACrB,yBAA4B,EAC5B,qBAAwB,GACzB,EAKAD,GAAO,QAAUC,KChDjB,IAAAC,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,EAAY,IAehB,SAASC,GAAOC,EAAKC,EAAOC,EAAKC,EAAQ,CACxC,IAAIC,EACAC,EAMJ,IAJKH,GAAOF,EAAI,SACfE,EAAMF,EAAI,OAAS,GAEpBI,EAAM,EACAC,EAAIJ,EAAOI,GAAKH,EAAKG,IACrBL,EAAKK,CAAE,IAAMF,IACjBC,GAAO,GAGT,OAAOA,CACR,CAYA,SAASE,GAAON,EAAKC,EAAOC,EAAKC,EAAQ,CACxC,IAAIE,EAKJ,IAHKH,GAAOF,EAAI,SACfE,EAAMF,EAAI,OAAS,GAEdK,EAAIJ,EAAOI,GAAKH,EAAKG,IAC1B,GAAKL,EAAKK,CAAE,IAAMF,EACjB,MAAO,GAGT,MAAO,EACR,CAYA,SAASI,GAASP,EAAKC,EAAOC,EAAKC,EAAQ,CAC1C,IAAIE,EAKJ,IAHKH,GAAOF,EAAI,SACfE,EAAMF,EAAI,OAAS,GAEdK,EAAIJ,EAAOI,GAAKH,EAAKG,IAC1B,GAAKL,EAAKK,CAAE,IAAMF,EACjB,OAAOE,EAGT,MAAO,EACR,CAYA,SAASG,GAAaR,EAAKC,EAAOC,EAAKC,EAAQ,CAC9C,IAAIE,EAKJ,IAHKJ,GAASD,EAAI,OAAO,IACxBC,EAAQD,EAAI,OAAS,GAEhBK,EAAIJ,EAAOI,GAAKH,EAAKG,IAC1B,GAAKL,EAAKK,CAAE,IAAMF,EACjB,OAAOE,EAGT,MAAO,EACR,CAiBA,SAASI,GAAWC,EAAQC,EAAQ,CACnC,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EAUJ,OARAD,EAAIN,EAAO,OACXO,EAAID,EAAI,EAERF,EAAOJ,EAAQO,EAAE,CAAE,EACnBJ,EAAOH,EAAQO,CAAE,EACjBL,EAAYD,EAAOM,CAAE,EAErBF,EAAMP,GAAaE,EAAQO,EAAG,EAAGnB,EAAU,iBAAkB,EAE5DiB,EAAM,GACND,IAAShB,EAAU,SACnBgB,IAAShB,EAAU,mBACnBQ,GAAOI,EAAQ,EAAGK,EAAI,EAAGjB,EAAU,iBAAkB,EAEhDC,GAAOW,EAAQ,EAAGO,EAAGnB,EAAU,iBAAkB,EAAI,IAAM,EACxDA,EAAU,kBAEXA,EAAU,yBAIjBgB,IAAShB,EAAU,IACnBe,IAASf,EAAU,GAEZA,EAAU,SAIjBgB,IAAShB,EAAU,SACnBgB,IAAShB,EAAU,IACnBgB,IAAShB,EAAU,IAMnBe,IAASf,EAAU,SACnBe,IAASf,EAAU,IACnBe,IAASf,EAAU,GAEZA,EAAU,WAIjBgB,IAAShB,EAAU,IAElBe,IAASf,EAAU,GACnBe,IAASf,EAAU,GACnBe,IAASf,EAAU,IACnBe,IAASf,EAAU,OAOlBgB,IAAShB,EAAU,IAAMgB,IAAShB,EAAU,KAC5Ce,IAASf,EAAU,GAAKe,IAASf,EAAU,KAM3CgB,IAAShB,EAAU,KAAOgB,IAAShB,EAAU,IAC/Ce,IAASf,EAAU,GAMnBe,IAASf,EAAU,QACnBe,IAASf,EAAU,KAKfe,IAASf,EAAU,aAInBgB,IAAShB,EAAU,UAIxBiB,EAAMP,GAAaG,EAAOM,EAAE,EAAG,EAAGnB,EAAU,oBAAqB,EAEhEiB,GAAO,GACPD,IAAShB,EAAU,KACnBc,IAAcd,EAAU,sBACxBa,EAAOI,CAAI,IAAMjB,EAAU,sBAC3BQ,GAAOI,EAAQK,EAAI,EAAGE,EAAE,EAAGnB,EAAU,MAAO,GAErCA,EAAU,SAIbS,GAASG,EAAQ,EAAGO,EAAE,EAAGnB,EAAU,iBAAkB,GAAK,EACvDA,EAAU,MAGjBgB,IAAShB,EAAU,mBACnBe,IAASf,EAAU,kBAEZA,EAAU,SAGXA,EAAU,UAClB,CAKAD,GAAO,QAAUY,KCpQjB,IAAAS,GAAAC,EAAA,SAAAC,GAAAC,GAAA,cAsBA,IAAIC,GAAY,IAsBhB,SAASC,GAAeC,EAAO,CAC9B,OACCA,IAAS,KACTA,IAAS,KACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,KACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,KAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,OAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,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,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ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AS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,MACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,MACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,MAEFF,EAAU,GAGf,OAAUE,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,G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",
- "names": ["require_is_number", "__commonJSMin", "exports", "module", "isNumber", "value", "require_zero_pad", "__commonJSMin", "exports", "module", "startsWithMinus", "str", "zeros", "n", "out", "i", "zeroPad", "width", "right", "negative", "pad", "require_format_integer", "__commonJSMin", "exports", "module", "isNumber", "zeroPad", "lowercase", "uppercase", "formatInteger", "token", "base", "out", "i", "require_is_string", "__commonJSMin", "exports", "module", "isString", "value", "require_format_double", "__commonJSMin", "exports", "module", "isNumber", "abs", "lowercase", "uppercase", "replace", "RE_EXP_POS_DIGITS", "RE_EXP_NEG_DIGITS", "RE_ONLY_DIGITS", "RE_DIGITS_BEFORE_EXP", "RE_TRAILING_PERIOD_ZERO", "RE_PERIOD_ZERO_EXP", "RE_ZERO_BEFORE_EXP", "formatDouble", "token", "digits", "out", "f", "require_space_pad", "__commonJSMin", "exports", "module", "spaces", "n", "out", "i", "spacePad", "str", "width", "right", "pad", "require_main", "__commonJSMin", "exports", "module", "formatInteger", "isString", "formatDouble", "spacePad", "zeroPad", "fromCharCode", "isnan", "isArray", "initialize", "token", "out", "formatInterpolate", "tokens", "hasPeriod", "flags", "flag", "num", "pos", "i", "j", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE", "parse", "match", "token", "formatTokenize", "str", "content", "tokens", "prev", "require_lib", "__commonJSMin", "exports", "module", "main", "require_is_string", "__commonJSMin", "exports", "module", "isString", "value", "require_main", "__commonJSMin", "exports", "module", "interpolate", "tokenize", "isString", "format", "str", "tokens", "args", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "replace", "str", "search", "newval", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "rescape", "isFunction", "isString", "isRegExp", "format", "base", "replace", "str", "search", "newval", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "replace", "format", "RE", "removePunctuation", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "uppercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "lowercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_validate", "__commonJSMin", "exports", "module", "isPlainObject", "hasOwnProp", "isStringArray", "isEmptyArray", "format", "validate", "opts", "options", "require_stopwords", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "removePunctuation", "tokenize", "replace", "uppercase", "lowercase", "isString", "contains", "format", "validate", "STOPWORDS", "RE_HYPHEN", "acronym", "str", "options", "isStopWord", "words", "opts", "err", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "capitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_builtin", "__commonJSMin", "exports", "module", "trim", "require_check", "__commonJSMin", "exports", "module", "trim", "str1", "str2", "test", "require_polyfill", "__commonJSMin", "exports", "module", "replace", "RE", "trim", "str", "require_main", "__commonJSMin", "exports", "module", "builtin", "trim", "str", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "check", "polyfill", "main", "trim", "require_main", "__commonJSMin", "exports", "module", "capitalize", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_TO_CAMEL", "RE_CAMEL", "replacer", "match", "p1", "offset", "camelcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "Ox10000", "Ox400", "OxD800", "OxDBFF", "OxDC00", "OxDFFF", "codePointAt", "str", "idx", "backward", "code", "low", "hi", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "uppercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "constantcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "min", "levenshteinDistance", "s1", "s2", "temp", "row", "pre", "m", "n", "i", "j", "k", "require_lib", "__commonJSMin", "exports", "module", "main", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "ns", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "dotcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "endsWith", "str", "search", "len", "idx", "N", "i", "require_builtin", "__commonJSMin", "exports", "module", "endsWith", "require_main", "__commonJSMin", "exports", "module", "builtin", "endsWith", "str", "search", "len", "idx", "N", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "endsWith", "require_main", "__commonJSMin", "exports", "module", "first", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_SURROGATE_PAIR", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "first", "str", "n", "len", "out", "ch1", "ch2", "cnt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isBoolean", "isString", "isInteger", "format", "base", "codePointAt", "str", "idx", "backward", "FLG", "require_lib", "__commonJSMin", "exports", "module", "main", "require_constants", "__commonJSMin", "exports", "module", "consts", "require_break_type", "__commonJSMin", "exports", "module", "constants", "count", "arr", "start", "end", "value", "cnt", "i", "every", "indexOf", "lastIndexOf", "breakType", "breaks", "emoji", "nextEmoji", "next", "prev", "idx", "N", "M", "require_emoji_property", "__commonJSMin", "exports", "module", "constants", "emojiProperty", "code", "require_break_property", "__commonJSMin", "exports", "module", "constants", "graphemeBreakProperty", "code", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "constants", "breakType", "emojiProperty", "breakProperty", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isInteger", "codePointAt", "hasUTF16SurrogatePairAt", "grapheme", "format", "breakType", "breakProperty", "emojiProperty", "nextGraphemeClusterBreak", "str", "fromIndex", "breaks", "emoji", "len", "idx", "cp", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "first", "str", "n", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "forEach", "str", "clbk", "thisArg", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "forEach", "str", "clbk", "thisArg", "len", "ch1", "ch2", "idx", "ch", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "forEach", "str", "clbk", "thisArg", "len", "idx", "brk", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "reWhitespace", "startcase", "str", "cap", "out", "ch", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "startcase", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "headercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "uppercase", "lowercase", "invcase", "str", "out", "ch", "s", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "kebabCase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "repeat", "str", "n", "rpt", "cnt", "require_builtin", "__commonJSMin", "exports", "module", "repeat", "require_main", "__commonJSMin", "exports", "module", "builtin", "repeat", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "repeat", "require_main", "__commonJSMin", "exports", "module", "repeat", "ceil", "lpad", "str", "len", "pad", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "replace", "RE", "ltrim", "str", "require_builtin", "__commonJSMin", "exports", "module", "ltrim", "require_main", "__commonJSMin", "exports", "module", "builtin", "ltrim", "str", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "ltrim", "require_main", "__commonJSMin", "exports", "module", "capitalize", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_TO_PASCAL", "RE_CAMEL", "replacer", "match", "p1", "pascalcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "Ox3F", "Ox80", "OxC0", "OxE0", "OxF0", "Ox3FF", "Ox800", "OxD800", "OxE000", "Ox10000", "utf16ToUTF8Array", "str", "code", "out", "len", "i", "require_lib", "__commonJSMin", "exports", "module", "utf16ToUTF8Array", "require_main", "__commonJSMin", "exports", "module", "utf16ToUTF8Array", "UNDERSCORE", "PERIOD", "HYPHEN", "TILDE", "ZERO", "NINE", "A", "Z", "a", "z", "percentEncode", "str", "byte", "out", "len", "buf", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "removeFirst", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "removeFirst", "str", "n", "len", "ch1", "ch2", "cnt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "removeFirst", "str", "n", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "replaceBefore", "str", "search", "replacement", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "repeat", "ceil", "rpad", "str", "len", "pad", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "replace", "RE", "rtrim", "str", "require_builtin", "__commonJSMin", "exports", "module", "rtrim", "require_main", "__commonJSMin", "exports", "module", "builtin", "rtrim", "str", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "rtrim", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "snakecase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "startsWith", "str", "search", "position", "pos", "i", "require_builtin", "__commonJSMin", "exports", "module", "startsWith", "require_main", "__commonJSMin", "exports", "module", "builtin", "startsWith", "str", "search", "position", "pos", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "startsWith", "require_main", "__commonJSMin", "exports", "module", "uncapitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "ns", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "camelcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "capitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "constantcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "dotcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isInteger", "isString", "format", "base", "endsWith", "str", "search", "len", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "isPlainObject", "hasOwnProp", "contains", "firstCodeUnit", "firstCodePoint", "firstGraphemeCluster", "format", "MODES", "FCNS", "isMode", "first", "str", "options", "nargs", "opts", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isFunction", "isString", "isPlainObject", "hasOwnProp", "contains", "forEachCodeUnit", "forEachCodePoint", "forEachGraphemeCluster", "format", "MODES", "FCNS", "isMode", "forEach", "str", "options", "clbk", "thisArg", "nargs", "opts", "cb", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isCollection", "format", "UNICODE_MAX", "UNICODE_MAX_BMP", "fromCharCode", "Ox10000", "OxD800", "OxDC00", "Ox3FF", "fromCodePoint", "args", "len", "str", "arr", "low", "hi", "pt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "headercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "kebabCase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "format", "FLOAT64_MAX_SAFE_INTEGER", "base", "lpad", "str", "len", "pad", "p", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "ltrim", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "nextGraphemeClusterBreak", "format", "splitGraphemeClusters", "str", "idx", "brk", "out", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "splitGraphemeClusters", "isNonNegativeInteger", "isStringArray", "replace", "rescape", "format", "WHITESPACE_CHARS", "ltrimN", "str", "n", "chars", "nElems", "reStr", "isStr", "RE", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "lowercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "nextGraphemeClusterBreak", "format", "numGraphemeClusters", "str", "count", "idx", "brk", "require_lib", "__commonJSMin", "exports", "module", "main", "require_units", "__commonJSMin", "exports", "module", "require_int2words_de", "__commonJSMin", "exports", "module", "floor", "endsWith", "UNITS", "ONES", "TENS", "pluralize", "word", "int2wordsDE", "num", "out", "rem", "i", "require_int2words_en", "__commonJSMin", "exports", "module", "floor", "UNITS", "ONES", "TENS", "int2wordsEN", "num", "out", "word", "rem", "i", "require_validate", "__commonJSMin", "exports", "module", "isPlainObject", "hasOwnProp", "indexOf", "format", "LANGUAGE_CODES", "validate", "opts", "options", "require_decimals", "__commonJSMin", "exports", "module", "decimals", "x", "fcn", "out", "len", "i", "require_main", "__commonJSMin", "exports", "module", "isNumber", "isInteger", "isfinite", "format", "int2wordsDE", "int2wordsEN", "validate", "decimals", "num2words", "num", "options", "parts", "opts", "err", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "format", "base", "repeat", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "format", "FLOAT64_MAX_SAFE_INTEGER", "base", "rpad", "str", "len", "pad", "p", "require_lib", "__commonJSMin", "exports", "module", "main", "require_validate", "__commonJSMin", "exports", "module", "isPlainObject", "hasOwnProp", "isString", "isBoolean", "format", "validate", "opts", "options", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "repeat", "format", "floor", "ceil", "lpad", "rpad", "abs", "FLOAT64_MAX_SAFE_INTEGER", "validate", "pad", "str", "len", "options", "nright", "nleft", "isodd", "right", "left", "opts", "err", "tmp", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "pascalcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "percentEncode", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isInteger", "codePointAt", "hasUTF16SurrogatePairAt", "grapheme", "format", "breakType", "breakProperty", "emojiProperty", "prevGraphemeClusterBreak", "str", "fromIndex", "breaks", "emoji", "ans", "len", "idx", "cp", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isPlainObject", "hasOwnProp", "contains", "isNonNegativeInteger", "removeFirstCodeUnit", "removeFirstCodePoint", "removeFirstGraphemeCluster", "format", "MODES", "FCNS", "isMode", "removeFirst", "str", "options", "nargs", "opts", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "prevGraphemeClusterBreak", "format", "removeLast", "str", "n", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "BOM", "removeUTF8BOM", "str", "require_lib", "__commonJSMin", "exports", "module", "removeUTF8BOM", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "uppercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isStringArray", "uppercase", "isBoolean", "isString", "tokenize", "format", "removeWords", "str", "words", "ignoreCase", "tokens", "token", "list", "flg", "out", "N", "i", "j", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "replaceBefore", "str", "search", "replacement", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "prevGraphemeClusterBreak", "isString", "format", "reverse", "str", "out", "brk", "idx", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "rtrim", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "splitGraphemeClusters", "isNonNegativeInteger", "isStringArray", "replace", "rescape", "format", "WHITESPACE_CHARS", "rtrimN", "str", "n", "chars", "nElems", "reStr", "isStr", "RE", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "snakecase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "startcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isInteger", "isString", "format", "base", "startsWith", "str", "search", "position", "pos", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isInteger", "format", "substringAfter", "str", "search", "fromIndex", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isInteger", "isString", "format", "substringAfterLast", "str", "search", "fromIndex", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "substringBefore", "str", "search", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "substringBeforeLast", "str", "search", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isString", "iteratorSymbol", "nextGraphemeClusterBreak", "format", "graphemeClusters2iterator", "src", "thisArg", "iter", "FLG", "fcn", "i", "next1", "next2", "end", "factory", "v", "j", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isString", "iteratorSymbol", "prevGraphemeClusterBreak", "format", "graphemeClusters2iteratorRight", "src", "thisArg", "iter", "FLG", "fcn", "i", "next1", "next2", "end", "factory", "v", "j", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "trim", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "numGraphemeClusters", "nextGraphemeClusterBreak", "format", "truncate", "str", "len", "ending", "endingLength", "fromIndex", "nVisual", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "numGraphemeClusters", "nextGraphemeClusterBreak", "format", "round", "floor", "truncateMiddle", "str", "len", "seq", "seqLength", "fromIndex", "strLength", "seqStart", "nVisual", "seqEnd", "idx2", "idx1", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "uncapitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "setReadOnly", "string"]
+ "sources": ["../base/format-interpolate/lib/is_number.js", "../base/format-interpolate/lib/zero_pad.js", "../base/format-interpolate/lib/format_integer.js", "../base/format-interpolate/lib/is_string.js", "../base/format-interpolate/lib/format_double.js", "../base/format-interpolate/lib/space_pad.js", "../base/format-interpolate/lib/main.js", "../base/format-interpolate/lib/index.js", "../base/format-tokenize/lib/main.js", "../base/format-tokenize/lib/index.js", "../format/lib/is_string.js", "../format/lib/main.js", "../format/lib/index.js", "../base/replace/lib/main.js", "../base/replace/lib/index.js", "../replace/lib/main.js", "../replace/lib/index.js", "../remove-punctuation/lib/main.js", "../remove-punctuation/lib/index.js", "../base/uppercase/lib/main.js", "../base/uppercase/lib/index.js", "../base/lowercase/lib/main.js", "../base/lowercase/lib/index.js", "../acronym/lib/validate.js", "../acronym/lib/stopwords.json", "../acronym/lib/main.js", "../acronym/lib/index.js", "../base/capitalize/lib/main.js", "../base/capitalize/lib/index.js", "../base/trim/lib/has_builtin.js", "../base/trim/lib/builtin.js", "../base/trim/lib/check.js", "../base/trim/lib/polyfill.js", "../base/trim/lib/main.js", "../base/trim/lib/index.js", "../base/camelcase/lib/main.js", "../base/camelcase/lib/index.js", "../base/code-point-at/lib/main.js", "../base/code-point-at/lib/index.js", "../base/constantcase/lib/main.js", "../base/constantcase/lib/index.js", "../base/distances/levenshtein/lib/main.js", "../base/distances/levenshtein/lib/index.js", "../base/distances/lib/index.js", "../base/dotcase/lib/main.js", "../base/dotcase/lib/index.js", "../base/ends-with/lib/has_builtin.js", "../base/ends-with/lib/polyfill.js", "../base/ends-with/lib/builtin.js", "../base/ends-with/lib/main.js", "../base/ends-with/lib/index.js", "../base/first/lib/main.js", "../base/first/lib/index.js", "../base/first-code-point/lib/main.js", "../base/first-code-point/lib/index.js", "../code-point-at/lib/main.js", "../code-point-at/lib/index.js", "../tools/grapheme-cluster-break/lib/constants.js", "../tools/grapheme-cluster-break/lib/break_type.js", "../tools/grapheme-cluster-break/lib/emoji_property.js", "../tools/grapheme-cluster-break/lib/break_property.js", "../tools/grapheme-cluster-break/lib/index.js", "../next-grapheme-cluster-break/lib/main.js", "../next-grapheme-cluster-break/lib/index.js", "../base/first-grapheme-cluster/lib/main.js", "../base/first-grapheme-cluster/lib/index.js", "../base/for-each/lib/main.js", "../base/for-each/lib/index.js", "../base/for-each-code-point/lib/main.js", "../base/for-each-code-point/lib/index.js", "../base/for-each-grapheme-cluster/lib/main.js", "../base/for-each-grapheme-cluster/lib/index.js", "../base/startcase/lib/main.js", "../base/startcase/lib/index.js", "../base/headercase/lib/main.js", "../base/headercase/lib/index.js", "../base/invcase/lib/main.js", "../base/invcase/lib/index.js", "../base/kebabcase/lib/main.js", "../base/kebabcase/lib/index.js", "../base/repeat/lib/has_builtin.js", "../base/repeat/lib/polyfill.js", "../base/repeat/lib/builtin.js", "../base/repeat/lib/main.js", "../base/repeat/lib/index.js", "../base/left-pad/lib/main.js", "../base/left-pad/lib/index.js", "../base/left-trim/lib/has_builtin.js", "../base/left-trim/lib/polyfill.js", "../base/left-trim/lib/builtin.js", "../base/left-trim/lib/main.js", "../base/left-trim/lib/index.js", "../base/pascalcase/lib/main.js", "../base/pascalcase/lib/index.js", "../utf16-to-utf8-array/lib/main.js", "../utf16-to-utf8-array/lib/index.js", "../base/percent-encode/lib/main.js", "../base/percent-encode/lib/index.js", "../base/remove-first/lib/main.js", "../base/remove-first/lib/index.js", "../base/remove-first-code-point/lib/main.js", "../base/remove-first-code-point/lib/index.js", "../base/remove-first-grapheme-cluster/lib/main.js", "../base/remove-first-grapheme-cluster/lib/index.js", "../base/replace-before/lib/main.js", "../base/replace-before/lib/index.js", "../base/right-pad/lib/main.js", "../base/right-pad/lib/index.js", "../base/right-trim/lib/has_builtin.js", "../base/right-trim/lib/polyfill.js", "../base/right-trim/lib/builtin.js", "../base/right-trim/lib/main.js", "../base/right-trim/lib/index.js", "../base/snakecase/lib/main.js", "../base/snakecase/lib/index.js", "../base/starts-with/lib/has_builtin.js", "../base/starts-with/lib/polyfill.js", "../base/starts-with/lib/builtin.js", "../base/starts-with/lib/main.js", "../base/starts-with/lib/index.js", "../base/uncapitalize/lib/main.js", "../base/uncapitalize/lib/index.js", "../base/lib/index.js", "../camelcase/lib/main.js", "../camelcase/lib/index.js", "../capitalize/lib/main.js", "../capitalize/lib/index.js", "../constantcase/lib/main.js", "../constantcase/lib/index.js", "../dotcase/lib/main.js", "../dotcase/lib/index.js", "../ends-with/lib/main.js", "../ends-with/lib/index.js", "../first/lib/main.js", "../first/lib/index.js", "../for-each/lib/main.js", "../for-each/lib/index.js", "../from-code-point/lib/main.js", "../from-code-point/lib/index.js", "../headercase/lib/main.js", "../headercase/lib/index.js", "../kebabcase/lib/main.js", "../kebabcase/lib/index.js", "../left-pad/lib/main.js", "../left-pad/lib/index.js", "../left-trim/lib/main.js", "../left-trim/lib/index.js", "../split-grapheme-clusters/lib/main.js", "../split-grapheme-clusters/lib/index.js", "../left-trim-n/lib/main.js", "../left-trim-n/lib/index.js", "../lowercase/lib/main.js", "../lowercase/lib/index.js", "../num-grapheme-clusters/lib/main.js", "../num-grapheme-clusters/lib/index.js", "../num2words/lib/units.json", "../num2words/lib/int2words_de.js", "../num2words/lib/int2words_en.js", "../num2words/lib/validate.js", "../num2words/lib/decimals.js", "../num2words/lib/main.js", "../num2words/lib/index.js", "../repeat/lib/main.js", "../repeat/lib/index.js", "../right-pad/lib/main.js", "../right-pad/lib/index.js", "../pad/lib/validate.js", "../pad/lib/main.js", "../pad/lib/index.js", "../pascalcase/lib/main.js", "../pascalcase/lib/index.js", "../percent-encode/lib/main.js", "../percent-encode/lib/index.js", "../prev-grapheme-cluster-break/lib/main.js", "../prev-grapheme-cluster-break/lib/index.js", "../remove-first/lib/main.js", "../remove-first/lib/index.js", "../base/remove-last/lib/main.js", "../base/remove-last/lib/index.js", "../base/remove-last-code-point/lib/main.js", "../base/remove-last-code-point/lib/index.js", "../base/remove-last-grapheme-cluster/lib/main.js", "../base/remove-last-grapheme-cluster/lib/index.js", "../remove-last/lib/main.js", "../remove-last/lib/index.js", "../remove-utf8-bom/lib/main.js", "../remove-utf8-bom/lib/index.js", "../uppercase/lib/main.js", "../uppercase/lib/index.js", "../remove-words/lib/main.js", "../remove-words/lib/index.js", "../replace-before/lib/main.js", "../replace-before/lib/index.js", "../reverse/lib/main.js", "../reverse/lib/index.js", "../right-trim/lib/main.js", "../right-trim/lib/index.js", "../right-trim-n/lib/main.js", "../right-trim-n/lib/index.js", "../snakecase/lib/main.js", "../snakecase/lib/index.js", "../startcase/lib/main.js", "../startcase/lib/index.js", "../starts-with/lib/main.js", "../starts-with/lib/index.js", "../substring-after/lib/main.js", "../substring-after/lib/index.js", "../substring-after-last/lib/main.js", "../substring-after-last/lib/index.js", "../substring-before/lib/main.js", "../substring-before/lib/index.js", "../substring-before-last/lib/main.js", "../substring-before-last/lib/index.js", "../to-grapheme-cluster-iterator/lib/main.js", "../to-grapheme-cluster-iterator/lib/index.js", "../to-grapheme-cluster-iterator-right/lib/main.js", "../to-grapheme-cluster-iterator-right/lib/index.js", "../trim/lib/main.js", "../trim/lib/index.js", "../truncate/lib/main.js", "../truncate/lib/index.js", "../truncate-middle/lib/main.js", "../truncate-middle/lib/index.js", "../uncapitalize/lib/main.js", "../uncapitalize/lib/index.js", "../lib/index.js"],
+ "sourcesContent": ["/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tests if a value is a number primitive.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a number primitive\n*\n* @example\n* var bool = isNumber( 3.14 );\n* // returns true\n*\n* @example\n* var bool = isNumber( NaN );\n* // returns true\n*\n* @example\n* var bool = isNumber( new Number( 3.14 ) );\n* // returns false\n*/\nfunction isNumber( value ) {\n\treturn ( typeof value === 'number' ); // NOTE: we inline the `isNumber.isPrimitive` function from `@stdlib/assert/is-number` in order to avoid circular dependencies.\n}\n\n\n// EXPORTS //\n\nmodule.exports = isNumber;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Tests if a string starts with a minus sign (`-`).\n*\n* @private\n* @param {string} str - input string\n* @returns {boolean} boolean indicating if a string starts with a minus sign (`-`)\n*/\nfunction startsWithMinus( str ) {\n\treturn str[ 0 ] === '-';\n}\n\n/**\n* Returns a string of `n` zeros.\n*\n* @private\n* @param {number} n - number of zeros\n* @returns {string} string of zeros\n*/\nfunction zeros( n ) {\n\tvar out = '';\n\tvar i;\n\tfor ( i = 0; i < n; i++ ) {\n\t\tout += '0';\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Pads a token with zeros to the specified width.\n*\n* @private\n* @param {string} str - token argument\n* @param {number} width - token width\n* @param {boolean} [right=false] - boolean indicating whether to pad to the right\n* @returns {string} padded token argument\n*/\nfunction zeroPad( str, width, right ) {\n\tvar negative = false;\n\tvar pad = width - str.length;\n\tif ( pad < 0 ) {\n\t\treturn str;\n\t}\n\tif ( startsWithMinus( str ) ) {\n\t\tnegative = true;\n\t\tstr = str.substr( 1 );\n\t}\n\tstr = ( right ) ?\n\t\tstr + zeros( pad ) :\n\t\tzeros( pad ) + str;\n\tif ( negative ) {\n\t\tstr = '-' + str;\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = zeroPad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( './is_number.js' );\nvar zeroPad = require( './zero_pad.js' );\n\n// NOTE: for the following, we explicitly avoid using stdlib packages in this particular package in order to avoid circular dependencies.\nvar lowercase = String.prototype.toLowerCase;\nvar uppercase = String.prototype.toUpperCase;\n\n\n// MAIN //\n\n/**\n* Formats a token object argument as an integer.\n*\n* @private\n* @param {Object} token - token object\n* @throws {Error} must provide a valid integer\n* @returns {string} formatted token argument\n*/\nfunction formatInteger( token ) {\n\tvar base;\n\tvar out;\n\tvar i;\n\n\tswitch ( token.specifier ) {\n\tcase 'b':\n\t\t// Case: %b (binary)\n\t\tbase = 2;\n\t\tbreak;\n\tcase 'o':\n\t\t// Case: %o (octal)\n\t\tbase = 8;\n\t\tbreak;\n\tcase 'x':\n\tcase 'X':\n\t\t// Case: %x, %X (hexadecimal)\n\t\tbase = 16;\n\t\tbreak;\n\tcase 'd':\n\tcase 'i':\n\tcase 'u':\n\tdefault:\n\t\t// Case: %d, %i, %u (decimal)\n\t\tbase = 10;\n\t\tbreak;\n\t}\n\tout = token.arg;\n\ti = parseInt( out, 10 );\n\tif ( !isFinite( i ) ) { // NOTE: We use the global `isFinite` function here instead of `@stdlib/math/base/assert/is-finite` in order to avoid circular dependencies.\n\t\tif ( !isNumber( out ) ) {\n\t\t\tthrow new Error( 'invalid integer. Value: ' + out );\n\t\t}\n\t\ti = 0;\n\t}\n\tif ( i < 0 && ( token.specifier === 'u' || base !== 10 ) ) {\n\t\ti = 0xffffffff + i + 1;\n\t}\n\tif ( i < 0 ) {\n\t\tout = ( -i ).toString( base );\n\t\tif ( token.precision ) {\n\t\t\tout = zeroPad( out, token.precision, token.padRight );\n\t\t}\n\t\tout = '-' + out;\n\t} else {\n\t\tout = i.toString( base );\n\t\tif ( !i && !token.precision ) {\n\t\t\tout = '';\n\t\t} else if ( token.precision ) {\n\t\t\tout = zeroPad( out, token.precision, token.padRight );\n\t\t}\n\t\tif ( token.sign ) {\n\t\t\tout = token.sign + out;\n\t\t}\n\t}\n\tif ( base === 16 ) {\n\t\tif ( token.alternate ) {\n\t\t\tout = '0x' + out;\n\t\t}\n\t\tout = ( token.specifier === uppercase.call( token.specifier ) ) ?\n\t\t\tuppercase.call( out ) :\n\t\t\tlowercase.call( out );\n\t}\n\tif ( base === 8 ) {\n\t\tif ( token.alternate && out.charAt( 0 ) !== '0' ) {\n\t\t\tout = '0' + out;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatInteger;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tests if a value is a string primitive.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a string primitive\n*\n* @example\n* var bool = isString( 'beep' );\n* // returns true\n*\n* @example\n* var bool = isString( new String( 'beep' ) );\n* // returns false\n*/\nfunction isString( value ) {\n\treturn ( typeof value === 'string' ); // NOTE: we inline the `isString.isPrimitive` function from `@stdlib/assert/is-string` in order to avoid circular dependencies.\n}\n\n\n// EXPORTS //\n\nmodule.exports = isString;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( './is_number.js' );\n\n// NOTE: for the following, we explicitly avoid using stdlib packages in this particular package in order to avoid circular dependencies.\nvar abs = Math.abs; // eslint-disable-line stdlib/no-builtin-math\nvar lowercase = String.prototype.toLowerCase;\nvar uppercase = String.prototype.toUpperCase;\nvar replace = String.prototype.replace;\n\n\n// VARIABLES //\n\nvar RE_EXP_POS_DIGITS = /e\\+(\\d)$/;\nvar RE_EXP_NEG_DIGITS = /e-(\\d)$/;\nvar RE_ONLY_DIGITS = /^(\\d+)$/;\nvar RE_DIGITS_BEFORE_EXP = /^(\\d+)e/;\nvar RE_TRAILING_PERIOD_ZERO = /\\.0$/;\nvar RE_PERIOD_ZERO_EXP = /\\.0*e/;\nvar RE_ZERO_BEFORE_EXP = /(\\..*[^0])0*e/;\n\n\n// MAIN //\n\n/**\n* Formats a token object argument as a floating-point number.\n*\n* @private\n* @param {Object} token - token object\n* @throws {Error} must provide a valid floating-point number\n* @returns {string} formatted token argument\n*/\nfunction formatDouble( token ) {\n\tvar digits;\n\tvar out;\n\tvar f = parseFloat( token.arg );\n\tif ( !isFinite( f ) ) { // NOTE: We use the global `isFinite` function here instead of `@stdlib/math/base/assert/is-finite` in order to avoid circular dependencies.\n\t\tif ( !isNumber( token.arg ) ) {\n\t\t\tthrow new Error( 'invalid floating-point number. Value: ' + out );\n\t\t}\n\t\t// Case: NaN, Infinity, or -Infinity\n\t\tf = token.arg;\n\t}\n\tswitch ( token.specifier ) {\n\tcase 'e':\n\tcase 'E':\n\t\tout = f.toExponential( token.precision );\n\t\tbreak;\n\tcase 'f':\n\tcase 'F':\n\t\tout = f.toFixed( token.precision );\n\t\tbreak;\n\tcase 'g':\n\tcase 'G':\n\t\tif ( abs( f ) < 0.0001 ) {\n\t\t\tdigits = token.precision;\n\t\t\tif ( digits > 0 ) {\n\t\t\t\tdigits -= 1;\n\t\t\t}\n\t\t\tout = f.toExponential( digits );\n\t\t} else {\n\t\t\tout = f.toPrecision( token.precision );\n\t\t}\n\t\tif ( !token.alternate ) {\n\t\t\tout = replace.call( out, RE_ZERO_BEFORE_EXP, '$1e' );\n\t\t\tout = replace.call( out, RE_PERIOD_ZERO_EXP, 'e');\n\t\t\tout = replace.call( out, RE_TRAILING_PERIOD_ZERO, '' );\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tthrow new Error( 'invalid double notation. Value: ' + token.specifier );\n\t}\n\tout = replace.call( out, RE_EXP_POS_DIGITS, 'e+0$1' );\n\tout = replace.call( out, RE_EXP_NEG_DIGITS, 'e-0$1' );\n\tif ( token.alternate ) {\n\t\tout = replace.call( out, RE_ONLY_DIGITS, '$1.' );\n\t\tout = replace.call( out, RE_DIGITS_BEFORE_EXP, '$1.e' );\n\t}\n\tif ( f >= 0 && token.sign ) {\n\t\tout = token.sign + out;\n\t}\n\tout = ( token.specifier === uppercase.call( token.specifier ) ) ?\n\t\tuppercase.call( out ) :\n\t\tlowercase.call( out );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatDouble;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// FUNCTIONS //\n\n/**\n* Returns `n` spaces.\n*\n* @private\n* @param {number} n - number of spaces\n* @returns {string} string of spaces\n*/\nfunction spaces( n ) {\n\tvar out = '';\n\tvar i;\n\tfor ( i = 0; i < n; i++ ) {\n\t\tout += ' ';\n\t}\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Pads a token with spaces to the specified width.\n*\n* @private\n* @param {string} str - token argument\n* @param {number} width - token width\n* @param {boolean} [right=false] - boolean indicating whether to pad to the right\n* @returns {string} padded token argument\n*/\nfunction spacePad( str, width, right ) {\n\tvar pad = width - str.length;\n\tif ( pad < 0 ) {\n\t\treturn str;\n\t}\n\tstr = ( right ) ?\n\t\tstr + spaces( pad ) :\n\t\tspaces( pad ) + str;\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = spacePad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar formatInteger = require( './format_integer.js' );\nvar isString = require( './is_string.js' );\nvar formatDouble = require( './format_double.js' );\nvar spacePad = require( './space_pad.js' );\nvar zeroPad = require( './zero_pad.js' );\n\n\n// VARIABLES //\n\nvar fromCharCode = String.fromCharCode;\nvar isnan = isNaN; // NOTE: We use the global `isNaN` function here instead of `@stdlib/math/base/assert/is-nan` to avoid circular dependencies.\nvar isArray = Array.isArray; // NOTE: We use the global `Array.isArray` function here instead of `@stdlib/assert/is-array` to avoid circular dependencies.\n\n\n// FUNCTIONS //\n\n/**\n* Initializes token object with properties of supplied format identifier object or default values if not present.\n*\n* @private\n* @param {Object} token - format identifier object\n* @returns {Object} token object\n*/\nfunction initialize( token ) {\n\tvar out = {};\n\tout.specifier = token.specifier;\n\tout.precision = ( token.precision === void 0 ) ? 1 : token.precision;\n\tout.width = token.width;\n\tout.flags = token.flags || '';\n\tout.mapping = token.mapping;\n\treturn out;\n}\n\n\n// MAIN //\n\n/**\n* Generates string from a token array by interpolating values.\n*\n* @param {Array} tokens - string parts and format identifier objects\n* @param {Array} ...args - variable values\n* @throws {TypeError} first argument must be an array\n* @throws {Error} invalid flags\n* @returns {string} formatted string\n*\n* @example\n* var tokens = [ 'beep ', { 'specifier': 's' } ];\n* var out = formatInterpolate( tokens, 'boop' );\n* // returns 'beep boop'\n*/\nfunction formatInterpolate( tokens ) {\n\tvar hasPeriod;\n\tvar flags;\n\tvar token;\n\tvar flag;\n\tvar num;\n\tvar out;\n\tvar pos;\n\tvar i;\n\tvar j;\n\n\tif ( !isArray( tokens ) ) {\n\t\tthrow new TypeError( 'invalid argument. First argument must be an array. Value: `' + tokens + '`.' );\n\t}\n\tout = '';\n\tpos = 1;\n\tfor ( i = 0; i < tokens.length; i++ ) {\n\t\ttoken = tokens[ i ];\n\t\tif ( isString( token ) ) {\n\t\t\tout += token;\n\t\t} else {\n\t\t\thasPeriod = token.precision !== void 0;\n\t\t\ttoken = initialize( token );\n\t\t\tif ( !token.specifier ) {\n\t\t\t\tthrow new TypeError( 'invalid argument. Token is missing `specifier` property. Index: `'+ i +'`. Value: `' + token + '`.' );\n\t\t\t}\n\t\t\tif ( token.mapping ) {\n\t\t\t\tpos = token.mapping;\n\t\t\t}\n\t\t\tflags = token.flags;\n\t\t\tfor ( j = 0; j < flags.length; j++ ) {\n\t\t\t\tflag = flags.charAt( j );\n\t\t\t\tswitch ( flag ) {\n\t\t\t\tcase ' ':\n\t\t\t\t\ttoken.sign = ' ';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '+':\n\t\t\t\t\ttoken.sign = '+';\n\t\t\t\t\tbreak;\n\t\t\t\tcase '-':\n\t\t\t\t\ttoken.padRight = true;\n\t\t\t\t\ttoken.padZeros = false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase '0':\n\t\t\t\t\ttoken.padZeros = flags.indexOf( '-' ) < 0; // NOTE: We use built-in `Array.prototype.indexOf` here instead of `@stdlib/assert/contains` in order to avoid circular dependencies.\n\t\t\t\t\tbreak;\n\t\t\t\tcase '#':\n\t\t\t\t\ttoken.alternate = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error( 'invalid flag: ' + flag );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( token.width === '*' ) {\n\t\t\t\ttoken.width = parseInt( arguments[ pos ], 10 );\n\t\t\t\tpos += 1;\n\t\t\t\tif ( isnan( token.width ) ) {\n\t\t\t\t\tthrow new TypeError( 'the argument for * width at position ' + pos + ' is not a number. Value: `' + token.width + '`.' );\n\t\t\t\t}\n\t\t\t\tif ( token.width < 0 ) {\n\t\t\t\t\ttoken.padRight = true;\n\t\t\t\t\ttoken.width = -token.width;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( hasPeriod ) {\n\t\t\t\tif ( token.precision === '*' ) {\n\t\t\t\t\ttoken.precision = parseInt( arguments[ pos ], 10 );\n\t\t\t\t\tpos += 1;\n\t\t\t\t\tif ( isnan( token.precision ) ) {\n\t\t\t\t\t\tthrow new TypeError( 'the argument for * precision at position ' + pos + ' is not a number. Value: `' + token.precision + '`.' );\n\t\t\t\t\t}\n\t\t\t\t\tif ( token.precision < 0 ) {\n\t\t\t\t\t\ttoken.precision = 1;\n\t\t\t\t\t\thasPeriod = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\ttoken.arg = arguments[ pos ];\n\t\t\tswitch ( token.specifier ) {\n\t\t\tcase 'b':\n\t\t\tcase 'o':\n\t\t\tcase 'x':\n\t\t\tcase 'X':\n\t\t\tcase 'd':\n\t\t\tcase 'i':\n\t\t\tcase 'u':\n\t\t\t\t// Case: %b (binary), %o (octal), %x, %X (hexadecimal), %d, %i (decimal), %u (unsigned decimal)\n\t\t\t\tif ( hasPeriod ) {\n\t\t\t\t\ttoken.padZeros = false;\n\t\t\t\t}\n\t\t\t\ttoken.arg = formatInteger( token );\n\t\t\t\tbreak;\n\t\t\tcase 's':\n\t\t\t\t// Case: %s (string)\n\t\t\t\ttoken.maxWidth = ( hasPeriod ) ? token.precision : -1;\n\t\t\t\tbreak;\n\t\t\tcase 'c':\n\t\t\t\t// Case: %c (character)\n\t\t\t\tif ( !isnan( token.arg ) ) {\n\t\t\t\t\tnum = parseInt( token.arg, 10 );\n\t\t\t\t\tif ( num < 0 || num > 127 ) {\n\t\t\t\t\t\tthrow new Error( 'invalid character code. Value: ' + token.arg );\n\t\t\t\t\t}\n\t\t\t\t\ttoken.arg = ( isnan( num ) ) ?\n\t\t\t\t\t\tString( token.arg ) :\n\t\t\t\t\t\tfromCharCode( num );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'e':\n\t\t\tcase 'E':\n\t\t\tcase 'f':\n\t\t\tcase 'F':\n\t\t\tcase 'g':\n\t\t\tcase 'G':\n\t\t\t\t// Case: %e, %E (scientific notation), %f, %F (decimal floating point), %g, %G (uses the shorter of %e/E or %f/F)\n\t\t\t\tif ( !hasPeriod ) {\n\t\t\t\t\ttoken.precision = 6;\n\t\t\t\t}\n\t\t\t\ttoken.arg = formatDouble( token );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new Error( 'invalid specifier: ' + token.specifier );\n\t\t\t}\n\t\t\t// Fit argument into field width...\n\t\t\tif ( token.maxWidth >= 0 && token.arg.length > token.maxWidth ) {\n\t\t\t\ttoken.arg = token.arg.substring( 0, token.maxWidth );\n\t\t\t}\n\t\t\tif ( token.padZeros ) {\n\t\t\t\ttoken.arg = zeroPad( token.arg, token.width || token.precision, token.padRight ); // eslint-disable-line max-len\n\t\t\t} else if ( token.width ) {\n\t\t\t\ttoken.arg = spacePad( token.arg, token.width, token.padRight );\n\t\t\t}\n\t\t\tout += token.arg || '';\n\t\t\tpos += 1;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatInterpolate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate string from a token array by interpolating values.\n*\n* @module @stdlib/string/base/format-interpolate\n*\n* @example\n* var formatInterpolate = require( '@stdlib/string/base/format-interpolate' );\n*\n* var tokens = ['Hello ', { 'specifier': 's' }, '!' ];\n* var out = formatInterpolate( tokens, 'World' );\n* // returns 'Hello World!'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE = /%(?:([1-9]\\d*)\\$)?([0 +\\-#]*)(\\*|\\d+)?(?:(\\.)(\\*|\\d+)?)?[hlL]?([%A-Za-z])/g;\n\n\n// FUNCTIONS //\n\n/**\n* Parses a delimiter.\n*\n* @private\n* @param {Array} match - regular expression match\n* @returns {Object} delimiter token object\n*/\nfunction parse( match ) {\n\tvar token = {\n\t\t'mapping': ( match[ 1 ] ) ? parseInt( match[ 1 ], 10 ) : void 0,\n\t\t'flags': match[ 2 ],\n\t\t'width': match[ 3 ],\n\t\t'precision': match[ 5 ],\n\t\t'specifier': match[ 6 ]\n\t};\n\tif ( match[ 4 ] === '.' && match[ 5 ] === void 0 ) {\n\t\ttoken.precision = '1';\n\t}\n\treturn token;\n}\n\n\n// MAIN //\n\n/**\n* Tokenizes a string into an array of string parts and format identifier objects.\n*\n* @param {string} str - input string\n* @returns {Array} tokens\n*\n* @example\n* var tokens = formatTokenize( 'Hello %s!' );\n* // returns [ 'Hello ', {...}, '!' ]\n*/\nfunction formatTokenize( str ) {\n\tvar content;\n\tvar tokens;\n\tvar match;\n\tvar prev;\n\n\ttokens = [];\n\tprev = 0;\n\tmatch = RE.exec( str );\n\twhile ( match ) {\n\t\tcontent = str.slice( prev, RE.lastIndex - match[ 0 ].length );\n\t\tif ( content.length ) {\n\t\t\ttokens.push( content );\n\t\t}\n\t\ttokens.push( parse( match ) );\n\t\tprev = RE.lastIndex;\n\t\tmatch = RE.exec( str );\n\t}\n\tcontent = str.slice( prev );\n\tif ( content.length ) {\n\t\ttokens.push( content );\n\t}\n\treturn tokens;\n}\n\n\n// EXPORTS //\n\nmodule.exports = formatTokenize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tokenize a string into an array of string parts and format identifier objects.\n*\n* @module @stdlib/string/base/format-tokenize\n*\n* @example\n* var formatTokenize = require( '@stdlib/string/base/format-tokenize' );\n*\n* var str = 'Hello %s!';\n* var tokens = formatTokenize( str );\n* // returns [ 'Hello ', {...}, '!' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Tests if a value is a string primitive.\n*\n* @param {*} value - value to test\n* @returns {boolean} boolean indicating if a value is a string primitive\n*\n* @example\n* var bool = isString( 'beep' );\n* // returns true\n*\n* @example\n* var bool = isString( new String( 'beep' ) );\n* // returns false\n*/\nfunction isString( value ) {\n\treturn ( typeof value === 'string' ); // NOTE: we inline the `isString.isPrimitive` function from `@stdlib/assert/is-string` in order to avoid circular dependencies.\n}\n\n\n// EXPORTS //\n\nmodule.exports = isString;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar interpolate = require( './../../base/format-interpolate' );\nvar tokenize = require( './../../base/format-tokenize' );\nvar isString = require( './is_string.js' );\n\n\n// MAIN //\n\n/**\n* Inserts supplied variable values into a format string.\n*\n* @param {string} str - input string\n* @param {Array} ...args - variable values\n* @throws {TypeError} first argument must be a string\n* @throws {Error} invalid flags\n* @returns {string} formatted string\n*\n* @example\n* var str = format( 'Hello %s!', 'world' );\n* // returns 'Hello world!'\n*\n* @example\n* var str = format( 'Pi: ~%.2f', 3.141592653589793 );\n* // returns 'Pi: ~3.14'\n*/\nfunction format( str ) {\n\tvar tokens;\n\tvar args;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\ttokens = tokenize( str );\n\targs = new Array( arguments.length );\n\targs[ 0 ] = tokens;\n\tfor ( i = 1; i < args.length; i++ ) {\n\t\targs[ i ] = arguments[ i ];\n\t}\n\treturn interpolate.apply( null, args );\n}\n\n\n// EXPORTS //\n\nmodule.exports = format;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Insert supplied variable values into a format string.\n*\n* @module @stdlib/string/format\n*\n* @example\n* var format = require( '@stdlib/string/format' );\n*\n* var out = format( '%s %s!', 'Hello', 'World' );\n* // returns 'Hello World!'\n*\n* out = format( 'Pi: ~%.2f', 3.141592653589793 );\n* // returns 'Pi: ~3.14'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Replaces search occurrences with a replacement string.\n*\n* @param {string} str - input string\n* @param {RegExp} search - search expression\n* @param {(string|Function)} newval - replacement value or function\n* @returns {string} new string containing replacement(s)\n*\n* @example\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*\n* @example\n* var capitalize = require( '@stdlib/string/base/capitalize' );\n*\n* var str = 'Oranges and lemons say the bells of St. Clement\\'s';\n*\n* function replacer( match, p1 ) {\n* return capitalize( p1 );\n* }\n*\n* var out = replace( str, /([^\\s]*)/gi, replacer);\n* // returns 'Oranges And Lemons Say The Bells Of St. Clement\\'s'\n*/\nfunction replace( str, search, newval ) {\n\treturn str.replace( search, newval );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace search occurrences with a replacement string.\n*\n* @module @stdlib/string/base/replace\n*\n* @example\n* var replace = require( '@stdlib/string/base/replace' );\n*\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar rescape = require( '@stdlib/utils/escape-regexp-string' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isRegExp = require( '@stdlib/assert/is-regexp' );\nvar format = require( './../../format' );\nvar base = require( './../../base/replace' );\n\n\n// MAIN //\n\n/**\n* Replaces search occurrences with a replacement string.\n*\n* @param {string} str - input string\n* @param {(string|RegExp)} search - search expression\n* @param {(string|Function)} newval - replacement value or function\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument argument must be a string or regular expression\n* @throws {TypeError} third argument must be a string or function\n* @returns {string} new string containing replacement(s)\n*\n* @example\n* var str = 'beep';\n* var out = replace( str, 'e', 'o' );\n* // returns 'boop'\n*\n* @example\n* var str = 'Hello World';\n* var out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*\n* @example\n* var capitalize = require( '@stdlib/string/capitalize' );\n*\n* var str = 'Oranges and lemons say the bells of St. Clement\\'s';\n*\n* function replacer( match, p1 ) {\n* return capitalize( p1 );\n* }\n*\n* var out = replace( str, /([^\\s]*)/gi, replacer);\n* // returns 'Oranges And Lemons Say The Bells Of St. Clement\\'s'\n*/\nfunction replace( str, search, newval ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( isString( search ) ) {\n\t\tsearch = new RegExp( rescape( search ), 'g' );\n\t} else if ( !isRegExp( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string or regular expression. Value: `%s`.', search ) );\n\t}\n\tif ( !isString( newval ) && !isFunction( newval ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string or replacement function. Value: `%s`.', newval ) );\n\t}\n\treturn base( str, search, newval );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replace;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace search occurrences with a replacement string.\n*\n* @module @stdlib/string/replace\n*\n* @example\n* var replace = require( '@stdlib/string/replace' );\n*\n* var str = 'beep';\n* var out = replace( str, 'e', 'o' );\n* // returns 'boop'\n*\n* str = 'Hello World';\n* out = replace( str, /world/i, 'Mr. President' );\n* // returns 'Hello Mr. President'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar replace = require( './../../replace' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar RE = /[!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]]/g; // eslint-disable-line no-useless-escape\n\n\n// MAIN //\n\n/**\n* Removes punctuation characters from a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {string} output string\n*\n* @example\n* var str = 'Sun Tzu said: \"A leader leads by example not by force.\"';\n* var out = removePunctuation( str );\n* // returns 'Sun Tzu said A leader leads by example not by force'\n*\n* @example\n* var str = 'Double, double, toil and trouble; Fire burn, and cauldron bubble!';\n* var out = removePunctuation( str );\n* // returns 'Double double toil and trouble Fire burn and cauldron bubble'\n*\n* @example\n* var str = 'This module removes these characters: `{}[]:,!/<>().;~|?\\'\"';\n* var out = removePunctuation( str );\n* // returns 'This module removes these characters '\n*/\nfunction removePunctuation( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removePunctuation;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove punctuation characters from a string.\n*\n* @module @stdlib/string/remove-punctuation\n*\n* @example\n* var removePunctuation = require( '@stdlib/string/remove-punctuation' );\n*\n* var out = removePunctuation( 'Sun Tzu said: \"A leader leads by example not by force.\"' );\n* // returns 'Sun Tzu said A leader leads by example not by force'\n*\n* out = removePunctuation( 'Double, double, toil and trouble; Fire burn, and cauldron bubble!' ) );\n* // returns 'Double double toil and trouble Fire burn and cauldron bubble'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Converts a string to uppercase.\n*\n* @param {string} str - string to convert\n* @returns {string} uppercase string\n*\n* @example\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\nfunction uppercase( str ) {\n\treturn str.toUpperCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = uppercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to uppercase.\n*\n* @module @stdlib/string/base/uppercase\n*\n* @example\n* var uppercase = require( '@stdlib/string/base/uppercase' );\n*\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Converts a string to lowercase.\n*\n* @param {string} str - string to convert\n* @returns {string} lowercase string\n*\n* @example\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\nfunction lowercase( str ) {\n\treturn str.toLowerCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = lowercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to lowercase.\n*\n* @module @stdlib/string/base/lowercase\n*\n* @example\n* var lowercase = require( '@stdlib/string/base/lowercase' );\n*\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isStringArray = require( '@stdlib/assert/is-string-array' ).primitives;\nvar isEmptyArray = require( '@stdlib/assert/is-empty-array' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - options to validate\n* @param {StringArray} [options.stopwords] - array of custom stop words\n* @returns {(null|Error)} error object or null\n*\n* @example\n* var opts = {};\n* var options = {\n* 'stopwords': [ 'of' ]\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n* throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isPlainObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'stopwords' ) ) {\n\t\topts.stopwords = options.stopwords;\n\t\tif (\n\t\t\t!isStringArray( opts.stopwords ) &&\n\t\t\t!isEmptyArray( opts.stopwords )\n\t\t) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be an array of strings. Option: `%s`.', 'stopwords', opts.stopwords ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "[\n \"a\",\n \"all\",\n \"also\",\n \"although\",\n \"an\",\n \"and\",\n \"any\",\n \"are\",\n \"as\",\n \"at\",\n \"b\",\n \"be\",\n \"been\",\n \"but\",\n \"by\",\n \"c\",\n \"could\",\n \"d\",\n \"e\",\n \"each\",\n \"eg\",\n \"either\",\n \"even\",\n \"ever\",\n \"ex\",\n \"except\",\n \"f\",\n \"far\",\n \"few\",\n \"for\",\n \"from\",\n \"further\",\n \"g\",\n \"get\",\n \"gets\",\n \"given\",\n \"gives\",\n \"go\",\n \"going\",\n \"got\",\n \"h\",\n \"had\",\n \"has\",\n \"have\",\n \"having\",\n \"he\",\n \"her\",\n \"here\",\n \"herself\",\n \"him\",\n \"himself\",\n \"his\",\n \"how\",\n \"i\",\n \"ie\",\n \"if\",\n \"in\",\n \"into\",\n \"is\",\n \"it\",\n \"its\",\n \"itself\",\n \"j\",\n \"just\",\n \"k\",\n \"l\",\n \"less\",\n \"let\",\n \"m\",\n \"many\",\n \"may\",\n \"me\",\n \"might\",\n \"must\",\n \"my\",\n \"myself\",\n \"n\",\n \"need\",\n \"needs\",\n \"next\",\n \"no\",\n \"non\",\n \"not\",\n \"now\",\n \"o\",\n \"of\",\n \"off\",\n \"old\",\n \"on\",\n \"once\",\n \"only\",\n \"or\",\n \"our\",\n \"out\",\n \"p\",\n \"per\",\n \"put\",\n \"q\",\n \"r\",\n \"s\",\n \"same\",\n \"shall\",\n \"she\",\n \"should\",\n \"since\",\n \"so\",\n \"such\",\n \"sure\",\n \"t\",\n \"than\",\n \"that\",\n \"the\",\n \"their\",\n \"them\",\n \"then\",\n \"there\",\n \"these\",\n \"they\",\n \"this\",\n \"those\",\n \"though\",\n \"thus\",\n \"to\",\n \"too\",\n \"u\",\n \"us\",\n \"v\",\n \"w\",\n \"was\",\n \"we\",\n \"well\",\n \"went\",\n \"were\",\n \"what\",\n \"when\",\n \"where\",\n \"which\",\n \"who\",\n \"whose\",\n \"why\",\n \"will\",\n \"would\",\n \"x\",\n \"y\",\n \"yet\",\n \"z\"\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar removePunctuation = require( './../../remove-punctuation' );\nvar tokenize = require( '@stdlib/nlp/tokenize' );\nvar replace = require( './../../base/replace' );\nvar uppercase = require( './../../base/uppercase' );\nvar lowercase = require( './../../base/lowercase' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar format = require( './../../format' );\nvar validate = require( './validate.js' );\nvar STOPWORDS = require( './stopwords.json' );\n\n\n// VARIABLES //\n\nvar RE_HYPHEN = /-/g;\n\n\n// MAIN //\n\n/**\n* Generates an acronym for a given string.\n*\n* ## Notes\n*\n* - The acronym is generated by capitalizing the first letter of each word in the string.\n* - The function removes stop words from the string before generating the acronym.\n* - The function splits hyphenated words and uses the first character of each hyphenated part.\n*\n* @param {string} str - input string\n* @param {Options} [options] - function options\n* @param {StringArray} [options.stopwords] - custom stop words\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} must provide valid options\n* @returns {string} generated acronym\n*\n* @example\n* var out = acronym( 'the quick brown fox' );\n* // returns 'QBF'\n*\n* @example\n* var out = acronym( 'Hard-boiled eggs' );\n* // returns 'HBE'\n*\n* @example\n* var out = acronym( 'National Association of Securities Dealers Automated Quotation' );\n* // returns 'NASDAQ'\n*/\nfunction acronym( str, options ) {\n\tvar isStopWord;\n\tvar words;\n\tvar opts;\n\tvar err;\n\tvar out;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {};\n\tif ( arguments.length > 1 ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tisStopWord = contains( opts.stopwords || STOPWORDS );\n\tstr = removePunctuation( str );\n\tstr = replace( str, RE_HYPHEN, ' ' );\n\twords = tokenize( str );\n\tout = '';\n\tfor ( i = 0; i < words.length; i++ ) {\n\t\tif ( isStopWord( lowercase( words[ i ] ) ) === false ) {\n\t\t\tout += uppercase( words[ i ].charAt( 0 ) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = acronym;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Generate an acronym for a given string.\n*\n* @module @stdlib/string/acronym\n*\n* @example\n* var acronym = require( '@stdlib/string/acronym' );\n*\n* var out = acronym( 'National Association of Securities Dealers Automated Quotation' );\n* // returns 'NASDAQ'\n*\n* out = acronym( 'To be determined...', {\n* 'stopwords': []\n* });\n* // returns 'TBD'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Capitalizes the first character in a string.\n*\n* @param {string} str - input string\n* @returns {string} capitalized string\n*\n* @example\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* @example\n* var out = capitalize( 'presidential election' );\n* // returns 'Presidential election'\n*\n* @example\n* var out = capitalize( 'javaScript' );\n* // returns 'JavaScript'\n*\n* @example\n* var out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures'\n*/\nfunction capitalize( str ) {\n\tif ( str === '' ) {\n\t\treturn '';\n\t}\n\treturn str.charAt( 0 ).toUpperCase() + str.slice( 1 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = capitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first character in a string.\n*\n* @module @stdlib/string/base/capitalize\n*\n* @example\n* var capitalize = require( '@stdlib/string/base/capitalize' );\n*\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trim !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar trim = String.prototype.trim;\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar trim = require( './builtin.js' );\n\n\n// VARIABLES //\n\nvar str1 = ' \\n\\t\\r\\n\\f\\v\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\nvar str2 = '\\u180e';\n\n\n// MAIN //\n\n/**\n* Tests the built-in `String.prototype.trim()` implementation when provided whitespace.\n*\n* ## Notes\n*\n* - For context, see . In short, we can only rely on the built-in `trim` method when it does not consider the Mongolian space separator as whitespace.\n*\n* @private\n* @returns {boolean} boolean indicating whether the built-in implementation returns the expected value\n*\n* @example\n* var b = test();\n* // returns \n*/\nfunction test() {\n\treturn ( trim.call( str1 ) === '' ) && ( trim.call( str2 ) === str2 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = test;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( './../../../base/replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /^[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]*([\\S\\s]*?)[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]*$/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\treturn replace( str, RE, '$1' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning and end of a string.\n*\n* @module @stdlib/string/base/trim\n*\n* @example\n* var trim = require( '@stdlib/string/base/trim' );\n*\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar check = require( './check.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar trim;\nif ( HAS_BUILTIN && check() ) {\n\ttrim = main;\n} else {\n\ttrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar capitalize = require( './../../../base/capitalize' );\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_TO_CAMEL = /(?:\\s|^)([^\\s]+)(?=\\s|$)/g;\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// FUNCTIONS //\n\n/**\n* Converts first capture group to uppercase.\n*\n* @private\n* @param {string} match - entire match\n* @param {string} p1 - first capture group\n* @param {number} offset - offset of the matched substring in entire string\n* @returns {string} uppercased capture group\n*/\nfunction replacer( match, p1, offset ) {\n\tp1 = lowercase( p1 );\n\treturn ( offset === 0 ) ? p1 : capitalize( p1 );\n}\n\n\n// MAIN //\n\n/**\n* Converts a string to camel case.\n*\n* @param {string} str - string to convert\n* @returns {string} camel-cased string\n*\n* @example\n* var out = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* @example\n* var out = camelcase( 'IS_MOBILE' );\n* // returns 'isMobile'\n*\n* @example\n* var out = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*\n* @example\n* var out = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*/\nfunction camelcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_WHITESPACE, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\treturn replace( str, RE_TO_CAMEL, replacer );\n}\n\n\n// EXPORTS //\n\nmodule.exports = camelcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to camel case.\n*\n* @module @stdlib/string/base/camelcase\n*\n* @example\n* var camelcase = require( '@stdlib/string/base/camelcase' );\n*\n* var str = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* str = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*\n* str = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\n// Factors for converting individual surrogates...\nvar Ox10000 = 0x10000|0; // 65536\nvar Ox400 = 0x400|0; // 1024\n\n// Range for a high surrogate\nvar OxD800 = 0xD800|0; // 55296\nvar OxDBFF = 0xDBFF|0; // 56319\n\n// Range for a low surrogate\nvar OxDC00 = 0xDC00|0; // 56320\nvar OxDFFF = 0xDFFF|0; // 57343\n\n\n// MAIN //\n\n/**\n* Returns a Unicode code point from a string at a specified position.\n*\n* ## Notes\n*\n* - UTF-16 encoding uses one 16-bit unit for non-surrogates (U+0000 to U+D7FF and U+E000 to U+FFFF).\n* - UTF-16 encoding uses two 16-bit units (surrogate pairs) for U+10000 to U+10FFFF and encodes U+10000-U+10FFFF by subtracting 0x10000 from the code point, expressing the result as a 20-bit binary, and splitting the 20 bits of 0x0-0xFFFFF as upper and lower 10-bits. The respective 10-bits are stored in two 16-bit words: a high and a low surrogate.\n*\n* @param {string} str - input string\n* @param {integer} idx - position\n* @param {boolean} backward - backward iteration for low surrogates\n* @returns {NonNegativeInteger} code point\n*\n* @example\n* var out = codePointAt( 'last man standing', 4, false );\n* // returns 32\n*\n* @example\n* var out = codePointAt( 'presidential election', 8, true );\n* // returns 116\n*\n* @example\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2, false );\n* // returns 2369\n*\n* @example\n* var out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\nfunction codePointAt( str, idx, backward ) {\n\tvar code;\n\tvar low;\n\tvar hi;\n\n\tif ( idx < 0 ) {\n\t\tidx += str.length;\n\t}\n\tcode = str.charCodeAt( idx );\n\n\t// High surrogate\n\tif ( code >= OxD800 && code <= OxDBFF && idx < str.length - 1 ) {\n\t\thi = code;\n\t\tlow = str.charCodeAt( idx+1 );\n\t\tif ( OxDC00 <= low && low <= OxDFFF ) {\n\t\t\treturn ( ( hi - OxD800 ) * Ox400 ) + ( low - OxDC00 ) + Ox10000;\n\t\t}\n\t\treturn hi;\n\t}\n\t// Low surrogate - support only if backward iteration is desired\n\tif ( backward ) {\n\t\tif ( code >= OxDC00 && code <= OxDFFF && idx >= 1 ) {\n\t\t\thi = str.charCodeAt( idx-1 );\n\t\t\tlow = code;\n\t\t\tif ( OxD800 <= hi && hi <= OxDBFF ) {\n\t\t\t\treturn ( ( hi - OxD800 ) * Ox400 ) + ( low - OxDC00 ) + Ox10000;\n\t\t\t}\n\t\t\treturn low;\n\t\t}\n\t}\n\treturn code;\n}\n\n\n// EXPORTS //\n\nmodule.exports = codePointAt;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a Unicode code point from a string at a specified position.\n*\n* @module @stdlib/string/base/code-point-at\n*\n* @example\n* var codePointAt = require( '@stdlib/string/base/code-point-at' );\n*\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2, false );\n* // returns 2369\n*\n* out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar uppercase = require( './../../../base/uppercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[\\-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to constant case.\n*\n* @param {string} str - string to convert\n* @returns {string} constant-cased string\n*\n* @example\n* var str = constantcase( 'beep' );\n* // returns 'BEEP'\n*\n* @example\n* var str = constantcase( 'beep boop' );\n* // returns 'BEEP_BOOP'\n*\n* @example\n* var str = constantcase( 'isMobile' );\n* // returns 'IS_MOBILE'\n*\n* @example\n* var str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*/\nfunction constantcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '_' );\n\treturn uppercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = constantcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to constant case.\n*\n* @module @stdlib/string/base/constantcase\n*\n* @example\n* var constantcase = require( '@stdlib/string/base/constantcase' );\n*\n* var str = constantcase( 'aBcDeF' );\n* // returns 'ABCDEF'\n*\n* str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*\n* str = constantcase( 'I am a robot' );\n* // returns 'I_AM_A_ROBOT'\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../../../format' );\nvar min = require( '@stdlib/math/base/special/min' );\n\n\n// MAIN //\n\n/**\n* Calculates the Levenshtein (edit) distance between two strings.\n*\n* @param {string} s1 - first string value\n* @param {string} s2 - second string value\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @returns {NonNegativeInteger} Levenshtein distance\n*\n* @example\n* var distance = levenshteinDistance( 'algorithm', 'altruistic' );\n* // returns 6\n*/\nfunction levenshteinDistance( s1, s2 ) {\n\tvar temp;\n\tvar row;\n\tvar pre;\n\tvar m;\n\tvar n;\n\tvar i;\n\tvar j;\n\tvar k;\n\n\tif ( !isString( s1 ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', s1 ) );\n\t}\n\tif ( !isString( s2 ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', s2 ) );\n\t}\n\tn = s1.length;\n\tm = s2.length;\n\n\t// If either string is empty, the edit distance is equal to the number of characters in the non-empty string...\n\tif ( n === 0 ) {\n\t\treturn m;\n\t}\n\tif ( m === 0 ) {\n\t\treturn n;\n\t}\n\n\trow = [];\n\tfor ( i = 0; i <= m; i++ ) {\n\t\trow.push( i );\n\t}\n\n\tfor ( i = 0; i < n; i++ ) {\n\t\tpre = row[ 0 ];\n\t\trow[ 0 ] = i + 1;\n\t\tfor ( j = 0; j < m; j++ ) {\n\t\t\tk = j + 1;\n\t\t\ttemp = row[ k ];\n\t\t\tif ( s1[ i ] === s2[ j ] ) {\n\t\t\t\trow[ k ] = pre;\n\t\t\t} else {\n\t\t\t\trow[ k ] = min( pre, min( row[ j ], row[ k ] ) ) + 1;\n\t\t\t}\n\t\t\tpre = temp;\n\t\t}\n\t}\n\treturn row[ m ];\n}\n\n\n// EXPORTS //\n\nmodule.exports = levenshteinDistance;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Calculate the Levenshtein (edit) distance between two strings.\n*\n* @module @stdlib/string/base/distances/levenshtein\n*\n* @example\n* var levenshteinDistance = require( '@stdlib/string/base/distances/levenshtein' );\n*\n* var dist = levenshteinDistance( 'fly', 'ant' );\n* // returns 3\n*\n* dist = levenshteinDistance( 'frog', 'fog' );\n* // returns 1\n*\n* dist = levenshteinDistance( 'javascript', 'typescript' );\n* // returns 4\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name levenshteinDistance\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/distances/levenshtein}\n*/\nsetReadOnly( ns, 'levenshteinDistance', require( './../../../base/distances/levenshtein' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[\\-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to dot case.\n*\n* @param {string} str - string to convert\n* @returns {string} dot-cased string\n*\n* @example\n* var str = dotcase( 'beep' );\n* // returns 'beep'\n*\n* @example\n* var str = dotcase( 'beep boop' );\n* // returns 'beep.boop'\n*\n* @example\n* var str = dotcase( 'isMobile' );\n* // returns 'is.mobile'\n*\n* @example\n* var str = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*/\nfunction dotcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '.' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = dotcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to dot case.\n*\n* @module @stdlib/string/base/dotcase\n*\n* @example\n* var dotcase = require( '@stdlib/string/base/dotcase' );\n*\n* var str = dotcase( 'aBcDeF' );\n* // returns 'abcdef'\n*\n* str = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*\n* str = dotcase( 'I am a robot' );\n* // returns 'i.am.a.robot'\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.endsWith !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests if a string ends with the characters of another string.\n*\n* ## Notes\n*\n* - The last parameter restricts the search to a substring within the input string beginning from the leftmost character. If provided a negative value, `len` indicates to ignore the last `len` characters, and is thus equivalent to `str.length + len`.\n*\n* @private\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} len - substring length\n* @returns {boolean} boolean indicating if the input string ends with the search string\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', 19 );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', -23 );\n* // returns true\n*/\nfunction endsWith( str, search, len ) {\n\tvar idx;\n\tvar N;\n\tvar i;\n\n\tN = search.length;\n\tif ( len === 0 ) {\n\t\treturn ( N === 0 );\n\t}\n\tif ( len < 0 ) {\n\t\tidx = str.length + len;\n\t} else {\n\t\tidx = len;\n\t}\n\tif ( N === 0 ) {\n\t\t// Based on the premise that every string can be \"surrounded\" by empty strings (e.g., \"\" + \"a\" + \"\" + \"b\" + \"\" === \"ab\"):\n\t\treturn true;\n\t}\n\tidx -= N;\n\tif ( idx < 0 ) {\n\t\treturn false;\n\t}\n\tfor ( i = 0; i < N; i++) {\n\t\tif ( str.charCodeAt( idx + i ) !== search.charCodeAt( i ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar endsWith = String.prototype.endsWith;\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Tests if a string ends with the characters of another string.\n*\n* ## Notes\n*\n* - The last parameter restricts the search to a substring within the input string beginning from the leftmost character. If provided a negative value, `len` indicates to ignore the last `len` characters, and is thus equivalent to `str.length + len`.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} len - substring length\n* @returns {boolean} boolean indicating if the input string ends with the search string\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', 19 );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', -23 );\n* // returns true\n*/\nfunction endsWith( str, search, len ) {\n\tvar idx;\n\tvar N;\n\n\tN = search.length;\n\tif ( len === 0 ) {\n\t\treturn ( N === 0 );\n\t}\n\tif ( len < 0 ) {\n\t\tidx = str.length + len;\n\t} else {\n\t\tidx = len;\n\t}\n\tif ( N === 0 ) {\n\t\t// Based on the premise that every string can be \"surrounded\" by empty strings (e.g., \"\" + \"a\" + \"\" + \"b\" + \"\" === \"ab\"):\n\t\treturn true;\n\t}\n\tif ( idx - N < 0 || idx > str.length ) {\n\t\treturn false;\n\t}\n\treturn builtin.call( str, search, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string ends with the characters of another string.\n*\n* @module @stdlib/string/base/ends-with\n*\n* @example\n* var endsWith = require( '@stdlib/string/base/ends-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n*\n* var bool = endsWith( str, 'air', str.length );\n* // returns true\n*\n* bool = endsWith( str, 'fair', str.length );\n* // returns false\n*\n* bool = endsWith( str, 'fair', 30 );\n* // returns true\n*\n* bool = endsWith( str, 'fair', -34 );\n* // returns true\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar endsWith;\nif ( HAS_BUILTIN ) {\n\tendsWith = main;\n} else {\n\tendsWith = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Returns the first `n` UTF-16 code units of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of UTF-16 code units to return\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election', 1 );\n* // returns 'p'\n*\n* @example\n* var out = first( 'JavaScript', 1 );\n* // returns 'J'\n*\n* @example\n* var out = first( 'Hidden Treasures', 1 );\n* // returns 'H'\n*/\nfunction first( str, n ) {\n\treturn str.substring( 0, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first `n` UTF-16 code units of a string.\n*\n* @module @stdlib/string/base/first\n*\n* @example\n* var first = require( '@stdlib/string/base/first' );\n*\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures', 1 );\n* // returns 'H';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar RE_UTF16_SURROGATE_PAIR = require( '@stdlib/regexp/utf16-surrogate-pair' ).REGEXP;\n\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Returns the first `n` Unicode code points of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of Unicode code points to return\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election', 1 );\n* // returns 'p'\n*\n* @example\n* var out = first( 'JavaScript', 1 );\n* // returns 'J'\n*\n* @example\n* var out = first( 'Hidden Treasures', 1 );\n* // returns 'H'\n*/\nfunction first( str, n ) {\n\tvar len;\n\tvar out;\n\tvar ch1;\n\tvar ch2;\n\tvar cnt;\n\tvar i;\n\tif ( str === '' || n === 0 ) {\n\t\treturn '';\n\t}\n\tif ( n === 1 ) {\n\t\tstr = str.substring( 0, 2 );\n\t\tif ( RE_UTF16_SURROGATE_PAIR.test( str ) ) {\n\t\t\treturn str;\n\t\t}\n\t\treturn str[ 0 ];\n\t}\n\tlen = str.length;\n\tout = '';\n\tcnt = 0;\n\n\t// Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\t\tout += ch1;\n\t\tcnt += 1;\n\n\t\t// Check for a high UTF-16 surrogate...\n\t\tif ( RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check for an unpaired surrogate at the end of the input string...\n\t\t\tif ( i === len-1 ) {\n\t\t\t\t// We found an unpaired surrogate...\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\tout += ch2;\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Check whether we've found the desired number of code points...\n\t\tif ( cnt === n ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first `n` Unicode code points of a string.\n*\n* @module @stdlib/string/base/first-code-point\n*\n* @example\n* var first = require( '@stdlib/string/base/first-code-point' );\n*\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures', 1 );\n* // returns 'H';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/code-point-at' );\n\n\n// MAIN //\n\n/**\n* Returns a Unicode code point from a string at a specified position.\n*\n* @param {string} str - input string\n* @param {integer} idx - position\n* @param {boolean} [backward=false] - backward iteration for low surrogates\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an integer\n* @throws {TypeError} third argument must be a boolean\n* @throws {RangeError} position must be a valid index in string\n* @returns {NonNegativeInteger} code point\n*\n* @example\n* var out = codePointAt( 'last man standing', 4 );\n* // returns 32\n*\n* @example\n* var out = codePointAt( 'presidential election', 8, true );\n* // returns 116\n*\n* @example\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 2369\n*\n* @example\n* var out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\nfunction codePointAt( str, idx, backward ) {\n\tvar FLG;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isInteger( idx ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', idx ) );\n\t}\n\tif ( idx < 0 ) {\n\t\tidx += str.length;\n\t}\n\tif ( idx < 0 || idx >= str.length ) {\n\t\tthrow new RangeError( format( 'invalid argument. Second argument must be a valid position (i.e., be within string bounds). Value: `%d`.', idx ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isBoolean( backward ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a boolean. Value: `%s`.', backward ) );\n\t\t}\n\t\tFLG = backward;\n\t} else {\n\t\tFLG = false;\n\t}\n\treturn base( str, idx, FLG );\n}\n\n\n// EXPORTS //\n\nmodule.exports = codePointAt;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return a Unicode code point from a string at a specified position.\n*\n* @module @stdlib/string/code-point-at\n*\n* @example\n* var codePointAt = require( '@stdlib/string/code-point-at' );\n*\n* var out = codePointAt( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 2369\n*\n* out = codePointAt( '\uD83C\uDF37', 1, true );\n* // returns 127799\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar consts = {\n\t'CR': 0,\n\t'LF': 1,\n\t'Control': 2,\n\t'Extend': 3,\n\t'RegionalIndicator': 4,\n\t'SpacingMark': 5,\n\t'L': 6,\n\t'V': 7,\n\t'T': 8,\n\t'LV': 9,\n\t'LVT': 10,\n\t'Other': 11,\n\t'Prepend': 12,\n\t'ZWJ': 13,\n\t'NotBreak': 0,\n\t'BreakStart': 1,\n\t'Break': 2,\n\t'BreakLastRegional': 3,\n\t'BreakPenultimateRegional': 4,\n\t'ExtendedPictographic': 101\n};\n\n\n// EXPORTS //\n\nmodule.exports = consts;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar constants = require( './constants.js' );\n\n\n// FUNCTIONS //\n\n/**\n* Returns number of elements in array equal to a provided value.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - input value\n* @returns {NonNegativeInteger} number of elements in array equal to a provided value\n*/\nfunction count( arr, start, end, value ) {\n\tvar cnt;\n\tvar i;\n\n\tif ( end >= arr.length ) {\n\t\tend = arr.length - 1;\n\t}\n\tcnt = 0;\n\tfor ( i = start; i <= end; i++ ) {\n\t\tif ( arr[ i ] === value ) {\n\t\t\tcnt += 1;\n\t\t}\n\t}\n\treturn cnt;\n}\n\n/**\n* Returns whether every indexed array element is equal to a provided value.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - search value\n* @returns {boolean} boolean indicating whether all the values in array in the given range are equal to the provided value\n*/\nfunction every( arr, start, end, value ) {\n\tvar i;\n\n\tif ( end >= arr.length ) {\n\t\tend = arr.length - 1;\n\t}\n\tfor ( i = start; i <= end; i++ ) {\n\t\tif ( arr[ i ] !== value ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n/**\n* Returns the index of the first occurrence of a value in a provided array.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - search value\n* @returns {integer} index of the first occurrence\n*/\nfunction indexOf( arr, start, end, value ) {\n\tvar i;\n\n\tif ( end >= arr.length ) {\n\t\tend = arr.length - 1;\n\t}\n\tfor ( i = start; i <= end; i++ ) {\n\t\tif ( arr[ i ] === value ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n/**\n* Returns the index of the last occurrence of a value in a provided array.\n*\n* @private\n* @param {Array} arr - input array\n* @param {NonNegativeInteger} start - starting search index at which to start searching backwards (inclusive)\n* @param {NonNegativeInteger} end - ending search index (inclusive)\n* @param {*} value - search value\n* @returns {integer} index of the last occurrence\n*/\nfunction lastIndexOf( arr, start, end, value ) {\n\tvar i;\n\n\tif ( start >= arr.length-1 ) {\n\t\tstart = arr.length - 1;\n\t}\n\tfor ( i = start; i >= end; i-- ) {\n\t\tif ( arr[ i ] === value ) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n// MAIN //\n\n/**\n* Returns the break type between grapheme breaking classes according to _UAX #29 3.1.1 Grapheme Cluster Boundary Rules_ on extended grapheme clusters.\n*\n* @private\n* @param {Array} breaks - list of grapheme break properties\n* @param {Array} emoji - list of emoji properties\n* @returns {NonNegativeInteger} break type\n*\n* @example\n* var out = breakType( [ 11, 3, 11 ], [ 11, 11, 11 ] );\n* // returns 1\n*/\nfunction breakType( breaks, emoji ) {\n\tvar nextEmoji;\n\tvar next;\n\tvar prev;\n\tvar idx;\n\tvar N;\n\tvar M;\n\n\tN = breaks.length;\n\tM = N - 1;\n\n\tprev = breaks[ M-1 ];\n\tnext = breaks[ M ];\n\tnextEmoji = emoji[ M ];\n\n\tidx = lastIndexOf( breaks, M, 0, constants.RegionalIndicator );\n\tif (\n\t\tidx > 0 &&\n\t\tprev !== constants.Prepend &&\n\t\tprev !== constants.RegionalIndicator &&\n\t\tevery( breaks, 1, idx-1, constants.RegionalIndicator )\n\t) {\n\t\tif ( count( breaks, 0, M, constants.RegionalIndicator ) % 2 === 1 ) {\n\t\t\treturn constants.BreakLastRegional;\n\t\t}\n\t\treturn constants.BreakPenultimateRegional;\n\t}\n\t// GB3: CR \u00D7 LF\n\tif (\n\t\tprev === constants.CR &&\n\t\tnext === constants.LF\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB4: (Control|CR|LF) \u00F7\n\tif (\n\t\tprev === constants.Control ||\n\t\tprev === constants.CR ||\n\t\tprev === constants.LF\n\t) {\n\t\treturn constants.BreakStart;\n\t}\n\t// GB5: \u00F7 (Control|CR|LF)\n\tif (\n\t\tnext === constants.Control ||\n\t\tnext === constants.CR ||\n\t\tnext === constants.LF\n\t) {\n\t\treturn constants.BreakStart;\n\t}\n\t// GB6: L \u00D7 (L|V|LV|LVT)\n\tif (\n\t\tprev === constants.L &&\n\t\t(\n\t\t\tnext === constants.L ||\n\t\t\tnext === constants.V ||\n\t\t\tnext === constants.LV ||\n\t\t\tnext === constants.LVT\n\t\t)\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB7: (LV|V) \u00D7 (V|T)\n\tif (\n\t\t( prev === constants.LV || prev === constants.V ) &&\n\t\t( next === constants.V || next === constants.T )\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB8: (LVT|T) \u00D7 (T)\n\tif (\n\t\t( prev === constants.LVT || prev === constants.T ) &&\n\t\tnext === constants.T\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB9: \u00D7 (Extend|ZWJ)\n\tif (\n\t\tnext === constants.Extend ||\n\t\tnext === constants.ZWJ\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB9a: \u00D7 SpacingMark\n\tif ( next === constants.SpacingMark ) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB9b: Prepend \u00D7\n\tif ( prev === constants.Prepend ) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB11: \\p{Extended_Pictographic} Extend* ZWJ \u00D7 \\p{Extended_Pictographic}\n\tidx = lastIndexOf( emoji, M-1, 0, constants.ExtendedPictographic );\n\tif (\n\t\tidx >= 0 &&\n\t\tprev === constants.ZWJ &&\n\t\tnextEmoji === constants.ExtendedPictographic &&\n\t\temoji[ idx ] === constants.ExtendedPictographic &&\n\t\tevery( breaks, idx+1, M-2, constants.Extend )\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB12: ^ (RI RI)* RI \u00D7 RI\n\t// GB13: [^RI] (RI RI)* RI \u00D7 RI\n\tif ( indexOf( breaks, 1, M-1, constants.RegionalIndicator ) >= 0 ) {\n\t\treturn constants.Break;\n\t}\n\tif (\n\t\tprev === constants.RegionalIndicator &&\n\t\tnext === constants.RegionalIndicator\n\t) {\n\t\treturn constants.NotBreak;\n\t}\n\t// GB999: Any ? Any\n\treturn constants.BreakStart;\n}\n\n\n// EXPORTS //\n\nmodule.exports = breakType;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar constants = require( './constants.js' );\n\n\n// MAIN //\n\n/**\n* Returns the emoji property from the [Unicode Standard][1].\n*\n* [1]: https://www.unicode.org/Public/13.0.0/ucd/emoji/emoji-data.txt\n*\n* @private\n* @param {NonNegativeInteger} code - Unicode code point\n* @returns {NonNegativeInteger} emoji property\n*\n* @example\n* var out = emojiProperty( 0x23EC );\n* // returns 101\n*\n* @example\n* var out = emojiProperty( 0x1FFFE );\n* // returns 11\n*/\nfunction emojiProperty( code ) {\n\tif (\n\t\tcode === 0x00A9 || // E0.6 [1] (\u00A9\uFE0F) copyright\n\t\tcode === 0x00AE || // E0.6 [1] (\u00AE\uFE0F) registered\n\t\tcode === 0x203C || // E0.6 [1] (\u203C\uFE0F) double exclamation mark\n\t\tcode === 0x2049 || // E0.6 [1] (\u2049\uFE0F) exclamation question mark\n\t\tcode === 0x2122 || // E0.6 [1] (\u2122\uFE0F) trade mark\n\t\tcode === 0x2139 || // E0.6 [1] (\u2139\uFE0F) information\n\t\t( 0x2194 <= code && code <= 0x2199 ) || // E0.6 [6] (\u2194\uFE0F..\u2199\uFE0F) left-right arrow..down-left arrow\n\t\t( 0x21A9 <= code && code <= 0x21AA ) || // E0.6 [2] (\u21A9\uFE0F..\u21AA\uFE0F) right arrow curving left..left arrow curving right\n\t\t( 0x231A <= code && code <= 0x231B ) || // E0.6 [2] (\u231A..\u231B) watch..hourglass done\n\t\tcode === 0x2328 || // E1.0 [1] (\u2328\uFE0F) keyboard\n\t\tcode === 0x2388 || // E0.0 [1] (\u2388) HELM SYMBOL\n\t\tcode === 0x23CF || // E1.0 [1] (\u23CF\uFE0F) eject button\n\t\t( 0x23E9 <= code && code <= 0x23EC ) || // E0.6 [4] (\u23E9..\u23EC) fast-forward button..fast down button\n\t\t( 0x23ED <= code && code <= 0x23EE ) || // E0.7 [2] (\u23ED\uFE0F..\u23EE\uFE0F) next track button..last track button\n\t\tcode === 0x23EF || // E1.0 [1] (\u23EF\uFE0F) play or pause button\n\t\tcode === 0x23F0 || // E0.6 [1] (\u23F0) alarm clock\n\t\t( 0x23F1 <= code && code <= 0x23F2 ) || // E1.0 [2] (\u23F1\uFE0F..\u23F2\uFE0F) stopwatch..timer clock\n\t\tcode === 0x23F3 || // E0.6 [1] (\u23F3) hourglass not done\n\t\t( 0x23F8 <= code && code <= 0x23FA ) || // E0.7 [3] (\u23F8\uFE0F..\u23FA\uFE0F) pause button..record button\n\t\tcode === 0x24C2 || // E0.6 [1] (\u24C2\uFE0F) circled M\n\t\t( 0x25AA <= code && code <= 0x25AB ) || // E0.6 [2] (\u25AA\uFE0F..\u25AB\uFE0F) black small square..white small square\n\t\tcode === 0x25B6 || // E0.6 [1] (\u25B6\uFE0F) play button\n\t\tcode === 0x25C0 || // E0.6 [1] (\u25C0\uFE0F) reverse button\n\t\t( 0x25FB <= code && code <= 0x25FE ) || // E0.6 [4] (\u25FB\uFE0F..\u25FE) white medium square..black medium-small square\n\t\t( 0x2600 <= code && code <= 0x2601 ) || // E0.6 [2] (\u2600\uFE0F..\u2601\uFE0F) sun..cloud\n\t\t( 0x2602 <= code && code <= 0x2603 ) || // E0.7 [2] (\u2602\uFE0F..\u2603\uFE0F) umbrella..snowman\n\t\tcode === 0x2604 || // E1.0 [1] (\u2604\uFE0F) comet\n\t\tcode === 0x2605 || // E0.0 [1] (\u2605) BLACK STAR\n\t\t( 0x2607 <= code && code <= 0x260D ) || // E0.0 [7] (\u2607..\u260D) LIGHTNING..OPPOSITION\n\t\tcode === 0x260E || // E0.6 [1] (\u260E\uFE0F) telephone\n\t\t( 0x260F <= code && code <= 0x2610 ) || // E0.0 [2] (\u260F..\u2610) WHITE TELEPHONE..BALLOT BOX\n\t\tcode === 0x2611 || // E0.6 [1] (\u2611\uFE0F) check box with check\n\t\tcode === 0x2612 || // E0.0 [1] (\u2612) BALLOT BOX WITH X\n\t\t( 0x2614 <= code && code <= 0x2615 ) || // E0.6 [2] (\u2614..\u2615) umbrella with rain drops..hot beverage\n\t\t( 0x2616 <= code && code <= 0x2617 ) || // E0.0 [2] (\u2616..\u2617) WHITE SHOGI PIECE..BLACK SHOGI PIECE\n\t\tcode === 0x2618 || // E1.0 [1] (\u2618\uFE0F) shamrock\n\t\t( 0x2619 <= code && code <= 0x261C ) || // E0.0 [4] (\u2619..\u261C) REVERSED ROTATED FLORAL HEART BULLET..WHITE LEFT POINTING INDEX\n\t\tcode === 0x261D || // E0.6 [1] (\u261D\uFE0F) index pointing up\n\t\t( 0x261E <= code && code <= 0x261F ) || // E0.0 [2] (\u261E..\u261F) WHITE RIGHT POINTING INDEX..WHITE DOWN POINTING INDEX\n\t\tcode === 0x2620 || // E1.0 [1] (\u2620\uFE0F) skull and crossbones\n\t\tcode === 0x2621 || // E0.0 [1] (\u2621) CAUTION SIGN\n\t\t( 0x2622 <= code && code <= 0x2623 ) || // E1.0 [2] (\u2622\uFE0F..\u2623\uFE0F) radioactive..biohazard\n\t\t( 0x2624 <= code && code <= 0x2625 ) || // E0.0 [2] (\u2624..\u2625) CADUCEUS..ANKH\n\t\tcode === 0x2626 || // E1.0 [1] (\u2626\uFE0F) orthodox cross\n\t\t( 0x2627 <= code && code <= 0x2629 ) || // E0.0 [3] (\u2627..\u2629) CHI RHO..CROSS OF JERUSALEM\n\t\tcode === 0x262A || // E0.7 [1] (\u262A\uFE0F) star and crescent\n\t\t( 0x262B <= code && code <= 0x262D ) || // E0.0 [3] (\u262B..\u262D) FARSI SYMBOL..HAMMER AND SICKLE\n\t\tcode === 0x262E || // E1.0 [1] (\u262E\uFE0F) peace symbol\n\t\tcode === 0x262F || // E0.7 [1] (\u262F\uFE0F) yin yang\n\t\t( 0x2630 <= code && code <= 0x2637 ) || // E0.0 [8] (\u2630..\u2637) TRIGRAM FOR HEAVEN..TRIGRAM FOR EARTH\n\t\t( 0x2638 <= code && code <= 0x2639 ) || // E0.7 [2] (\u2638\uFE0F..\u2639\uFE0F) wheel of dharma..frowning face\n\t\tcode === 0x263A || // E0.6 [1] (\u263A\uFE0F) smiling face\n\t\t( 0x263B <= code && code <= 0x263F ) || // E0.0 [5] (\u263B..\u263F) BLACK SMILING FACE..MERCURY\n\t\tcode === 0x2640 || // E4.0 [1] (\u2640\uFE0F) female sign\n\t\tcode === 0x2641 || // E0.0 [1] (\u2641) EARTH\n\t\tcode === 0x2642 || // E4.0 [1] (\u2642\uFE0F) male sign\n\t\t( 0x2643 <= code && code <= 0x2647 ) || // E0.0 [5] (\u2643..\u2647) JUPITER..PLUTO\n\t\t( 0x2648 <= code && code <= 0x2653 ) || // E0.6 [12] (\u2648..\u2653) Aries..Pisces\n\t\t( 0x2654 <= code && code <= 0x265E ) || // E0.0 [11] (\u2654..\u265E) WHITE CHESS KING..BLACK CHESS KNIGHT\n\t\tcode === 0x265F || // E11.0 [1] (\u265F\uFE0F) chess pawn\n\t\tcode === 0x2660 || // E0.6 [1] (\u2660\uFE0F) spade suit\n\t\t( 0x2661 <= code && code <= 0x2662 ) || // E0.0 [2] (\u2661..\u2662) WHITE HEART SUIT..WHITE DIAMOND SUIT\n\t\tcode === 0x2663 || // E0.6 [1] (\u2663\uFE0F) club suit\n\t\tcode === 0x2664 || // E0.0 [1] (\u2664) WHITE SPADE SUIT\n\t\t( 0x2665 <= code && code <= 0x2666 ) || // E0.6 [2] (\u2665\uFE0F..\u2666\uFE0F) heart suit..diamond suit\n\t\tcode === 0x2667 || // E0.0 [1] (\u2667) WHITE CLUB SUIT\n\t\tcode === 0x2668 || // E0.6 [1] (\u2668\uFE0F) hot springs\n\t\t( 0x2669 <= code && code <= 0x267A ) || // E0.0 [18] (\u2669..\u267A) QUARTER NOTE..RECYCLING SYMBOL FOR GENERIC MATERIALS\n\t\tcode === 0x267B || // E0.6 [1] (\u267B\uFE0F) recycling symbol\n\t\t( 0x267C <= code && code <= 0x267D ) || // E0.0 [2] (\u267C..\u267D) RECYCLED PAPER SYMBOL..PARTIALLY-RECYCLED PAPER SYMBOL\n\t\tcode === 0x267E || // E11.0 [1] (\u267E\uFE0F) infinity\n\t\tcode === 0x267F || // E0.6 [1] (\u267F) wheelchair symbol\n\t\t( 0x2680 <= code && code <= 0x2685 ) || // E0.0 [6] (\u2680..\u2685) DIE FACE-1..DIE FACE-6\n\t\t( 0x2690 <= code && code <= 0x2691 ) || // E0.0 [2] (\u2690..\u2691) WHITE FLAG..BLACK FLAG\n\t\tcode === 0x2692 || // E1.0 [1] (\u2692\uFE0F) hammer and pick\n\t\tcode === 0x2693 || // E0.6 [1] (\u2693) anchor\n\t\tcode === 0x2694 || // E1.0 [1] (\u2694\uFE0F) crossed swords\n\t\tcode === 0x2695 || // E4.0 [1] (\u2695\uFE0F) medical symbol\n\t\t( 0x2696 <= code && code <= 0x2697 ) || // E1.0 [2] (\u2696\uFE0F..\u2697\uFE0F) balance scale..alembic\n\t\tcode === 0x2698 || // E0.0 [1] (\u2698) FLOWER\n\t\tcode === 0x2699 || // E1.0 [1] (\u2699\uFE0F) gear\n\t\tcode === 0x269A || // E0.0 [1] (\u269A) STAFF OF HERMES\n\t\t( 0x269B <= code && code <= 0x269C ) || // E1.0 [2] (\u269B\uFE0F..\u269C\uFE0F) atom symbol..fleur-de-lis\n\t\t( 0x269D <= code && code <= 0x269F ) || // E0.0 [3] (\u269D..\u269F) OUTLINED WHITE STAR..THREE LINES CONVERGING LEFT\n\t\t( 0x26A0 <= code && code <= 0x26A1 ) || // E0.6 [2] (\u26A0\uFE0F..\u26A1) warning..high voltage\n\t\t( 0x26A2 <= code && code <= 0x26A6 ) || // E0.0 [5] (\u26A2..\u26A6) DOUBLED FEMALE SIGN..MALE WITH STROKE SIGN\n\t\tcode === 0x26A7 || // E13.0 [1] (\u26A7\uFE0F) transgender symbol\n\t\t( 0x26A8 <= code && code <= 0x26A9 ) || // E0.0 [2] (\u26A8..\u26A9) VERTICAL MALE WITH STROKE SIGN..HORIZONTAL MALE WITH STROKE SIGN\n\t\t( 0x26AA <= code && code <= 0x26AB ) || // E0.6 [2] (\u26AA..\u26AB) white circle..black circle\n\t\t( 0x26AC <= code && code <= 0x26AF ) || // E0.0 [4] (\u26AC..\u26AF) MEDIUM SMALL WHITE CIRCLE..UNMARRIED PARTNERSHIP SYMBOL\n\t\t( 0x26B0 <= code && code <= 0x26B1 ) || // E1.0 [2] (\u26B0\uFE0F..\u26B1\uFE0F) coffin..funeral urn\n\t\t( 0x26B2 <= code && code <= 0x26BC ) || // E0.0 [11] (\u26B2..\u26BC) NEUTER..SESQUIQUADRATE\n\t\t( 0x26BD <= code && code <= 0x26BE ) || // E0.6 [2] (\u26BD..\u26BE) soccer ball..baseball\n\t\t( 0x26BF <= code && code <= 0x26C3 ) || // E0.0 [5] (\u26BF..\u26C3) SQUARED KEY..BLACK DRAUGHTS KING\n\t\t( 0x26C4 <= code && code <= 0x26C5 ) || // E0.6 [2] (\u26C4..\u26C5) snowman without snow..sun behind cloud\n\t\t( 0x26C6 <= code && code <= 0x26C7 ) || // E0.0 [2] (\u26C6..\u26C7) RAIN..BLACK SNOWMAN\n\t\tcode === 0x26C8 || // E0.7 [1] (\u26C8\uFE0F) cloud with lightning and rain\n\t\t( 0x26C9 <= code && code <= 0x26CD ) || // E0.0 [5] (\u26C9..\u26CD) TURNED WHITE SHOGI PIECE..DISABLED CAR\n\t\tcode === 0x26CE || // E0.6 [1] (\u26CE) Ophiuchus\n\t\tcode === 0x26CF || // E0.7 [1] (\u26CF\uFE0F) pick\n\t\tcode === 0x26D0 || // E0.0 [1] (\u26D0) CAR SLIDING\n\t\tcode === 0x26D1 || // E0.7 [1] (\u26D1\uFE0F) rescue worker\u2019s helmet\n\t\tcode === 0x26D2 || // E0.0 [1] (\u26D2) CIRCLED CROSSING LANES\n\t\tcode === 0x26D3 || // E0.7 [1] (\u26D3\uFE0F) chains\n\t\tcode === 0x26D4 || // E0.6 [1] (\u26D4) no entry\n\t\t( 0x26D5 <= code && code <= 0x26E8 ) || // E0.0 [20] (\u26D5..\u26E8) ALTERNATE ONE-WAY LEFT WAY TRAFFIC..BLACK CROSS ON SHIELD\n\t\tcode === 0x26E9 || // E0.7 [1] (\u26E9\uFE0F) shinto shrine\n\t\tcode === 0x26EA || // E0.6 [1] (\u26EA) church\n\t\t( 0x26EB <= code && code <= 0x26EF ) || // E0.0 [5] (\u26EB..\u26EF) CASTLE..MAP SYMBOL FOR LIGHTHOUSE\n\t\t( 0x26F0 <= code && code <= 0x26F1 ) || // E0.7 [2] (\u26F0\uFE0F..\u26F1\uFE0F) mountain..umbrella on ground\n\t\t( 0x26F2 <= code && code <= 0x26F3 ) || // E0.6 [2] (\u26F2..\u26F3) fountain..flag in hole\n\t\tcode === 0x26F4 || // E0.7 [1] (\u26F4\uFE0F) ferry\n\t\tcode === 0x26F5 || // E0.6 [1] (\u26F5) sailboat\n\t\tcode === 0x26F6 || // E0.0 [1] (\u26F6) SQUARE FOUR CORNERS\n\t\t( 0x26F7 <= code && code <= 0x26F9 ) || // E0.7 [3] (\u26F7\uFE0F..\u26F9\uFE0F) skier..person bouncing ball\n\t\tcode === 0x26FA || // E0.6 [1] (\u26FA) tent\n\t\t( 0x26FB <= code && code <= 0x26FC ) || // E0.0 [2] (\u26FB..\u26FC) JAPANESE BANK SYMBOL..HEADSTONE GRAVEYARD SYMBOL\n\t\tcode === 0x26FD || // E0.6 [1] (\u26FD) fuel pump\n\t\t( 0x26FE <= code && code <= 0x2701 ) || // E0.0 [4] (\u26FE..\u2701) CUP ON BLACK SQUARE..UPPER BLADE SCISSORS\n\t\tcode === 0x2702 || // E0.6 [1] (\u2702\uFE0F) scissors\n\t\t( 0x2703 <= code && code <= 0x2704 ) || // E0.0 [2] (\u2703..\u2704) LOWER BLADE SCISSORS..WHITE SCISSORS\n\t\tcode === 0x2705 || // E0.6 [1] (\u2705) check mark button\n\t\t( 0x2708 <= code && code <= 0x270C ) || // E0.6 [5] (\u2708\uFE0F..\u270C\uFE0F) airplane..victory hand\n\t\tcode === 0x270D || // E0.7 [1] (\u270D\uFE0F) writing hand\n\t\tcode === 0x270E || // E0.0 [1] (\u270E) LOWER RIGHT PENCIL\n\t\tcode === 0x270F || // E0.6 [1] (\u270F\uFE0F) pencil\n\t\t( 0x2710 <= code && code <= 0x2711 ) || // E0.0 [2] (\u2710..\u2711) UPPER RIGHT PENCIL..WHITE NIB\n\t\tcode === 0x2712 || // E0.6 [1] (\u2712\uFE0F) black nib\n\t\tcode === 0x2714 || // E0.6 [1] (\u2714\uFE0F) check mark\n\t\tcode === 0x2716 || // E0.6 [1] (\u2716\uFE0F) multiply\n\t\tcode === 0x271D || // E0.7 [1] (\u271D\uFE0F) latin cross\n\t\tcode === 0x2721 || // E0.7 [1] (\u2721\uFE0F) star of David\n\t\tcode === 0x2728 || // E0.6 [1] (\u2728) sparkles\n\t\t( 0x2733 <= code && code <= 0x2734 ) || // E0.6 [2] (\u2733\uFE0F..\u2734\uFE0F) eight-spoked asterisk..eight-pointed star\n\t\tcode === 0x2744 || // E0.6 [1] (\u2744\uFE0F) snowflake\n\t\tcode === 0x2747 || // E0.6 [1] (\u2747\uFE0F) sparkle\n\t\tcode === 0x274C || // E0.6 [1] (\u274C) cross mark\n\t\tcode === 0x274E || // E0.6 [1] (\u274E) cross mark button\n\t\t( 0x2753 <= code && code <= 0x2755 ) || // E0.6 [3] (\u2753..\u2755) question mark..white exclamation mark\n\t\tcode === 0x2757 || // E0.6 [1] (\u2757) exclamation mark\n\t\tcode === 0x2763 || // E1.0 [1] (\u2763\uFE0F) heart exclamation\n\t\tcode === 0x2764 || // E0.6 [1] (\u2764\uFE0F) red heart\n\t\t( 0x2765 <= code && code <= 0x2767 ) || // E0.0 [3] (\u2765..\u2767) ROTATED HEAVY BLACK HEART BULLET..ROTATED FLORAL HEART BULLET\n\t\t( 0x2795 <= code && code <= 0x2797 ) || // E0.6 [3] (\u2795..\u2797) plus..divide\n\t\tcode === 0x27A1 || // E0.6 [1] (\u27A1\uFE0F) right arrow\n\t\tcode === 0x27B0 || // E0.6 [1] (\u27B0) curly loop\n\t\tcode === 0x27BF || // E1.0 [1] (\u27BF) double curly loop\n\t\t( 0x2934 <= code && code <= 0x2935 ) || // E0.6 [2] (\u2934\uFE0F..\u2935\uFE0F) right arrow curving up..right arrow curving down\n\t\t( 0x2B05 <= code && code <= 0x2B07 ) || // E0.6 [3] (\u2B05\uFE0F..\u2B07\uFE0F) left arrow..down arrow\n\t\t( 0x2B1B <= code && code <= 0x2B1C ) || // E0.6 [2] (\u2B1B..\u2B1C) black large square..white large square\n\t\tcode === 0x2B50 || // E0.6 [1] (\u2B50) star\n\t\tcode === 0x2B55 || // E0.6 [1] (\u2B55) hollow red circle\n\t\tcode === 0x3030 || // E0.6 [1] (\u3030\uFE0F) wavy dash\n\t\tcode === 0x303D || // E0.6 [1] (\u303D\uFE0F) part alternation mark\n\t\tcode === 0x3297 || // E0.6 [1] (\u3297\uFE0F) Japanese \u201Ccongratulations\u201D button\n\t\tcode === 0x3299 || // E0.6 [1] (\u3299\uFE0F) Japanese \u201Csecret\u201D button\n\t\t( 0x1F000 <= code && code <= 0x1F003 ) || // E0.0 [4] (\uD83C\uDC00..\uD83C\uDC03) MAHJONG TILE EAST WIND..MAHJONG TILE NORTH WIND\n\t\tcode === 0x1F004 || // E0.6 [1] (\uD83C\uDC04) mahjong red dragon\n\t\t( 0x1F005 <= code && code <= 0x1F0CE ) || // E0.0 [202] (\uD83C\uDC05..\uD83C\uDCCE) MAHJONG TILE GREEN DRAGON..PLAYING CARD KING OF DIAMONDS\n\t\tcode === 0x1F0CF || // E0.6 [1] (\uD83C\uDCCF) joker\n\t\t( 0x1F0D0 <= code && code <= 0x1F0FF ) || // E0.0 [48] (\uD83C\uDCD0..\uD83C\uDCFF) ..\n\t\t( 0x1F10D <= code && code <= 0x1F10F ) || // E0.0 [3] (\uD83C\uDD0D..\uD83C\uDD0F) CIRCLED ZERO WITH SLASH..CIRCLED DOLLAR SIGN WITH OVERLAID BACKSLASH\n\t\tcode === 0x1F12F || // E0.0 [1] (\uD83C\uDD2F) COPYLEFT SYMBOL\n\t\t( 0x1F16C <= code && code <= 0x1F16F ) || // E0.0 [4] (\uD83C\uDD6C..\uD83C\uDD6F) RAISED MR SIGN..CIRCLED HUMAN FIGURE\n\t\t( 0x1F170 <= code && code <= 0x1F171 ) || // E0.6 [2] (\uD83C\uDD70\uFE0F..\uD83C\uDD71\uFE0F) A button (blood type)..B button (blood type)\n\t\t( 0x1F17E <= code && code <= 0x1F17F ) || // E0.6 [2] (\uD83C\uDD7E\uFE0F..\uD83C\uDD7F\uFE0F) O button (blood type)..P button\n\t\tcode === 0x1F18E || // E0.6 [1] (\uD83C\uDD8E) AB button (blood type)\n\t\t( 0x1F191 <= code && code <= 0x1F19A ) || // E0.6 [10] (\uD83C\uDD91..\uD83C\uDD9A) CL button..VS button\n\t\t( 0x1F1AD <= code && code <= 0x1F1E5 ) || // E0.0 [57] (\uD83C\uDDAD..\uD83C\uDDE5) MASK WORK SYMBOL..\n\t\t( 0x1F201 <= code && code <= 0x1F202 ) || // E0.6 [2] (\uD83C\uDE01..\uD83C\uDE02\uFE0F) Japanese \u201Chere\u201D button..Japanese \u201Cservice charge\u201D button\n\t\t( 0x1F203 <= code && code <= 0x1F20F ) || // E0.0 [13] (\uD83C\uDE03..\uD83C\uDE0F) ..\n\t\tcode === 0x1F21A || // E0.6 [1] (\uD83C\uDE1A) Japanese \u201Cfree of charge\u201D button\n\t\tcode === 0x1F22F || // E0.6 [1] (\uD83C\uDE2F) Japanese \u201Creserved\u201D button\n\t\t( 0x1F232 <= code && code <= 0x1F23A ) || // E0.6 [9] (\uD83C\uDE32..\uD83C\uDE3A) Japanese \u201Cprohibited\u201D button..Japanese \u201Copen for business\u201D button\n\t\t( 0x1F23C <= code && code <= 0x1F23F ) || // E0.0 [4] (\uD83C\uDE3C..\uD83C\uDE3F) ..\n\t\t( 0x1F249 <= code && code <= 0x1F24F ) || // E0.0 [7] (\uD83C\uDE49..\uD83C\uDE4F) ..\n\t\t( 0x1F250 <= code && code <= 0x1F251 ) || // E0.6 [2] (\uD83C\uDE50..\uD83C\uDE51) Japanese \u201Cbargain\u201D button..Japanese \u201Cacceptable\u201D button\n\t\t( 0x1F252 <= code && code <= 0x1F2FF ) || // E0.0 [174] (\uD83C\uDE52..\uD83C\uDEFF) ..\n\t\t( 0x1F300 <= code && code <= 0x1F30C ) || // E0.6 [13] (\uD83C\uDF00..\uD83C\uDF0C) cyclone..milky way\n\t\t( 0x1F30D <= code && code <= 0x1F30E ) || // E0.7 [2] (\uD83C\uDF0D..\uD83C\uDF0E) globe showing Europe-Africa..globe showing Americas\n\t\tcode === 0x1F30F || // E0.6 [1] (\uD83C\uDF0F) globe showing Asia-Australia\n\t\tcode === 0x1F310 || // E1.0 [1] (\uD83C\uDF10) globe with meridians\n\t\tcode === 0x1F311 || // E0.6 [1] (\uD83C\uDF11) new moon\n\t\tcode === 0x1F312 || // E1.0 [1] (\uD83C\uDF12) waxing crescent moon\n\t\t( 0x1F313 <= code && code <= 0x1F315 ) || // E0.6 [3] (\uD83C\uDF13..\uD83C\uDF15) first quarter moon..full moon\n\t\t( 0x1F316 <= code && code <= 0x1F318 ) || // E1.0 [3] (\uD83C\uDF16..\uD83C\uDF18) waning gibbous moon..waning crescent moon\n\t\tcode === 0x1F319 || // E0.6 [1] (\uD83C\uDF19) crescent moon\n\t\tcode === 0x1F31A || // E1.0 [1] (\uD83C\uDF1A) new moon face\n\t\tcode === 0x1F31B || // E0.6 [1] (\uD83C\uDF1B) first quarter moon face\n\t\tcode === 0x1F31C || // E0.7 [1] (\uD83C\uDF1C) last quarter moon face\n\t\t( 0x1F31D <= code && code <= 0x1F31E ) || // E1.0 [2] (\uD83C\uDF1D..\uD83C\uDF1E) full moon face..sun with face\n\t\t( 0x1F31F <= code && code <= 0x1F320 ) || // E0.6 [2] (\uD83C\uDF1F..\uD83C\uDF20) glowing star..shooting star\n\t\tcode === 0x1F321 || // E0.7 [1] (\uD83C\uDF21\uFE0F) thermometer\n\t\t( 0x1F322 <= code && code <= 0x1F323 ) || // E0.0 [2] (\uD83C\uDF22..\uD83C\uDF23) BLACK DROPLET..WHITE SUN\n\t\t( 0x1F324 <= code && code <= 0x1F32C ) || // E0.7 [9] (\uD83C\uDF24\uFE0F..\uD83C\uDF2C\uFE0F) sun behind small cloud..wind face\n\t\t( 0x1F32D <= code && code <= 0x1F32F ) || // E1.0 [3] (\uD83C\uDF2D..\uD83C\uDF2F) hot dog..burrito\n\t\t( 0x1F330 <= code && code <= 0x1F331 ) || // E0.6 [2] (\uD83C\uDF30..\uD83C\uDF31) chestnut..seedling\n\t\t( 0x1F332 <= code && code <= 0x1F333 ) || // E1.0 [2] (\uD83C\uDF32..\uD83C\uDF33) evergreen tree..deciduous tree\n\t\t( 0x1F334 <= code && code <= 0x1F335 ) || // E0.6 [2] (\uD83C\uDF34..\uD83C\uDF35) palm tree..cactus\n\t\tcode === 0x1F336 || // E0.7 [1] (\uD83C\uDF36\uFE0F) hot pepper\n\t\t( 0x1F337 <= code && code <= 0x1F34A ) || // E0.6 [20] (\uD83C\uDF37..\uD83C\uDF4A) tulip..tangerine\n\t\tcode === 0x1F34B || // E1.0 [1] (\uD83C\uDF4B) lemon\n\t\t( 0x1F34C <= code && code <= 0x1F34F ) || // E0.6 [4] (\uD83C\uDF4C..\uD83C\uDF4F) banana..green apple\n\t\tcode === 0x1F350 || // E1.0 [1] (\uD83C\uDF50) pear\n\t\t( 0x1F351 <= code && code <= 0x1F37B ) || // E0.6 [43] (\uD83C\uDF51..\uD83C\uDF7B) peach..clinking beer mugs\n\t\tcode === 0x1F37C || // E1.0 [1] (\uD83C\uDF7C) baby bottle\n\t\tcode === 0x1F37D || // E0.7 [1] (\uD83C\uDF7D\uFE0F) fork and knife with plate\n\t\t( 0x1F37E <= code && code <= 0x1F37F ) || // E1.0 [2] (\uD83C\uDF7E..\uD83C\uDF7F) bottle with popping cork..popcorn\n\t\t( 0x1F380 <= code && code <= 0x1F393 ) || // E0.6 [20] (\uD83C\uDF80..\uD83C\uDF93) ribbon..graduation cap\n\t\t( 0x1F394 <= code && code <= 0x1F395 ) || // E0.0 [2] (\uD83C\uDF94..\uD83C\uDF95) HEART WITH TIP ON THE LEFT..BOUQUET OF FLOWERS\n\t\t( 0x1F396 <= code && code <= 0x1F397 ) || // E0.7 [2] (\uD83C\uDF96\uFE0F..\uD83C\uDF97\uFE0F) military medal..reminder ribbon\n\t\tcode === 0x1F398 || // E0.0 [1] (\uD83C\uDF98) MUSICAL KEYBOARD WITH JACKS\n\t\t( 0x1F399 <= code && code <= 0x1F39B ) || // E0.7 [3] (\uD83C\uDF99\uFE0F..\uD83C\uDF9B\uFE0F) studio microphone..control knobs\n\t\t( 0x1F39C <= code && code <= 0x1F39D ) || // E0.0 [2] (\uD83C\uDF9C..\uD83C\uDF9D) BEAMED ASCENDING MUSICAL NOTES..BEAMED DESCENDING MUSICAL NOTES\n\t\t( 0x1F39E <= code && code <= 0x1F39F ) || // E0.7 [2] (\uD83C\uDF9E\uFE0F..\uD83C\uDF9F\uFE0F) film frames..admission tickets\n\t\t( 0x1F3A0 <= code && code <= 0x1F3C4 ) || // E0.6 [37] (\uD83C\uDFA0..\uD83C\uDFC4) carousel horse..person surfing\n\t\tcode === 0x1F3C5 || // E1.0 [1] (\uD83C\uDFC5) sports medal\n\t\tcode === 0x1F3C6 || // E0.6 [1] (\uD83C\uDFC6) trophy\n\t\tcode === 0x1F3C7 || // E1.0 [1] (\uD83C\uDFC7) horse racing\n\t\tcode === 0x1F3C8 || // E0.6 [1] (\uD83C\uDFC8) american football\n\t\tcode === 0x1F3C9 || // E1.0 [1] (\uD83C\uDFC9) rugby football\n\t\tcode === 0x1F3CA || // E0.6 [1] (\uD83C\uDFCA) person swimming\n\t\t( 0x1F3CB <= code && code <= 0x1F3CE ) || // E0.7 [4] (\uD83C\uDFCB\uFE0F..\uD83C\uDFCE\uFE0F) person lifting weights..racing car\n\t\t( 0x1F3CF <= code && code <= 0x1F3D3 ) || // E1.0 [5] (\uD83C\uDFCF..\uD83C\uDFD3) cricket game..ping pong\n\t\t( 0x1F3D4 <= code && code <= 0x1F3DF ) || // E0.7 [12] (\uD83C\uDFD4\uFE0F..\uD83C\uDFDF\uFE0F) snow-capped mountain..stadium\n\t\t( 0x1F3E0 <= code && code <= 0x1F3E3 ) || // E0.6 [4] (\uD83C\uDFE0..\uD83C\uDFE3) house..Japanese post office\n\t\tcode === 0x1F3E4 || // E1.0 [1] (\uD83C\uDFE4) post office\n\t\t( 0x1F3E5 <= code && code <= 0x1F3F0 ) || // E0.6 [12] (\uD83C\uDFE5..\uD83C\uDFF0) hospital..castle\n\t\t( 0x1F3F1 <= code && code <= 0x1F3F2 ) || // E0.0 [2] (\uD83C\uDFF1..\uD83C\uDFF2) WHITE PENNANT..BLACK PENNANT\n\t\tcode === 0x1F3F3 || // E0.7 [1] (\uD83C\uDFF3\uFE0F) white flag\n\t\tcode === 0x1F3F4 || // E1.0 [1] (\uD83C\uDFF4) black flag\n\t\tcode === 0x1F3F5 || // E0.7 [1] (\uD83C\uDFF5\uFE0F) rosette\n\t\tcode === 0x1F3F6 || // E0.0 [1] (\uD83C\uDFF6) BLACK ROSETTE\n\t\tcode === 0x1F3F7 || // E0.7 [1] (\uD83C\uDFF7\uFE0F) label\n\t\t( 0x1F3F8 <= code && code <= 0x1F3FA ) || // E1.0 [3] (\uD83C\uDFF8..\uD83C\uDFFA) badminton..amphora\n\t\t( 0x1F400 <= code && code <= 0x1F407 ) || // E1.0 [8] (\uD83D\uDC00..\uD83D\uDC07) rat..rabbit\n\t\tcode === 0x1F408 || // E0.7 [1] (\uD83D\uDC08) cat\n\t\t( 0x1F409 <= code && code <= 0x1F40B ) || // E1.0 [3] (\uD83D\uDC09..\uD83D\uDC0B) dragon..whale\n\t\t( 0x1F40C <= code && code <= 0x1F40E ) || // E0.6 [3] (\uD83D\uDC0C..\uD83D\uDC0E) snail..horse\n\t\t( 0x1F40F <= code && code <= 0x1F410 ) || // E1.0 [2] (\uD83D\uDC0F..\uD83D\uDC10) ram..goat\n\t\t( 0x1F411 <= code && code <= 0x1F412 ) || // E0.6 [2] (\uD83D\uDC11..\uD83D\uDC12) ewe..monkey\n\t\tcode === 0x1F413 || // E1.0 [1] (\uD83D\uDC13) rooster\n\t\tcode === 0x1F414 || // E0.6 [1] (\uD83D\uDC14) chicken\n\t\tcode === 0x1F415 || // E0.7 [1] (\uD83D\uDC15) dog\n\t\tcode === 0x1F416 || // E1.0 [1] (\uD83D\uDC16) pig\n\t\t( 0x1F417 <= code && code <= 0x1F429 ) || // E0.6 [19] (\uD83D\uDC17..\uD83D\uDC29) boar..poodle\n\t\tcode === 0x1F42A || // E1.0 [1] (\uD83D\uDC2A) camel\n\t\t( 0x1F42B <= code && code <= 0x1F43E ) || // E0.6 [20] (\uD83D\uDC2B..\uD83D\uDC3E) two-hump camel..paw prints\n\t\tcode === 0x1F43F || // E0.7 [1] (\uD83D\uDC3F\uFE0F) chipmunk\n\t\tcode === 0x1F440 || // E0.6 [1] (\uD83D\uDC40) eyes\n\t\tcode === 0x1F441 || // E0.7 [1] (\uD83D\uDC41\uFE0F) eye\n\t\t( 0x1F442 <= code && code <= 0x1F464 ) || // E0.6 [35] (\uD83D\uDC42..\uD83D\uDC64) ear..bust in silhouette\n\t\tcode === 0x1F465 || // E1.0 [1] (\uD83D\uDC65) busts in silhouette\n\t\t( 0x1F466 <= code && code <= 0x1F46B ) || // E0.6 [6] (\uD83D\uDC66..\uD83D\uDC6B) boy..woman and man holding hands\n\t\t( 0x1F46C <= code && code <= 0x1F46D ) || // E1.0 [2] (\uD83D\uDC6C..\uD83D\uDC6D) men holding hands..women holding hands\n\t\t( 0x1F46E <= code && code <= 0x1F4AC ) || // E0.6 [63] (\uD83D\uDC6E..\uD83D\uDCAC) police officer..speech balloon\n\t\tcode === 0x1F4AD || // E1.0 [1] (\uD83D\uDCAD) thought balloon\n\t\t( 0x1F4AE <= code && code <= 0x1F4B5 ) || // E0.6 [8] (\uD83D\uDCAE..\uD83D\uDCB5) white flower..dollar banknote\n\t\t( 0x1F4B6 <= code && code <= 0x1F4B7 ) || // E1.0 [2] (\uD83D\uDCB6..\uD83D\uDCB7) euro banknote..pound banknote\n\t\t( 0x1F4B8 <= code && code <= 0x1F4EB ) || // E0.6 [52] (\uD83D\uDCB8..\uD83D\uDCEB) money with wings..closed mailbox with raised flag\n\t\t( 0x1F4EC <= code && code <= 0x1F4ED ) || // E0.7 [2] (\uD83D\uDCEC..\uD83D\uDCED) open mailbox with raised flag..open mailbox with lowered flag\n\t\tcode === 0x1F4EE || // E0.6 [1] (\uD83D\uDCEE) postbox\n\t\tcode === 0x1F4EF || // E1.0 [1] (\uD83D\uDCEF) postal horn\n\t\t( 0x1F4F0 <= code && code <= 0x1F4F4 ) || // E0.6 [5] (\uD83D\uDCF0..\uD83D\uDCF4) newspaper..mobile phone off\n\t\tcode === 0x1F4F5 || // E1.0 [1] (\uD83D\uDCF5) no mobile phones\n\t\t( 0x1F4F6 <= code && code <= 0x1F4F7 ) || // E0.6 [2] (\uD83D\uDCF6..\uD83D\uDCF7) antenna bars..camera\n\t\tcode === 0x1F4F8 || // E1.0 [1] (\uD83D\uDCF8) camera with flash\n\t\t( 0x1F4F9 <= code && code <= 0x1F4FC ) || // E0.6 [4] (\uD83D\uDCF9..\uD83D\uDCFC) video camera..videocassette\n\t\tcode === 0x1F4FD || // E0.7 [1] (\uD83D\uDCFD\uFE0F) film projector\n\t\tcode === 0x1F4FE || // E0.0 [1] (\uD83D\uDCFE) PORTABLE STEREO\n\t\t( 0x1F4FF <= code && code <= 0x1F502 ) || // E1.0 [4] (\uD83D\uDCFF..\uD83D\uDD02) prayer beads..repeat single button\n\t\tcode === 0x1F503 || // E0.6 [1] (\uD83D\uDD03) clockwise vertical arrows\n\t\t( 0x1F504 <= code && code <= 0x1F507 ) || // E1.0 [4] (\uD83D\uDD04..\uD83D\uDD07) counterclockwise arrows button..muted speaker\n\t\tcode === 0x1F508 || // E0.7 [1] (\uD83D\uDD08) speaker low volume\n\t\tcode === 0x1F509 || // E1.0 [1] (\uD83D\uDD09) speaker medium volume\n\t\t( 0x1F50A <= code && code <= 0x1F514 ) || // E0.6 [11] (\uD83D\uDD0A..\uD83D\uDD14) speaker high volume..bell\n\t\tcode === 0x1F515 || // E1.0 [1] (\uD83D\uDD15) bell with slash\n\t\t( 0x1F516 <= code && code <= 0x1F52B ) || // E0.6 [22] (\uD83D\uDD16..\uD83D\uDD2B) bookmark..pistol\n\t\t( 0x1F52C <= code && code <= 0x1F52D ) || // E1.0 [2] (\uD83D\uDD2C..\uD83D\uDD2D) microscope..telescope\n\t\t( 0x1F52E <= code && code <= 0x1F53D ) || // E0.6 [16] (\uD83D\uDD2E..\uD83D\uDD3D) crystal ball..downwards button\n\t\t( 0x1F546 <= code && code <= 0x1F548 ) || // E0.0 [3] (\uD83D\uDD46..\uD83D\uDD48) WHITE LATIN CROSS..CELTIC CROSS\n\t\t( 0x1F549 <= code && code <= 0x1F54A ) || // E0.7 [2] (\uD83D\uDD49\uFE0F..\uD83D\uDD4A\uFE0F) om..dove\n\t\t( 0x1F54B <= code && code <= 0x1F54E ) || // E1.0 [4] (\uD83D\uDD4B..\uD83D\uDD4E) kaaba..menorah\n\t\tcode === 0x1F54F || // E0.0 [1] (\uD83D\uDD4F) BOWL OF HYGIEIA\n\t\t( 0x1F550 <= code && code <= 0x1F55B ) || // E0.6 [12] (\uD83D\uDD50..\uD83D\uDD5B) one o\u2019clock..twelve o\u2019clock\n\t\t( 0x1F55C <= code && code <= 0x1F567 ) || // E0.7 [12] (\uD83D\uDD5C..\uD83D\uDD67) one-thirty..twelve-thirty\n\t\t( 0x1F568 <= code && code <= 0x1F56E ) || // E0.0 [7] (\uD83D\uDD68..\uD83D\uDD6E) RIGHT SPEAKER..BOOK\n\t\t( 0x1F56F <= code && code <= 0x1F570 ) || // E0.7 [2] (\uD83D\uDD6F\uFE0F..\uD83D\uDD70\uFE0F) candle..mantelpiece clock\n\t\t( 0x1F571 <= code && code <= 0x1F572 ) || // E0.0 [2] (\uD83D\uDD71..\uD83D\uDD72) BLACK SKULL AND CROSSBONES..NO PIRACY\n\t\t( 0x1F573 <= code && code <= 0x1F579 ) || // E0.7 [7] (\uD83D\uDD73\uFE0F..\uD83D\uDD79\uFE0F) hole..joystick\n\t\tcode === 0x1F57A || // E3.0 [1] (\uD83D\uDD7A) man dancing\n\t\t( 0x1F57B <= code && code <= 0x1F586 ) || // E0.0 [12] (\uD83D\uDD7B..\uD83D\uDD86) LEFT HAND TELEPHONE RECEIVER..PEN OVER STAMPED ENVELOPE\n\t\tcode === 0x1F587 || // E0.7 [1] (\uD83D\uDD87\uFE0F) linked paperclips\n\t\t( 0x1F588 <= code && code <= 0x1F589 ) || // E0.0 [2] (\uD83D\uDD88..\uD83D\uDD89) BLACK PUSHPIN..LOWER LEFT PENCIL\n\t\t( 0x1F58A <= code && code <= 0x1F58D ) || // E0.7 [4] (\uD83D\uDD8A\uFE0F..\uD83D\uDD8D\uFE0F) pen..crayon\n\t\t( 0x1F58E <= code && code <= 0x1F58F ) || // E0.0 [2] (\uD83D\uDD8E..\uD83D\uDD8F) LEFT WRITING HAND..TURNED OK HAND SIGN\n\t\tcode === 0x1F590 || // E0.7 [1] (\uD83D\uDD90\uFE0F) hand with fingers splayed\n\t\t( 0x1F591 <= code && code <= 0x1F594 ) || // E0.0 [4] (\uD83D\uDD91..\uD83D\uDD94) REVERSED RAISED HAND WITH FINGERS SPLAYED..REVERSED VICTORY HAND\n\t\t( 0x1F595 <= code && code <= 0x1F596 ) || // E1.0 [2] (\uD83D\uDD95..\uD83D\uDD96) middle finger..vulcan salute\n\t\t( 0x1F597 <= code && code <= 0x1F5A3 ) || // E0.0 [13] (\uD83D\uDD97..\uD83D\uDDA3) WHITE DOWN POINTING LEFT HAND INDEX..BLACK DOWN POINTING BACKHAND INDEX\n\t\tcode === 0x1F5A4 || // E3.0 [1] (\uD83D\uDDA4) black heart\n\t\tcode === 0x1F5A5 || // E0.7 [1] (\uD83D\uDDA5\uFE0F) desktop computer\n\t\t( 0x1F5A6 <= code && code <= 0x1F5A7 ) || // E0.0 [2] (\uD83D\uDDA6..\uD83D\uDDA7) KEYBOARD AND MOUSE..THREE NETWORKED COMPUTERS\n\t\tcode === 0x1F5A8 || // E0.7 [1] (\uD83D\uDDA8\uFE0F) printer\n\t\t( 0x1F5A9 <= code && code <= 0x1F5B0 ) || // E0.0 [8] (\uD83D\uDDA9..\uD83D\uDDB0) POCKET CALCULATOR..TWO BUTTON MOUSE\n\t\t( 0x1F5B1 <= code && code <= 0x1F5B2 ) || // E0.7 [2] (\uD83D\uDDB1\uFE0F..\uD83D\uDDB2\uFE0F) computer mouse..trackball\n\t\t( 0x1F5B3 <= code && code <= 0x1F5BB ) || // E0.0 [9] (\uD83D\uDDB3..\uD83D\uDDBB) OLD PERSONAL COMPUTER..DOCUMENT WITH PICTURE\n\t\tcode === 0x1F5BC || // E0.7 [1] (\uD83D\uDDBC\uFE0F) framed picture\n\t\t( 0x1F5BD <= code && code <= 0x1F5C1 ) || // E0.0 [5] (\uD83D\uDDBD..\uD83D\uDDC1) FRAME WITH TILES..OPEN FOLDER\n\t\t( 0x1F5C2 <= code && code <= 0x1F5C4 ) || // E0.7 [3] (\uD83D\uDDC2\uFE0F..\uD83D\uDDC4\uFE0F) card index dividers..file cabinet\n\t\t( 0x1F5C5 <= code && code <= 0x1F5D0 ) || // E0.0 [12] (\uD83D\uDDC5..\uD83D\uDDD0) EMPTY NOTE..PAGES\n\t\t( 0x1F5D1 <= code && code <= 0x1F5D3 ) || // E0.7 [3] (\uD83D\uDDD1\uFE0F..\uD83D\uDDD3\uFE0F) wastebasket..spiral calendar\n\t\t( 0x1F5D4 <= code && code <= 0x1F5DB ) || // E0.0 [8] (\uD83D\uDDD4..\uD83D\uDDDB) DESKTOP WINDOW..DECREASE FONT SIZE SYMBOL\n\t\t( 0x1F5DC <= code && code <= 0x1F5DE ) || // E0.7 [3] (\uD83D\uDDDC\uFE0F..\uD83D\uDDDE\uFE0F) clamp..rolled-up newspaper\n\t\t( 0x1F5DF <= code && code <= 0x1F5E0 ) || // E0.0 [2] (\uD83D\uDDDF..\uD83D\uDDE0) PAGE WITH CIRCLED TEXT..STOCK CHART\n\t\tcode === 0x1F5E1 || // E0.7 [1] (\uD83D\uDDE1\uFE0F) dagger\n\t\tcode === 0x1F5E2 || // E0.0 [1] (\uD83D\uDDE2) LIPS\n\t\tcode === 0x1F5E3 || // E0.7 [1] (\uD83D\uDDE3\uFE0F) speaking head\n\t\t( 0x1F5E4 <= code && code <= 0x1F5E7 ) || // E0.0 [4] (\uD83D\uDDE4..\uD83D\uDDE7) THREE RAYS ABOVE..THREE RAYS RIGHT\n\t\tcode === 0x1F5E8 || // E2.0 [1] (\uD83D\uDDE8\uFE0F) left speech bubble\n\t\t( 0x1F5E9 <= code && code <= 0x1F5EE ) || // E0.0 [6] (\uD83D\uDDE9..\uD83D\uDDEE) RIGHT SPEECH BUBBLE..LEFT ANGER BUBBLE\n\t\tcode === 0x1F5EF || // E0.7 [1] (\uD83D\uDDEF\uFE0F) right anger bubble\n\t\t( 0x1F5F0 <= code && code <= 0x1F5F2 ) || // E0.0 [3] (\uD83D\uDDF0..\uD83D\uDDF2) MOOD BUBBLE..LIGHTNING MOOD\n\t\tcode === 0x1F5F3 || // E0.7 [1] (\uD83D\uDDF3\uFE0F) ballot box with ballot\n\t\t( 0x1F5F4 <= code && code <= 0x1F5F9 ) || // E0.0 [6] (\uD83D\uDDF4..\uD83D\uDDF9) BALLOT SCRIPT X..BALLOT BOX WITH BOLD CHECK\n\t\tcode === 0x1F5FA || // E0.7 [1] (\uD83D\uDDFA\uFE0F) world map\n\t\t( 0x1F5FB <= code && code <= 0x1F5FF ) || // E0.6 [5] (\uD83D\uDDFB..\uD83D\uDDFF) mount fuji..moai\n\t\tcode === 0x1F600 || // E1.0 [1] (\uD83D\uDE00) grinning face\n\t\t( 0x1F601 <= code && code <= 0x1F606 ) || // E0.6 [6] (\uD83D\uDE01..\uD83D\uDE06) beaming face with smiling eyes..grinning squinting face\n\t\t( 0x1F607 <= code && code <= 0x1F608 ) || // E1.0 [2] (\uD83D\uDE07..\uD83D\uDE08) smiling face with halo..smiling face with horns\n\t\t( 0x1F609 <= code && code <= 0x1F60D ) || // E0.6 [5] (\uD83D\uDE09..\uD83D\uDE0D) winking face..smiling face with heart-eyes\n\t\tcode === 0x1F60E || // E1.0 [1] (\uD83D\uDE0E) smiling face with sunglasses\n\t\tcode === 0x1F60F || // E0.6 [1] (\uD83D\uDE0F) smirking face\n\t\tcode === 0x1F610 || // E0.7 [1] (\uD83D\uDE10) neutral face\n\t\tcode === 0x1F611 || // E1.0 [1] (\uD83D\uDE11) expressionless face\n\t\t( 0x1F612 <= code && code <= 0x1F614 ) || // E0.6 [3] (\uD83D\uDE12..\uD83D\uDE14) unamused face..pensive face\n\t\tcode === 0x1F615 || // E1.0 [1] (\uD83D\uDE15) confused face\n\t\tcode === 0x1F616 || // E0.6 [1] (\uD83D\uDE16) confounded face\n\t\tcode === 0x1F617 || // E1.0 [1] (\uD83D\uDE17) kissing face\n\t\tcode === 0x1F618 || // E0.6 [1] (\uD83D\uDE18) face blowing a kiss\n\t\tcode === 0x1F619 || // E1.0 [1] (\uD83D\uDE19) kissing face with smiling eyes\n\t\tcode === 0x1F61A || // E0.6 [1] (\uD83D\uDE1A) kissing face with closed eyes\n\t\tcode === 0x1F61B || // E1.0 [1] (\uD83D\uDE1B) face with tongue\n\t\t( 0x1F61C <= code && code <= 0x1F61E ) || // E0.6 [3] (\uD83D\uDE1C..\uD83D\uDE1E) winking face with tongue..disappointed face\n\t\tcode === 0x1F61F || // E1.0 [1] (\uD83D\uDE1F) worried face\n\t\t( 0x1F620 <= code && code <= 0x1F625 ) || // E0.6 [6] (\uD83D\uDE20..\uD83D\uDE25) angry face..sad but relieved face\n\t\t( 0x1F626 <= code && code <= 0x1F627 ) || // E1.0 [2] (\uD83D\uDE26..\uD83D\uDE27) frowning face with open mouth..anguished face\n\t\t( 0x1F628 <= code && code <= 0x1F62B ) || // E0.6 [4] (\uD83D\uDE28..\uD83D\uDE2B) fearful face..tired face\n\t\tcode === 0x1F62C || // E1.0 [1] (\uD83D\uDE2C) grimacing face\n\t\tcode === 0x1F62D || // E0.6 [1] (\uD83D\uDE2D) loudly crying face\n\t\t( 0x1F62E <= code && code <= 0x1F62F ) || // E1.0 [2] (\uD83D\uDE2E..\uD83D\uDE2F) face with open mouth..hushed face\n\t\t( 0x1F630 <= code && code <= 0x1F633 ) || // E0.6 [4] (\uD83D\uDE30..\uD83D\uDE33) anxious face with sweat..flushed face\n\t\tcode === 0x1F634 || // E1.0 [1] (\uD83D\uDE34) sleeping face\n\t\tcode === 0x1F635 || // E0.6 [1] (\uD83D\uDE35) dizzy face\n\t\tcode === 0x1F636 || // E1.0 [1] (\uD83D\uDE36) face without mouth\n\t\t( 0x1F637 <= code && code <= 0x1F640 ) || // E0.6 [10] (\uD83D\uDE37..\uD83D\uDE40) face with medical mask..weary cat\n\t\t( 0x1F641 <= code && code <= 0x1F644 ) || // E1.0 [4] (\uD83D\uDE41..\uD83D\uDE44) slightly frowning face..face with rolling eyes\n\t\t( 0x1F645 <= code && code <= 0x1F64F ) || // E0.6 [11] (\uD83D\uDE45..\uD83D\uDE4F) person gesturing NO..folded hands\n\t\tcode === 0x1F680 || // E0.6 [1] (\uD83D\uDE80) rocket\n\t\t( 0x1F681 <= code && code <= 0x1F682 ) || // E1.0 [2] (\uD83D\uDE81..\uD83D\uDE82) helicopter..locomotive\n\t\t( 0x1F683 <= code && code <= 0x1F685 ) || // E0.6 [3] (\uD83D\uDE83..\uD83D\uDE85) railway car..bullet train\n\t\tcode === 0x1F686 || // E1.0 [1] (\uD83D\uDE86) train\n\t\tcode === 0x1F687 || // E0.6 [1] (\uD83D\uDE87) metro\n\t\tcode === 0x1F688 || // E1.0 [1] (\uD83D\uDE88) light rail\n\t\tcode === 0x1F689 || // E0.6 [1] (\uD83D\uDE89) station\n\t\t( 0x1F68A <= code && code <= 0x1F68B ) || // E1.0 [2] (\uD83D\uDE8A..\uD83D\uDE8B) tram..tram car\n\t\tcode === 0x1F68C || // E0.6 [1] (\uD83D\uDE8C) bus\n\t\tcode === 0x1F68D || // E0.7 [1] (\uD83D\uDE8D) oncoming bus\n\t\tcode === 0x1F68E || // E1.0 [1] (\uD83D\uDE8E) trolleybus\n\t\tcode === 0x1F68F || // E0.6 [1] (\uD83D\uDE8F) bus stop\n\t\tcode === 0x1F690 || // E1.0 [1] (\uD83D\uDE90) minibus\n\t\t( 0x1F691 <= code && code <= 0x1F693 ) || // E0.6 [3] (\uD83D\uDE91..\uD83D\uDE93) ambulance..police car\n\t\tcode === 0x1F694 || // E0.7 [1] (\uD83D\uDE94) oncoming police car\n\t\tcode === 0x1F695 || // E0.6 [1] (\uD83D\uDE95) taxi\n\t\tcode === 0x1F696 || // E1.0 [1] (\uD83D\uDE96) oncoming taxi\n\t\tcode === 0x1F697 || // E0.6 [1] (\uD83D\uDE97) automobile\n\t\tcode === 0x1F698 || // E0.7 [1] (\uD83D\uDE98) oncoming automobile\n\t\t( 0x1F699 <= code && code <= 0x1F69A ) || // E0.6 [2] (\uD83D\uDE99..\uD83D\uDE9A) sport utility vehicle..delivery truck\n\t\t( 0x1F69B <= code && code <= 0x1F6A1 ) || // E1.0 [7] (\uD83D\uDE9B..\uD83D\uDEA1) articulated lorry..aerial tramway\n\t\tcode === 0x1F6A2 || // E0.6 [1] (\uD83D\uDEA2) ship\n\t\tcode === 0x1F6A3 || // E1.0 [1] (\uD83D\uDEA3) person rowing boat\n\t\t( 0x1F6A4 <= code && code <= 0x1F6A5 ) || // E0.6 [2] (\uD83D\uDEA4..\uD83D\uDEA5) speedboat..horizontal traffic light\n\t\tcode === 0x1F6A6 || // E1.0 [1] (\uD83D\uDEA6) vertical traffic light\n\t\t( 0x1F6A7 <= code && code <= 0x1F6AD ) || // E0.6 [7] (\uD83D\uDEA7..\uD83D\uDEAD) construction..no smoking\n\t\t( 0x1F6AE <= code && code <= 0x1F6B1 ) || // E1.0 [4] (\uD83D\uDEAE..\uD83D\uDEB1) litter in bin sign..non-potable water\n\t\tcode === 0x1F6B2 || // E0.6 [1] (\uD83D\uDEB2) bicycle\n\t\t( 0x1F6B3 <= code && code <= 0x1F6B5 ) || // E1.0 [3] (\uD83D\uDEB3..\uD83D\uDEB5) no bicycles..person mountain biking\n\t\tcode === 0x1F6B6 || // E0.6 [1] (\uD83D\uDEB6) person walking\n\t\t( 0x1F6B7 <= code && code <= 0x1F6B8 ) || // E1.0 [2] (\uD83D\uDEB7..\uD83D\uDEB8) no pedestrians..children crossing\n\t\t( 0x1F6B9 <= code && code <= 0x1F6BE ) || // E0.6 [6] (\uD83D\uDEB9..\uD83D\uDEBE) men\u2019s room..water closet\n\t\tcode === 0x1F6BF || // E1.0 [1] (\uD83D\uDEBF) shower\n\t\tcode === 0x1F6C0 || // E0.6 [1] (\uD83D\uDEC0) person taking bath\n\t\t( 0x1F6C1 <= code && code <= 0x1F6C5 ) || // E1.0 [5] (\uD83D\uDEC1..\uD83D\uDEC5) bathtub..left luggage\n\t\t( 0x1F6C6 <= code && code <= 0x1F6CA ) || // E0.0 [5] (\uD83D\uDEC6..\uD83D\uDECA) TRIANGLE WITH ROUNDED CORNERS..GIRLS SYMBOL\n\t\tcode === 0x1F6CB || // E0.7 [1] (\uD83D\uDECB\uFE0F) couch and lamp\n\t\tcode === 0x1F6CC || // E1.0 [1] (\uD83D\uDECC) person in bed\n\t\t( 0x1F6CD <= code && code <= 0x1F6CF ) || // E0.7 [3] (\uD83D\uDECD\uFE0F..\uD83D\uDECF\uFE0F) shopping bags..bed\n\t\tcode === 0x1F6D0 || // E1.0 [1] (\uD83D\uDED0) place of worship\n\t\t( 0x1F6D1 <= code && code <= 0x1F6D2 ) || // E3.0 [2] (\uD83D\uDED1..\uD83D\uDED2) stop sign..shopping cart\n\t\t( 0x1F6D3 <= code && code <= 0x1F6D4 ) || // E0.0 [2] (\uD83D\uDED3..\uD83D\uDED4) STUPA..PAGODA\n\t\tcode === 0x1F6D5 || // E12.0 [1] (\uD83D\uDED5) hindu temple\n\t\t( 0x1F6D6 <= code && code <= 0x1F6D7 ) || // E13.0 [2] (\uD83D\uDED6..\uD83D\uDED7) hut..elevator\n\t\t( 0x1F6D8 <= code && code <= 0x1F6DF ) || // E0.0 [8] (\uD83D\uDED8..\uD83D\uDEDF) ..\n\t\t( 0x1F6E0 <= code && code <= 0x1F6E5 ) || // E0.7 [6] (\uD83D\uDEE0\uFE0F..\uD83D\uDEE5\uFE0F) hammer and wrench..motor boat\n\t\t( 0x1F6E6 <= code && code <= 0x1F6E8 ) || // E0.0 [3] (\uD83D\uDEE6..\uD83D\uDEE8) UP-POINTING MILITARY AIRPLANE..UP-POINTING SMALL AIRPLANE\n\t\tcode === 0x1F6E9 || // E0.7 [1] (\uD83D\uDEE9\uFE0F) small airplane\n\t\tcode === 0x1F6EA || // E0.0 [1] (\uD83D\uDEEA) NORTHEAST-POINTING AIRPLANE\n\t\t( 0x1F6EB <= code && code <= 0x1F6EC ) || // E1.0 [2] (\uD83D\uDEEB..\uD83D\uDEEC) airplane departure..airplane arrival\n\t\t( 0x1F6ED <= code && code <= 0x1F6EF ) || // E0.0 [3] (\uD83D\uDEED..\uD83D\uDEEF) ..\n\t\tcode === 0x1F6F0 || // E0.7 [1] (\uD83D\uDEF0\uFE0F) satellite\n\t\t( 0x1F6F1 <= code && code <= 0x1F6F2 ) || // E0.0 [2] (\uD83D\uDEF1..\uD83D\uDEF2) ONCOMING FIRE ENGINE..DIESEL LOCOMOTIVE\n\t\tcode === 0x1F6F3 || // E0.7 [1] (\uD83D\uDEF3\uFE0F) passenger ship\n\t\t( 0x1F6F4 <= code && code <= 0x1F6F6 ) || // E3.0 [3] (\uD83D\uDEF4..\uD83D\uDEF6) kick scooter..canoe\n\t\t( 0x1F6F7 <= code && code <= 0x1F6F8 ) || // E5.0 [2] (\uD83D\uDEF7..\uD83D\uDEF8) sled..flying saucer\n\t\tcode === 0x1F6F9 || // E11.0 [1] (\uD83D\uDEF9) skateboard\n\t\tcode === 0x1F6FA || // E12.0 [1] (\uD83D\uDEFA) auto rickshaw\n\t\t( 0x1F6FB <= code && code <= 0x1F6FC ) || // E13.0 [2] (\uD83D\uDEFB..\uD83D\uDEFC) pickup truck..roller skate\n\t\t( 0x1F6FD <= code && code <= 0x1F6FF ) || // E0.0 [3] (\uD83D\uDEFD..\uD83D\uDEFF) ..\n\t\t( 0x1F774 <= code && code <= 0x1F77F ) || // E0.0 [12] (\uD83D\uDF74..\uD83D\uDF7F) ..\n\t\t( 0x1F7D5 <= code && code <= 0x1F7DF ) || // E0.0 [11] (\uD83D\uDFD5..\uD83D\uDFDF) CIRCLED TRIANGLE..\n\t\t( 0x1F7E0 <= code && code <= 0x1F7EB ) || // E12.0 [12] (\uD83D\uDFE0..\uD83D\uDFEB) orange circle..brown square\n\t\t( 0x1F7EC <= code && code <= 0x1F7FF ) || // E0.0 [20] (\uD83D\uDFEC..\uD83D\uDFFF) ..\n\t\t( 0x1F80C <= code && code <= 0x1F80F ) || // E0.0 [4] (\uD83E\uDC0C..\uD83E\uDC0F) ..\n\t\t( 0x1F848 <= code && code <= 0x1F84F ) || // E0.0 [8] (\uD83E\uDC48..\uD83E\uDC4F) ..\n\t\t( 0x1F85A <= code && code <= 0x1F85F ) || // E0.0 [6] (\uD83E\uDC5A..\uD83E\uDC5F) ..\n\t\t( 0x1F888 <= code && code <= 0x1F88F ) || // E0.0 [8] (\uD83E\uDC88..\uD83E\uDC8F) ..\n\t\t( 0x1F8AE <= code && code <= 0x1F8FF ) || // E0.0 [82] (\uD83E\uDCAE..\uD83E\uDCFF) ..\n\t\tcode === 0x1F90C || // E13.0 [1] (\uD83E\uDD0C) pinched fingers\n\t\t( 0x1F90D <= code && code <= 0x1F90F ) || // E12.0 [3] (\uD83E\uDD0D..\uD83E\uDD0F) white heart..pinching hand\n\t\t( 0x1F910 <= code && code <= 0x1F918 ) || // E1.0 [9] (\uD83E\uDD10..\uD83E\uDD18) zipper-mouth face..sign of the horns\n\t\t( 0x1F919 <= code && code <= 0x1F91E ) || // E3.0 [6] (\uD83E\uDD19..\uD83E\uDD1E) call me hand..crossed fingers\n\t\tcode === 0x1F91F || // E5.0 [1] (\uD83E\uDD1F) love-you gesture\n\t\t( 0x1F920 <= code && code <= 0x1F927 ) || // E3.0 [8] (\uD83E\uDD20..\uD83E\uDD27) cowboy hat face..sneezing face\n\t\t( 0x1F928 <= code && code <= 0x1F92F ) || // E5.0 [8] (\uD83E\uDD28..\uD83E\uDD2F) face with raised eyebrow..exploding head\n\t\tcode === 0x1F930 || // E3.0 [1] (\uD83E\uDD30) pregnant woman\n\t\t( 0x1F931 <= code && code <= 0x1F932 ) || // E5.0 [2] (\uD83E\uDD31..\uD83E\uDD32) breast-feeding..palms up together\n\t\t( 0x1F933 <= code && code <= 0x1F93A ) || // E3.0 [8] (\uD83E\uDD33..\uD83E\uDD3A) selfie..person fencing\n\t\t( 0x1F93C <= code && code <= 0x1F93E ) || // E3.0 [3] (\uD83E\uDD3C..\uD83E\uDD3E) people wrestling..person playing handball\n\t\tcode === 0x1F93F || // E12.0 [1] (\uD83E\uDD3F) diving mask\n\t\t( 0x1F940 <= code && code <= 0x1F945 ) || // E3.0 [6] (\uD83E\uDD40..\uD83E\uDD45) wilted flower..goal net\n\t\t( 0x1F947 <= code && code <= 0x1F94B ) || // E3.0 [5] (\uD83E\uDD47..\uD83E\uDD4B) 1st place medal..martial arts uniform\n\t\tcode === 0x1F94C || // E5.0 [1] (\uD83E\uDD4C) curling stone\n\t\t( 0x1F94D <= code && code <= 0x1F94F ) || // E11.0 [3] (\uD83E\uDD4D..\uD83E\uDD4F) lacrosse..flying disc\n\t\t( 0x1F950 <= code && code <= 0x1F95E ) || // E3.0 [15] (\uD83E\uDD50..\uD83E\uDD5E) croissant..pancakes\n\t\t( 0x1F95F <= code && code <= 0x1F96B ) || // E5.0 [13] (\uD83E\uDD5F..\uD83E\uDD6B) dumpling..canned food\n\t\t( 0x1F96C <= code && code <= 0x1F970 ) || // E11.0 [5] (\uD83E\uDD6C..\uD83E\uDD70) leafy green..smiling face with hearts\n\t\tcode === 0x1F971 || // E12.0 [1] (\uD83E\uDD71) yawning face\n\t\tcode === 0x1F972 || // E13.0 [1] (\uD83E\uDD72) smiling face with tear\n\t\t( 0x1F973 <= code && code <= 0x1F976 ) || // E11.0 [4] (\uD83E\uDD73..\uD83E\uDD76) partying face..cold face\n\t\t( 0x1F977 <= code && code <= 0x1F978 ) || // E13.0 [2] (\uD83E\uDD77..\uD83E\uDD78) ninja..disguised face\n\t\tcode === 0x1F979 || // E0.0 [1] (\uD83E\uDD79) \n\t\tcode === 0x1F97A || // E11.0 [1] (\uD83E\uDD7A) pleading face\n\t\tcode === 0x1F97B || // E12.0 [1] (\uD83E\uDD7B) sari\n\t\t( 0x1F97C <= code && code <= 0x1F97F ) || // E11.0 [4] (\uD83E\uDD7C..\uD83E\uDD7F) lab coat..flat shoe\n\t\t( 0x1F980 <= code && code <= 0x1F984 ) || // E1.0 [5] (\uD83E\uDD80..\uD83E\uDD84) crab..unicorn\n\t\t( 0x1F985 <= code && code <= 0x1F991 ) || // E3.0 [13] (\uD83E\uDD85..\uD83E\uDD91) eagle..squid\n\t\t( 0x1F992 <= code && code <= 0x1F997 ) || // E5.0 [6] (\uD83E\uDD92..\uD83E\uDD97) giraffe..cricket\n\t\t( 0x1F998 <= code && code <= 0x1F9A2 ) || // E11.0 [11] (\uD83E\uDD98..\uD83E\uDDA2) kangaroo..swan\n\t\t( 0x1F9A3 <= code && code <= 0x1F9A4 ) || // E13.0 [2] (\uD83E\uDDA3..\uD83E\uDDA4) mammoth..dodo\n\t\t( 0x1F9A5 <= code && code <= 0x1F9AA ) || // E12.0 [6] (\uD83E\uDDA5..\uD83E\uDDAA) sloth..oyster\n\t\t( 0x1F9AB <= code && code <= 0x1F9AD ) || // E13.0 [3] (\uD83E\uDDAB..\uD83E\uDDAD) beaver..seal\n\t\t( 0x1F9AE <= code && code <= 0x1F9AF ) || // E12.0 [2] (\uD83E\uDDAE..\uD83E\uDDAF) guide dog..white cane\n\t\t( 0x1F9B0 <= code && code <= 0x1F9B9 ) || // E11.0 [10] (\uD83E\uDDB0..\uD83E\uDDB9) red hair..supervillain\n\t\t( 0x1F9BA <= code && code <= 0x1F9BF ) || // E12.0 [6] (\uD83E\uDDBA..\uD83E\uDDBF) safety vest..mechanical leg\n\t\tcode === 0x1F9C0 || // E1.0 [1] (\uD83E\uDDC0) cheese wedge\n\t\t( 0x1F9C1 <= code && code <= 0x1F9C2 ) || // E11.0 [2] (\uD83E\uDDC1..\uD83E\uDDC2) cupcake..salt\n\t\t( 0x1F9C3 <= code && code <= 0x1F9CA ) || // E12.0 [8] (\uD83E\uDDC3..\uD83E\uDDCA) beverage box..ice\n\t\tcode === 0x1F9CB || // E13.0 [1] (\uD83E\uDDCB) bubble tea\n\t\tcode === 0x1F9CC || // E0.0 [1] (\uD83E\uDDCC) \n\t\t( 0x1F9CD <= code && code <= 0x1F9CF ) || // E12.0 [3] (\uD83E\uDDCD..\uD83E\uDDCF) person standing..deaf person\n\t\t( 0x1F9D0 <= code && code <= 0x1F9E6 ) || // E5.0 [23] (\uD83E\uDDD0..\uD83E\uDDE6) face with monocle..socks\n\t\t( 0x1F9E7 <= code && code <= 0x1F9FF ) || // E11.0 [25] (\uD83E\uDDE7..\uD83E\uDDFF) red envelope..nazar amulet\n\t\t( 0x1FA00 <= code && code <= 0x1FA6F ) || // E0.0 [112] (\uD83E\uDE00..\uD83E\uDE6F) NEUTRAL CHESS KING..\n\t\t( 0x1FA70 <= code && code <= 0x1FA73 ) || // E12.0 [4] (\uD83E\uDE70..\uD83E\uDE73) ballet shoes..shorts\n\t\tcode === 0x1FA74 || // E13.0 [1] (\uD83E\uDE74) thong sandal\n\t\t( 0x1FA75 <= code && code <= 0x1FA77 ) || // E0.0 [3] (\uD83E\uDE75..\uD83E\uDE77) ..\n\t\t( 0x1FA78 <= code && code <= 0x1FA7A ) || // E12.0 [3] (\uD83E\uDE78..\uD83E\uDE7A) drop of blood..stethoscope\n\t\t( 0x1FA7B <= code && code <= 0x1FA7F ) || // E0.0 [5] (\uD83E\uDE7B..\uD83E\uDE7F) ..\n\t\t( 0x1FA80 <= code && code <= 0x1FA82 ) || // E12.0 [3] (\uD83E\uDE80..\uD83E\uDE82) yo-yo..parachute\n\t\t( 0x1FA83 <= code && code <= 0x1FA86 ) || // E13.0 [4] (\uD83E\uDE83..\uD83E\uDE86) boomerang..nesting dolls\n\t\t( 0x1FA87 <= code && code <= 0x1FA8F ) || // E0.0 [9] (\uD83E\uDE87..\uD83E\uDE8F) ..\n\t\t( 0x1FA90 <= code && code <= 0x1FA95 ) || // E12.0 [6] (\uD83E\uDE90..\uD83E\uDE95) ringed planet..banjo\n\t\t( 0x1FA96 <= code && code <= 0x1FAA8 ) || // E13.0 [19] (\uD83E\uDE96..\uD83E\uDEA8) military helmet..rock\n\t\t( 0x1FAA9 <= code && code <= 0x1FAAF ) || // E0.0 [7] (\uD83E\uDEA9..\uD83E\uDEAF) ..\n\t\t( 0x1FAB0 <= code && code <= 0x1FAB6 ) || // E13.0 [7] (\uD83E\uDEB0..\uD83E\uDEB6) fly..feather\n\t\t( 0x1FAB7 <= code && code <= 0x1FABF ) || // E0.0 [9] (\uD83E\uDEB7..\uD83E\uDEBF) ..\n\t\t( 0x1FAC0 <= code && code <= 0x1FAC2 ) || // E13.0 [3] (\uD83E\uDEC0..\uD83E\uDEC2) anatomical heart..people hugging\n\t\t( 0x1FAC3 <= code && code <= 0x1FACF ) || // E0.0 [13] (\uD83E\uDEC3..\uD83E\uDECF) ..\n\t\t( 0x1FAD0 <= code && code <= 0x1FAD6 ) || // E13.0 [7] (\uD83E\uDED0..\uD83E\uDED6) blueberries..teapot\n\t\t( 0x1FAD7 <= code && code <= 0x1FAFF ) || // E0.0 [41] (\uD83E\uDED7..\uD83E\uDEFF) ..\n\t\t( 0x1FC00 <= code && code <= 0x1FFFD ) // E0.0[1022] (\uD83F\uDC00..\uD83F\uDFFD) ..\n\t) {\n\t\treturn constants.ExtendedPictographic;\n\t}\n\treturn constants.Other;\n}\n\n\n// EXPORTS //\n\nmodule.exports = emojiProperty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar constants = require( './constants.js' );\n\n\n// MAIN //\n\n/**\n* Returns the grapheme break property from the [Unicode Standard][1].\n*\n* [1]: https://www.unicode.org/Public/13.0.0/ucd/auxiliary/GraphemeBreakProperty.txt\n*\n* @private\n* @param {NonNegativeInteger} code - Unicode code point\n* @returns {NonNegativeInteger} grapheme break property\n*\n* @example\n* var out = graphemeBreakProperty( 0x008f );\n* // returns 2\n*\n* @example\n* var out = graphemeBreakProperty( 0x111C2 );\n* // returns 12\n*\n* @example\n* var out = graphemeBreakProperty( 0x1F3FC );\n* // returns 3\n*/\nfunction graphemeBreakProperty( code ) {\n\tif (\n\t\t( 0x0600 <= code && code <= 0x0605 ) || // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE\n\t\tcode === 0x06DD || // Cf ARABIC END OF AYAH\n\t\tcode === 0x070F || // Cf SYRIAC ABBREVIATION MARK\n\t\tcode === 0x08E2 || // Cf ARABIC DISPUTED END OF AYAH\n\t\tcode === 0x0D4E || // Lo MALAYALAM LETTER DOT REPH\n\t\tcode === 0x110BD || // Cf KAITHI NUMBER SIGN\n\t\tcode === 0x110CD || // Cf KAITHI NUMBER SIGN ABOVE\n\t\t( 0x111C2 <= code && code <= 0x111C3 ) || // Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA\n\t\tcode === 0x1193F || // Lo DIVES AKURU PREFIXED NASAL SIGN\n\t\tcode === 0x11941 || // Lo DIVES AKURU INITIAL RA\n\t\tcode === 0x11A3A || // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA\n\t\t( 0x11A84 <= code && code <= 0x11A89 ) || // Lo [6] SOYOMBO SIGN JIHVAMULIYA..SOYOMBO CLUSTER-INITIAL LETTER SA\n\t\tcode === 0x11D46 // Lo MASARAM GONDI REPHA\n\t) {\n\t\treturn constants.Prepend;\n\t}\n\tif (\n\t\tcode === 0x000D // Cc \n\t) {\n\t\treturn constants.CR;\n\t}\n\tif (\n\t\tcode === 0x000A // Cc \n\t) {\n\t\treturn constants.LF;\n\t}\n\tif (\n\t\t( 0x0000 <= code && code <= 0x0009 ) || // Cc [10] ..\n\t\t( 0x000B <= code && code <= 0x000C ) || // Cc [2] ..\n\t\t( 0x000E <= code && code <= 0x001F ) || // Cc [18] ..\n\t\t( 0x007F <= code && code <= 0x009F ) || // Cc [33] ..\n\t\tcode === 0x00AD || // Cf SOFT HYPHEN\n\t\tcode === 0x061C || // Cf ARABIC LETTER MARK\n\t\tcode === 0x180E || // Cf MONGOLIAN VOWEL SEPARATOR\n\t\tcode === 0x200B || // Cf ZERO WIDTH SPACE\n\t\t( 0x200E <= code && code <= 0x200F ) || // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK\n\t\tcode === 0x2028 || // Zl LINE SEPARATOR\n\t\tcode === 0x2029 || // Zp PARAGRAPH SEPARATOR\n\t\t( 0x202A <= code && code <= 0x202E ) || // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE\n\t\t( 0x2060 <= code && code <= 0x2064 ) || // Cf [5] WORD JOINER..INVISIBLE PLUS\n\t\tcode === 0x2065 || // Cn \n\t\t( 0x2066 <= code && code <= 0x206F ) || // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES\n\t\tcode === 0xFEFF || // Cf ZERO WIDTH NO-BREAK SPACE\n\t\t( 0xFFF0 <= code && code <= 0xFFF8 ) || // Cn [9] ..\n\t\t( 0xFFF9 <= code && code <= 0xFFFB ) || // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR\n\t\t( 0x13430 <= code && code <= 0x13438 ) || // Cf [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT\n\t\t( 0x1BCA0 <= code && code <= 0x1BCA3 ) || // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP\n\t\t( 0x1D173 <= code && code <= 0x1D17A ) || // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE\n\t\tcode === 0xE0000 || // Cn \n\t\tcode === 0xE0001 || // Cf LANGUAGE TAG\n\t\t( 0xE0002 <= code && code <= 0xE001F ) || // Cn [30] ..\n\t\t( 0xE0080 <= code && code <= 0xE00FF ) || // Cn [128] ..\n\t\t( 0xE01F0 <= code && code <= 0xE0FFF ) // Cn [3600] ..\n\t) {\n\t\treturn constants.Control;\n\t}\n\tif (\n\t\t( 0x0300 <= code && code <= 0x036F ) || // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X\n\t\t( 0x0483 <= code && code <= 0x0487 ) || // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE\n\t\t( 0x0488 <= code && code <= 0x0489 ) || // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN\n\t\t( 0x0591 <= code && code <= 0x05BD ) || // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG\n\t\tcode === 0x05BF || // Mn HEBREW POINT RAFE\n\t\t( 0x05C1 <= code && code <= 0x05C2 ) || // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT\n\t\t( 0x05C4 <= code && code <= 0x05C5 ) || // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT\n\t\tcode === 0x05C7 || // Mn HEBREW POINT QAMATS QATAN\n\t\t( 0x0610 <= code && code <= 0x061A ) || // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA\n\t\t( 0x064B <= code && code <= 0x065F ) || // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW\n\t\tcode === 0x0670 || // Mn ARABIC LETTER SUPERSCRIPT ALEF\n\t\t( 0x06D6 <= code && code <= 0x06DC ) || // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN\n\t\t( 0x06DF <= code && code <= 0x06E4 ) || // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA\n\t\t( 0x06E7 <= code && code <= 0x06E8 ) || // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON\n\t\t( 0x06EA <= code && code <= 0x06ED ) || // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM\n\t\tcode === 0x0711 || // Mn SYRIAC LETTER SUPERSCRIPT ALAPH\n\t\t( 0x0730 <= code && code <= 0x074A ) || // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH\n\t\t( 0x07A6 <= code && code <= 0x07B0 ) || // Mn [11] THAANA ABAFILI..THAANA SUKUN\n\t\t( 0x07EB <= code && code <= 0x07F3 ) || // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE\n\t\tcode === 0x07FD || // Mn NKO DANTAYALAN\n\t\t( 0x0816 <= code && code <= 0x0819 ) || // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH\n\t\t( 0x081B <= code && code <= 0x0823 ) || // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A\n\t\t( 0x0825 <= code && code <= 0x0827 ) || // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U\n\t\t( 0x0829 <= code && code <= 0x082D ) || // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA\n\t\t( 0x0859 <= code && code <= 0x085B ) || // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK\n\t\t( 0x08D3 <= code && code <= 0x08E1 ) || // Mn [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA\n\t\t( 0x08E3 <= code && code <= 0x0902 ) || // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA\n\t\tcode === 0x093A || // Mn DEVANAGARI VOWEL SIGN OE\n\t\tcode === 0x093C || // Mn DEVANAGARI SIGN NUKTA\n\t\t( 0x0941 <= code && code <= 0x0948 ) || // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI\n\t\tcode === 0x094D || // Mn DEVANAGARI SIGN VIRAMA\n\t\t( 0x0951 <= code && code <= 0x0957 ) || // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE\n\t\t( 0x0962 <= code && code <= 0x0963 ) || // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0981 || // Mn BENGALI SIGN CANDRABINDU\n\t\tcode === 0x09BC || // Mn BENGALI SIGN NUKTA\n\t\tcode === 0x09BE || // Mc BENGALI VOWEL SIGN AA\n\t\t( 0x09C1 <= code && code <= 0x09C4 ) || // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR\n\t\tcode === 0x09CD || // Mn BENGALI SIGN VIRAMA\n\t\tcode === 0x09D7 || // Mc BENGALI AU LENGTH MARK\n\t\t( 0x09E2 <= code && code <= 0x09E3 ) || // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL\n\t\tcode === 0x09FE || // Mn BENGALI SANDHI MARK\n\t\t( 0x0A01 <= code && code <= 0x0A02 ) || // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI\n\t\tcode === 0x0A3C || // Mn GURMUKHI SIGN NUKTA\n\t\t( 0x0A41 <= code && code <= 0x0A42 ) || // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU\n\t\t( 0x0A47 <= code && code <= 0x0A48 ) || // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI\n\t\t( 0x0A4B <= code && code <= 0x0A4D ) || // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA\n\t\tcode === 0x0A51 || // Mn GURMUKHI SIGN UDAAT\n\t\t( 0x0A70 <= code && code <= 0x0A71 ) || // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK\n\t\tcode === 0x0A75 || // Mn GURMUKHI SIGN YAKASH\n\t\t( 0x0A81 <= code && code <= 0x0A82 ) || // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA\n\t\tcode === 0x0ABC || // Mn GUJARATI SIGN NUKTA\n\t\t( 0x0AC1 <= code && code <= 0x0AC5 ) || // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E\n\t\t( 0x0AC7 <= code && code <= 0x0AC8 ) || // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI\n\t\tcode === 0x0ACD || // Mn GUJARATI SIGN VIRAMA\n\t\t( 0x0AE2 <= code && code <= 0x0AE3 ) || // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL\n\t\t( 0x0AFA <= code && code <= 0x0AFF ) || // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE\n\t\tcode === 0x0B01 || // Mn ORIYA SIGN CANDRABINDU\n\t\tcode === 0x0B3C || // Mn ORIYA SIGN NUKTA\n\t\tcode === 0x0B3E || // Mc ORIYA VOWEL SIGN AA\n\t\tcode === 0x0B3F || // Mn ORIYA VOWEL SIGN I\n\t\t( 0x0B41 <= code && code <= 0x0B44 ) || // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR\n\t\tcode === 0x0B4D || // Mn ORIYA SIGN VIRAMA\n\t\t( 0x0B55 <= code && code <= 0x0B56 ) || // Mn [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK\n\t\tcode === 0x0B57 || // Mc ORIYA AU LENGTH MARK\n\t\t( 0x0B62 <= code && code <= 0x0B63 ) || // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0B82 || // Mn TAMIL SIGN ANUSVARA\n\t\tcode === 0x0BBE || // Mc TAMIL VOWEL SIGN AA\n\t\tcode === 0x0BC0 || // Mn TAMIL VOWEL SIGN II\n\t\tcode === 0x0BCD || // Mn TAMIL SIGN VIRAMA\n\t\tcode === 0x0BD7 || // Mc TAMIL AU LENGTH MARK\n\t\tcode === 0x0C00 || // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE\n\t\tcode === 0x0C04 || // Mn TELUGU SIGN COMBINING ANUSVARA ABOVE\n\t\t( 0x0C3E <= code && code <= 0x0C40 ) || // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II\n\t\t( 0x0C46 <= code && code <= 0x0C48 ) || // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI\n\t\t( 0x0C4A <= code && code <= 0x0C4D ) || // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA\n\t\t( 0x0C55 <= code && code <= 0x0C56 ) || // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK\n\t\t( 0x0C62 <= code && code <= 0x0C63 ) || // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0C81 || // Mn KANNADA SIGN CANDRABINDU\n\t\tcode === 0x0CBC || // Mn KANNADA SIGN NUKTA\n\t\tcode === 0x0CBF || // Mn KANNADA VOWEL SIGN I\n\t\tcode === 0x0CC2 || // Mc KANNADA VOWEL SIGN UU\n\t\tcode === 0x0CC6 || // Mn KANNADA VOWEL SIGN E\n\t\t( 0x0CCC <= code && code <= 0x0CCD ) || // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA\n\t\t( 0x0CD5 <= code && code <= 0x0CD6 ) || // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK\n\t\t( 0x0CE2 <= code && code <= 0x0CE3 ) || // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL\n\t\t( 0x0D00 <= code && code <= 0x0D01 ) || // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU\n\t\t( 0x0D3B <= code && code <= 0x0D3C ) || // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA\n\t\tcode === 0x0D3E || // Mc MALAYALAM VOWEL SIGN AA\n\t\t( 0x0D41 <= code && code <= 0x0D44 ) || // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR\n\t\tcode === 0x0D4D || // Mn MALAYALAM SIGN VIRAMA\n\t\tcode === 0x0D57 || // Mc MALAYALAM AU LENGTH MARK\n\t\t( 0x0D62 <= code && code <= 0x0D63 ) || // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL\n\t\tcode === 0x0D81 || // Mn SINHALA SIGN CANDRABINDU\n\t\tcode === 0x0DCA || // Mn SINHALA SIGN AL-LAKUNA\n\t\tcode === 0x0DCF || // Mc SINHALA VOWEL SIGN AELA-PILLA\n\t\t( 0x0DD2 <= code && code <= 0x0DD4 ) || // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA\n\t\tcode === 0x0DD6 || // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA\n\t\tcode === 0x0DDF || // Mc SINHALA VOWEL SIGN GAYANUKITTA\n\t\tcode === 0x0E31 || // Mn THAI CHARACTER MAI HAN-AKAT\n\t\t( 0x0E34 <= code && code <= 0x0E3A ) || // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU\n\t\t( 0x0E47 <= code && code <= 0x0E4E ) || // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN\n\t\tcode === 0x0EB1 || // Mn LAO VOWEL SIGN MAI KAN\n\t\t( 0x0EB4 <= code && code <= 0x0EBC ) || // Mn [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO\n\t\t( 0x0EC8 <= code && code <= 0x0ECD ) || // Mn [6] LAO TONE MAI EK..LAO NIGGAHITA\n\t\t( 0x0F18 <= code && code <= 0x0F19 ) || // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS\n\t\tcode === 0x0F35 || // Mn TIBETAN MARK NGAS BZUNG NYI ZLA\n\t\tcode === 0x0F37 || // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS\n\t\tcode === 0x0F39 || // Mn TIBETAN MARK TSA -PHRU\n\t\t( 0x0F71 <= code && code <= 0x0F7E ) || // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO\n\t\t( 0x0F80 <= code && code <= 0x0F84 ) || // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA\n\t\t( 0x0F86 <= code && code <= 0x0F87 ) || // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS\n\t\t( 0x0F8D <= code && code <= 0x0F97 ) || // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA\n\t\t( 0x0F99 <= code && code <= 0x0FBC ) || // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA\n\t\tcode === 0x0FC6 || // Mn TIBETAN SYMBOL PADMA GDAN\n\t\t( 0x102D <= code && code <= 0x1030 ) || // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU\n\t\t( 0x1032 <= code && code <= 0x1037 ) || // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW\n\t\t( 0x1039 <= code && code <= 0x103A ) || // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT\n\t\t( 0x103D <= code && code <= 0x103E ) || // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA\n\t\t( 0x1058 <= code && code <= 0x1059 ) || // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL\n\t\t( 0x105E <= code && code <= 0x1060 ) || // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA\n\t\t( 0x1071 <= code && code <= 0x1074 ) || // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE\n\t\tcode === 0x1082 || // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA\n\t\t( 0x1085 <= code && code <= 0x1086 ) || // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y\n\t\tcode === 0x108D || // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE\n\t\tcode === 0x109D || // Mn MYANMAR VOWEL SIGN AITON AI\n\t\t( 0x135D <= code && code <= 0x135F ) || // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK\n\t\t( 0x1712 <= code && code <= 0x1714 ) || // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA\n\t\t( 0x1732 <= code && code <= 0x1734 ) || // Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD\n\t\t( 0x1752 <= code && code <= 0x1753 ) || // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U\n\t\t( 0x1772 <= code && code <= 0x1773 ) || // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U\n\t\t( 0x17B4 <= code && code <= 0x17B5 ) || // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA\n\t\t( 0x17B7 <= code && code <= 0x17BD ) || // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA\n\t\tcode === 0x17C6 || // Mn KHMER SIGN NIKAHIT\n\t\t( 0x17C9 <= code && code <= 0x17D3 ) || // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT\n\t\tcode === 0x17DD || // Mn KHMER SIGN ATTHACAN\n\t\t( 0x180B <= code && code <= 0x180D ) || // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE\n\t\t( 0x1885 <= code && code <= 0x1886 ) || // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA\n\t\tcode === 0x18A9 || // Mn MONGOLIAN LETTER ALI GALI DAGALGA\n\t\t( 0x1920 <= code && code <= 0x1922 ) || // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U\n\t\t( 0x1927 <= code && code <= 0x1928 ) || // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O\n\t\tcode === 0x1932 || // Mn LIMBU SMALL LETTER ANUSVARA\n\t\t( 0x1939 <= code && code <= 0x193B ) || // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I\n\t\t( 0x1A17 <= code && code <= 0x1A18 ) || // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U\n\t\tcode === 0x1A1B || // Mn BUGINESE VOWEL SIGN AE\n\t\tcode === 0x1A56 || // Mn TAI THAM CONSONANT SIGN MEDIAL LA\n\t\t( 0x1A58 <= code && code <= 0x1A5E ) || // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA\n\t\tcode === 0x1A60 || // Mn TAI THAM SIGN SAKOT\n\t\tcode === 0x1A62 || // Mn TAI THAM VOWEL SIGN MAI SAT\n\t\t( 0x1A65 <= code && code <= 0x1A6C ) || // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW\n\t\t( 0x1A73 <= code && code <= 0x1A7C ) || // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN\n\t\tcode === 0x1A7F || // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT\n\t\t( 0x1AB0 <= code && code <= 0x1ABD ) || // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW\n\t\tcode === 0x1ABE || // Me COMBINING PARENTHESES OVERLAY\n\t\t( 0x1ABF <= code && code <= 0x1AC0 ) || // Mn [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW\n\t\t( 0x1B00 <= code && code <= 0x1B03 ) || // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG\n\t\tcode === 0x1B34 || // Mn BALINESE SIGN REREKAN\n\t\tcode === 0x1B35 || // Mc BALINESE VOWEL SIGN TEDUNG\n\t\t( 0x1B36 <= code && code <= 0x1B3A) || // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA\n\t\tcode === 0x1B3C || // Mn BALINESE VOWEL SIGN LA LENGA\n\t\tcode === 0x1B42 || // Mn BALINESE VOWEL SIGN PEPET\n\t\t( 0x1B6B <= code && code <= 0x1B73 ) || // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG\n\t\t( 0x1B80 <= code && code <= 0x1B81 ) || // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR\n\t\t( 0x1BA2 <= code && code <= 0x1BA5 ) || // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU\n\t\t( 0x1BA8 <= code && code <= 0x1BA9 ) || // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG\n\t\t( 0x1BAB <= code && code <= 0x1BAD ) || // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA\n\t\tcode === 0x1BE6 || // Mn BATAK SIGN TOMPI\n\t\t( 0x1BE8 <= code && code <= 0x1BE9) || // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE\n\t\tcode === 0x1BED || // Mn BATAK VOWEL SIGN KARO O\n\t\t( 0x1BEF <= code && code <= 0x1BF1 ) || // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H\n\t\t( 0x1C2C <= code && code <= 0x1C33 ) || // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T\n\t\t( 0x1C36 <= code && code <= 0x1C37 ) || // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA\n\t\t( 0x1CD0 <= code && code <= 0x1CD2 ) || // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA\n\t\t( 0x1CD4 <= code && code <= 0x1CE0 ) || // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA\n\t\t( 0x1CE2 <= code && code <= 0x1CE8 ) || // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL\n\t\tcode === 0x1CED || // Mn VEDIC SIGN TIRYAK\n\t\tcode === 0x1CF4 || // Mn VEDIC TONE CANDRA ABOVE\n\t\t( 0x1CF8 <= code && code <= 0x1CF9 ) || // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE\n\t\t( 0x1DC0 <= code && code <= 0x1DF9 ) || // Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW\n\t\t( 0x1DFB <= code && code <= 0x1DFF ) || // Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW\n\t\tcode === 0x200C || // Cf ZERO WIDTH NON-JOINER\n\t\t( 0x20D0 <= code && code <= 0x20DC ) || // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE\n\t\t( 0x20DD <= code && code <= 0x20E0 ) || // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH\n\t\tcode === 0x20E1 || // Mn COMBINING LEFT RIGHT ARROW ABOVE\n\t\t( 0x20E2 <= code && code <= 0x20E4 ) || // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE\n\t\t( 0x20E5 <= code && code <= 0x20F0 ) || // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE\n\t\t( 0x2CEF <= code && code <= 0x2CF1 ) || // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS\n\t\tcode === 0x2D7F || // Mn TIFINAGH CONSONANT JOINER\n\t\t( 0x2DE0 <= code && code <= 0x2DFF ) || // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS\n\t\t( 0x302A <= code && code <= 0x302D ) || // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK\n\t\t( 0x302E <= code && code <= 0x302F ) || // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK\n\t\t( 0x3099 <= code && code <= 0x309A ) || // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK\n\t\tcode === 0xA66F || // Mn COMBINING CYRILLIC VZMET\n\t\t( 0xA670 <= code && code <= 0xA672 ) || // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN\n\t\t( 0xA674 <= code && code <= 0xA67D ) || // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK\n\t\t( 0xA69E <= code && code <= 0xA69F ) || // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E\n\t\t( 0xA6F0 <= code && code <= 0xA6F1 ) || // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS\n\t\tcode === 0xA802 || // Mn SYLOTI NAGRI SIGN DVISVARA\n\t\tcode === 0xA806 || // Mn SYLOTI NAGRI SIGN HASANTA\n\t\tcode === 0xA80B || // Mn SYLOTI NAGRI SIGN ANUSVARA\n\t\t( 0xA825 <= code && code <= 0xA826 ) || // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E\n\t\tcode === 0xA82C || // Mn SYLOTI NAGRI SIGN ALTERNATE HASANTA\n\t\t( 0xA8C4 <= code && code <= 0xA8C5 ) || // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU\n\t\t( 0xA8E0 <= code && code <= 0xA8F1 ) || // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA\n\t\tcode === 0xA8FF || // Mn DEVANAGARI VOWEL SIGN AY\n\t\t( 0xA926 <= code && code <= 0xA92D ) || // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU\n\t\t( 0xA947 <= code && code <= 0xA951 ) || // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R\n\t\t( 0xA980 <= code && code <= 0xA982 ) || // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR\n\t\tcode === 0xA9B3 || // Mn JAVANESE SIGN CECAK TELU\n\t\t( 0xA9B6 <= code && code <= 0xA9B9 ) || // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT\n\t\t( 0xA9BC <= code && code <= 0xA9BD ) || // Mn [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET\n\t\tcode === 0xA9E5 || // Mn MYANMAR SIGN SHAN SAW\n\t\t( 0xAA29 <= code && code <= 0xAA2E ) || // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE\n\t\t( 0xAA31 <= code && code <= 0xAA32 ) || // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE\n\t\t( 0xAA35 <= code && code <= 0xAA36 ) || // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA\n\t\tcode === 0xAA43 || // Mn CHAM CONSONANT SIGN FINAL NG\n\t\tcode === 0xAA4C || // Mn CHAM CONSONANT SIGN FINAL M\n\t\tcode === 0xAA7C || // Mn MYANMAR SIGN TAI LAING TONE-2\n\t\tcode === 0xAAB0 || // Mn TAI VIET MAI KANG\n\t\t( 0xAAB2 <= code && code <= 0xAAB4 ) || // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U\n\t\t( 0xAAB7 <= code && code <= 0xAAB8 ) || // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA\n\t\t( 0xAABE <= code && code <= 0xAABF ) || // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK\n\t\tcode === 0xAAC1 || // Mn TAI VIET TONE MAI THO\n\t\t( 0xAAEC <= code && code <= 0xAAED ) || // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI\n\t\tcode === 0xAAF6 || // Mn MEETEI MAYEK VIRAMA\n\t\tcode === 0xABE5 || // Mn MEETEI MAYEK VOWEL SIGN ANAP\n\t\tcode === 0xABE8 || // Mn MEETEI MAYEK VOWEL SIGN UNAP\n\t\tcode === 0xABED || // Mn MEETEI MAYEK APUN IYEK\n\t\tcode === 0xFB1E || // Mn HEBREW POINT JUDEO-SPANISH VARIKA\n\t\t( 0xFE00 <= code && code <= 0xFE0F ) || // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16\n\t\t( 0xFE20 <= code && code <= 0xFE2F ) || // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF\n\t\t( 0xFF9E <= code && code <= 0xFF9F ) || // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK\n\t\tcode === 0x101FD || // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE\n\t\tcode === 0x102E0 || // Mn COPTIC EPACT THOUSANDS MARK\n\t\t( 0x10376 <= code && code <= 0x1037A ) || // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII\n\t\t( 0x10A01 <= code && code <= 0x10A03 ) || // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R\n\t\t( 0x10A05 <= code && code <= 0x10A06 ) || // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O\n\t\t( 0x10A0C <= code && code <= 0x10A0F ) || // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA\n\t\t( 0x10A38 <= code && code <= 0x10A3A ) || // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW\n\t\tcode === 0x10A3F || // Mn KHAROSHTHI VIRAMA\n\t\t( 0x10AE5 <= code && code <= 0x10AE6 ) || // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW\n\t\t( 0x10D24 <= code && code <= 0x10D27 ) || // Mn [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI\n\t\t( 0x10EAB <= code && code <= 0x10EAC ) || // Mn [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK\n\t\t( 0x10F46 <= code && code <= 0x10F50 ) || // Mn [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW\n\t\tcode === 0x11001 || // Mn BRAHMI SIGN ANUSVARA\n\t\t( 0x11038 <= code && code <= 0x11046 ) || // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA\n\t\t( 0x1107F <= code && code <= 0x11081 ) || // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA\n\t\t( 0x110B3 <= code && code <= 0x110B6 ) || // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI\n\t\t( 0x110B9 <= code && code <= 0x110BA ) || // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA\n\t\t( 0x11100 <= code && code <= 0x11102 ) || // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA\n\t\t( 0x11127 <= code && code <= 0x1112B ) || // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU\n\t\t( 0x1112D <= code && code <= 0x11134 ) || // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA\n\t\tcode === 0x11173 || // Mn MAHAJANI SIGN NUKTA\n\t\t( 0x11180 <= code && code <= 0x11181 ) || // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA\n\t\t( 0x111B6 <= code && code <= 0x111BE ) || // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O\n\t\t( 0x111C9 <= code && code <= 0x111CC ) || // Mn [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK\n\t\tcode === 0x111CF || // Mn SHARADA SIGN INVERTED CANDRABINDU\n\t\t( 0x1122F <= code && code <= 0x11231 ) || // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI\n\t\tcode === 0x11234 || // Mn KHOJKI SIGN ANUSVARA\n\t\t( 0x11236 <= code && code <= 0x11237 ) || // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA\n\t\tcode === 0x1123E || // Mn KHOJKI SIGN SUKUN\n\t\tcode === 0x112DF || // Mn KHUDAWADI SIGN ANUSVARA\n\t\t( 0x112E3 <= code && code <= 0x112EA ) || // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA\n\t\t( 0x11300 <= code && code <= 0x11301 ) || // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU\n\t\t( 0x1133B <= code && code <= 0x1133C ) || // Mn [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA\n\t\tcode === 0x1133E || // Mc GRANTHA VOWEL SIGN AA\n\t\tcode === 0x11340 || // Mn GRANTHA VOWEL SIGN II\n\t\tcode === 0x11357 || // Mc GRANTHA AU LENGTH MARK\n\t\t( 0x11366 <= code && code <= 0x1136C ) || // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX\n\t\t( 0x11370 <= code && code <= 0x11374 ) || // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA\n\t\t( 0x11438 <= code && code <= 0x1143F ) || // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI\n\t\t( 0x11442 <= code && code <= 0x11444 ) || // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA\n\t\tcode === 0x11446 || // Mn NEWA SIGN NUKTA\n\t\tcode === 0x1145E || // Mn NEWA SANDHI MARK\n\t\tcode === 0x114B0 || // Mc TIRHUTA VOWEL SIGN AA\n\t\t( 0x114B3 <= code && code <= 0x114B8 ) || // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL\n\t\tcode === 0x114BA || // Mn TIRHUTA VOWEL SIGN SHORT E\n\t\tcode === 0x114BD || // Mc TIRHUTA VOWEL SIGN SHORT O\n\t\t( 0x114BF <= code && code <= 0x114C0 ) || // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA\n\t\t( 0x114C2 <= code && code <= 0x114C3 ) || // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA\n\t\tcode === 0x115AF || // Mc SIDDHAM VOWEL SIGN AA\n\t\t( 0x115B2 <= code && code <= 0x115B5 ) || // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR\n\t\t( 0x115BC <= code && code <= 0x115BD ) || // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA\n\t\t( 0x115BF <= code && code <= 0x115C0 ) || // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA\n\t\t( 0x115DC <= code && code <= 0x115DD ) || // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU\n\t\t( 0x11633 <= code && code <= 0x1163A ) || // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI\n\t\tcode === 0x1163D || // Mn MODI SIGN ANUSVARA\n\t\t( 0x1163F <= code && code <= 0x11640 ) || // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA\n\t\tcode === 0x116AB || // Mn TAKRI SIGN ANUSVARA\n\t\tcode === 0x116AD || // Mn TAKRI VOWEL SIGN AA\n\t\t( 0x116B0 <= code && code <= 0x116B5 ) || // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU\n\t\tcode === 0x116B7 || // Mn TAKRI SIGN NUKTA\n\t\t( 0x1171D <= code && code <= 0x1171F ) || // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA\n\t\t( 0x11722 <= code && code <= 0x11725 ) || // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU\n\t\t( 0x11727 <= code && code <= 0x1172B ) || // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER\n\t\t( 0x1182F <= code && code <= 0x11837 ) || // Mn [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA\n\t\t( 0x11839 <= code && code <= 0x1183A ) || // Mn [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA\n\t\tcode === 0x11930 || // Mc DIVES AKURU VOWEL SIGN AA\n\t\t( 0x1193B <= code && code <= 0x1193C ) || // Mn [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU\n\t\tcode === 0x1193E || // Mn DIVES AKURU VIRAMA\n\t\tcode === 0x11943 || // Mn DIVES AKURU SIGN NUKTA\n\t\t( 0x119D4 <= code && code <= 0x119D7 ) || // Mn [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR\n\t\t( 0x119DA <= code && code <= 0x119DB ) || // Mn [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI\n\t\tcode === 0x119E0 || // Mn NANDINAGARI SIGN VIRAMA\n\t\t( 0x11A01 <= code && code <= 0x11A0A ) || // Mn [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK\n\t\t( 0x11A33 <= code && code <= 0x11A38 ) || // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA\n\t\t( 0x11A3B <= code && code <= 0x11A3E ) || // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA\n\t\tcode === 0x11A47 || // Mn ZANABAZAR SQUARE SUBJOINER\n\t\t( 0x11A51 <= code && code <= 0x11A56 ) || // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE\n\t\t( 0x11A59 <= code && code <= 0x11A5B ) || // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK\n\t\t( 0x11A8A <= code && code <= 0x11A96 ) || // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA\n\t\t( 0x11A98 <= code && code <= 0x11A99 ) || // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER\n\t\t( 0x11C30 <= code && code <= 0x11C36 ) || // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L\n\t\t( 0x11C38 <= code && code <= 0x11C3D ) || // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA\n\t\tcode === 0x11C3F || // Mn BHAIKSUKI SIGN VIRAMA\n\t\t( 0x11C92 <= code && code <= 0x11CA7 ) || // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA\n\t\t( 0x11CAA <= code && code <= 0x11CB0 ) || // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA\n\t\t( 0x11CB2 <= code && code <= 0x11CB3 ) || // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E\n\t\t( 0x11CB5 <= code && code <= 0x11CB6 ) || // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU\n\t\t( 0x11D31 <= code && code <= 0x11D36 ) || // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R\n\t\tcode === 0x11D3A || // Mn MASARAM GONDI VOWEL SIGN E\n\t\t( 0x11D3C <= code && code <= 0x11D3D ) || // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O\n\t\t( 0x11D3F <= code && code <= 0x11D45 ) || // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA\n\t\tcode === 0x11D47 || // Mn MASARAM GONDI RA-KARA\n\t\t( 0x11D90 <= code && code <= 0x11D91 ) || // Mn [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI\n\t\tcode === 0x11D95 || // Mn GUNJALA GONDI SIGN ANUSVARA\n\t\tcode === 0x11D97 || // Mn GUNJALA GONDI VIRAMA\n\t\t( 0x11EF3 <= code && code <= 0x11EF4 ) || // Mn [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U\n\t\t( 0x16AF0 <= code && code <= 0x16AF4 ) || // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE\n\t\t( 0x16B30 <= code && code <= 0x16B36 ) || // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM\n\t\tcode === 0x16F4F || // Mn MIAO SIGN CONSONANT MODIFIER BAR\n\t\t( 0x16F8F <= code && code <= 0x16F92 ) || // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW\n\t\tcode === 0x16FE4 || // Mn KHITAN SMALL SCRIPT FILLER\n\t\t( 0x1BC9D <= code && code <= 0x1BC9E ) || // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK\n\t\tcode === 0x1D165 || // Mc MUSICAL SYMBOL COMBINING STEM\n\t\t( 0x1D167 <= code && code <= 0x1D169 ) || // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3\n\t\t( 0x1D16E <= code && code <= 0x1D172 ) || // Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5\n\t\t( 0x1D17B <= code && code <= 0x1D182 ) || // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE\n\t\t( 0x1D185 <= code && code <= 0x1D18B ) || // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE\n\t\t( 0x1D1AA <= code && code <= 0x1D1AD ) || // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO\n\t\t( 0x1D242 <= code && code <= 0x1D244 ) || // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME\n\t\t( 0x1DA00 <= code && code <= 0x1DA36 ) || // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN\n\t\t( 0x1DA3B <= code && code <= 0x1DA6C ) || // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT\n\t\tcode === 0x1DA75 || // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS\n\t\tcode === 0x1DA84 || // Mn SIGNWRITING LOCATION HEAD NECK\n\t\t( 0x1DA9B <= code && code <= 0x1DA9F ) || // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6\n\t\t( 0x1DAA1 <= code && code <= 0x1DAAF ) || // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16\n\t\t( 0x1E000 <= code && code <= 0x1E006 ) || // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE\n\t\t( 0x1E008 <= code && code <= 0x1E018 ) || // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU\n\t\t( 0x1E01B <= code && code <= 0x1E021 ) || // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI\n\t\t( 0x1E023 <= code && code <= 0x1E024 ) || // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS\n\t\t( 0x1E026 <= code && code <= 0x1E02A ) || // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA\n\t\t( 0x1E130 <= code && code <= 0x1E136 ) || // Mn [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D\n\t\t( 0x1E2EC <= code && code <= 0x1E2EF ) || // Mn [4] WANCHO TONE TUP..WANCHO TONE KOINI\n\t\t( 0x1E8D0 <= code && code <= 0x1E8D6 ) || // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS\n\t\t( 0x1E944 <= code && code <= 0x1E94A ) || // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA\n\t\t( 0x1F3FB <= code && code <= 0x1F3FF ) || // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6\n\t\t( 0xE0020 <= code && code <= 0xE007F ) || // Cf [96] TAG SPACE..CANCEL TAG\n\t\t( 0xE0100 <= code && code <= 0xE01EF ) // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256\n\t) {\n\t\treturn constants.Extend;\n\t}\n\tif (\n\t\t( 0x1F1E6 <= code && code <= 0x1F1FF ) // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z\n\t) {\n\t\treturn constants.RegionalIndicator;\n\t}\n\tif (\n\t\tcode === 0x0903 || // Mc DEVANAGARI SIGN VISARGA\n\t\tcode === 0x093B || // Mc DEVANAGARI VOWEL SIGN OOE\n\t\t( 0x093E <= code && code <= 0x0940 ) || // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II\n\t\t( 0x0949 <= code && code <= 0x094C ) || // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU\n\t\t( 0x094E <= code && code <= 0x094F ) || // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW\n\t\t( 0x0982 <= code && code <= 0x0983 ) || // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA\n\t\t( 0x09BF <= code && code <= 0x09C0 ) || // Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II\n\t\t( 0x09C7 <= code && code <= 0x09C8 ) || // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI\n\t\t( 0x09CB <= code && code <= 0x09CC ) || // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU\n\t\tcode === 0x0A03 || // Mc GURMUKHI SIGN VISARGA\n\t\t( 0x0A3E <= code && code <= 0x0A40 ) || // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II\n\t\tcode === 0x0A83 || // Mc GUJARATI SIGN VISARGA\n\t\t( 0x0ABE <= code && code <= 0x0AC0 ) || // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II\n\t\tcode === 0x0AC9 || // Mc GUJARATI VOWEL SIGN CANDRA O\n\t\t( 0x0ACB <= code && code <= 0x0ACC ) || // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU\n\t\t( 0x0B02 <= code && code <= 0x0B03 ) || // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA\n\t\tcode === 0x0B40 || // Mc ORIYA VOWEL SIGN II\n\t\t( 0x0B47 <= code && code <= 0x0B48 ) || // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI\n\t\t( 0x0B4B <= code && code <= 0x0B4C ) || // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU\n\t\tcode === 0x0BBF || // Mc TAMIL VOWEL SIGN I\n\t\t( 0x0BC1 <= code && code <= 0x0BC2 ) || // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU\n\t\t( 0x0BC6 <= code && code <= 0x0BC8 ) || // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI\n\t\t( 0x0BCA <= code && code <= 0x0BCC ) || // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU\n\t\t( 0x0C01 <= code && code <= 0x0C03 ) || // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA\n\t\t( 0x0C41 <= code && code <= 0x0C44 ) || // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR\n\t\t( 0x0C82 <= code && code <= 0x0C83 ) || // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA\n\t\tcode === 0x0CBE || // Mc KANNADA VOWEL SIGN AA\n\t\t( 0x0CC0 <= code && code <= 0x0CC1 ) || // Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U\n\t\t( 0x0CC3 <= code && code <= 0x0CC4 ) || // Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR\n\t\t( 0x0CC7 <= code && code <= 0x0CC8 ) || // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI\n\t\t( 0x0CCA <= code && code <= 0x0CCB ) || // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO\n\t\t( 0x0D02 <= code && code <= 0x0D03 ) || // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA\n\t\t( 0x0D3F <= code && code <= 0x0D40 ) || // Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II\n\t\t( 0x0D46 <= code && code <= 0x0D48 ) || // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI\n\t\t( 0x0D4A <= code && code <= 0x0D4C ) || // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU\n\t\t( 0x0D82 <= code && code <= 0x0D83 ) || // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA\n\t\t( 0x0DD0 <= code && code <= 0x0DD1 ) || // Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA\n\t\t( 0x0DD8 <= code && code <= 0x0DDE ) || // Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA\n\t\t( 0x0DF2 <= code && code <= 0x0DF3 ) || // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA\n\t\tcode === 0x0E33 || // Lo THAI CHARACTER SARA AM\n\t\tcode === 0x0EB3 || // Lo LAO VOWEL SIGN AM\n\t\t( 0x0F3E <= code && code <= 0x0F3F ) || // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES\n\t\tcode === 0x0F7F || // Mc TIBETAN SIGN RNAM BCAD\n\t\tcode === 0x1031 || // Mc MYANMAR VOWEL SIGN E\n\t\t( 0x103B <= code && code <= 0x103C ) || // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA\n\t\t( 0x1056 <= code && code <= 0x1057 ) || // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR\n\t\tcode === 0x1084 || // Mc MYANMAR VOWEL SIGN SHAN E\n\t\tcode === 0x17B6 || // Mc KHMER VOWEL SIGN AA\n\t\t( 0x17BE <= code && code <= 0x17C5 ) || // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU\n\t\t( 0x17C7 <= code && code <= 0x17C8 ) || // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU\n\t\t( 0x1923 <= code && code <= 0x1926 ) || // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU\n\t\t( 0x1929 <= code && code <= 0x192B ) || // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA\n\t\t( 0x1930 <= code && code <= 0x1931 ) || // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA\n\t\t( 0x1933 <= code && code <= 0x1938 ) || // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA\n\t\t( 0x1A19 <= code && code <= 0x1A1A ) || // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O\n\t\tcode === 0x1A55 || // Mc TAI THAM CONSONANT SIGN MEDIAL RA\n\t\tcode === 0x1A57 || // Mc TAI THAM CONSONANT SIGN LA TANG LAI\n\t\t( 0x1A6D <= code && code <= 0x1A72 ) || // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI\n\t\tcode === 0x1B04 || // Mc BALINESE SIGN BISAH\n\t\tcode === 0x1B3B || // Mc BALINESE VOWEL SIGN RA REPA TEDUNG\n\t\t( 0x1B3D <= code && code <= 0x1B41 ) || // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG\n\t\t( 0x1B43 <= code && code <= 0x1B44 ) || // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG\n\t\tcode === 0x1B82 || // Mc SUNDANESE SIGN PANGWISAD\n\t\tcode === 0x1BA1 || // Mc SUNDANESE CONSONANT SIGN PAMINGKAL\n\t\t( 0x1BA6 <= code && code <= 0x1BA7 ) || // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG\n\t\tcode === 0x1BAA || // Mc SUNDANESE SIGN PAMAAEH\n\t\tcode === 0x1BE7 || // Mc BATAK VOWEL SIGN E\n\t\t( 0x1BEA <= code && code <= 0x1BEC ) || // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O\n\t\tcode === 0x1BEE || // Mc BATAK VOWEL SIGN U\n\t\t( 0x1BF2 <= code && code <= 0x1BF3 ) || // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN\n\t\t( 0x1C24 <= code && code <= 0x1C2B ) || // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU\n\t\t( 0x1C34 <= code && code <= 0x1C35 ) || // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG\n\t\tcode === 0x1CE1 || // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA\n\t\tcode === 0x1CF7 || // Mc VEDIC SIGN ATIKRAMA\n\t\t( 0xA823 <= code && code <= 0xA824 ) || // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I\n\t\tcode === 0xA827 || // Mc SYLOTI NAGRI VOWEL SIGN OO\n\t\t( 0xA880 <= code && code <= 0xA881 ) || // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA\n\t\t( 0xA8B4 <= code && code <= 0xA8C3 ) || // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU\n\t\t( 0xA952 <= code && code <= 0xA953 ) || // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA\n\t\tcode === 0xA983 || // Mc JAVANESE SIGN WIGNYAN\n\t\t( 0xA9B4 <= code && code <= 0xA9B5 ) || // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG\n\t\t( 0xA9BA <= code && code <= 0xA9BB ) || // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE\n\t\t( 0xA9BE <= code && code <= 0xA9C0 ) || // Mc [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON\n\t\t( 0xAA2F <= code && code <= 0xAA30 ) || // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI\n\t\t( 0xAA33 <= code && code <= 0xAA34 ) || // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA\n\t\tcode === 0xAA4D || // Mc CHAM CONSONANT SIGN FINAL H\n\t\tcode === 0xAAEB || // Mc MEETEI MAYEK VOWEL SIGN II\n\t\t( 0xAAEE <= code && code <= 0xAAEF ) || // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU\n\t\tcode === 0xAAF5 || // Mc MEETEI MAYEK VOWEL SIGN VISARGA\n\t\t( 0xABE3 <= code && code <= 0xABE4 ) || // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP\n\t\t( 0xABE6 <= code && code <= 0xABE7 ) || // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP\n\t\t( 0xABE9 <= code && code <= 0xABEA ) || // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG\n\t\tcode === 0xABEC || // Mc MEETEI MAYEK LUM IYEK\n\t\tcode === 0x11000 || // Mc BRAHMI SIGN CANDRABINDU\n\t\tcode === 0x11002 || // Mc BRAHMI SIGN VISARGA\n\t\tcode === 0x11082 || // Mc KAITHI SIGN VISARGA\n\t\t( 0x110B0 <= code && code <= 0x110B2 ) || // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II\n\t\t( 0x110B7 <= code && code <= 0x110B8 ) || // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU\n\t\tcode === 0x1112C || // Mc CHAKMA VOWEL SIGN E\n\t\t( 0x11145 <= code && code <= 0x11146 ) || // Mc [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI\n\t\tcode === 0x11182 || // Mc SHARADA SIGN VISARGA\n\t\t( 0x111B3 <= code && code <= 0x111B5 ) || // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II\n\t\t( 0x111BF <= code && code <= 0x111C0 ) || // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA\n\t\tcode === 0x111CE || // Mc SHARADA VOWEL SIGN PRISHTHAMATRA E\n\t\t( 0x1122C <= code && code <= 0x1122E ) || // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II\n\t\t( 0x11232 <= code && code <= 0x11233 ) || // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU\n\t\tcode === 0x11235 || // Mc KHOJKI SIGN VIRAMA\n\t\t( 0x112E0 <= code && code <= 0x112E2 ) || // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II\n\t\t( 0x11302 <= code && code <= 0x11303 ) || // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA\n\t\tcode === 0x1133F || // Mc GRANTHA VOWEL SIGN I\n\t\t( 0x11341 <= code && code <= 0x11344 ) || // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR\n\t\t( 0x11347 <= code && code <= 0x11348 ) || // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI\n\t\t( 0x1134B <= code && code <= 0x1134D ) || // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA\n\t\t( 0x11362 <= code && code <= 0x11363 ) || // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL\n\t\t( 0x11435 <= code && code <= 0x11437 ) || // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II\n\t\t( 0x11440 <= code && code <= 0x11441 ) || // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU\n\t\tcode === 0x11445 || // Mc NEWA SIGN VISARGA\n\t\t( 0x114B1 <= code && code <= 0x114B2 ) || // Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II\n\t\tcode === 0x114B9 || // Mc TIRHUTA VOWEL SIGN E\n\t\t( 0x114BB <= code && code <= 0x114BC ) || // Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O\n\t\tcode === 0x114BE || // Mc TIRHUTA VOWEL SIGN AU\n\t\tcode === 0x114C1 || // Mc TIRHUTA SIGN VISARGA\n\t\t( 0x115B0 <= code && code <= 0x115B1 ) || // Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II\n\t\t( 0x115B8 <= code && code <= 0x115BB ) || // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU\n\t\tcode === 0x115BE || // Mc SIDDHAM SIGN VISARGA\n\t\t( 0x11630 <= code && code <= 0x11632 ) || // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II\n\t\t( 0x1163B <= code && code <= 0x1163C ) || // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU\n\t\tcode === 0x1163E || // Mc MODI SIGN VISARGA\n\t\tcode === 0x116AC || // Mc TAKRI SIGN VISARGA\n\t\t( 0x116AE <= code && code <= 0x116AF ) || // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II\n\t\tcode === 0x116B6 || // Mc TAKRI SIGN VIRAMA\n\t\t( 0x11720 <= code && code <= 0x11721 ) || // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA\n\t\tcode === 0x11726 || // Mc AHOM VOWEL SIGN E\n\t\t( 0x1182C <= code && code <= 0x1182E ) || // Mc [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II\n\t\tcode === 0x11838 || // Mc DOGRA SIGN VISARGA\n\t\t( 0x11931 <= code && code <= 0x11935 ) || // Mc [5] DIVES AKURU VOWEL SIGN I..DIVES AKURU VOWEL SIGN E\n\t\t( 0x11937 <= code && code <= 0x11938 ) || // Mc [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O\n\t\tcode === 0x1193D || // Mc DIVES AKURU SIGN HALANTA\n\t\tcode === 0x11940 || // Mc DIVES AKURU MEDIAL YA\n\t\tcode === 0x11942 || // Mc DIVES AKURU MEDIAL RA\n\t\t( 0x119D1 <= code && code <= 0x119D3 ) || // Mc [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II\n\t\t( 0x119DC <= code && code <= 0x119DF ) || // Mc [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA\n\t\tcode === 0x119E4 || // Mc NANDINAGARI VOWEL SIGN PRISHTHAMATRA E\n\t\tcode === 0x11A39 || // Mc ZANABAZAR SQUARE SIGN VISARGA\n\t\t( 0x11A57 <= code && code <= 0x11A58 ) || // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU\n\t\tcode === 0x11A97 || // Mc SOYOMBO SIGN VISARGA\n\t\tcode === 0x11C2F || // Mc BHAIKSUKI VOWEL SIGN AA\n\t\tcode === 0x11C3E || // Mc BHAIKSUKI SIGN VISARGA\n\t\tcode === 0x11CA9 || // Mc MARCHEN SUBJOINED LETTER YA\n\t\tcode === 0x11CB1 || // Mc MARCHEN VOWEL SIGN I\n\t\tcode === 0x11CB4 || // Mc MARCHEN VOWEL SIGN O\n\t\t( 0x11D8A <= code && code <= 0x11D8E ) || // Mc [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU\n\t\t( 0x11D93 <= code && code <= 0x11D94 ) || // Mc [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU\n\t\tcode === 0x11D96 || // Mc GUNJALA GONDI SIGN VISARGA\n\t\t( 0x11EF5 <= code && code <= 0x11EF6 ) || // Mc [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O\n\t\t( 0x16F51 <= code && code <= 0x16F87 ) || // Mc [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI\n\t\t( 0x16FF0 <= code && code <= 0x16FF1 ) || // Mc [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY\n\t\tcode === 0x1D166 || // Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM\n\t\tcode === 0x1D16D // Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT\n\t) {\n\t\treturn constants.SpacingMark;\n\t}\n\tif (\n\t\t( 0x1100 <= code && code <= 0x115F ) || // Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER\n\t\t( 0xA960 <= code && code <= 0xA97C ) // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH\n\t) {\n\t\treturn constants.L;\n\t}\n\tif (\n\t\t( 0x1160 <= code && code <= 0x11A7 ) || // Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE\n\t\t( 0xD7B0 <= code && code <= 0xD7C6 ) // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E\n\t) {\n\t\treturn constants.V;\n\t}\n\tif (\n\t\t( 0x11A8 <= code && code <= 0x11FF ) || // Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN\n\t\t( 0xD7CB <= code && code <= 0xD7FB ) // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH\n\t) {\n\t\treturn constants.T;\n\t}\n\tif (\n\t\tcode === 0xAC00 || // Lo HANGUL SYLLABLE GA\n\t\tcode === 0xAC1C || // Lo HANGUL SYLLABLE GAE\n\t\tcode === 0xAC38 || // Lo HANGUL SYLLABLE GYA\n\t\tcode === 0xAC54 || // Lo HANGUL SYLLABLE GYAE\n\t\tcode === 0xAC70 || // Lo HANGUL SYLLABLE GEO\n\t\tcode === 0xAC8C || // Lo HANGUL SYLLABLE GE\n\t\tcode === 0xACA8 || // Lo HANGUL SYLLABLE GYEO\n\t\tcode === 0xACC4 || // Lo HANGUL SYLLABLE GYE\n\t\tcode === 0xACE0 || // Lo HANGUL SYLLABLE GO\n\t\tcode === 0xACFC || // Lo HANGUL SYLLABLE GWA\n\t\tcode === 0xAD18 || // Lo HANGUL SYLLABLE GWAE\n\t\tcode === 0xAD34 || // Lo HANGUL SYLLABLE GOE\n\t\tcode === 0xAD50 || // Lo HANGUL SYLLABLE GYO\n\t\tcode === 0xAD6C || // Lo HANGUL SYLLABLE GU\n\t\tcode === 0xAD88 || // Lo HANGUL SYLLABLE GWEO\n\t\tcode === 0xADA4 || // Lo HANGUL SYLLABLE GWE\n\t\tcode === 0xADC0 || // Lo HANGUL SYLLABLE GWI\n\t\tcode === 0xADDC || // Lo HANGUL SYLLABLE GYU\n\t\tcode === 0xADF8 || // Lo HANGUL SYLLABLE GEU\n\t\tcode === 0xAE14 || // Lo HANGUL SYLLABLE GYI\n\t\tcode === 0xAE30 || // Lo HANGUL SYLLABLE GI\n\t\tcode === 0xAE4C || // Lo HANGUL SYLLABLE GGA\n\t\tcode === 0xAE68 || // Lo HANGUL SYLLABLE GGAE\n\t\tcode === 0xAE84 || // Lo HANGUL SYLLABLE GGYA\n\t\tcode === 0xAEA0 || // Lo HANGUL SYLLABLE GGYAE\n\t\tcode === 0xAEBC || // Lo HANGUL SYLLABLE GGEO\n\t\tcode === 0xAED8 || // Lo HANGUL SYLLABLE GGE\n\t\tcode === 0xAEF4 || // Lo HANGUL SYLLABLE GGYEO\n\t\tcode === 0xAF10 || // Lo HANGUL SYLLABLE GGYE\n\t\tcode === 0xAF2C || // Lo HANGUL SYLLABLE GGO\n\t\tcode === 0xAF48 || // Lo HANGUL SYLLABLE GGWA\n\t\tcode === 0xAF64 || // Lo HANGUL SYLLABLE GGWAE\n\t\tcode === 0xAF80 || // Lo HANGUL SYLLABLE GGOE\n\t\tcode === 0xAF9C || // Lo HANGUL SYLLABLE GGYO\n\t\tcode === 0xAFB8 || // Lo HANGUL SYLLABLE GGU\n\t\tcode === 0xAFD4 || // Lo HANGUL SYLLABLE GGWEO\n\t\tcode === 0xAFF0 || // Lo HANGUL SYLLABLE GGWE\n\t\tcode === 0xB00C || // Lo HANGUL SYLLABLE GGWI\n\t\tcode === 0xB028 || // Lo HANGUL SYLLABLE GGYU\n\t\tcode === 0xB044 || // Lo HANGUL SYLLABLE GGEU\n\t\tcode === 0xB060 || // Lo HANGUL SYLLABLE GGYI\n\t\tcode === 0xB07C || // Lo HANGUL SYLLABLE GGI\n\t\tcode === 0xB098 || // Lo HANGUL SYLLABLE NA\n\t\tcode === 0xB0B4 || // Lo HANGUL SYLLABLE NAE\n\t\tcode === 0xB0D0 || // Lo HANGUL SYLLABLE NYA\n\t\tcode === 0xB0EC || // Lo HANGUL SYLLABLE NYAE\n\t\tcode === 0xB108 || // Lo HANGUL SYLLABLE NEO\n\t\tcode === 0xB124 || // Lo HANGUL SYLLABLE NE\n\t\tcode === 0xB140 || // Lo HANGUL SYLLABLE NYEO\n\t\tcode === 0xB15C || // Lo HANGUL SYLLABLE NYE\n\t\tcode === 0xB178 || // Lo HANGUL SYLLABLE NO\n\t\tcode === 0xB194 || // Lo HANGUL SYLLABLE NWA\n\t\tcode === 0xB1B0 || // Lo HANGUL SYLLABLE NWAE\n\t\tcode === 0xB1CC || // Lo HANGUL SYLLABLE NOE\n\t\tcode === 0xB1E8 || // Lo HANGUL SYLLABLE NYO\n\t\tcode === 0xB204 || // Lo HANGUL SYLLABLE NU\n\t\tcode === 0xB220 || // Lo HANGUL SYLLABLE NWEO\n\t\tcode === 0xB23C || // Lo HANGUL SYLLABLE NWE\n\t\tcode === 0xB258 || // Lo HANGUL SYLLABLE NWI\n\t\tcode === 0xB274 || // Lo HANGUL SYLLABLE NYU\n\t\tcode === 0xB290 || // Lo HANGUL SYLLABLE NEU\n\t\tcode === 0xB2AC || // Lo HANGUL SYLLABLE NYI\n\t\tcode === 0xB2C8 || // Lo HANGUL SYLLABLE NI\n\t\tcode === 0xB2E4 || // Lo HANGUL SYLLABLE DA\n\t\tcode === 0xB300 || // Lo HANGUL SYLLABLE DAE\n\t\tcode === 0xB31C || // Lo HANGUL SYLLABLE DYA\n\t\tcode === 0xB338 || // Lo HANGUL SYLLABLE DYAE\n\t\tcode === 0xB354 || // Lo HANGUL SYLLABLE DEO\n\t\tcode === 0xB370 || // Lo HANGUL SYLLABLE DE\n\t\tcode === 0xB38C || // Lo HANGUL SYLLABLE DYEO\n\t\tcode === 0xB3A8 || // Lo HANGUL SYLLABLE DYE\n\t\tcode === 0xB3C4 || // Lo HANGUL SYLLABLE DO\n\t\tcode === 0xB3E0 || // Lo HANGUL SYLLABLE DWA\n\t\tcode === 0xB3FC || // Lo HANGUL SYLLABLE DWAE\n\t\tcode === 0xB418 || // Lo HANGUL SYLLABLE DOE\n\t\tcode === 0xB434 || // Lo HANGUL SYLLABLE DYO\n\t\tcode === 0xB450 || // Lo HANGUL SYLLABLE DU\n\t\tcode === 0xB46C || // Lo HANGUL SYLLABLE DWEO\n\t\tcode === 0xB488 || // Lo HANGUL SYLLABLE DWE\n\t\tcode === 0xB4A4 || // Lo HANGUL SYLLABLE DWI\n\t\tcode === 0xB4C0 || // Lo HANGUL SYLLABLE DYU\n\t\tcode === 0xB4DC || // Lo HANGUL SYLLABLE DEU\n\t\tcode === 0xB4F8 || // Lo HANGUL SYLLABLE DYI\n\t\tcode === 0xB514 || // Lo HANGUL SYLLABLE DI\n\t\tcode === 0xB530 || // Lo HANGUL SYLLABLE DDA\n\t\tcode === 0xB54C || // Lo HANGUL SYLLABLE DDAE\n\t\tcode === 0xB568 || // Lo HANGUL SYLLABLE DDYA\n\t\tcode === 0xB584 || // Lo HANGUL SYLLABLE DDYAE\n\t\tcode === 0xB5A0 || // Lo HANGUL SYLLABLE DDEO\n\t\tcode === 0xB5BC || // Lo HANGUL SYLLABLE DDE\n\t\tcode === 0xB5D8 || // Lo HANGUL SYLLABLE DDYEO\n\t\tcode === 0xB5F4 || // Lo HANGUL SYLLABLE DDYE\n\t\tcode === 0xB610 || // Lo HANGUL SYLLABLE DDO\n\t\tcode === 0xB62C || // Lo HANGUL SYLLABLE DDWA\n\t\tcode === 0xB648 || // Lo HANGUL SYLLABLE DDWAE\n\t\tcode === 0xB664 || // Lo HANGUL SYLLABLE DDOE\n\t\tcode === 0xB680 || // Lo HANGUL SYLLABLE DDYO\n\t\tcode === 0xB69C || // Lo HANGUL SYLLABLE DDU\n\t\tcode === 0xB6B8 || // Lo HANGUL SYLLABLE DDWEO\n\t\tcode === 0xB6D4 || // Lo HANGUL SYLLABLE DDWE\n\t\tcode === 0xB6F0 || // Lo HANGUL SYLLABLE DDWI\n\t\tcode === 0xB70C || // Lo HANGUL SYLLABLE DDYU\n\t\tcode === 0xB728 || // Lo HANGUL SYLLABLE DDEU\n\t\tcode === 0xB744 || // Lo HANGUL SYLLABLE DDYI\n\t\tcode === 0xB760 || // Lo HANGUL SYLLABLE DDI\n\t\tcode === 0xB77C || // Lo HANGUL SYLLABLE RA\n\t\tcode === 0xB798 || // Lo HANGUL SYLLABLE RAE\n\t\tcode === 0xB7B4 || // Lo HANGUL SYLLABLE RYA\n\t\tcode === 0xB7D0 || // Lo HANGUL SYLLABLE RYAE\n\t\tcode === 0xB7EC || // Lo HANGUL SYLLABLE REO\n\t\tcode === 0xB808 || // Lo HANGUL SYLLABLE RE\n\t\tcode === 0xB824 || // Lo HANGUL SYLLABLE RYEO\n\t\tcode === 0xB840 || // Lo HANGUL SYLLABLE RYE\n\t\tcode === 0xB85C || // Lo HANGUL SYLLABLE RO\n\t\tcode === 0xB878 || // Lo HANGUL SYLLABLE RWA\n\t\tcode === 0xB894 || // Lo HANGUL SYLLABLE RWAE\n\t\tcode === 0xB8B0 || // Lo HANGUL SYLLABLE ROE\n\t\tcode === 0xB8CC || // Lo HANGUL SYLLABLE RYO\n\t\tcode === 0xB8E8 || // Lo HANGUL SYLLABLE RU\n\t\tcode === 0xB904 || // Lo HANGUL SYLLABLE RWEO\n\t\tcode === 0xB920 || // Lo HANGUL SYLLABLE RWE\n\t\tcode === 0xB93C || // Lo HANGUL SYLLABLE RWI\n\t\tcode === 0xB958 || // Lo HANGUL SYLLABLE RYU\n\t\tcode === 0xB974 || // Lo HANGUL SYLLABLE REU\n\t\tcode === 0xB990 || // Lo HANGUL SYLLABLE RYI\n\t\tcode === 0xB9AC || // Lo HANGUL SYLLABLE RI\n\t\tcode === 0xB9C8 || // Lo HANGUL SYLLABLE MA\n\t\tcode === 0xB9E4 || // Lo HANGUL SYLLABLE MAE\n\t\tcode === 0xBA00 || // Lo HANGUL SYLLABLE MYA\n\t\tcode === 0xBA1C || // Lo HANGUL SYLLABLE MYAE\n\t\tcode === 0xBA38 || // Lo HANGUL SYLLABLE MEO\n\t\tcode === 0xBA54 || // Lo HANGUL SYLLABLE ME\n\t\tcode === 0xBA70 || // Lo HANGUL SYLLABLE MYEO\n\t\tcode === 0xBA8C || // Lo HANGUL SYLLABLE MYE\n\t\tcode === 0xBAA8 || // Lo HANGUL SYLLABLE MO\n\t\tcode === 0xBAC4 || // Lo HANGUL SYLLABLE MWA\n\t\tcode === 0xBAE0 || // Lo HANGUL SYLLABLE MWAE\n\t\tcode === 0xBAFC || // Lo HANGUL SYLLABLE MOE\n\t\tcode === 0xBB18 || // Lo HANGUL SYLLABLE MYO\n\t\tcode === 0xBB34 || // Lo HANGUL SYLLABLE MU\n\t\tcode === 0xBB50 || // Lo HANGUL SYLLABLE MWEO\n\t\tcode === 0xBB6C || // Lo HANGUL SYLLABLE MWE\n\t\tcode === 0xBB88 || // Lo HANGUL SYLLABLE MWI\n\t\tcode === 0xBBA4 || // Lo HANGUL SYLLABLE MYU\n\t\tcode === 0xBBC0 || // Lo HANGUL SYLLABLE MEU\n\t\tcode === 0xBBDC || // Lo HANGUL SYLLABLE MYI\n\t\tcode === 0xBBF8 || // Lo HANGUL SYLLABLE MI\n\t\tcode === 0xBC14 || // Lo HANGUL SYLLABLE BA\n\t\tcode === 0xBC30 || // Lo HANGUL SYLLABLE BAE\n\t\tcode === 0xBC4C || // Lo HANGUL SYLLABLE BYA\n\t\tcode === 0xBC68 || // Lo HANGUL SYLLABLE BYAE\n\t\tcode === 0xBC84 || // Lo HANGUL SYLLABLE BEO\n\t\tcode === 0xBCA0 || // Lo HANGUL SYLLABLE BE\n\t\tcode === 0xBCBC || // Lo HANGUL SYLLABLE BYEO\n\t\tcode === 0xBCD8 || // Lo HANGUL SYLLABLE BYE\n\t\tcode === 0xBCF4 || // Lo HANGUL SYLLABLE BO\n\t\tcode === 0xBD10 || // Lo HANGUL SYLLABLE BWA\n\t\tcode === 0xBD2C || // Lo HANGUL SYLLABLE BWAE\n\t\tcode === 0xBD48 || // Lo HANGUL SYLLABLE BOE\n\t\tcode === 0xBD64 || // Lo HANGUL SYLLABLE BYO\n\t\tcode === 0xBD80 || // Lo HANGUL SYLLABLE BU\n\t\tcode === 0xBD9C || // Lo HANGUL SYLLABLE BWEO\n\t\tcode === 0xBDB8 || // Lo HANGUL SYLLABLE BWE\n\t\tcode === 0xBDD4 || // Lo HANGUL SYLLABLE BWI\n\t\tcode === 0xBDF0 || // Lo HANGUL SYLLABLE BYU\n\t\tcode === 0xBE0C || // Lo HANGUL SYLLABLE BEU\n\t\tcode === 0xBE28 || // Lo HANGUL SYLLABLE BYI\n\t\tcode === 0xBE44 || // Lo HANGUL SYLLABLE BI\n\t\tcode === 0xBE60 || // Lo HANGUL SYLLABLE BBA\n\t\tcode === 0xBE7C || // Lo HANGUL SYLLABLE BBAE\n\t\tcode === 0xBE98 || // Lo HANGUL SYLLABLE BBYA\n\t\tcode === 0xBEB4 || // Lo HANGUL SYLLABLE BBYAE\n\t\tcode === 0xBED0 || // Lo HANGUL SYLLABLE BBEO\n\t\tcode === 0xBEEC || // Lo HANGUL SYLLABLE BBE\n\t\tcode === 0xBF08 || // Lo HANGUL SYLLABLE BBYEO\n\t\tcode === 0xBF24 || // Lo HANGUL SYLLABLE BBYE\n\t\tcode === 0xBF40 || // Lo HANGUL SYLLABLE BBO\n\t\tcode === 0xBF5C || // Lo HANGUL SYLLABLE BBWA\n\t\tcode === 0xBF78 || // Lo HANGUL SYLLABLE BBWAE\n\t\tcode === 0xBF94 || // Lo HANGUL SYLLABLE BBOE\n\t\tcode === 0xBFB0 || // Lo HANGUL SYLLABLE BBYO\n\t\tcode === 0xBFCC || // Lo HANGUL SYLLABLE BBU\n\t\tcode === 0xBFE8 || // Lo HANGUL SYLLABLE BBWEO\n\t\tcode === 0xC004 || // Lo HANGUL SYLLABLE BBWE\n\t\tcode === 0xC020 || // Lo HANGUL SYLLABLE BBWI\n\t\tcode === 0xC03C || // Lo HANGUL SYLLABLE BBYU\n\t\tcode === 0xC058 || // Lo HANGUL SYLLABLE BBEU\n\t\tcode === 0xC074 || // Lo HANGUL SYLLABLE BBYI\n\t\tcode === 0xC090 || // Lo HANGUL SYLLABLE BBI\n\t\tcode === 0xC0AC || // Lo HANGUL SYLLABLE SA\n\t\tcode === 0xC0C8 || // Lo HANGUL SYLLABLE SAE\n\t\tcode === 0xC0E4 || // Lo HANGUL SYLLABLE SYA\n\t\tcode === 0xC100 || // Lo HANGUL SYLLABLE SYAE\n\t\tcode === 0xC11C || // Lo HANGUL SYLLABLE SEO\n\t\tcode === 0xC138 || // Lo HANGUL SYLLABLE SE\n\t\tcode === 0xC154 || // Lo HANGUL SYLLABLE SYEO\n\t\tcode === 0xC170 || // Lo HANGUL SYLLABLE SYE\n\t\tcode === 0xC18C || // Lo HANGUL SYLLABLE SO\n\t\tcode === 0xC1A8 || // Lo HANGUL SYLLABLE SWA\n\t\tcode === 0xC1C4 || // Lo HANGUL SYLLABLE SWAE\n\t\tcode === 0xC1E0 || // Lo HANGUL SYLLABLE SOE\n\t\tcode === 0xC1FC || // Lo HANGUL SYLLABLE SYO\n\t\tcode === 0xC218 || // Lo HANGUL SYLLABLE SU\n\t\tcode === 0xC234 || // Lo HANGUL SYLLABLE SWEO\n\t\tcode === 0xC250 || // Lo HANGUL SYLLABLE SWE\n\t\tcode === 0xC26C || // Lo HANGUL SYLLABLE SWI\n\t\tcode === 0xC288 || // Lo HANGUL SYLLABLE SYU\n\t\tcode === 0xC2A4 || // Lo HANGUL SYLLABLE SEU\n\t\tcode === 0xC2C0 || // Lo HANGUL SYLLABLE SYI\n\t\tcode === 0xC2DC || // Lo HANGUL SYLLABLE SI\n\t\tcode === 0xC2F8 || // Lo HANGUL SYLLABLE SSA\n\t\tcode === 0xC314 || // Lo HANGUL SYLLABLE SSAE\n\t\tcode === 0xC330 || // Lo HANGUL SYLLABLE SSYA\n\t\tcode === 0xC34C || // Lo HANGUL SYLLABLE SSYAE\n\t\tcode === 0xC368 || // Lo HANGUL SYLLABLE SSEO\n\t\tcode === 0xC384 || // Lo HANGUL SYLLABLE SSE\n\t\tcode === 0xC3A0 || // Lo HANGUL SYLLABLE SSYEO\n\t\tcode === 0xC3BC || // Lo HANGUL SYLLABLE SSYE\n\t\tcode === 0xC3D8 || // Lo HANGUL SYLLABLE SSO\n\t\tcode === 0xC3F4 || // Lo HANGUL SYLLABLE SSWA\n\t\tcode === 0xC410 || // Lo HANGUL SYLLABLE SSWAE\n\t\tcode === 0xC42C || // Lo HANGUL SYLLABLE SSOE\n\t\tcode === 0xC448 || // Lo HANGUL SYLLABLE SSYO\n\t\tcode === 0xC464 || // Lo HANGUL SYLLABLE SSU\n\t\tcode === 0xC480 || // Lo HANGUL SYLLABLE SSWEO\n\t\tcode === 0xC49C || // Lo HANGUL SYLLABLE SSWE\n\t\tcode === 0xC4B8 || // Lo HANGUL SYLLABLE SSWI\n\t\tcode === 0xC4D4 || // Lo HANGUL SYLLABLE SSYU\n\t\tcode === 0xC4F0 || // Lo HANGUL SYLLABLE SSEU\n\t\tcode === 0xC50C || // Lo HANGUL SYLLABLE SSYI\n\t\tcode === 0xC528 || // Lo HANGUL SYLLABLE SSI\n\t\tcode === 0xC544 || // Lo HANGUL SYLLABLE A\n\t\tcode === 0xC560 || // Lo HANGUL SYLLABLE AE\n\t\tcode === 0xC57C || // Lo HANGUL SYLLABLE YA\n\t\tcode === 0xC598 || // Lo HANGUL SYLLABLE YAE\n\t\tcode === 0xC5B4 || // Lo HANGUL SYLLABLE EO\n\t\tcode === 0xC5D0 || // Lo HANGUL SYLLABLE E\n\t\tcode === 0xC5EC || // Lo HANGUL SYLLABLE YEO\n\t\tcode === 0xC608 || // Lo HANGUL SYLLABLE YE\n\t\tcode === 0xC624 || // Lo HANGUL SYLLABLE O\n\t\tcode === 0xC640 || // Lo HANGUL SYLLABLE WA\n\t\tcode === 0xC65C || // Lo HANGUL SYLLABLE WAE\n\t\tcode === 0xC678 || // Lo HANGUL SYLLABLE OE\n\t\tcode === 0xC694 || // Lo HANGUL SYLLABLE YO\n\t\tcode === 0xC6B0 || // Lo HANGUL SYLLABLE U\n\t\tcode === 0xC6CC || // Lo HANGUL SYLLABLE WEO\n\t\tcode === 0xC6E8 || // Lo HANGUL SYLLABLE WE\n\t\tcode === 0xC704 || // Lo HANGUL SYLLABLE WI\n\t\tcode === 0xC720 || // Lo HANGUL SYLLABLE YU\n\t\tcode === 0xC73C || // Lo HANGUL SYLLABLE EU\n\t\tcode === 0xC758 || // Lo HANGUL SYLLABLE YI\n\t\tcode === 0xC774 || // Lo HANGUL SYLLABLE I\n\t\tcode === 0xC790 || // Lo HANGUL SYLLABLE JA\n\t\tcode === 0xC7AC || // Lo HANGUL SYLLABLE JAE\n\t\tcode === 0xC7C8 || // Lo HANGUL SYLLABLE JYA\n\t\tcode === 0xC7E4 || // Lo HANGUL SYLLABLE JYAE\n\t\tcode === 0xC800 || // Lo HANGUL SYLLABLE JEO\n\t\tcode === 0xC81C || // Lo HANGUL SYLLABLE JE\n\t\tcode === 0xC838 || // Lo HANGUL SYLLABLE JYEO\n\t\tcode === 0xC854 || // Lo HANGUL SYLLABLE JYE\n\t\tcode === 0xC870 || // Lo HANGUL SYLLABLE JO\n\t\tcode === 0xC88C || // Lo HANGUL SYLLABLE JWA\n\t\tcode === 0xC8A8 || // Lo HANGUL SYLLABLE JWAE\n\t\tcode === 0xC8C4 || // Lo HANGUL SYLLABLE JOE\n\t\tcode === 0xC8E0 || // Lo HANGUL SYLLABLE JYO\n\t\tcode === 0xC8FC || // Lo HANGUL SYLLABLE JU\n\t\tcode === 0xC918 || // Lo HANGUL SYLLABLE JWEO\n\t\tcode === 0xC934 || // Lo HANGUL SYLLABLE JWE\n\t\tcode === 0xC950 || // Lo HANGUL SYLLABLE JWI\n\t\tcode === 0xC96C || // Lo HANGUL SYLLABLE JYU\n\t\tcode === 0xC988 || // Lo HANGUL SYLLABLE JEU\n\t\tcode === 0xC9A4 || // Lo HANGUL SYLLABLE JYI\n\t\tcode === 0xC9C0 || // Lo HANGUL SYLLABLE JI\n\t\tcode === 0xC9DC || // Lo HANGUL SYLLABLE JJA\n\t\tcode === 0xC9F8 || // Lo HANGUL SYLLABLE JJAE\n\t\tcode === 0xCA14 || // Lo HANGUL SYLLABLE JJYA\n\t\tcode === 0xCA30 || // Lo HANGUL SYLLABLE JJYAE\n\t\tcode === 0xCA4C || // Lo HANGUL SYLLABLE JJEO\n\t\tcode === 0xCA68 || // Lo HANGUL SYLLABLE JJE\n\t\tcode === 0xCA84 || // Lo HANGUL SYLLABLE JJYEO\n\t\tcode === 0xCAA0 || // Lo HANGUL SYLLABLE JJYE\n\t\tcode === 0xCABC || // Lo HANGUL SYLLABLE JJO\n\t\tcode === 0xCAD8 || // Lo HANGUL SYLLABLE JJWA\n\t\tcode === 0xCAF4 || // Lo HANGUL SYLLABLE JJWAE\n\t\tcode === 0xCB10 || // Lo HANGUL SYLLABLE JJOE\n\t\tcode === 0xCB2C || // Lo HANGUL SYLLABLE JJYO\n\t\tcode === 0xCB48 || // Lo HANGUL SYLLABLE JJU\n\t\tcode === 0xCB64 || // Lo HANGUL SYLLABLE JJWEO\n\t\tcode === 0xCB80 || // Lo HANGUL SYLLABLE JJWE\n\t\tcode === 0xCB9C || // Lo HANGUL SYLLABLE JJWI\n\t\tcode === 0xCBB8 || // Lo HANGUL SYLLABLE JJYU\n\t\tcode === 0xCBD4 || // Lo HANGUL SYLLABLE JJEU\n\t\tcode === 0xCBF0 || // Lo HANGUL SYLLABLE JJYI\n\t\tcode === 0xCC0C || // Lo HANGUL SYLLABLE JJI\n\t\tcode === 0xCC28 || // Lo HANGUL SYLLABLE CA\n\t\tcode === 0xCC44 || // Lo HANGUL SYLLABLE CAE\n\t\tcode === 0xCC60 || // Lo HANGUL SYLLABLE CYA\n\t\tcode === 0xCC7C || // Lo HANGUL SYLLABLE CYAE\n\t\tcode === 0xCC98 || // Lo HANGUL SYLLABLE CEO\n\t\tcode === 0xCCB4 || // Lo HANGUL SYLLABLE CE\n\t\tcode === 0xCCD0 || // Lo HANGUL SYLLABLE CYEO\n\t\tcode === 0xCCEC || // Lo HANGUL SYLLABLE CYE\n\t\tcode === 0xCD08 || // Lo HANGUL SYLLABLE CO\n\t\tcode === 0xCD24 || // Lo HANGUL SYLLABLE CWA\n\t\tcode === 0xCD40 || // Lo HANGUL SYLLABLE CWAE\n\t\tcode === 0xCD5C || // Lo HANGUL SYLLABLE COE\n\t\tcode === 0xCD78 || // Lo HANGUL SYLLABLE CYO\n\t\tcode === 0xCD94 || // Lo HANGUL SYLLABLE CU\n\t\tcode === 0xCDB0 || // Lo HANGUL SYLLABLE CWEO\n\t\tcode === 0xCDCC || // Lo HANGUL SYLLABLE CWE\n\t\tcode === 0xCDE8 || // Lo HANGUL SYLLABLE CWI\n\t\tcode === 0xCE04 || // Lo HANGUL SYLLABLE CYU\n\t\tcode === 0xCE20 || // Lo HANGUL SYLLABLE CEU\n\t\tcode === 0xCE3C || // Lo HANGUL SYLLABLE CYI\n\t\tcode === 0xCE58 || // Lo HANGUL SYLLABLE CI\n\t\tcode === 0xCE74 || // Lo HANGUL SYLLABLE KA\n\t\tcode === 0xCE90 || // Lo HANGUL SYLLABLE KAE\n\t\tcode === 0xCEAC || // Lo HANGUL SYLLABLE KYA\n\t\tcode === 0xCEC8 || // Lo HANGUL SYLLABLE KYAE\n\t\tcode === 0xCEE4 || // Lo HANGUL SYLLABLE KEO\n\t\tcode === 0xCF00 || // Lo HANGUL SYLLABLE KE\n\t\tcode === 0xCF1C || // Lo HANGUL SYLLABLE KYEO\n\t\tcode === 0xCF38 || // Lo HANGUL SYLLABLE KYE\n\t\tcode === 0xCF54 || // Lo HANGUL SYLLABLE KO\n\t\tcode === 0xCF70 || // Lo HANGUL SYLLABLE KWA\n\t\tcode === 0xCF8C || // Lo HANGUL SYLLABLE KWAE\n\t\tcode === 0xCFA8 || // Lo HANGUL SYLLABLE KOE\n\t\tcode === 0xCFC4 || // Lo HANGUL SYLLABLE KYO\n\t\tcode === 0xCFE0 || // Lo HANGUL SYLLABLE KU\n\t\tcode === 0xCFFC || // Lo HANGUL SYLLABLE KWEO\n\t\tcode === 0xD018 || // Lo HANGUL SYLLABLE KWE\n\t\tcode === 0xD034 || // Lo HANGUL SYLLABLE KWI\n\t\tcode === 0xD050 || // Lo HANGUL SYLLABLE KYU\n\t\tcode === 0xD06C || // Lo HANGUL SYLLABLE KEU\n\t\tcode === 0xD088 || // Lo HANGUL SYLLABLE KYI\n\t\tcode === 0xD0A4 || // Lo HANGUL SYLLABLE KI\n\t\tcode === 0xD0C0 || // Lo HANGUL SYLLABLE TA\n\t\tcode === 0xD0DC || // Lo HANGUL SYLLABLE TAE\n\t\tcode === 0xD0F8 || // Lo HANGUL SYLLABLE TYA\n\t\tcode === 0xD114 || // Lo HANGUL SYLLABLE TYAE\n\t\tcode === 0xD130 || // Lo HANGUL SYLLABLE TEO\n\t\tcode === 0xD14C || // Lo HANGUL SYLLABLE TE\n\t\tcode === 0xD168 || // Lo HANGUL SYLLABLE TYEO\n\t\tcode === 0xD184 || // Lo HANGUL SYLLABLE TYE\n\t\tcode === 0xD1A0 || // Lo HANGUL SYLLABLE TO\n\t\tcode === 0xD1BC || // Lo HANGUL SYLLABLE TWA\n\t\tcode === 0xD1D8 || // Lo HANGUL SYLLABLE TWAE\n\t\tcode === 0xD1F4 || // Lo HANGUL SYLLABLE TOE\n\t\tcode === 0xD210 || // Lo HANGUL SYLLABLE TYO\n\t\tcode === 0xD22C || // Lo HANGUL SYLLABLE TU\n\t\tcode === 0xD248 || // Lo HANGUL SYLLABLE TWEO\n\t\tcode === 0xD264 || // Lo HANGUL SYLLABLE TWE\n\t\tcode === 0xD280 || // Lo HANGUL SYLLABLE TWI\n\t\tcode === 0xD29C || // Lo HANGUL SYLLABLE TYU\n\t\tcode === 0xD2B8 || // Lo HANGUL SYLLABLE TEU\n\t\tcode === 0xD2D4 || // Lo HANGUL SYLLABLE TYI\n\t\tcode === 0xD2F0 || // Lo HANGUL SYLLABLE TI\n\t\tcode === 0xD30C || // Lo HANGUL SYLLABLE PA\n\t\tcode === 0xD328 || // Lo HANGUL SYLLABLE PAE\n\t\tcode === 0xD344 || // Lo HANGUL SYLLABLE PYA\n\t\tcode === 0xD360 || // Lo HANGUL SYLLABLE PYAE\n\t\tcode === 0xD37C || // Lo HANGUL SYLLABLE PEO\n\t\tcode === 0xD398 || // Lo HANGUL SYLLABLE PE\n\t\tcode === 0xD3B4 || // Lo HANGUL SYLLABLE PYEO\n\t\tcode === 0xD3D0 || // Lo HANGUL SYLLABLE PYE\n\t\tcode === 0xD3EC || // Lo HANGUL SYLLABLE PO\n\t\tcode === 0xD408 || // Lo HANGUL SYLLABLE PWA\n\t\tcode === 0xD424 || // Lo HANGUL SYLLABLE PWAE\n\t\tcode === 0xD440 || // Lo HANGUL SYLLABLE POE\n\t\tcode === 0xD45C || // Lo HANGUL SYLLABLE PYO\n\t\tcode === 0xD478 || // Lo HANGUL SYLLABLE PU\n\t\tcode === 0xD494 || // Lo HANGUL SYLLABLE PWEO\n\t\tcode === 0xD4B0 || // Lo HANGUL SYLLABLE PWE\n\t\tcode === 0xD4CC || // Lo HANGUL SYLLABLE PWI\n\t\tcode === 0xD4E8 || // Lo HANGUL SYLLABLE PYU\n\t\tcode === 0xD504 || // Lo HANGUL SYLLABLE PEU\n\t\tcode === 0xD520 || // Lo HANGUL SYLLABLE PYI\n\t\tcode === 0xD53C || // Lo HANGUL SYLLABLE PI\n\t\tcode === 0xD558 || // Lo HANGUL SYLLABLE HA\n\t\tcode === 0xD574 || // Lo HANGUL SYLLABLE HAE\n\t\tcode === 0xD590 || // Lo HANGUL SYLLABLE HYA\n\t\tcode === 0xD5AC || // Lo HANGUL SYLLABLE HYAE\n\t\tcode === 0xD5C8 || // Lo HANGUL SYLLABLE HEO\n\t\tcode === 0xD5E4 || // Lo HANGUL SYLLABLE HE\n\t\tcode === 0xD600 || // Lo HANGUL SYLLABLE HYEO\n\t\tcode === 0xD61C || // Lo HANGUL SYLLABLE HYE\n\t\tcode === 0xD638 || // Lo HANGUL SYLLABLE HO\n\t\tcode === 0xD654 || // Lo HANGUL SYLLABLE HWA\n\t\tcode === 0xD670 || // Lo HANGUL SYLLABLE HWAE\n\t\tcode === 0xD68C || // Lo HANGUL SYLLABLE HOE\n\t\tcode === 0xD6A8 || // Lo HANGUL SYLLABLE HYO\n\t\tcode === 0xD6C4 || // Lo HANGUL SYLLABLE HU\n\t\tcode === 0xD6E0 || // Lo HANGUL SYLLABLE HWEO\n\t\tcode === 0xD6FC || // Lo HANGUL SYLLABLE HWE\n\t\tcode === 0xD718 || // Lo HANGUL SYLLABLE HWI\n\t\tcode === 0xD734 || // Lo HANGUL SYLLABLE HYU\n\t\tcode === 0xD750 || // Lo HANGUL SYLLABLE HEU\n\t\tcode === 0xD76C || // Lo HANGUL SYLLABLE HYI\n\t\tcode === 0xD788 // Lo HANGUL SYLLABLE HI\n\t) {\n\t\treturn constants.LV;\n\t}\n\tif (\n\t\t( 0xAC01 <= code && code <= 0xAC1B ) || // Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH\n\t\t( 0xAC1D <= code && code <= 0xAC37 ) || // Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH\n\t\t( 0xAC39 <= code && code <= 0xAC53 ) || // Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH\n\t\t( 0xAC55 <= code && code <= 0xAC6F ) || // Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH\n\t\t( 0xAC71 <= code && code <= 0xAC8B ) || // Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH\n\t\t( 0xAC8D <= code && code <= 0xACA7 ) || // Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH\n\t\t( 0xACA9 <= code && code <= 0xACC3 ) || // Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH\n\t\t( 0xACC5 <= code && code <= 0xACDF ) || // Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH\n\t\t( 0xACE1 <= code && code <= 0xACFB ) || // Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH\n\t\t( 0xACFD <= code && code <= 0xAD17 ) || // Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH\n\t\t( 0xAD19 <= code && code <= 0xAD33 ) || // Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH\n\t\t( 0xAD35 <= code && code <= 0xAD4F ) || // Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH\n\t\t( 0xAD51 <= code && code <= 0xAD6B ) || // Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH\n\t\t( 0xAD6D <= code && code <= 0xAD87 ) || // Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH\n\t\t( 0xAD89 <= code && code <= 0xADA3 ) || // Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH\n\t\t( 0xADA5 <= code && code <= 0xADBF ) || // Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH\n\t\t( 0xADC1 <= code && code <= 0xADDB ) || // Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH\n\t\t( 0xADDD <= code && code <= 0xADF7 ) || // Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH\n\t\t( 0xADF9 <= code && code <= 0xAE13 ) || // Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH\n\t\t( 0xAE15 <= code && code <= 0xAE2F ) || // Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH\n\t\t( 0xAE31 <= code && code <= 0xAE4B ) || // Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH\n\t\t( 0xAE4D <= code && code <= 0xAE67 ) || // Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH\n\t\t( 0xAE69 <= code && code <= 0xAE83 ) || // Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH\n\t\t( 0xAE85 <= code && code <= 0xAE9F ) || // Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH\n\t\t( 0xAEA1 <= code && code <= 0xAEBB ) || // Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH\n\t\t( 0xAEBD <= code && code <= 0xAED7 ) || // Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH\n\t\t( 0xAED9 <= code && code <= 0xAEF3 ) || // Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH\n\t\t( 0xAEF5 <= code && code <= 0xAF0F ) || // Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH\n\t\t( 0xAF11 <= code && code <= 0xAF2B ) || // Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH\n\t\t( 0xAF2D <= code && code <= 0xAF47 ) || // Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH\n\t\t( 0xAF49 <= code && code <= 0xAF63 ) || // Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH\n\t\t( 0xAF65 <= code && code <= 0xAF7F ) || // Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH\n\t\t( 0xAF81 <= code && code <= 0xAF9B ) || // Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH\n\t\t( 0xAF9D <= code && code <= 0xAFB7 ) || // Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH\n\t\t( 0xAFB9 <= code && code <= 0xAFD3 ) || // Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH\n\t\t( 0xAFD5 <= code && code <= 0xAFEF ) || // Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH\n\t\t( 0xAFF1 <= code && code <= 0xB00B ) || // Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH\n\t\t( 0xB00D <= code && code <= 0xB027 ) || // Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH\n\t\t( 0xB029 <= code && code <= 0xB043 ) || // Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH\n\t\t( 0xB045 <= code && code <= 0xB05F ) || // Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH\n\t\t( 0xB061 <= code && code <= 0xB07B ) || // Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH\n\t\t( 0xB07D <= code && code <= 0xB097 ) || // Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH\n\t\t( 0xB099 <= code && code <= 0xB0B3 ) || // Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH\n\t\t( 0xB0B5 <= code && code <= 0xB0CF ) || // Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH\n\t\t( 0xB0D1 <= code && code <= 0xB0EB ) || // Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH\n\t\t( 0xB0ED <= code && code <= 0xB107 ) || // Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH\n\t\t( 0xB109 <= code && code <= 0xB123 ) || // Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH\n\t\t( 0xB125 <= code && code <= 0xB13F ) || // Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH\n\t\t( 0xB141 <= code && code <= 0xB15B ) || // Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH\n\t\t( 0xB15D <= code && code <= 0xB177 ) || // Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH\n\t\t( 0xB179 <= code && code <= 0xB193 ) || // Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH\n\t\t( 0xB195 <= code && code <= 0xB1AF ) || // Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH\n\t\t( 0xB1B1 <= code && code <= 0xB1CB ) || // Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH\n\t\t( 0xB1CD <= code && code <= 0xB1E7 ) || // Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH\n\t\t( 0xB1E9 <= code && code <= 0xB203 ) || // Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH\n\t\t( 0xB205 <= code && code <= 0xB21F ) || // Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH\n\t\t( 0xB221 <= code && code <= 0xB23B ) || // Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH\n\t\t( 0xB23D <= code && code <= 0xB257 ) || // Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH\n\t\t( 0xB259 <= code && code <= 0xB273 ) || // Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH\n\t\t( 0xB275 <= code && code <= 0xB28F ) || // Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH\n\t\t( 0xB291 <= code && code <= 0xB2AB ) || // Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH\n\t\t( 0xB2AD <= code && code <= 0xB2C7 ) || // Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH\n\t\t( 0xB2C9 <= code && code <= 0xB2E3 ) || // Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH\n\t\t( 0xB2E5 <= code && code <= 0xB2FF ) || // Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH\n\t\t( 0xB301 <= code && code <= 0xB31B ) || // Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH\n\t\t( 0xB31D <= code && code <= 0xB337 ) || // Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH\n\t\t( 0xB339 <= code && code <= 0xB353 ) || // Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH\n\t\t( 0xB355 <= code && code <= 0xB36F ) || // Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH\n\t\t( 0xB371 <= code && code <= 0xB38B ) || // Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH\n\t\t( 0xB38D <= code && code <= 0xB3A7 ) || // Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH\n\t\t( 0xB3A9 <= code && code <= 0xB3C3 ) || // Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH\n\t\t( 0xB3C5 <= code && code <= 0xB3DF ) || // Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH\n\t\t( 0xB3E1 <= code && code <= 0xB3FB ) || // Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH\n\t\t( 0xB3FD <= code && code <= 0xB417 ) || // Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH\n\t\t( 0xB419 <= code && code <= 0xB433 ) || // Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH\n\t\t( 0xB435 <= code && code <= 0xB44F ) || // Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH\n\t\t( 0xB451 <= code && code <= 0xB46B ) || // Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH\n\t\t( 0xB46D <= code && code <= 0xB487 ) || // Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH\n\t\t( 0xB489 <= code && code <= 0xB4A3 ) || // Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH\n\t\t( 0xB4A5 <= code && code <= 0xB4BF ) || // Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH\n\t\t( 0xB4C1 <= code && code <= 0xB4DB ) || // Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH\n\t\t( 0xB4DD <= code && code <= 0xB4F7 ) || // Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH\n\t\t( 0xB4F9 <= code && code <= 0xB513 ) || // Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH\n\t\t( 0xB515 <= code && code <= 0xB52F ) || // Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH\n\t\t( 0xB531 <= code && code <= 0xB54B ) || // Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH\n\t\t( 0xB54D <= code && code <= 0xB567 ) || // Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH\n\t\t( 0xB569 <= code && code <= 0xB583 ) || // Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH\n\t\t( 0xB585 <= code && code <= 0xB59F ) || // Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH\n\t\t( 0xB5A1 <= code && code <= 0xB5BB ) || // Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH\n\t\t( 0xB5BD <= code && code <= 0xB5D7 ) || // Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH\n\t\t( 0xB5D9 <= code && code <= 0xB5F3 ) || // Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH\n\t\t( 0xB5F5 <= code && code <= 0xB60F ) || // Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH\n\t\t( 0xB611 <= code && code <= 0xB62B ) || // Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH\n\t\t( 0xB62D <= code && code <= 0xB647 ) || // Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH\n\t\t( 0xB649 <= code && code <= 0xB663 ) || // Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH\n\t\t( 0xB665 <= code && code <= 0xB67F ) || // Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH\n\t\t( 0xB681 <= code && code <= 0xB69B ) || // Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH\n\t\t( 0xB69D <= code && code <= 0xB6B7 ) || // Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH\n\t\t( 0xB6B9 <= code && code <= 0xB6D3 ) || // Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH\n\t\t( 0xB6D5 <= code && code <= 0xB6EF ) || // Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH\n\t\t( 0xB6F1 <= code && code <= 0xB70B ) || // Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH\n\t\t( 0xB70D <= code && code <= 0xB727 ) || // Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH\n\t\t( 0xB729 <= code && code <= 0xB743 ) || // Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH\n\t\t( 0xB745 <= code && code <= 0xB75F ) || // Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH\n\t\t( 0xB761 <= code && code <= 0xB77B ) || // Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH\n\t\t( 0xB77D <= code && code <= 0xB797 ) || // Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH\n\t\t( 0xB799 <= code && code <= 0xB7B3 ) || // Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH\n\t\t( 0xB7B5 <= code && code <= 0xB7CF ) || // Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH\n\t\t( 0xB7D1 <= code && code <= 0xB7EB ) || // Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH\n\t\t( 0xB7ED <= code && code <= 0xB807 ) || // Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH\n\t\t( 0xB809 <= code && code <= 0xB823 ) || // Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH\n\t\t( 0xB825 <= code && code <= 0xB83F ) || // Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH\n\t\t( 0xB841 <= code && code <= 0xB85B ) || // Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH\n\t\t( 0xB85D <= code && code <= 0xB877 ) || // Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH\n\t\t( 0xB879 <= code && code <= 0xB893 ) || // Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH\n\t\t( 0xB895 <= code && code <= 0xB8AF ) || // Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH\n\t\t( 0xB8B1 <= code && code <= 0xB8CB ) || // Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH\n\t\t( 0xB8CD <= code && code <= 0xB8E7 ) || // Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH\n\t\t( 0xB8E9 <= code && code <= 0xB903 ) || // Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH\n\t\t( 0xB905 <= code && code <= 0xB91F ) || // Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH\n\t\t( 0xB921 <= code && code <= 0xB93B ) || // Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH\n\t\t( 0xB93D <= code && code <= 0xB957 ) || // Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH\n\t\t( 0xB959 <= code && code <= 0xB973 ) || // Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH\n\t\t( 0xB975 <= code && code <= 0xB98F ) || // Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH\n\t\t( 0xB991 <= code && code <= 0xB9AB ) || // Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH\n\t\t( 0xB9AD <= code && code <= 0xB9C7 ) || // Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH\n\t\t( 0xB9C9 <= code && code <= 0xB9E3 ) || // Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH\n\t\t( 0xB9E5 <= code && code <= 0xB9FF ) || // Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH\n\t\t( 0xBA01 <= code && code <= 0xBA1B ) || // Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH\n\t\t( 0xBA1D <= code && code <= 0xBA37 ) || // Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH\n\t\t( 0xBA39 <= code && code <= 0xBA53 ) || // Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH\n\t\t( 0xBA55 <= code && code <= 0xBA6F ) || // Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH\n\t\t( 0xBA71 <= code && code <= 0xBA8B ) || // Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH\n\t\t( 0xBA8D <= code && code <= 0xBAA7 ) || // Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH\n\t\t( 0xBAA9 <= code && code <= 0xBAC3 ) || // Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH\n\t\t( 0xBAC5 <= code && code <= 0xBADF ) || // Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH\n\t\t( 0xBAE1 <= code && code <= 0xBAFB ) || // Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH\n\t\t( 0xBAFD <= code && code <= 0xBB17 ) || // Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH\n\t\t( 0xBB19 <= code && code <= 0xBB33 ) || // Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH\n\t\t( 0xBB35 <= code && code <= 0xBB4F ) || // Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH\n\t\t( 0xBB51 <= code && code <= 0xBB6B ) || // Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH\n\t\t( 0xBB6D <= code && code <= 0xBB87 ) || // Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH\n\t\t( 0xBB89 <= code && code <= 0xBBA3 ) || // Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH\n\t\t( 0xBBA5 <= code && code <= 0xBBBF ) || // Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH\n\t\t( 0xBBC1 <= code && code <= 0xBBDB ) || // Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH\n\t\t( 0xBBDD <= code && code <= 0xBBF7 ) || // Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH\n\t\t( 0xBBF9 <= code && code <= 0xBC13 ) || // Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH\n\t\t( 0xBC15 <= code && code <= 0xBC2F ) || // Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH\n\t\t( 0xBC31 <= code && code <= 0xBC4B ) || // Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH\n\t\t( 0xBC4D <= code && code <= 0xBC67 ) || // Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH\n\t\t( 0xBC69 <= code && code <= 0xBC83 ) || // Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH\n\t\t( 0xBC85 <= code && code <= 0xBC9F ) || // Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH\n\t\t( 0xBCA1 <= code && code <= 0xBCBB ) || // Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH\n\t\t( 0xBCBD <= code && code <= 0xBCD7 ) || // Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH\n\t\t( 0xBCD9 <= code && code <= 0xBCF3 ) || // Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH\n\t\t( 0xBCF5 <= code && code <= 0xBD0F ) || // Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH\n\t\t( 0xBD11 <= code && code <= 0xBD2B ) || // Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH\n\t\t( 0xBD2D <= code && code <= 0xBD47 ) || // Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH\n\t\t( 0xBD49 <= code && code <= 0xBD63 ) || // Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH\n\t\t( 0xBD65 <= code && code <= 0xBD7F ) || // Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH\n\t\t( 0xBD81 <= code && code <= 0xBD9B ) || // Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH\n\t\t( 0xBD9D <= code && code <= 0xBDB7 ) || // Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH\n\t\t( 0xBDB9 <= code && code <= 0xBDD3 ) || // Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH\n\t\t( 0xBDD5 <= code && code <= 0xBDEF ) || // Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH\n\t\t( 0xBDF1 <= code && code <= 0xBE0B ) || // Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH\n\t\t( 0xBE0D <= code && code <= 0xBE27 ) || // Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH\n\t\t( 0xBE29 <= code && code <= 0xBE43 ) || // Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH\n\t\t( 0xBE45 <= code && code <= 0xBE5F ) || // Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH\n\t\t( 0xBE61 <= code && code <= 0xBE7B ) || // Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH\n\t\t( 0xBE7D <= code && code <= 0xBE97 ) || // Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH\n\t\t( 0xBE99 <= code && code <= 0xBEB3 ) || // Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH\n\t\t( 0xBEB5 <= code && code <= 0xBECF ) || // Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH\n\t\t( 0xBED1 <= code && code <= 0xBEEB ) || // Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH\n\t\t( 0xBEED <= code && code <= 0xBF07 ) || // Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH\n\t\t( 0xBF09 <= code && code <= 0xBF23 ) || // Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH\n\t\t( 0xBF25 <= code && code <= 0xBF3F ) || // Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH\n\t\t( 0xBF41 <= code && code <= 0xBF5B ) || // Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH\n\t\t( 0xBF5D <= code && code <= 0xBF77 ) || // Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH\n\t\t( 0xBF79 <= code && code <= 0xBF93 ) || // Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH\n\t\t( 0xBF95 <= code && code <= 0xBFAF ) || // Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH\n\t\t( 0xBFB1 <= code && code <= 0xBFCB ) || // Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH\n\t\t( 0xBFCD <= code && code <= 0xBFE7 ) || // Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH\n\t\t( 0xBFE9 <= code && code <= 0xC003 ) || // Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH\n\t\t( 0xC005 <= code && code <= 0xC01F ) || // Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH\n\t\t( 0xC021 <= code && code <= 0xC03B ) || // Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH\n\t\t( 0xC03D <= code && code <= 0xC057 ) || // Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH\n\t\t( 0xC059 <= code && code <= 0xC073 ) || // Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH\n\t\t( 0xC075 <= code && code <= 0xC08F ) || // Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH\n\t\t( 0xC091 <= code && code <= 0xC0AB ) || // Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH\n\t\t( 0xC0AD <= code && code <= 0xC0C7 ) || // Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH\n\t\t( 0xC0C9 <= code && code <= 0xC0E3 ) || // Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH\n\t\t( 0xC0E5 <= code && code <= 0xC0FF ) || // Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH\n\t\t( 0xC101 <= code && code <= 0xC11B ) || // Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH\n\t\t( 0xC11D <= code && code <= 0xC137 ) || // Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH\n\t\t( 0xC139 <= code && code <= 0xC153 ) || // Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH\n\t\t( 0xC155 <= code && code <= 0xC16F ) || // Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH\n\t\t( 0xC171 <= code && code <= 0xC18B ) || // Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH\n\t\t( 0xC18D <= code && code <= 0xC1A7 ) || // Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH\n\t\t( 0xC1A9 <= code && code <= 0xC1C3 ) || // Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH\n\t\t( 0xC1C5 <= code && code <= 0xC1DF ) || // Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH\n\t\t( 0xC1E1 <= code && code <= 0xC1FB ) || // Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH\n\t\t( 0xC1FD <= code && code <= 0xC217 ) || // Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH\n\t\t( 0xC219 <= code && code <= 0xC233 ) || // Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH\n\t\t( 0xC235 <= code && code <= 0xC24F ) || // Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH\n\t\t( 0xC251 <= code && code <= 0xC26B ) || // Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH\n\t\t( 0xC26D <= code && code <= 0xC287 ) || // Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH\n\t\t( 0xC289 <= code && code <= 0xC2A3 ) || // Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH\n\t\t( 0xC2A5 <= code && code <= 0xC2BF ) || // Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH\n\t\t( 0xC2C1 <= code && code <= 0xC2DB ) || // Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH\n\t\t( 0xC2DD <= code && code <= 0xC2F7 ) || // Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH\n\t\t( 0xC2F9 <= code && code <= 0xC313 ) || // Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH\n\t\t( 0xC315 <= code && code <= 0xC32F ) || // Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH\n\t\t( 0xC331 <= code && code <= 0xC34B ) || // Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH\n\t\t( 0xC34D <= code && code <= 0xC367 ) || // Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH\n\t\t( 0xC369 <= code && code <= 0xC383 ) || // Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH\n\t\t( 0xC385 <= code && code <= 0xC39F ) || // Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH\n\t\t( 0xC3A1 <= code && code <= 0xC3BB ) || // Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH\n\t\t( 0xC3BD <= code && code <= 0xC3D7 ) || // Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH\n\t\t( 0xC3D9 <= code && code <= 0xC3F3 ) || // Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH\n\t\t( 0xC3F5 <= code && code <= 0xC40F ) || // Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH\n\t\t( 0xC411 <= code && code <= 0xC42B ) || // Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH\n\t\t( 0xC42D <= code && code <= 0xC447 ) || // Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH\n\t\t( 0xC449 <= code && code <= 0xC463 ) || // Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH\n\t\t( 0xC465 <= code && code <= 0xC47F ) || // Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH\n\t\t( 0xC481 <= code && code <= 0xC49B ) || // Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH\n\t\t( 0xC49D <= code && code <= 0xC4B7 ) || // Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH\n\t\t( 0xC4B9 <= code && code <= 0xC4D3 ) || // Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH\n\t\t( 0xC4D5 <= code && code <= 0xC4EF ) || // Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH\n\t\t( 0xC4F1 <= code && code <= 0xC50B ) || // Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH\n\t\t( 0xC50D <= code && code <= 0xC527 ) || // Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH\n\t\t( 0xC529 <= code && code <= 0xC543 ) || // Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH\n\t\t( 0xC545 <= code && code <= 0xC55F ) || // Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH\n\t\t( 0xC561 <= code && code <= 0xC57B ) || // Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH\n\t\t( 0xC57D <= code && code <= 0xC597 ) || // Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH\n\t\t( 0xC599 <= code && code <= 0xC5B3 ) || // Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH\n\t\t( 0xC5B5 <= code && code <= 0xC5CF ) || // Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH\n\t\t( 0xC5D1 <= code && code <= 0xC5EB ) || // Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH\n\t\t( 0xC5ED <= code && code <= 0xC607 ) || // Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH\n\t\t( 0xC609 <= code && code <= 0xC623 ) || // Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH\n\t\t( 0xC625 <= code && code <= 0xC63F ) || // Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH\n\t\t( 0xC641 <= code && code <= 0xC65B ) || // Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH\n\t\t( 0xC65D <= code && code <= 0xC677 ) || // Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH\n\t\t( 0xC679 <= code && code <= 0xC693 ) || // Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH\n\t\t( 0xC695 <= code && code <= 0xC6AF ) || // Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH\n\t\t( 0xC6B1 <= code && code <= 0xC6CB ) || // Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH\n\t\t( 0xC6CD <= code && code <= 0xC6E7 ) || // Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH\n\t\t( 0xC6E9 <= code && code <= 0xC703 ) || // Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH\n\t\t( 0xC705 <= code && code <= 0xC71F ) || // Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH\n\t\t( 0xC721 <= code && code <= 0xC73B ) || // Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH\n\t\t( 0xC73D <= code && code <= 0xC757 ) || // Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH\n\t\t( 0xC759 <= code && code <= 0xC773 ) || // Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH\n\t\t( 0xC775 <= code && code <= 0xC78F ) || // Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH\n\t\t( 0xC791 <= code && code <= 0xC7AB ) || // Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH\n\t\t( 0xC7AD <= code && code <= 0xC7C7 ) || // Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH\n\t\t( 0xC7C9 <= code && code <= 0xC7E3 ) || // Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH\n\t\t( 0xC7E5 <= code && code <= 0xC7FF ) || // Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH\n\t\t( 0xC801 <= code && code <= 0xC81B ) || // Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH\n\t\t( 0xC81D <= code && code <= 0xC837 ) || // Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH\n\t\t( 0xC839 <= code && code <= 0xC853 ) || // Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH\n\t\t( 0xC855 <= code && code <= 0xC86F ) || // Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH\n\t\t( 0xC871 <= code && code <= 0xC88B ) || // Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH\n\t\t( 0xC88D <= code && code <= 0xC8A7 ) || // Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH\n\t\t( 0xC8A9 <= code && code <= 0xC8C3 ) || // Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH\n\t\t( 0xC8C5 <= code && code <= 0xC8DF ) || // Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH\n\t\t( 0xC8E1 <= code && code <= 0xC8FB ) || // Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH\n\t\t( 0xC8FD <= code && code <= 0xC917 ) || // Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH\n\t\t( 0xC919 <= code && code <= 0xC933 ) || // Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH\n\t\t( 0xC935 <= code && code <= 0xC94F ) || // Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH\n\t\t( 0xC951 <= code && code <= 0xC96B ) || // Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH\n\t\t( 0xC96D <= code && code <= 0xC987 ) || // Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH\n\t\t( 0xC989 <= code && code <= 0xC9A3 ) || // Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH\n\t\t( 0xC9A5 <= code && code <= 0xC9BF ) || // Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH\n\t\t( 0xC9C1 <= code && code <= 0xC9DB ) || // Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH\n\t\t( 0xC9DD <= code && code <= 0xC9F7 ) || // Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH\n\t\t( 0xC9F9 <= code && code <= 0xCA13 ) || // Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH\n\t\t( 0xCA15 <= code && code <= 0xCA2F ) || // Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH\n\t\t( 0xCA31 <= code && code <= 0xCA4B ) || // Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH\n\t\t( 0xCA4D <= code && code <= 0xCA67 ) || // Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH\n\t\t( 0xCA69 <= code && code <= 0xCA83 ) || // Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH\n\t\t( 0xCA85 <= code && code <= 0xCA9F ) || // Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH\n\t\t( 0xCAA1 <= code && code <= 0xCABB ) || // Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH\n\t\t( 0xCABD <= code && code <= 0xCAD7 ) || // Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH\n\t\t( 0xCAD9 <= code && code <= 0xCAF3 ) || // Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH\n\t\t( 0xCAF5 <= code && code <= 0xCB0F ) || // Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH\n\t\t( 0xCB11 <= code && code <= 0xCB2B ) || // Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH\n\t\t( 0xCB2D <= code && code <= 0xCB47 ) || // Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH\n\t\t( 0xCB49 <= code && code <= 0xCB63 ) || // Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH\n\t\t( 0xCB65 <= code && code <= 0xCB7F ) || // Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH\n\t\t( 0xCB81 <= code && code <= 0xCB9B ) || // Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH\n\t\t( 0xCB9D <= code && code <= 0xCBB7 ) || // Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH\n\t\t( 0xCBB9 <= code && code <= 0xCBD3 ) || // Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH\n\t\t( 0xCBD5 <= code && code <= 0xCBEF ) || // Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH\n\t\t( 0xCBF1 <= code && code <= 0xCC0B ) || // Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH\n\t\t( 0xCC0D <= code && code <= 0xCC27 ) || // Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH\n\t\t( 0xCC29 <= code && code <= 0xCC43 ) || // Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH\n\t\t( 0xCC45 <= code && code <= 0xCC5F ) || // Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH\n\t\t( 0xCC61 <= code && code <= 0xCC7B ) || // Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH\n\t\t( 0xCC7D <= code && code <= 0xCC97 ) || // Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH\n\t\t( 0xCC99 <= code && code <= 0xCCB3 ) || // Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH\n\t\t( 0xCCB5 <= code && code <= 0xCCCF ) || // Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH\n\t\t( 0xCCD1 <= code && code <= 0xCCEB ) || // Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH\n\t\t( 0xCCED <= code && code <= 0xCD07 ) || // Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH\n\t\t( 0xCD09 <= code && code <= 0xCD23 ) || // Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH\n\t\t( 0xCD25 <= code && code <= 0xCD3F ) || // Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH\n\t\t( 0xCD41 <= code && code <= 0xCD5B ) || // Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH\n\t\t( 0xCD5D <= code && code <= 0xCD77 ) || // Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH\n\t\t( 0xCD79 <= code && code <= 0xCD93 ) || // Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH\n\t\t( 0xCD95 <= code && code <= 0xCDAF ) || // Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH\n\t\t( 0xCDB1 <= code && code <= 0xCDCB ) || // Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH\n\t\t( 0xCDCD <= code && code <= 0xCDE7 ) || // Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH\n\t\t( 0xCDE9 <= code && code <= 0xCE03 ) || // Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH\n\t\t( 0xCE05 <= code && code <= 0xCE1F ) || // Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH\n\t\t( 0xCE21 <= code && code <= 0xCE3B ) || // Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH\n\t\t( 0xCE3D <= code && code <= 0xCE57 ) || // Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH\n\t\t( 0xCE59 <= code && code <= 0xCE73 ) || // Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH\n\t\t( 0xCE75 <= code && code <= 0xCE8F ) || // Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH\n\t\t( 0xCE91 <= code && code <= 0xCEAB ) || // Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH\n\t\t( 0xCEAD <= code && code <= 0xCEC7 ) || // Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH\n\t\t( 0xCEC9 <= code && code <= 0xCEE3 ) || // Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH\n\t\t( 0xCEE5 <= code && code <= 0xCEFF ) || // Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH\n\t\t( 0xCF01 <= code && code <= 0xCF1B ) || // Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH\n\t\t( 0xCF1D <= code && code <= 0xCF37 ) || // Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH\n\t\t( 0xCF39 <= code && code <= 0xCF53 ) || // Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH\n\t\t( 0xCF55 <= code && code <= 0xCF6F ) || // Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH\n\t\t( 0xCF71 <= code && code <= 0xCF8B ) || // Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH\n\t\t( 0xCF8D <= code && code <= 0xCFA7 ) || // Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH\n\t\t( 0xCFA9 <= code && code <= 0xCFC3 ) || // Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH\n\t\t( 0xCFC5 <= code && code <= 0xCFDF ) || // Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH\n\t\t( 0xCFE1 <= code && code <= 0xCFFB ) || // Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH\n\t\t( 0xCFFD <= code && code <= 0xD017 ) || // Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH\n\t\t( 0xD019 <= code && code <= 0xD033 ) || // Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH\n\t\t( 0xD035 <= code && code <= 0xD04F ) || // Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH\n\t\t( 0xD051 <= code && code <= 0xD06B ) || // Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH\n\t\t( 0xD06D <= code && code <= 0xD087 ) || // Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH\n\t\t( 0xD089 <= code && code <= 0xD0A3 ) || // Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH\n\t\t( 0xD0A5 <= code && code <= 0xD0BF ) || // Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH\n\t\t( 0xD0C1 <= code && code <= 0xD0DB ) || // Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH\n\t\t( 0xD0DD <= code && code <= 0xD0F7 ) || // Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH\n\t\t( 0xD0F9 <= code && code <= 0xD113 ) || // Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH\n\t\t( 0xD115 <= code && code <= 0xD12F ) || // Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH\n\t\t( 0xD131 <= code && code <= 0xD14B ) || // Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH\n\t\t( 0xD14D <= code && code <= 0xD167 ) || // Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH\n\t\t( 0xD169 <= code && code <= 0xD183 ) || // Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH\n\t\t( 0xD185 <= code && code <= 0xD19F ) || // Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH\n\t\t( 0xD1A1 <= code && code <= 0xD1BB ) || // Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH\n\t\t( 0xD1BD <= code && code <= 0xD1D7 ) || // Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH\n\t\t( 0xD1D9 <= code && code <= 0xD1F3 ) || // Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH\n\t\t( 0xD1F5 <= code && code <= 0xD20F ) || // Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH\n\t\t( 0xD211 <= code && code <= 0xD22B ) || // Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH\n\t\t( 0xD22D <= code && code <= 0xD247 ) || // Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH\n\t\t( 0xD249 <= code && code <= 0xD263 ) || // Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH\n\t\t( 0xD265 <= code && code <= 0xD27F ) || // Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH\n\t\t( 0xD281 <= code && code <= 0xD29B ) || // Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH\n\t\t( 0xD29D <= code && code <= 0xD2B7 ) || // Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH\n\t\t( 0xD2B9 <= code && code <= 0xD2D3 ) || // Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH\n\t\t( 0xD2D5 <= code && code <= 0xD2EF ) || // Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH\n\t\t( 0xD2F1 <= code && code <= 0xD30B ) || // Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH\n\t\t( 0xD30D <= code && code <= 0xD327 ) || // Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH\n\t\t( 0xD329 <= code && code <= 0xD343 ) || // Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH\n\t\t( 0xD345 <= code && code <= 0xD35F ) || // Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH\n\t\t( 0xD361 <= code && code <= 0xD37B ) || // Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH\n\t\t( 0xD37D <= code && code <= 0xD397 ) || // Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH\n\t\t( 0xD399 <= code && code <= 0xD3B3 ) || // Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH\n\t\t( 0xD3B5 <= code && code <= 0xD3CF ) || // Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH\n\t\t( 0xD3D1 <= code && code <= 0xD3EB ) || // Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH\n\t\t( 0xD3ED <= code && code <= 0xD407 ) || // Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH\n\t\t( 0xD409 <= code && code <= 0xD423 ) || // Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH\n\t\t( 0xD425 <= code && code <= 0xD43F ) || // Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH\n\t\t( 0xD441 <= code && code <= 0xD45B ) || // Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH\n\t\t( 0xD45D <= code && code <= 0xD477 ) || // Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH\n\t\t( 0xD479 <= code && code <= 0xD493 ) || // Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH\n\t\t( 0xD495 <= code && code <= 0xD4AF ) || // Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH\n\t\t( 0xD4B1 <= code && code <= 0xD4CB ) || // Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH\n\t\t( 0xD4CD <= code && code <= 0xD4E7 ) || // Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH\n\t\t( 0xD4E9 <= code && code <= 0xD503 ) || // Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH\n\t\t( 0xD505 <= code && code <= 0xD51F ) || // Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH\n\t\t( 0xD521 <= code && code <= 0xD53B ) || // Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH\n\t\t( 0xD53D <= code && code <= 0xD557 ) || // Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH\n\t\t( 0xD559 <= code && code <= 0xD573 ) || // Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH\n\t\t( 0xD575 <= code && code <= 0xD58F ) || // Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH\n\t\t( 0xD591 <= code && code <= 0xD5AB ) || // Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH\n\t\t( 0xD5AD <= code && code <= 0xD5C7 ) || // Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH\n\t\t( 0xD5C9 <= code && code <= 0xD5E3 ) || // Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH\n\t\t( 0xD5E5 <= code && code <= 0xD5FF ) || // Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH\n\t\t( 0xD601 <= code && code <= 0xD61B ) || // Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH\n\t\t( 0xD61D <= code && code <= 0xD637 ) || // Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH\n\t\t( 0xD639 <= code && code <= 0xD653 ) || // Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH\n\t\t( 0xD655 <= code && code <= 0xD66F ) || // Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH\n\t\t( 0xD671 <= code && code <= 0xD68B ) || // Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH\n\t\t( 0xD68D <= code && code <= 0xD6A7 ) || // Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH\n\t\t( 0xD6A9 <= code && code <= 0xD6C3 ) || // Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH\n\t\t( 0xD6C5 <= code && code <= 0xD6DF ) || // Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH\n\t\t( 0xD6E1 <= code && code <= 0xD6FB ) || // Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH\n\t\t( 0xD6FD <= code && code <= 0xD717 ) || // Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH\n\t\t( 0xD719 <= code && code <= 0xD733 ) || // Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH\n\t\t( 0xD735 <= code && code <= 0xD74F ) || // Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH\n\t\t( 0xD751 <= code && code <= 0xD76B ) || // Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH\n\t\t( 0xD76D <= code && code <= 0xD787 ) || // Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH\n\t\t( 0xD789 <= code && code <= 0xD7A3 ) // Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH\n\t) {\n\t\treturn constants.LVT;\n\t}\n\tif (\n\t\tcode === 0x200D // Cf ZERO WIDTH JOINER\n\t) {\n\t\treturn constants.ZWJ;\n\t}\n\t// All unlisted characters have a grapheme break property of \"Other\":\n\treturn constants.Other;\n}\n\n\n// EXPORTS //\n\nmodule.exports = graphemeBreakProperty;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Grapheme cluster break tooling.\n*\n* @module @stdlib/string/tools/grapheme-cluster-break\n*\n* @example\n* var grapheme = require( '@stdlib/string/tools/grapheme-cluster-break' );\n*\n* var out = grapheme.emojiProperty( 0x23EC );\n* // returns 101\n*\n* out = grapheme.breakProperty( 0x008f );\n* // returns 2\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar constants = require( './constants.js' );\nvar breakType = require( './break_type.js' );\nvar emojiProperty = require( './emoji_property.js' );\nvar breakProperty = require( './break_property.js' );\n\n\n// MAIN //\n\nvar main = {};\nsetReadOnly( main, 'constants', constants );\nsetReadOnly( main, 'breakType', breakType );\nsetReadOnly( main, 'emojiProperty', emojiProperty );\nsetReadOnly( main, 'breakProperty', breakProperty );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar codePointAt = require( './../../code-point-at' );\nvar hasUTF16SurrogatePairAt = require( '@stdlib/assert/has-utf16-surrogate-pair-at' );\nvar grapheme = require( './../../tools/grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar breakType = grapheme.breakType;\nvar breakProperty = grapheme.breakProperty;\nvar emojiProperty = grapheme.emojiProperty;\n\n\n// MAIN //\n\n/**\n* Returns the next extended grapheme cluster break in a string after a specified position.\n*\n* @param {string} str - input string\n* @param {integer} [fromIndex=0] - position\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an integer\n* @returns {NonNegativeInteger} next grapheme break position\n*\n* @example\n* var out = nextGraphemeClusterBreak( 'last man standing', 4 );\n* // returns 5\n*\n* @example\n* var out = nextGraphemeClusterBreak( 'presidential election', 8 );\n* // returns 9\n*\n* @example\n* var out = nextGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 1 );\n* // returns 3\n*\n* @example\n* var out = nextGraphemeClusterBreak( '\uD83C\uDF37' );\n* // returns -1\n*/\nfunction nextGraphemeClusterBreak( str, fromIndex ) {\n\tvar breaks;\n\tvar emoji;\n\tvar len;\n\tvar idx;\n\tvar cp;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = fromIndex;\n\t} else {\n\t\tidx = 0;\n\t}\n\tlen = str.length;\n\tif ( idx < 0 ) {\n\t\tidx += len;\n\t\tif ( idx < 0 ) {\n\t\t\tidx = 0;\n\t\t}\n\t}\n\tif ( len === 0 || idx >= len ) {\n\t\treturn -1;\n\t}\n\t// Initialize caches for storing grapheme break and emoji properties:\n\tbreaks = [];\n\temoji = [];\n\n\t// Get the code point for the starting index:\n\tcp = codePointAt( str, idx );\n\n\t// Get the corresponding grapheme break and emoji properties:\n\tbreaks.push( breakProperty( cp ) );\n\temoji.push( emojiProperty( cp ) );\n\n\t// Begin searching for the next grapheme cluster break...\n\tfor ( i = idx+1; i < len; i++ ) {\n\t\t// If the current character is part of a surrogate pair, move along...\n\t\tif ( hasUTF16SurrogatePairAt( str, i-1 ) ) {\n\t\t\tcontinue;\n\t\t}\n\t\t// Get the next code point:\n\t\tcp = codePointAt( str, i );\n\n\t\t// Get the corresponding grapheme break and emoji properties:\n\t\tbreaks.push( breakProperty( cp ) );\n\t\temoji.push( emojiProperty( cp ) );\n\n\t\t// Determine if we've encountered a grapheme cluster break...\n\t\tif ( breakType( breaks, emoji ) > 0 ) {\n\t\t\t// We've found a break!\n\t\t\treturn i;\n\t\t}\n\t}\n\t// Unable to find a grapheme cluster break:\n\treturn -1;\n}\n\n\n// EXPORTS //\n\nmodule.exports = nextGraphemeClusterBreak;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the next extended grapheme cluster break in a string after a specified position.\n*\n* @module @stdlib/string/next-grapheme-cluster-break\n*\n* @example\n* var nextGraphemeClusterBreak = require( '@stdlib/string/next-grapheme-cluster-break' );\n*\n* var out = nextGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 1 );\n* // returns 3\n*\n* out = nextGraphemeClusterBreak( '\uD83C\uDF37', 0 );\n* // returns -1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Returns the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of grapheme clusters to return\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election', 1 );\n* // returns 'p'\n*\n* @example\n* var out = first( 'JavaScript', 1 );\n* // returns 'J'\n*\n* @example\n* var out = first( 'Hidden Treasures', 1 );\n* // returns 'H'\n*\n* @example\n* var out = first( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC36\uD83D\uDC2E'\n*\n* @example\n* var out = first( 'foo bar', 5 );\n* // returns 'foo b'\n*/\nfunction first( str, n ) {\n\tvar i = 0;\n\twhile ( n > 0 ) {\n\t\ti = nextGraphemeClusterBreak( str, i );\n\t\tn -= 1;\n\t}\n\t// Value of `i` will be -1 if and only if `str` is an empty string or `str` has only 1 extended grapheme cluster...\n\tif ( str === '' || i === -1 ) {\n\t\treturn str;\n\t}\n\treturn str.substring( 0, i );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @module @stdlib/string/base/first-grapheme-cluster\n*\n* @example\n* var first = require( '@stdlib/string/base/first-grapheme-cluster' );\n*\n* var out = first( 'last man standing', 1 );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures', 1 );\n* // returns 'H';\n*\n* out = first( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Invokes a function for each UTF-16 code unit in a string.\n*\n* @param {string} str - input string\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, clbk, thisArg ) {\n\tvar i;\n\tfor ( i = 0; i < str.length; i++ ) {\n\t\tclbk.call( thisArg, str[ i ], i, str );\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each UTF-16 code unit in a string.\n*\n* @module @stdlib/string/base/for-each\n*\n* @example\n* var forEach = require( '@stdlib/string/base/for-each' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Invokes a function for each Unicode code point in a string.\n*\n* @param {string} str - input string\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, clbk, thisArg ) {\n\tvar len;\n\tvar ch1;\n\tvar ch2;\n\tvar idx;\n\tvar ch;\n\tvar i;\n\n\tlen = str.length;\n\n\t// Process the string one Unicode code unit at a time and handle UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\t\tidx = i;\n\t\tch = ch1;\n\n\t\t// Check for a UTF-16 surrogate pair...\n\t\tif ( i < len-1 && RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\tch += ch2;\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Note: `ch` may be a lone surrogate (e.g., a low surrogate without a preceding high surrogate or a high surrogate at the end of the input string).\n\n\t\t// Invoke the callback with the code point:\n\t\tclbk.call( thisArg, ch, idx, str );\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each Unicode code point in a string.\n*\n* @module @stdlib/string/base/for-each-code-point\n*\n* @example\n* var forEach = require( '@stdlib/string/base/for-each-code-point' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Invokes a function for each grapheme cluster (i.e., user-perceived character) in a string.\n*\n* @param {string} str - input string\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, clbk, thisArg ) {\n\tvar len;\n\tvar idx;\n\tvar brk;\n\n\tlen = str.length;\n\tidx = 0;\n\twhile ( idx < len ) {\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t\tif ( brk === -1 ) {\n\t\t\tbrk = len;\n\t\t}\n\t\tclbk.call( thisArg, str.substring( idx, brk ), idx, str );\n\t\tidx = brk;\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each grapheme cluster (i.e., user-perceived character) in a string.\n*\n* @module @stdlib/string/base/for-each-grapheme-cluster\n*\n* @example\n* var forEach = require( '@stdlib/string/base/for-each-grapheme-cluster' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar reWhitespace = require( '@stdlib/regexp/whitespace' ).REGEXP;\n\n\n// MAIN //\n\n/**\n* Capitalizes the first letter of each word in an input string.\n*\n* @param {string} str - string to convert\n* @returns {string} start case string\n*\n* @example\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\nfunction startcase( str ) {\n\tvar cap;\n\tvar out;\n\tvar ch;\n\tvar i;\n\n\tcap = true;\n\tout = '';\n\tfor ( i = 0; i < str.length; i++ ) {\n\t\tch = str.charAt( i );\n\t\tif ( reWhitespace.test( ch ) ) {\n\t\t\tcap = true;\n\t\t} else if ( cap ) {\n\t\t\tch = ch.toUpperCase();\n\t\t\tcap = false;\n\t\t}\n\t\tout += ch;\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = startcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first letter of each word in an input string.\n*\n* @module @stdlib/string/base/startcase\n*\n* @example\n* var startcase = require( '@stdlib/string/base/startcase' );\n*\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar startcase = require( './../../../base/startcase' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to HTTP header case.\n*\n* @param {string} str - string to convert\n* @returns {string} HTTP header-cased string\n*\n* @example\n* var out = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* @example\n* var out = headercase( 'IS_MOBILE' );\n* // returns 'Is-Mobile'\n*\n* @example\n* var out = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*\n* @example\n* var out = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*/\nfunction headercase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = lowercase( str );\n\tstr = startcase( str );\n\treturn replace( str, RE_WHITESPACE, '-' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = headercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to HTTP header case.\n*\n* @module @stdlib/string/base/headercase\n*\n* @example\n* var headercase = require( '@stdlib/string/base/headercase' );\n*\n* var str = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar uppercase = require( './../../../base/uppercase' );\nvar lowercase = require( './../../../base/lowercase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to inverse case.\n*\n* @param {string} str - string to convert\n* @returns {string} inverse-cased string\n*\n* @example\n* var str = invcase( 'beep' );\n* // returns 'BEEP'\n*\n* @example\n* var str = invcase( 'beep BOOP' );\n* // returns 'BEEP boop'\n*\n* @example\n* var str = invcase( 'isMobile' );\n* // returns 'ISmOBILE'\n*\n* @example\n* var str = invcase( 'HeLlO wOrLd!' );\n* // returns 'hElLo WoRlD!'\n*/\nfunction invcase( str ) {\n\tvar out;\n\tvar ch;\n\tvar s;\n\tvar i;\n\n\tout = [];\n\tfor ( i = 0; i < str.length; i++ ) {\n\t\tch = str[ i ];\n\t\ts = uppercase( ch );\n\t\tif ( s === ch ) {\n\t\t\ts = lowercase( ch );\n\t\t}\n\t\tout.push( s );\n\t}\n\treturn out.join( '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = invcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to inverse case.\n*\n* @module @stdlib/string/base/invcase\n*\n* @example\n* var invcase = require( '@stdlib/string/base/invcase' );\n*\n* var str = invcase( 'aBcDeF' );\n* // returns 'AbCdEf'\n*\n* str = invcase( 'Hello World!' );\n* // returns 'hELLO wORLD!'\n*\n* str = invcase( 'I am a robot' );\n* // returns 'i AM A ROBOT'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to kebab case.\n*\n* @param {string} str - string to convert\n* @returns {string} kebab-cased string\n*\n* @example\n* var str = kebabCase( 'Hello World!' );\n* // returns 'hello-world'\n*\n* @example\n* var str = kebabCase( 'foo bar' );\n* // returns 'foo-bar'\n*\n* @example\n* var str = kebabCase( 'I am a tiny little teapot' );\n* // returns 'i-am-a-tiny-little-teapot'\n*\n* @example\n* var str = kebabCase( 'BEEP boop' );\n* // returns 'beep-boop'\n*\n* @example\n* var str = kebabCase( 'isMobile' );\n* // returns 'is-mobile'\n*/\nfunction kebabCase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '-' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = kebabCase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to kebab case.\n*\n* @module @stdlib/string/base/kebabcase\n*\n* @example\n* var kebabcase = require( '@stdlib/string/base/kebabcase' );\n*\n* var str = kebabcase( 'Foo Bar' );\n* // returns 'foo-bar'\n*\n* str = kebabcase( 'I am a tiny little house' );\n* // returns 'i-am-a-tiny-little-house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.repeat !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Repeats a string a specified number of times and returns the concatenated result.\n*\n* ## Method\n*\n* The algorithmic trick used in the implementation is to treat string concatenation the same as binary addition (i.e., any natural number (nonnegative integer) can be expressed as a sum of powers of two).\n*\n* For example,\n*\n* ```text\n* n = 10 => 1010 => 2^3 + 2^0 + 2^1 + 2^0\n* ```\n*\n* We can produce a 10-repeat string by \"adding\" the results of a 8-repeat string and a 2-repeat string.\n*\n* The implementation is then as follows:\n*\n* 1. Let `s` be the string to be repeated and `o` be an output string.\n*\n* 2. Initialize an output string `o`.\n*\n* 3. Check the least significant bit to determine if the current `s` string should be \"added\" to the output \"total\".\n*\n* - if the bit is a one, add\n* - otherwise, move on\n*\n* 4. Double the string `s` by adding `s` to `s`.\n*\n* 5. Right-shift the bits of `n`.\n*\n* 6. Check if we have shifted off all bits.\n*\n* - if yes, done.\n* - otherwise, move on\n*\n* 7. Repeat 3-6.\n*\n* The result is that, as the string is repeated, we continually check to see if the doubled string is one which we want to add to our \"total\".\n*\n* The algorithm runs in `O(log_2(n))` compared to `O(n)`.\n*\n* @private\n* @param {string} str - string to repeat\n* @param {NonNegativeInteger} n - number of times to repeat the string\n* @returns {string} repeated string\n*\n* @example\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* @example\n* var str = repeat( '', 100 );\n* // returns ''\n*\n* @example\n* var str = repeat( 'beep', 0 );\n* // returns ''\n*/\nfunction repeat( str, n ) {\n\tvar rpt;\n\tvar cnt;\n\tif ( str.length === 0 || n === 0 ) {\n\t\treturn '';\n\t}\n\trpt = '';\n\tcnt = n;\n\tfor ( ; ; ) {\n\t\t// If the count is odd, append the current concatenated string:\n\t\tif ( (cnt&1) === 1 ) {\n\t\t\trpt += str;\n\t\t}\n\t\t// Right-shift the bits:\n\t\tcnt >>>= 1;\n\t\tif ( cnt === 0 ) {\n\t\t\tbreak;\n\t\t}\n\t\t// Double the string:\n\t\tstr += str;\n\t}\n\treturn rpt;\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar repeat = String.prototype.repeat;\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Repeats a string a specified number of times and returns the concatenated result.\n*\n* @param {string} str - string to repeat\n* @param {NonNegativeInteger} n - number of times to repeat the string\n* @returns {string} repeated string\n*\n* @example\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* @example\n* var str = repeat( '', 100 );\n* // returns ''\n*\n* @example\n* var str = repeat( 'beep', 0 );\n* // returns ''\n*/\nfunction repeat( str, n ) {\n\treturn builtin.call( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Repeat a string a specified number of times and return the concatenated result.\n*\n* @module @stdlib/string/base/repeat\n*\n* @example\n* var replace = require( '@stdlib/string/base/repeat' );\n*\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* str = repeat( '', 100 );\n* // returns ''\n*\n* str = repeat( 'beep', 0 );\n* // returns ''\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar repeat;\nif ( HAS_BUILTIN ) {\n\trepeat = main;\n} else {\n\trepeat = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar repeat = require( './../../../base/repeat' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\n\n\n// MAIN //\n\n/**\n* Left pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} pad - string used to pad\n* @returns {string} padded string\n*\n* @example\n* var str = lpad( 'a', 5, ' ' );\n* // returns ' a'\n*\n* @example\n* var str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* @example\n* var str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\nfunction lpad( str, len, pad ) {\n\tvar n = ( len - str.length ) / pad.length;\n\tif ( n <= 0 ) {\n\t\treturn str;\n\t}\n\tn = ceil( n );\n\treturn repeat( pad, n ) + str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = lpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Left pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/base/left-pad\n*\n* @example\n* var lpad = require( '@stdlib/string/base/left-pad' );\n*\n* var str = lpad( 'a', 5, ' ' );\n* // returns ' a'\n*\n* str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trimLeft !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( './../../../base/replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /^[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* @example\n* var out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*\n* @example\n* var out = ltrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines\\n\\n\\n'\n*/\nfunction ltrim( str ) {\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar ltrim = String.prototype.trimLeft;\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* @example\n* var out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*\n* @example\n* var out = ltrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines\\n\\n\\n'\n*/\nfunction ltrim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning of a string.\n*\n* @module @stdlib/string/base/left-trim\n*\n* @example\n* var ltrim = require( '@stdlib/string/base/left-trim' );\n*\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar ltrim;\nif ( HAS_BUILTIN ) {\n\tltrim = main;\n} else {\n\tltrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar capitalize = require( './../../../base/capitalize' );\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_TO_PASCAL = /(?:\\s|^)([^\\s]+)(?=\\s|$)/g;\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// FUNCTIONS //\n\n/**\n* Callback invoked upon a match.\n*\n* @private\n* @param {string} match - entire match\n* @param {string} p1 - first capture group\n* @returns {string} capitalized capture group\n*/\nfunction replacer( match, p1 ) {\n\treturn capitalize( lowercase( p1 ) );\n}\n\n\n// MAIN //\n\n/**\n* Converts a string to Pascal case.\n*\n* @param {string} str - string to convert\n* @returns {string} Pascal-cased string\n*\n* @example\n* var out = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* @example\n* var out = pascalcase( 'IS_MOBILE' );\n* // returns 'IsMobile'\n*\n* @example\n* var out = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*\n* @example\n* var out = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*/\nfunction pascalcase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_WHITESPACE, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\treturn replace( str, RE_TO_PASCAL, replacer );\n}\n\n\n// EXPORTS //\n\nmodule.exports = pascalcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to Pascal case.\n*\n* @module @stdlib/string/base/pascalcase\n*\n* @example\n* var pascalcase = require( '@stdlib/string/base/pascalcase' );\n*\n* var str = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* str = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*\n* str = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\n// 2^6-1 = 63 => 0x3f => 00111111\nvar Ox3F = 63|0;\n\n// 2^7 = 128 => 0x80 => 10000000\nvar Ox80 = 128|0;\n\n// 192 => 0xc0 => 11000000\nvar OxC0 = 192|0;\n\n// 224 => 0xe0 => 11100000\nvar OxE0 = 224|0;\n\n// 240 => 0xf0 => 11110000\nvar OxF0 = 240|0;\n\n// 2^10-1 = 1023 => 0x3ff => 00000011 11111111\nvar Ox3FF = 1023|0;\n\n// 2^11 = 2048 => 0x800 => 00001000 00000000\nvar Ox800 = 2048|0;\n\n// 55296 => 11011000 00000000\nvar OxD800 = 55296|0;\n\n// 57344 => 11100000 00000000\nvar OxE000 = 57344|0;\n\n// 2^16 = 65536 => 00000000 00000001 00000000 00000000\nvar Ox10000 = 65536|0;\n\n\n// MAIN //\n\n/**\n* Converts a UTF-16 encoded string to an array of integers using UTF-8 encoding.\n*\n* ## Method\n*\n* - UTF-8 is defined to encode code points in one to four bytes, depending on the number of significant bits in the numerical value of the code point.\n*\n* - UTF-16 encoding uses one 16-bit unit for non-surrogates (U+0000 to U+D7FF and U+E000 to U+FFFF).\n*\n* - UTF-16 encoding uses two 16-bit units (surrogate pairs) for U+10000 to U+10FFFF and encodes U+10000-U+10FFFF by subtracting 0x10000 from the code point, expressing the result as a 20-bit binary, and splitting the 20 bits of 0x0-0xFFFFF as upper and lower 10-bits. The respective 10-bits are stored in two 16-bit words.\n*\n* - Let `N` be the number of significant bits.\n*\n* - If `N <= 7` (i.e., U+0000 to U+007F), a code point is encoded in a single byte.\n*\n* ```text\n* 0xxxxxxx\n* ```\n*\n* where an `x` refers to a code point bit.\n*\n* - If `N <= 11` (i.e., U+0080 to U+07FF; ASCII characters), a code point is encoded in two bytes (5+6 bits).\n*\n* ```text\n* 110xxxxx 10xxxxxx\n* ```\n*\n* - If `N <= 16` (i.e., U+0800 to U+FFFF), a code point is encoded in three bytes (4+6+6 bits).\n*\n* ```text\n* 1110xxxx 10xxxxxx 10xxxxxx\n* ```\n*\n* - If `N <= 21` (i.e., U+10000 to U+10FFFF), a code point is encoded in four bytes (3+6+6+6 bits).\n*\n* ```text\n* 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n* ```\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {Array} array of integers\n* @see [UTF-8]{@link https://en.wikipedia.org/wiki/UTF-8}\n* @see [Stack Overflow]{@link https://stackoverflow.com/questions/6240055/manually-converting-unicode-codepoints-into-utf-8-and-utf-16}\n*\n* @example\n* var str = '\u2603';\n* var out = utf16ToUTF8Array( str );\n* // returns [ 226, 152, 131 ]\n*/\nfunction utf16ToUTF8Array( str ) {\n\tvar code;\n\tvar out;\n\tvar len;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tlen = str.length;\n\tout = [];\n\tfor ( i = 0; i < len; i++ ) {\n\t\tcode = str.charCodeAt( i );\n\n\t\t// ASCII...\n\t\tif ( code < Ox80 ) {\n\t\t\tout.push( code );\n\t\t}\n\t\t// UTF-16 non-surrogate pair...\n\t\telse if ( code < Ox800 ) {\n\t\t\tout.push( OxC0 | (code>>6) );\n\t\t\tout.push( Ox80 | (code & Ox3F) );\n\t\t}\n\t\telse if ( code < OxD800 || code >= OxE000 ) {\n\t\t\tout.push( OxE0 | (code>>12) );\n\t\t\tout.push( Ox80 | ((code>>6) & Ox3F) );\n\t\t\tout.push( Ox80 | (code & Ox3F) );\n\t\t}\n\t\t// UTF-16 surrogate pair...\n\t\telse {\n\t\t\ti += 1;\n\n\t\t\t// eslint-disable-next-line max-len\n\t\t\tcode = Ox10000 + (((code & Ox3FF)<<10) | (str.charCodeAt(i) & Ox3FF));\n\n\t\t\tout.push( OxF0 | (code>>18) );\n\t\t\tout.push( Ox80 | ((code>>12) & Ox3F) );\n\t\t\tout.push( Ox80 | ((code>>6) & Ox3F) );\n\t\t\tout.push( Ox80 | (code & Ox3F) );\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = utf16ToUTF8Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a UTF-16 encoded string to an array of integers using UTF-8 encoding.\n*\n* @module @stdlib/string/utf16-to-utf8-array\n*\n* @example\n* var utf16ToUTF8Array = require( '@stdlib/string/utf16-to-utf8-array' );\n*\n* var str = '\u2603';\n* var out = utf16ToUTF8Array( str );\n* // returns [ 226, 152, 131 ]\n*/\n\n// MODULES //\n\nvar utf16ToUTF8Array = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = utf16ToUTF8Array;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar utf16ToUTF8Array = require( './../../../utf16-to-utf8-array' );\n\n\n// VARIABLES //\n\n// Character codes:\nvar UNDERSCORE = 95|0;\nvar PERIOD = 46|0;\nvar HYPHEN = 45|0;\nvar TILDE = 126|0;\nvar ZERO = 48|0;\nvar NINE = 57|0;\nvar A = 65|0;\nvar Z = 90|0;\nvar a = 97|0;\nvar z = 122|0;\n\n\n// MAIN //\n\n/**\n* Percent-encodes a UTF-16 encoded string according to [RFC 3986][1].\n*\n* [1]: https://tools.ietf.org/html/rfc3986#section-2.1\n*\n* @param {string} str - string to percent-encode\n* @returns {string} percent-encoded string\n*\n* @example\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\nfunction percentEncode( str ) {\n\tvar byte;\n\tvar out;\n\tvar len;\n\tvar buf;\n\tvar i;\n\n\t// Convert to an array of octets using UTF-8 encoding (see https://tools.ietf.org/html/rfc3986#section-2.5):\n\tbuf = utf16ToUTF8Array( str );\n\n\t// Encode the string...\n\tlen = buf.length;\n\tout = '';\n\tfor ( i = 0; i < len; i++ ) {\n\t\tbyte = buf[ i ];\n\t\tif (\n\t\t\t// ASCII Digits:\n\t\t\t( byte >= ZERO && byte <= NINE ) ||\n\n\t\t\t// ASCII uppercase letters:\n\t\t\t( byte >= A && byte <= Z ) ||\n\n\t\t\t// ASCII lowercase letters:\n\t\t\t( byte >= a && byte <= z ) ||\n\n\t\t\t// ASCII unreserved characters (see https://tools.ietf.org/html/rfc3986#section-2.3):\n\t\t\tbyte === HYPHEN ||\n\t\t\tbyte === PERIOD ||\n\t\t\tbyte === UNDERSCORE ||\n\t\t\tbyte === TILDE\n\t\t) {\n\t\t\tout += str.charAt( i );\n\t\t} else {\n\t\t\t// Convert an octet to hexadecimal and uppercase according to the RFC (see https://tools.ietf.org/html/rfc3986#section-2.1):\n\t\t\tout += '%' + byte.toString( 16 ).toUpperCase();\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = percentEncode;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Percent-encode a UTF-16 encoded string according to RFC 3986.\n*\n* @module @stdlib/string/base/percent-encode\n*\n* @example\n* var percentEncode = require( '@stdlib/string/base/percent-encode' );\n*\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Removes the first `n` UTF-16 code units of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of UTF-16 code units to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election', 1 );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript', 1 );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures'\n*/\nfunction removeFirst( str, n ) {\n\treturn str.substring( n, str.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first `n` UTF-16 code units of a string.\n*\n* @module @stdlib/string/base/remove-first\n*\n* @example\n* var removeFirst = require( '@stdlib/string/base/remove-first' );\n*\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Removes the first `n` Unicode code points of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of Unicode code points to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election', 1 );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript', 1 );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures'\n*/\nfunction removeFirst( str, n ) {\n\tvar len;\n\tvar ch1;\n\tvar ch2;\n\tvar cnt;\n\tvar i;\n\tif ( n === 0 ) {\n\t\treturn str;\n\t}\n\tlen = str.length;\n\tcnt = 0;\n\n\t// Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = 0; i < len; i++ ) {\n\t\tch1 = str[ i ];\n\t\tcnt += 1;\n\n\t\t// Check for a high UTF-16 surrogate...\n\t\tif ( RE_UTF16_HIGH_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check for an unpaired surrogate at the end of the input string...\n\t\t\tif ( i === len-1 ) {\n\t\t\t\t// We found an unpaired surrogate...\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i+1 ];\n\t\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\ti += 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Check whether we've found the desired number of code points...\n\t\tif ( cnt === n ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn str.substring( i + 1, str.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first `n` Unicode code points of a string.\n*\n* @module @stdlib/string/base/remove-first-code-point\n*\n* @example\n* var removeFirst = require( '@stdlib/string/base/remove-first-code-point' );\n*\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require( './../../../next-grapheme-cluster-break' );\n\n\n// MAIN //\n\n/**\n* Removes the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of grapheme clusters to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election', 1 );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript', 1 );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures'\n*\n* @example\n* var out = removeFirst( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38'\n*\n* @example\n* var out = removeFirst( 'foo bar', 5 );\n* // returns 'ar'\n*/\nfunction removeFirst( str, n ) {\n\tvar i = 0;\n\twhile ( n > 0 ) {\n\t\ti = nextGraphemeClusterBreak( str, i );\n\t\tn -= 1;\n\t}\n\t// Value of `i` will be -1 if and only if `str` is an empty string or `str` has only 1 extended grapheme cluster...\n\tif ( str === '' || i === -1 ) {\n\t\treturn '';\n\t}\n\treturn str.substring( i, str.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @module @stdlib/string/base/remove-first-grapheme-cluster\n*\n* @example\n* var removeFirst = require( '@stdlib/string/base/remove-first-grapheme-cluster' );\n*\n* var out = removeFirst( 'last man standing', 1 );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures', 1 );\n* // returns 'idden Treasures';\n*\n* out = removeFirst( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC38\uD83D\uDC35'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Replaces the substring before the first occurrence of a specified search string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {string} replacement - replacement string\n* @returns {string} string\n*\n* @example\n* var out = replaceBefore( 'beep boop', ' ', 'foo' );\n* // returns 'foo boop'\n*\n* @example\n* var out = replaceBefore( 'beep boop', 'p', 'foo' );\n* // returns 'foop boop'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', '', 'foo' );\n* // returns 'Hello World!'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', 'xyz', 'foo' );\n* // returns 'Hello World!'\n*/\nfunction replaceBefore( str, search, replacement ) {\n\tvar idx = str.indexOf( search );\n\tif ( str === '' || search === '' || replacement === '' || idx < 0 ) {\n\t\treturn str;\n\t}\n\treturn replacement + str.substring( idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replaceBefore;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace the substring before the first occurrence of a specified search string.\n*\n* @module @stdlib/string/base/replace-before\n*\n* @example\n* var replaceBefore = require( '@stdlib/string/base/replace-before' );\n*\n* var str = 'beep boop';\n*\n* var out = replaceBefore( str, ' ', 'foo' );\n* // returns 'foo boop'\n*\n* out = replaceBefore( str, 'o', 'bar' );\n* // returns 'baroop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar repeat = require( './../../../base/repeat' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\n\n\n// MAIN //\n\n/**\n* Right pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} pad - string used to pad\n* @returns {string} padded string\n*\n* @example\n* var str = rpad( 'a', 5, ' ' );\n* // returns 'a '\n*\n* @example\n* var str = rpad( 'beep', 10, 'b' );\n* // returns 'beepbbbbbb'\n*\n* @example\n* var str = rpad( 'boop', 12, 'beep' );\n* // returns 'boopbeepbeep'\n*/\nfunction rpad( str, len, pad ) {\n\tvar n = ( len - str.length ) / pad.length;\n\tif ( n <= 0 ) {\n\t\treturn str;\n\t}\n\tn = ceil( n );\n\treturn str + repeat( pad, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Right pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/base/right-pad\n*\n* @example\n* var rpad = require( '@stdlib/string/base/right-pad' );\n*\n* var str = rpad( 'a', 5, ' ' );\n* // returns 'a '\n*\n* str = rpad( 'beep', 10, 'b' );\n* // returns 'beepbbbbbb'\n*\n* str = rpad( 'boop', 12, 'beep' );\n* // returns 'boopbeepbeep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.trimRight !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar replace = require( './../../../base/replace' );\n\n\n// VARIABLES //\n\n// The following regular expression should suffice to polyfill (most?) all environments.\nvar RE = /[\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+$/;\n\n\n// MAIN //\n\n/**\n* Trims whitespace from the end of a string.\n*\n* @private\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* @example\n* var out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* @example\n* var out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\nfunction rtrim( str ) {\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar rtrim = String.prototype.trimRight;\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace from the end of a string.\n*\n* @param {string} str - input string\n* @returns {string} trimmed string\n*\n* @example\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* @example\n* var out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* @example\n* var out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\nfunction rtrim( str ) {\n\treturn builtin.call( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the end of a string.\n*\n* @module @stdlib/string/base/right-trim\n*\n* @example\n* var rtrim = require( '@stdlib/string/base/right-trim' );\n*\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar rtrim;\nif ( HAS_BUILTIN ) {\n\trtrim = main;\n} else {\n\trtrim = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar lowercase = require( './../../../base/lowercase' );\nvar replace = require( './../../../base/replace' );\nvar trim = require( './../../../base/trim' );\n\n\n// VARIABLES //\n\nvar RE_WHITESPACE = /\\s+/g;\nvar RE_SPECIAL = /[\\-!\"'(),\u2013.:;<>?`{}|~\\/\\\\\\[\\]_#$*&^@%]+/g; // eslint-disable-line no-useless-escape\nvar RE_CAMEL = /([a-z0-9])([A-Z])/g;\n\n\n// MAIN //\n\n/**\n* Converts a string to snake case.\n*\n* @param {string} str - string to convert\n* @returns {string} snake-cased string\n*\n* @example\n* var str = snakecase( 'Hello World!' );\n* // returns 'hello_world'\n*\n* @example\n* var str = snakecase( 'foo bar' );\n* // returns 'foo_bar'\n*\n* @example\n* var str = snakecase( 'I am a tiny little teapot' );\n* // returns 'i_am_a_tiny_little_teapot'\n*\n* @example\n* var str = snakecase( 'BEEP boop' );\n* // returns 'beep_boop'\n*\n* @example\n* var str = snakecase( 'isMobile' );\n* // returns 'is_mobile'\n*/\nfunction snakecase( str ) {\n\tstr = replace( str, RE_SPECIAL, ' ' );\n\tstr = replace( str, RE_CAMEL, '$1 $2' );\n\tstr = trim( str );\n\tstr = replace( str, RE_WHITESPACE, '_' );\n\treturn lowercase( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = snakecase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to snake case.\n*\n* @module @stdlib/string/base/snakecase\n*\n* @example\n* var snakecase = require( '@stdlib/string/base/snakecase' );\n*\n* var str = snakecase( 'Foo Bar' );\n* // returns 'foo_bar'\n*\n* str = snakecase( 'I am a tiny little house' );\n* // returns 'i_am_a_tiny_little_house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar bool = ( typeof String.prototype.startsWith !== 'undefined' );\n\n\n// EXPORTS //\n\nmodule.exports = bool;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Tests if a string starts with the characters of another string.\n*\n* @private\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} position - position at which to start searching\n* @returns {boolean} boolean indicating if the input string starts with the search string\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember, remember', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'To be', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 14 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'quest', -9 );\n* // returns true\n*/\nfunction startsWith( str, search, position ) {\n\tvar pos;\n\tvar i;\n\tif ( position < 0 ) {\n\t\tpos = str.length + position;\n\t} else {\n\t\tpos = position;\n\t}\n\tif ( search.length === 0 ) {\n\t\treturn true;\n\t}\n\tif (\n\t\tpos < 0 ||\n\t\tpos + search.length > str.length\n\t) {\n\t\treturn false;\n\t}\n\tfor ( i = 0; i < search.length; i++ ) {\n\t\tif ( str.charCodeAt( pos + i ) !== search.charCodeAt( i ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\nvar startsWith = String.prototype.startsWith;\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar builtin = require( './builtin.js' );\n\n\n// MAIN //\n\n/**\n* Tests if a string starts with the characters of another string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} position - position at which to start searching\n* @returns {boolean} boolean indicating if the input string starts with the search string\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember, remember', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'To be', 0 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 0 );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 14 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'quest', -9 );\n* // returns true\n*/\nfunction startsWith( str, search, position ) {\n\tvar pos;\n\tif ( position < 0 ) {\n\t\tpos = str.length + position;\n\t} else {\n\t\tpos = position;\n\t}\n\tif ( search.length === 0 ) {\n\t\treturn true;\n\t}\n\tif (\n\t\tpos < 0 ||\n\t\tpos + search.length > str.length\n\t) {\n\t\treturn false;\n\t}\n\treturn builtin.call( str, search, pos );\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string starts with the characters of another string.\n*\n* @module @stdlib/string/base/starts-with\n*\n* @example\n* var startsWith = require( '@stdlib/string/base/starts-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n* var bool = startsWith( str, 'Fair', 0 );\n* // returns true\n*\n* bool = startsWith( str, 'fair', 0 );\n* // returns false\n*\n* bool = startsWith( str, 'foul', 8 );\n* // returns true\n*\n* bool = startsWith( str, 'filthy', -10 );\n* // returns true\n*/\n\n// MODULES //\n\nvar HAS_BUILTIN = require( './has_builtin.js' );\nvar polyfill = require( './polyfill.js' );\nvar main = require( './main.js' );\n\n\n// MAIN //\n\nvar startsWith;\nif ( HAS_BUILTIN ) {\n\tstartsWith = main;\n} else {\n\tstartsWith = polyfill;\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Uncapitalizes the first character of a string.\n*\n* @param {string} str - input string\n* @returns {string} input string with first character converted to lowercase\n*\n* @example\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* @example\n* var out = uncapitalize( 'Presidential election' );\n* // returns 'presidential election'\n*\n* @example\n* var out = uncapitalize( 'JavaScript' );\n* // returns 'javaScript'\n*\n* @example\n* var out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures'\n*/\nfunction uncapitalize( str ) {\n\tif ( str === '' ) {\n\t\treturn '';\n\t}\n\treturn str.charAt( 0 ).toLowerCase() + str.slice( 1 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = uncapitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Uncapitalize the first character of a string.\n*\n* @module @stdlib/string/base/uncapitalize\n*\n* @example\n* var uncapitalize = require( '@stdlib/string/base/uncapitalize' );\n*\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace ns\n*/\nvar ns = {};\n\n/**\n* @name camelcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/camelcase}\n*/\nsetReadOnly( ns, 'camelcase', require( './../../base/camelcase' ) );\n\n/**\n* @name capitalize\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/capitalize}\n*/\nsetReadOnly( ns, 'capitalize', require( './../../base/capitalize' ) );\n\n/**\n* @name codePointAt\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/code-point-at}\n*/\nsetReadOnly( ns, 'codePointAt', require( './../../base/code-point-at' ) );\n\n/**\n* @name constantcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/constantcase}\n*/\nsetReadOnly( ns, 'constantcase', require( './../../base/constantcase' ) );\n\n/**\n* @name distances\n* @memberof ns\n* @readonly\n* @type {Namespace}\n* @see {@link module:@stdlib/string/base/distances}\n*/\nsetReadOnly( ns, 'distances', require( './../../base/distances' ) );\n\n/**\n* @name dotcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/dotcase}\n*/\nsetReadOnly( ns, 'dotcase', require( './../../base/dotcase' ) );\n\n/**\n* @name endsWith\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/ends-with}\n*/\nsetReadOnly( ns, 'endsWith', require( './../../base/ends-with' ) );\n\n/**\n* @name first\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/first}\n*/\nsetReadOnly( ns, 'first', require( './../../base/first' ) );\n\n/**\n* @name firstCodePoint\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/first-code-point}\n*/\nsetReadOnly( ns, 'firstCodePoint', require( './../../base/first-code-point' ) );\n\n/**\n* @name firstGraphemeCluster\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/first-grapheme-cluster}\n*/\nsetReadOnly( ns, 'firstGraphemeCluster', require( './../../base/first-grapheme-cluster' ) );\n\n/**\n* @name forEach\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/for-each}\n*/\nsetReadOnly( ns, 'forEach', require( './../../base/for-each' ) );\n\n/**\n* @name forEachCodePoint\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/for-each-code-point}\n*/\nsetReadOnly( ns, 'forEachCodePoint', require( './../../base/for-each-code-point' ) );\n\n/**\n* @name forEachGraphemeCluster\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/for-each-grapheme-cluster}\n*/\nsetReadOnly( ns, 'forEachGraphemeCluster', require( './../../base/for-each-grapheme-cluster' ) );\n\n/**\n* @name formatInterpolate\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/format-interpolate}\n*/\nsetReadOnly( ns, 'formatInterpolate', require( './../../base/format-interpolate' ) );\n\n/**\n* @name formatTokenize\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/format-tokenize}\n*/\nsetReadOnly( ns, 'formatTokenize', require( './../../base/format-tokenize' ) );\n\n/**\n* @name headercase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/headercase}\n*/\nsetReadOnly( ns, 'headercase', require( './../../base/headercase' ) );\n\n/**\n* @name invcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/invcase}\n*/\nsetReadOnly( ns, 'invcase', require( './../../base/invcase' ) );\n\n/**\n* @name kebabcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/kebabcase}\n*/\nsetReadOnly( ns, 'kebabcase', require( './../../base/kebabcase' ) );\n\n/**\n* @name lpad\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/left-pad}\n*/\nsetReadOnly( ns, 'lpad', require( './../../base/left-pad' ) );\n\n/**\n* @name ltrim\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/left-trim}\n*/\nsetReadOnly( ns, 'ltrim', require( './../../base/left-trim' ) );\n\n/**\n* @name lowercase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/lowercase}\n*/\nsetReadOnly( ns, 'lowercase', require( './../../base/lowercase' ) );\n\n/**\n* @name pascalcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/pascalcase}\n*/\nsetReadOnly( ns, 'pascalcase', require( './../../base/pascalcase' ) );\n\n/**\n* @name percentEncode\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/percent-encode}\n*/\nsetReadOnly( ns, 'percentEncode', require( './../../base/percent-encode' ) );\n\n/**\n* @name removeFirst\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/remove-first}\n*/\nsetReadOnly( ns, 'removeFirst', require( './../../base/remove-first' ) );\n\n/**\n* @name removeFirstCodePoint\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/remove-first-code-point}\n*/\nsetReadOnly( ns, 'removeFirstCodePoint', require( './../../base/remove-first-code-point' ) );\n\n/**\n* @name removeFirstGraphemeCluster\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/remove-first-grapheme-cluster}\n*/\nsetReadOnly( ns, 'removeFirstGraphemeCluster', require( './../../base/remove-first-grapheme-cluster' ) );\n\n/**\n* @name repeat\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/repeat}\n*/\nsetReadOnly( ns, 'repeat', require( './../../base/repeat' ) );\n\n/**\n* @name replace\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/replace}\n*/\nsetReadOnly( ns, 'replace', require( './../../base/replace' ) );\n\n/**\n* @name replaceBefore\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/replace-before}\n*/\nsetReadOnly( ns, 'replaceBefore', require( './../../base/replace-before' ) );\n\n/**\n* @name rpad\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/right-pad}\n*/\nsetReadOnly( ns, 'rpad', require( './../../base/right-pad' ) );\n\n/**\n* @name rtrim\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/right-trim}\n*/\nsetReadOnly( ns, 'rtrim', require( './../../base/right-trim' ) );\n\n/**\n* @name snakecase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/snakecase}\n*/\nsetReadOnly( ns, 'snakecase', require( './../../base/snakecase' ) );\n\n/**\n* @name startcase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/startcase}\n*/\nsetReadOnly( ns, 'startcase', require( './../../base/startcase' ) );\n\n/**\n* @name startsWith\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/starts-with}\n*/\nsetReadOnly( ns, 'startsWith', require( './../../base/starts-with' ) );\n\n/**\n* @name trim\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/trim}\n*/\nsetReadOnly( ns, 'trim', require( './../../base/trim' ) );\n\n/**\n* @name uncapitalize\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/uncapitalize}\n*/\nsetReadOnly( ns, 'uncapitalize', require( './../../base/uncapitalize' ) );\n\n/**\n* @name uppercase\n* @memberof ns\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base/uppercase}\n*/\nsetReadOnly( ns, 'uppercase', require( './../../base/uppercase' ) );\n\n\n// EXPORTS //\n\nmodule.exports = ns;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/camelcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to camel case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} camel-cased string\n*\n* @example\n* var out = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* @example\n* var out = camelcase( 'IS_MOBILE' );\n* // returns 'isMobile'\n*\n* @example\n* var out = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*\n* @example\n* var out = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*/\nfunction camelcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = camelcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to camel case.\n*\n* @module @stdlib/string/camelcase\n*\n* @example\n* var camelcase = require( '@stdlib/string/camelcase' );\n*\n* var str = camelcase( 'foo bar' );\n* // returns 'fooBar'\n*\n* str = camelcase( '--foo-bar--' );\n* // returns 'fooBar'\n*\n* str = camelcase( 'Hello World!' );\n* // returns 'helloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/capitalize' );\n\n\n// MAIN //\n\n/**\n* Capitalizes the first character in a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} capitalized string\n*\n* @example\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* @example\n* var out = capitalize( 'presidential election' );\n* // returns 'Presidential election'\n*\n* @example\n* var out = capitalize( 'javaScript' );\n* // returns 'JavaScript'\n*\n* @example\n* var out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures'\n*/\nfunction capitalize( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = capitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first character in a string.\n*\n* @module @stdlib/string/capitalize\n*\n* @example\n* var capitalize = require( '@stdlib/string/capitalize' );\n*\n* var out = capitalize( 'last man standing' );\n* // returns 'Last man standing'\n*\n* out = capitalize( 'Hidden Treasures' );\n* // returns 'Hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/constantcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to constant case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} constant-cased string\n*\n* @example\n* var str = constantcase( 'beep' );\n* // returns 'BEEP'\n*\n* @example\n* var str = constantcase( 'beep boop' );\n* // returns 'BEEP_BOOP'\n*\n* @example\n* var str = constantcase( 'isMobile' );\n* // returns 'IS_MOBILE'\n*\n* @example\n* var str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*/\nfunction constantcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = constantcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to constant case.\n*\n* @module @stdlib/string/constantcase\n*\n* @example\n* var constantcase = require( '@stdlib/string/constantcase' );\n*\n* var str = constantcase( 'aBcDeF' );\n* // returns 'ABCDEF'\n*\n* str = constantcase( 'Hello World!' );\n* // returns 'HELLO_WORLD'\n*\n* str = constantcase( 'I am a robot' );\n* // returns 'I_AM_A_ROBOT'\n*/\n\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/dotcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to dot case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} dot-cased string\n*\n* @example\n* var out = dotcase( 'foo bar' );\n* // returns 'foo.bar'\n*\n* @example\n* var out = dotcase( 'IS_MOBILE' );\n* // returns 'is.mobile'\n*\n* @example\n* var out = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*\n* @example\n* var out = dotcase( '--foo-bar--' );\n* // returns 'foo.bar'\n*/\nfunction dotcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = dotcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to dot case.\n*\n* @module @stdlib/string/dotcase\n*\n* @example\n* var dotcase = require( '@stdlib/string/dotcase' );\n*\n* var str = dotcase( 'foo bar' );\n* // returns 'foo.bar'\n*\n* str = dotcase( '--foo-bar--' );\n* // returns 'foo.bar'\n*\n* str = dotcase( 'Hello World!' );\n* // returns 'hello.world'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/ends-with' );\n\n\n// MAIN //\n\n/**\n* Test if a string ends with the characters of another string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} [len=str.length] - substring length\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {boolean} boolean indicating if the input string ends with the search string\n*\n* @example\n* var bool = endsWith( 'Remember the story I used to tell you when you were a boy?', 'boy?' );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'Remember the story I used to tell you when you were a boy?', 'Boy?' );\n* // returns false\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be' );\n* // returns false\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', 19 );\n* // returns true\n*\n* @example\n* var bool = endsWith( 'To be, or not to be, that is the question.', 'to be', -23 );\n* // returns true\n*/\nfunction endsWith( str, search, len ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( len ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', len ) );\n\t\t}\n\t} else {\n\t\tlen = str.length;\n\t}\n\treturn base( str, search, len );\n}\n\n\n// EXPORTS //\n\nmodule.exports = endsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string ends with the characters of another string.\n*\n* @module @stdlib/string/ends-with\n*\n* @example\n* var endsWith = require( '@stdlib/string/ends-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n*\n* var bool = endsWith( str, 'air' );\n* // returns true\n*\n* bool = endsWith( str, 'fair' );\n* // returns false\n*\n* bool = endsWith( str, 'fair', 30 );\n* // returns true\n*\n* bool = endsWith( str, 'fair', -34 );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar firstCodeUnit = require( './../../base/first' );\nvar firstCodePoint = require( './../../base/first-code-point' );\nvar firstGraphemeCluster = require( './../../base/first-grapheme-cluster' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': firstGraphemeCluster,\n\t'code_point': firstCodePoint,\n\t'code_unit': firstCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Returns the first character(s) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} [n=1] - number of characters to return\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" to return (must be either `grapheme`, `code_point`, or `code_unit`)\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} output string\n*\n* @example\n* var out = first( 'last man standing' );\n* // returns 'l'\n*\n* @example\n* var out = first( 'presidential election' );\n* // returns 'p'\n*\n* @example\n* var out = first( 'javaScript' );\n* // returns 'j'\n*\n* @example\n* var out = first( 'Hidden Treasures' );\n* // returns 'H'\n*\n* @example\n* var out = first( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC36\uD83D\uDC2E'\n*\n* @example\n* var out = first( 'foo bar', 5 );\n* // returns 'foo b'\n*/\nfunction first( str ) {\n\tvar options;\n\tvar nargs;\n\tvar opts;\n\tvar n;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tn = 1;\n\t} else if ( nargs === 2 ) {\n\t\tn = arguments[ 1 ];\n\t\tif ( isPlainObject( n ) ) {\n\t\t\toptions = n;\n\t\t\tn = 1;\n\t\t} else if ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t} else { // nargs > 2\n\t\tn = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t\toptions = arguments[ 2 ];\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\treturn FCNS[ opts.mode ]( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = first;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the first character(s) of a string.\n*\n* @module @stdlib/string/first\n*\n* @example\n* var first = require( '@stdlib/string/first' );\n*\n* var out = first( 'last man standing' );\n* // returns 'l'\n*\n* out = first( 'Hidden Treasures' );\n* // returns 'H';\n*\n* out = first( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar forEachCodeUnit = require( './../../base/for-each' );\nvar forEachCodePoint = require( './../../base/for-each-code-point' );\nvar forEachGraphemeCluster = require( './../../base/for-each-grapheme-cluster' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': forEachGraphemeCluster,\n\t'code_point': forEachCodePoint,\n\t'code_unit': forEachCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Invokes a function for each character in a string.\n*\n* @param {string} str - input string\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" over which to iterate (must be either `grapheme`, `code_point`, or `code_unit`)\n* @param {Function} clbk - function to invoke\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} callback argument must be a function\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} input string\n*\n* @example\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\nfunction forEach( str, options, clbk ) {\n\tvar thisArg;\n\tvar nargs;\n\tvar opts;\n\tvar cb;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 2 ) {\n\t\tcb = options;\n\t\toptions = null;\n\t} else if ( nargs === 3 ) {\n\t\tif ( isPlainObject( options ) ) {\n\t\t\tcb = clbk;\n\t\t} else {\n\t\t\tcb = options;\n\t\t\toptions = null;\n\t\t\tthisArg = clbk;\n\t\t}\n\t} else { // nargs === 4\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t\tcb = clbk;\n\t\tthisArg = arguments[ 3 ];\n\t}\n\tif ( !isFunction( cb ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Callback argument must be a function. Value: `%s`.', cb ) );\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\tFCNS[ opts.mode ]( str, cb, thisArg );\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = forEach;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Invoke a function for each character in a string.\n*\n* @module @stdlib/string/for-each\n*\n* @example\n* var forEach = require( '@stdlib/string/for-each' );\n*\n* function log( value, index ) {\n* console.log( '%d: %s', index, value );\n* }\n*\n* forEach( 'Hello', log );\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isCollection = require( '@stdlib/assert/is-collection' );\nvar format = require( './../../format' );\nvar UNICODE_MAX = require( '@stdlib/constants/unicode/max' );\nvar UNICODE_MAX_BMP = require( '@stdlib/constants/unicode/max-bmp' );\n\n\n// VARIABLES //\n\nvar fromCharCode = String.fromCharCode;\n\n// Factor to rescale a code point from a supplementary plane:\nvar Ox10000 = 0x10000|0; // 65536\n\n// Factor added to obtain a high surrogate:\nvar OxD800 = 0xD800|0; // 55296\n\n// Factor added to obtain a low surrogate:\nvar OxDC00 = 0xDC00|0; // 56320\n\n// 10-bit mask: 2^10-1 = 1023 => 0x3ff => 00000000 00000000 00000011 11111111\nvar Ox3FF = 1023|0;\n\n\n// MAIN //\n\n/**\n* Creates a string from a sequence of Unicode code points.\n*\n* ## Notes\n*\n* - UTF-16 encoding uses one 16-bit unit for non-surrogates (U+0000 to U+D7FF and U+E000 to U+FFFF).\n* - UTF-16 encoding uses two 16-bit units (surrogate pairs) for U+10000 to U+10FFFF and encodes U+10000-U+10FFFF by subtracting 0x10000 from the code point, expressing the result as a 20-bit binary, and splitting the 20 bits of 0x0-0xFFFFF as upper and lower 10-bits. The respective 10-bits are stored in two 16-bit words: a high and a low surrogate.\n*\n* @param {...NonNegativeInteger} args - sequence of code points\n* @throws {Error} must provide either an array-like object of code points or one or more code points as separate arguments\n* @throws {TypeError} a code point must be a nonnegative integer\n* @throws {RangeError} must provide a valid Unicode code point\n* @returns {string} created string\n*\n* @example\n* var str = fromCodePoint( 9731 );\n* // returns '\u2603'\n*/\nfunction fromCodePoint( args ) {\n\tvar len;\n\tvar str;\n\tvar arr;\n\tvar low;\n\tvar hi;\n\tvar pt;\n\tvar i;\n\n\tlen = arguments.length;\n\tif ( len === 1 && isCollection( args ) ) {\n\t\tarr = arguments[ 0 ];\n\t\tlen = arr.length;\n\t} else {\n\t\tarr = [];\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tarr.push( arguments[ i ] );\n\t\t}\n\t}\n\tif ( len === 0 ) {\n\t\tthrow new Error( 'insufficient arguments. Must provide either an array of code points or one or more code points as separate arguments.' );\n\t}\n\tstr = '';\n\tfor ( i = 0; i < len; i++ ) {\n\t\tpt = arr[ i ];\n\t\tif ( !isNonNegativeInteger( pt ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide valid code points (i.e., nonnegative integers). Value: `%s`.', pt ) );\n\t\t}\n\t\tif ( pt > UNICODE_MAX ) {\n\t\t\tthrow new RangeError( format( 'invalid argument. Must provide a valid code point (i.e., cannot exceed %u). Value: `%s`.', UNICODE_MAX, pt ) );\n\t\t}\n\t\tif ( pt <= UNICODE_MAX_BMP ) {\n\t\t\tstr += fromCharCode( pt );\n\t\t} else {\n\t\t\t// Code point from a supplementary plane. Split into two 16-bit code units (surrogate pair).\n\t\t\tpt -= Ox10000;\n\t\t\thi = (pt >> 10) + OxD800;\n\t\t\tlow = (pt & Ox3FF) + OxDC00;\n\t\t\tstr += fromCharCode( hi, low );\n\t\t}\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = fromCodePoint;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create a string from a sequence of Unicode code points.\n*\n* @module @stdlib/string/from-code-point\n*\n* @example\n* var fromCodePoint = require( '@stdlib/string/from-code-point' );\n*\n* var str = fromCodePoint( 9731 );\n* // returns '\u2603'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/headercase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to HTTP header case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} HTTP header-cased string\n*\n* @example\n* var out = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* @example\n* var out = headercase( 'IS_MOBILE' );\n* // returns 'Is-Mobile'\n*\n* @example\n* var out = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*\n* @example\n* var out = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*/\nfunction headercase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = headercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to HTTP header case.\n*\n* @module @stdlib/string/headercase\n*\n* @example\n* var headercase = require( '@stdlib/string/headercase' );\n*\n* var str = headercase( 'foo bar' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( '--foo-bar--' );\n* // returns 'Foo-Bar'\n*\n* str = headercase( 'Hello World!' );\n* // returns 'Hello-World'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/kebabcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to kebab case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} kebab-cased string\n*\n* @example\n* var str = kebabCase( 'Hello World!' );\n* // returns 'hello-world'\n*\n* @example\n* var str = kebabCase( 'foo bar' );\n* // returns 'foo-bar'\n*\n* @example\n* var str = kebabCase( 'I am a tiny little teapot' );\n* // returns 'i-am-a-tiny-little-teapot'\n*\n* @example\n* var str = kebabCase( 'BEEP boop' );\n* // returns 'beep-boop'\n*\n* @example\n* var str = kebabCase( 'isMobile' );\n* // returns 'is-mobile'\n*/\nfunction kebabCase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = kebabCase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to kebab case.\n*\n* @module @stdlib/string/kebabcase\n*\n* @example\n* var kebabcase = require( '@stdlib/string/kebabcase' );\n*\n* var str = kebabcase( 'Foo Bar' );\n* // returns 'foo-bar'\n*\n* str = kebabcase( 'I am a tiny little house' );\n* // returns 'i-am-a-tiny-little-house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar FLOAT64_MAX_SAFE_INTEGER = require( '@stdlib/constants/float64/max-safe-integer' );\nvar base = require( './../../base/left-pad' );\n\n\n// MAIN //\n\n/**\n* Left pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} [pad=' '] - string used to pad\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @throws {RangeError} padding must have a length greater than `0`\n* @returns {string} padded string\n*\n* @example\n* var str = lpad( 'a', 5 );\n* // returns ' a'\n*\n* @example\n* var str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* @example\n* var str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\nfunction lpad( str, len, pad ) {\n\tvar p;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tp = pad;\n\t\tif ( !isString( p ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', p ) );\n\t\t}\n\t\tif ( p.length === 0 ) {\n\t\t\tthrow new RangeError( 'invalid argument. Third argument must not be an empty string.' );\n\t\t}\n\t} else {\n\t\tp = ' ';\n\t}\n\tif ( len > FLOAT64_MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( format( 'invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.', len ) );\n\t}\n\treturn base( str, len, p );\n}\n\n\n// EXPORTS //\n\nmodule.exports = lpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Left pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/left-pad\n*\n* @example\n* var lpad = require( '@stdlib/string/left-pad' );\n*\n* var str = lpad( 'a', 5 );\n* // returns ' a'\n*\n* str = lpad( 'beep', 10, 'b' );\n* // returns 'bbbbbbbeep'\n*\n* str = lpad( 'boop', 12, 'beep' );\n* // returns 'beepbeepboop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/left-trim' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} trimmed string\n*\n* @example\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* @example\n* var out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*\n* @example\n* var out = ltrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines\\n\\n\\n'\n*/\nfunction ltrim( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning of a string.\n*\n* @module @stdlib/string/left-trim\n*\n* @example\n* var ltrim = require( '@stdlib/string/left-trim' );\n*\n* var out = ltrim( ' Whitespace ' );\n* // returns 'Whitespace '\n*\n* out = ltrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs\\t\\t\\t'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Splits a string by its grapheme cluster breaks.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {StringArray} array of grapheme clusters\n*\n* @example\n* var out = splitGraphemeClusters( 'caf\u00E9' );\n* // returns [ 'c', 'a', 'f', '\u00E9' ]\n*\n* @example\n* var out = splitGraphemeClusters( '\uD83C\uDF55\uD83C\uDF55\uD83C\uDF55' );\n* // returns [ '\uD83C\uDF55', '\uD83C\uDF55', '\uD83C\uDF55' ]\n*/\nfunction splitGraphemeClusters( str ) {\n\tvar idx;\n\tvar brk;\n\tvar out;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tidx = 0;\n\tout = [];\n\tif ( str.length === 0 ) {\n\t\treturn out;\n\t}\n\tbrk = nextGraphemeClusterBreak( str, idx );\n\twhile ( brk !== -1 ) {\n\t\tout.push( str.substring( idx, brk ) );\n\t\tidx = brk;\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t}\n\tout.push( str.substring( idx ) );\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = splitGraphemeClusters;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Split a string by its grapheme cluster breaks.\n*\n* @module @stdlib/string/split-grapheme-clusters\n*\n* @example\n* var splitGraphemeClusters = require( '@stdlib/string/split-grapheme-clusters' );\n*\n* var out = splitGraphemeClusters( 'caf\u00E9' );\n* // returns [ 'c', 'a', 'f', '\u00E9' ]\n*\n* out = splitGraphemeClusters( '\uD83C\uDF55\uD83C\uDF55\uD83C\uDF55' );\n* // returns [ '\uD83C\uDF55', '\uD83C\uDF55', '\uD83C\uDF55' ]\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar splitGraphemeClusters = require( './../../split-grapheme-clusters' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isStringArray = require( '@stdlib/assert/is-string-array' ).primitives;\nvar replace = require( './../../replace' );\nvar rescape = require( '@stdlib/utils/escape-regexp-string' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar WHITESPACE_CHARS = '\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\n\n\n// MAIN //\n\n/**\n* Trims `n` characters from the beginning of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of characters to trim\n* @param {(string|StringArray)} [chars] - characters to trim (defaults to whitespace characters)\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string or an array of strings\n* @returns {string} trimmed string\n*\n* @example\n* var str = ' abc ';\n* var out = ltrimN( str, 2 );\n* // returns ' abc '\n*\n* @example\n* var str = ' abc ';\n* var out = ltrimN( str, str.length );\n* // returns 'abc '\n*\n* @example\n* var str = '~~abc!~~';\n* var out = ltrimN( str, str.length, [ '~', '!' ] );\n* // returns 'abc!~~'\n*\n* @example\n* var str = '\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8';\n* var out = ltrimN( str, str.length, '\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16' );\n* // returns ''\n*/\nfunction ltrimN( str, n, chars ) {\n\tvar nElems;\n\tvar reStr;\n\tvar isStr;\n\tvar RE;\n\tvar i;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( n ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tisStr = isString( chars );\n\t\tif ( !isStr && !isStringArray( chars ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string or an array of strings. Value: `%s`.', chars ) );\n\t\t}\n\t\tif ( isStr ) {\n\t\t\tchars = splitGraphemeClusters( chars );\n\t\t}\n\t\tnElems = chars.length - 1;\n\t\treStr = '';\n\t\tfor ( i = 0; i < nElems; i++ ) {\n\t\t\treStr += rescape( chars[ i ] );\n\t\t\treStr += '|';\n\t\t}\n\t\treStr += rescape( chars[ nElems ] );\n\n\t\t// Case: Trim a specific set of characters from the beginning of a string..\n\t\tRE = new RegExp( '^(?:' + reStr + '){0,'+n+'}' );\n\t} else {\n\t\t// Case: Trim `n` whitespace characters from the beginning of a string...\n\t\tRE = new RegExp( '^[' + WHITESPACE_CHARS + ']{0,'+n+'}' );\n\t}\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = ltrimN;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim `n` characters from the beginning of a string.\n*\n* @module @stdlib/string/left-trim-n\n*\n* @example\n* var ltrimN = require( '@stdlib/string/left-trim-n' );\n*\n* var str = 'foo ';\n* var out = ltrimN( str, str.length );\n* // returns 'foo '\n*\n* str = '\uD83D\uDC36\uD83D\uDC36\uD83D\uDC36 Animals \uD83D\uDC36\uD83D\uDC36\uD83D\uDC36';\n* out = ltrimN( str, 4, [ '\uD83D\uDC36', ' ' ] );\n* // returns 'Animals \uD83D\uDC36\uD83D\uDC36\uD83D\uDC36'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/lowercase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to lowercase.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} lowercase string\n*\n* @example\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\nfunction lowercase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = lowercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to lowercase.\n*\n* @module @stdlib/string/lowercase\n*\n* @example\n* var lowercase = require( '@stdlib/string/lowercase' );\n*\n* var str = lowercase( 'bEEp' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the number of grapheme clusters in a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {NonNegativeInteger} number of grapheme clusters\n*\n* @example\n* var out = numGraphemeClusters( 'last man standing' );\n* // returns 17\n*\n* @example\n* var out = numGraphemeClusters( 'presidential election' );\n* // returns 21\n*\n* @example\n* var out = numGraphemeClusters( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926' );\n* // returns 5\n*\n* @example\n* var out = numGraphemeClusters( '\uD83C\uDF37' );\n* // returns 1\n*/\nfunction numGraphemeClusters( str ) {\n\tvar count;\n\tvar idx;\n\tvar brk;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tcount = 0;\n\tidx = 0;\n\n\tbrk = nextGraphemeClusterBreak( str, idx );\n\twhile ( brk !== -1 ) {\n\t\tcount += 1;\n\t\tidx = brk;\n\t\tbrk = nextGraphemeClusterBreak( str, idx );\n\t}\n\tif ( idx < str.length ) {\n\t\tcount += 1;\n\t}\n\treturn count;\n}\n\n\n// EXPORTS //\n\nmodule.exports = numGraphemeClusters;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2020 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the number of grapheme clusters in a string.\n*\n* @module @stdlib/string/num-grapheme-clusters\n*\n* @example\n* var numGraphemeClusters = require( '@stdlib/string/num-grapheme-clusters' );\n*\n* var out = numGraphemeClusters( 'last man standing' );\n* // returns 17\n*\n* out = numGraphemeClusters( '\uD83C\uDF37' );\n* // returns 1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "[\n\t{ \"VAL\": 1e0, \"EN\": \"zero\", \"DE\": \"null\" },\n\t{ \"VAL\": 1e1, \"EN\": \"ten\", \"DE\": \"zehn\" },\n\t{ \"VAL\": 1e2, \"EN\": \"hundred\", \"DE\": \"hundert\" },\n\t{ \"VAL\": 1e3, \"EN\": \"thousand\", \"DE\": \"tausend\" },\n\t{ \"VAL\": 1e6, \"EN\": \"million\", \"DE\": \"Million\" },\n\t{ \"VAL\": 1e9, \"EN\": \"billion\", \"DE\": \"Milliarde\" },\n\t{ \"VAL\": 1e12, \"EN\": \"trillion\", \"DE\": \"Billion\" },\n\t{ \"VAL\": 1e15, \"EN\": \"quadrillion\", \"DE\": \"Billiarde\" },\n\t{ \"VAL\": 1e18, \"EN\": \"quintillion\", \"DE\": \"Trillion\" },\n\t{ \"VAL\": 1e21, \"EN\": \"sextillion\", \"DE\": \"Trilliarde\" },\n\t{ \"VAL\": 1e24, \"EN\": \"septillion\", \"DE\": \"Quadrillion\" },\n\t{ \"VAL\": 1e27, \"EN\": \"octillion\", \"DE\": \"Quadrilliarde\" },\n\t{ \"VAL\": 1e30, \"EN\": \"nonillion\", \"DE\": \"Quintillion\" },\n\t{ \"VAL\": 1e33, \"EN\": \"decillion\", \"DE\": \"Quintilliarde\" },\n\t{ \"VAL\": 1e36, \"EN\": \"undecillion\", \"DE\": \"Sextillion\" },\n\t{ \"VAL\": 1e39, \"EN\": \"duodecillion\", \"DE\": \"Sextilliarde\" },\n\t{ \"VAL\": 1e42, \"EN\": \"tredecillion\", \"DE\": \"Septillion\" },\n\t{ \"VAL\": 1e45, \"EN\": \"quattuordecillion\", \"DE\": \"Septilliarde\" },\n\t{ \"VAL\": 1e48, \"EN\": \"quindecillion\", \"DE\": \"Octillion\" },\n\t{ \"VAL\": 1e51, \"EN\": \"sedecillion\", \"DE\": \"Octilliarde\" },\n\t{ \"VAL\": 1e54, \"EN\": \"septendecillion\", \"DE\": \"Nonillion\" },\n\t{ \"VAL\": 1e57, \"EN\": \"octodecillion\", \"DE\": \"Nonilliarde\" },\n\t{ \"VAL\": 1e60, \"EN\": \"novendecillion\", \"DE\": \"Decillion\" },\n\t{ \"VAL\": 1e63, \"EN\": \"vigintillion\", \"DE\": \"Decilliarde\" },\n\t{ \"VAL\": 1e66, \"EN\": \"unvigintillion\", \"DE\": \"Undecillion\" },\n\t{ \"VAL\": 1e69, \"EN\": \"duovigintillion\", \"DE\": \"Undecilliarde\" },\n\t{ \"VAL\": 1e72, \"EN\": \"tresvigintillion\", \"DE\": \"Duodecillion\" },\n\t{ \"VAL\": 1e75, \"EN\": \"quattuorvigintillion\", \"DE\": \"Duodecilliarde\" },\n\t{ \"VAL\": 1e78, \"EN\": \"quinquavigintillion\", \"DE\": \"Tredecillion\" },\n\t{ \"VAL\": 1e81, \"EN\": \"sesvigintillion\", \"DE\": \"Tredecilliarde\" },\n\t{ \"VAL\": 1e84, \"EN\": \"septemvigintillion\", \"DE\": \"Quattuordecillion\" },\n\t{ \"VAL\": 1e87, \"EN\": \"octovigintillion\", \"DE\": \"Quattuordecilliarde\" },\n\t{ \"VAL\": 1e90, \"EN\": \"novemvigintillion\", \"DE\": \"Quindecillion\" },\n\t{ \"VAL\": 1e93, \"EN\": \"trigintillion\", \"DE\": \"Quindecilliarde\" },\n\t{ \"VAL\": 1e96, \"EN\": \"untrigintillion\", \"DE\": \"Sedecillion\" },\n\t{ \"VAL\": 1e99, \"EN\": \"duotrigintillion\", \"DE\": \"Sedecilliarde\" },\n\t{ \"VAL\": 1e102, \"EN\": \"trestrigintillion\", \"DE\": \"Septendecillion\" },\n\t{ \"VAL\": 1e105, \"EN\": \"quattuortrigintillion\", \"DE\": \"Septendecilliarde\" },\n\t{ \"VAL\": 1e108, \"EN\": \"quinquatrigintillion\", \"DE\": \"Octodecillion\" },\n\t{ \"VAL\": 1e111, \"EN\": \"sestrigintillion\", \"DE\": \"Octodecilliarde\" },\n\t{ \"VAL\": 1e114, \"EN\": \"septentrigintillion\", \"DE\": \"Novendecillion\" },\n\t{ \"VAL\": 1e117, \"EN\": \"octotrigintillion\", \"DE\": \"Novendecilliarde\" },\n\t{ \"VAL\": 1e120, \"EN\": \"noventrigintillion\", \"DE\": \"Vigintillion\" },\n\t{ \"VAL\": 1e123, \"EN\": \"quadragintillion\", \"DE\": \"Vigintilliarde\" },\n\t{ \"VAL\": 1e153, \"EN\": \"quinquagintillion\", \"DE\": \"Quinvigintilliarde\" },\n\t{ \"VAL\": 1e183, \"EN\": \"sexagintillion\", \"DE\": \"Trigintilliarde\" },\n\t{ \"VAL\": 1e213, \"EN\": \"septuagintillion\", \"DE\": \"Quintrigintilliarde\" },\n\t{ \"VAL\": 1e243, \"EN\": \"octogintillion\", \"DE\": \"Quadragintilliarde\" },\n\t{ \"VAL\": 1e273, \"EN\": \"nonagintillion\", \"DE\": \"Quin\u00ADquadra\u00ADgint\u00ADilliarde\" },\n\t{ \"VAL\": 1e303, \"EN\": \"centillion\", \"DE\": \"Quinquagintilliarde\" },\n\t{ \"VAL\": 1e306, \"EN\": \"uncentillion\", \"DE\": \"Unquinquagintillione\" }\n]\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar endsWith = require( './../../base/ends-with' );\nvar UNITS = require( './units.json' );\n\n\n// VARIABLES //\n\nvar ONES = [ 'null', 'eins', 'zwei', 'drei', 'vier', 'f\u00FCnf', 'sechs', 'sieben', 'acht', 'neun', 'zehn', 'elf', 'zw\u00F6lf', 'dreizehn', 'vierzehn', 'f\u00FCnfzehn', 'sechzehn', 'siebzehn', 'achtzehn', 'neunzehn' ];\nvar TENS = [ 'null', 'zehn', 'zwanzig', 'drei\u00DFig', 'vierzig', 'f\u00FCnfzig', 'sechzig', 'siebzig', 'achtzig', 'neunzig' ];\n\n\n// FUNCTIONS //\n\n/**\n* Pluralizes a word by adding a 'n' or 'en' suffix.\n*\n* @private\n* @param {string} word - word to pluralize\n* @returns {string} pluralized word\n*/\nfunction pluralize( word ) {\n\tif ( endsWith( word, 'e' ) ) {\n\t\treturn word + 'n';\n\t}\n\treturn word + 'en';\n}\n\n\n// MAIN //\n\n/**\n* Converts a number to a word representation in German.\n*\n* @private\n* @param {number} num - number to convert\n* @param {string} out - output string\n* @returns {string} word representation\n*\n* @example\n* var words = int2wordsDE( 1243, '' );\n* // returns 'eintausendzweihundertdreiundvierzig'\n*\n* @example\n* var words = int2wordsDE( 387, '' );\n* // returns 'dreihundertsiebenundachtzig'\n*\n* @example\n* var words = int2wordsDE( 100, '' );\n* // returns 'einhundert'\n*\n* @example\n* var words = int2wordsDE( 1421, '' );\n* // returns 'eintausendvierhunderteinundzwanzig'\n*\n* @example\n* var words = int2wordsDE( 100381, '' );\n* // returns 'einhunderttausenddreihunderteinundachtzig'\n*\n* @example\n* var words = int2wordsDE( -13, '' );\n* // returns 'minus dreizehn'\n*/\nfunction int2wordsDE( num, out ) {\n\tvar word;\n\tvar rem;\n\tvar i;\n\tif ( num === 0 ) {\n\t\t// Case: We have reached the end of the number and the number is zero.\n\t\treturn out || 'null';\n\t}\n\tif ( num < 0 ) {\n\t\tout += 'minus ';\n\t\tnum *= -1;\n\t}\n\tif ( num < 20 ) {\n\t\trem = 0;\n\t\tif ( num === 1 && out.length === 0 ) {\n\t\t\tword = 'ein';\n\t\t} else {\n\t\t\tword = ONES[ num ];\n\t\t}\n\t}\n\telse if ( num < 100 ) {\n\t\trem = num % 10;\n\t\tword = TENS[ floor( num / 10 ) ];\n\t\tif ( rem ) {\n\t\t\tword = ( ( rem === 1 ) ? 'ein' : ONES[ rem ] ) + 'und' + word;\n\t\t\trem = 0;\n\t\t}\n\t}\n\telse if ( num < 1e3 ) {\n\t\trem = num % 100;\n\t\tword = int2wordsDE( floor( num / 100 ), '' ) + 'hundert';\n\t}\n\telse if ( num < 1e6 ) {\n\t\trem = num % 1e3;\n\t\tword = int2wordsDE( floor( num / 1e3 ), '' ) + 'tausend';\n\t}\n\telse {\n\t\tfor ( i = 5; i < UNITS.length; i++ ) {\n\t\t\tif ( num < UNITS[ i ].VAL ) {\n\t\t\t\trem = num % UNITS[ i-1 ].VAL;\n\t\t\t\tif ( floor( num / UNITS[ i-1 ].VAL ) === 1 ) {\n\t\t\t\t\tword = 'eine ' + UNITS[ i-1 ].DE;\n\t\t\t\t} else {\n\t\t\t\t\tword = int2wordsDE( floor( num / UNITS[ i-1 ].VAL ), '' ) + ' ' + pluralize( UNITS[ i-1 ].DE );\n\t\t\t\t}\n\t\t\t\tif ( rem ) {\n\t\t\t\t\tword += ' ';\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tout += word;\n\treturn int2wordsDE( rem, out );\n}\n\n\n// EXPORTS //\n\nmodule.exports = int2wordsDE;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar UNITS = require( './units.json' );\n\n\n// VARIABLES //\n\nvar ONES = [ 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen' ];\nvar TENS = [ 'zero', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety' ];\n\n\n// MAIN //\n\n/**\n* Converts a number to a word representation in English.\n*\n* @private\n* @param {number} num - number to convert\n* @param {string} out - output string\n* @returns {string} word representation\n*\n* @example\n* var words = int2wordsEN( 1234, '' );\n* // returns 'one thousand two hundred thirty-four'\n*\n* @example\n* var words = int2wordsEN( -129, '' );\n* // returns 'minus one hundred twenty-nine'\n*\n* @example\n* var words = int2wordsEN( 0, '' );\n* // returns 'zero'\n*/\nfunction int2wordsEN( num, out ) {\n\tvar word;\n\tvar rem;\n\tvar i;\n\tif ( num === 0 ) {\n\t\t// Case: We have reached the end of the number and the number is zero.\n\t\treturn out || 'zero';\n\t}\n\tif ( num < 0 ) {\n\t\tout += 'minus';\n\t\tnum *= -1;\n\t}\n\tif ( num < 20 ) {\n\t\trem = 0;\n\t\tword = ONES[ num ];\n\t}\n\telse if ( num < 100 ) {\n\t\trem = num % 10;\n\t\tword = TENS[ floor( num / 10 ) ];\n\t\tif ( rem > 0 ) {\n\t\t\tword += '-' + ONES[ rem ];\n\t\t\trem = 0;\n\t\t}\n\t}\n\telse {\n\t\tfor ( i = 3; i < UNITS.length - 1; i++ ) {\n\t\t\tif ( num < UNITS[ i ].VAL ) {\n\t\t\t\trem = num % UNITS[ i-1 ].VAL;\n\t\t\t\tword = int2wordsEN( floor( num / UNITS[ i-1 ].VAL ), '' ) + ' ' + UNITS[ i-1 ].EN;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif ( i === UNITS.length - 1 ) {\n\t\t\trem = num % UNITS[ i-1 ].VAL;\n\t\t\tword = int2wordsEN( floor( num / UNITS[ i-1 ].VAL ), '' ) + ' ' + UNITS[ i-1 ].EN;\n\t\t}\n\t}\n\tif ( out.length > 0 ) {\n\t\tout += ' ';\n\t}\n\tout += word;\n\treturn int2wordsEN( rem, out );\n}\n\n\n// EXPORTS //\n\nmodule.exports = int2wordsEN;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar indexOf = require( '@stdlib/utils/index-of' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar LANGUAGE_CODES = [ 'en', 'de' ];\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - options to validate\n* @param {string} [options.lang] - language code\n* @returns {(null|Error)} error object or null\n*\n* @example\n* var opts = {};\n* var options = {\n* 'lang': 'es'\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n* throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isPlainObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'lang' ) ) {\n\t\topts.lang = options.lang;\n\t\tif ( indexOf( LANGUAGE_CODES, opts.lang ) === -1 ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'lang', LANGUAGE_CODES.join( '\", \"' ), opts.lang ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Processes a string of decimal numbers and applies a function mapping decimal numbers to words to each character.\n*\n* @private\n* @param {string} x - string of decimal numbers\n* @param {Function} fcn - function mapping decimal numbers to words\n* @returns {string} string of words\n*/\nfunction decimals( x, fcn ) {\n\tvar out;\n\tvar len;\n\tvar i;\n\n\tlen = x.length;\n\tout = '';\n\tfor ( i = 0; i < len; i++ ) {\n\t\tout += fcn( x[ i ], '' );\n\t\tif ( i < len-1 ) {\n\t\t\tout += ' ';\n\t\t}\n\t}\n\treturn out;\n}\n\n\n// EXPORTS //\n\nmodule.exports = decimals;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( '@stdlib/assert/is-number' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isfinite = require( '@stdlib/math/base/assert/is-finite' );\nvar format = require( './../../format' );\nvar int2wordsDE = require( './int2words_de.js' );\nvar int2wordsEN = require( './int2words_en.js' );\nvar validate = require( './validate.js' );\nvar decimals = require( './decimals.js' );\n\n\n// MAIN //\n\n/**\n* Converts a number to a word representation.\n*\n* @param {number} num - number to convert\n* @param {Object} [options] - options\n* @param {string} [options.lang='en'] - language code\n* @throws {TypeError} must provide valid options\n* @returns {string} word representation of number\n*\n* @example\n* var out = num2words( 12 );\n* // returns 'twelve'\n*\n* @example\n* var out = num2words( 21.8 );\n* // returns 'twenty-one point eight'\n*\n* @example\n* var out = num2words( 1234 );\n* // returns 'one thousand two hundred thirty-four'\n*\n* @example\n* var out = num2words( 100381 );\n* // returns 'one hundred thousand three hundred eighty-one'\n*/\nfunction num2words( num, options ) {\n\tvar parts;\n\tvar opts;\n\tvar err;\n\n\tif ( !isNumber( num ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a number. Value: `%s`.', num ) );\n\t}\n\topts = {};\n\tif ( arguments.length > 1 ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tif ( isInteger( num ) ) {\n\t\tswitch ( opts.lang ) {\n\t\tcase 'de':\n\t\t\treturn int2wordsDE( num, '' );\n\t\tcase 'en':\n\t\tdefault:\n\t\t\treturn int2wordsEN( num, '' );\n\t\t}\n\t}\n\tif ( !isfinite( num ) ) {\n\t\tswitch ( opts.lang ) {\n\t\tcase 'de':\n\t\t\treturn ( num < 0 ) ? 'minus unendlich' : 'unendlich';\n\t\tcase 'en':\n\t\tdefault:\n\t\t\treturn ( num < 0 ) ? 'negative infinity' : 'infinity';\n\t\t}\n\t}\n\tparts = num.toString().split( '.' );\n\tswitch ( opts.lang ) {\n\tcase 'de':\n\t\treturn int2wordsDE( parts[ 0 ], '' ) + ' Komma ' + decimals( parts[ 1 ], int2wordsDE );\n\tcase 'en':\n\tdefault:\n\t\treturn int2wordsEN( parts[ 0 ], '' ) + ' point ' + decimals( parts[ 1 ], int2wordsEN );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = num2words;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a number to a word representation.\n*\n* @module @stdlib/string/num2words\n*\n* @example\n* var num2words = require( '@stdlib/string/num2words' );\n*\n* var out = num2words( 29 );\n* // returns 'twenty-nine'\n*\n* out = num2words( 13072 );\n* // returns 'thirteen thousand seventy-two'\n*\n* out = num2words( 183, { 'lang': 'de' } );\n* // returns 'einhundertdreiundachtzig'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/repeat' );\n\n\n// MAIN //\n\n/**\n* Repeats a string a specified number of times and returns the concatenated result.\n*\n* @param {string} str - string to repeat\n* @param {NonNegativeInteger} n - number of times to repeat the string\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {RangeError} output string length must not exceed maximum allowed string length\n* @returns {string} repeated string\n*\n* @example\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* @example\n* var str = repeat( '', 100 );\n* // returns ''\n*\n* @example\n* var str = repeat( 'beep', 0 );\n* // returns ''\n*/\nfunction repeat( str, n ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( n ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t}\n\treturn base( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = repeat;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Repeat a string a specified number of times and return the concatenated result.\n*\n* @module @stdlib/string/repeat\n*\n* @example\n* var replace = require( '@stdlib/string/repeat' );\n*\n* var str = repeat( 'a', 5 );\n* // returns 'aaaaa'\n*\n* str = repeat( '', 100 );\n* // returns ''\n*\n* str = repeat( 'beep', 0 );\n* // returns ''\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar FLOAT64_MAX_SAFE_INTEGER = require( '@stdlib/constants/float64/max-safe-integer' );\nvar base = require( './../../base/right-pad' );\n\n\n// MAIN //\n\n/**\n* Right pads a string such that the padded string has a length of at least `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - minimum string length\n* @param {string} [pad=' '] - string used to pad\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @throws {RangeError} padding must have a length greater than `0`\n* @returns {string} padded string\n*\n* @example\n* var str = rpad( 'a', 5 );\n* // returns 'a '\n*\n* @example\n* var str = rpad( 'beep', 10, 'p' );\n* // returns 'beeppppppp'\n*\n* @example\n* var str = rpad( 'beep', 12, 'boop' );\n* // returns 'beepboopboop'\n*/\nfunction rpad( str, len, pad ) {\n\tvar p;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tp = pad;\n\t\tif ( !isString( p ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', p ) );\n\t\t}\n\t\tif ( p.length === 0 ) {\n\t\t\tthrow new RangeError( 'invalid argument. Pad string must not be an empty string.' );\n\t\t}\n\t} else {\n\t\tp = ' ';\n\t}\n\tif ( len > FLOAT64_MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( format( 'invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.', len ) );\n\t}\n\treturn base( str, len, p );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rpad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Right pad a string such that the padded string has a length of at least `len`.\n*\n* @module @stdlib/string/right-pad\n*\n* @example\n* var rpad = require( '@stdlib/string/right-pad' );\n*\n* var str = rpad( 'a', 5 );\n* // returns 'a '\n*\n* str = rpad( 'beep', 10, 'p' );\n* // returns 'beeppppppp'\n*\n* str = rpad( 'beep', 12, 'boop' );\n* // returns 'beepboopboop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Validates function options.\n*\n* @private\n* @param {Object} opts - destination object\n* @param {Options} options - options to validate\n* @param {string} [options.lpad] - string used to left pad\n* @param {string} [options.rpad] - string used to right pad\n* @param {boolean} [options.centerRight] - boolean indicating whether to center right in the event of a tie\n* @returns {(null|Error)} error object or null\n*\n* @example\n* var opts = {};\n* var options = {\n* 'lpad': 'a',\n* 'rpad': 'b'\n* };\n* var err = validate( opts, options );\n* if ( err ) {\n* throw err;\n* }\n*/\nfunction validate( opts, options ) {\n\tif ( !isPlainObject( options ) ) {\n\t\treturn new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t}\n\tif ( hasOwnProp( options, 'lpad' ) ) {\n\t\topts.lpad = options.lpad;\n\t\tif ( !isString( opts.lpad ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a string. Option: `%s`.', 'lpad', opts.lpad ) );\n\t\t}\n\t}\n\tif ( hasOwnProp( options, 'rpad' ) ) {\n\t\topts.rpad = options.rpad;\n\t\tif ( !isString( opts.rpad ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a string. Option: `%s`.', 'rpad', opts.rpad ) );\n\t\t}\n\t}\n\tif ( hasOwnProp( options, 'centerRight' ) ) {\n\t\topts.centerRight = options.centerRight;\n\t\tif ( !isBoolean( opts.centerRight ) ) {\n\t\t\treturn new TypeError( format( 'invalid option. `%s` option must be a boolean. Option: `%s`.', 'centerRight', opts.centerRight ) );\n\t\t}\n\t}\n\treturn null;\n}\n\n\n// EXPORTS //\n\nmodule.exports = validate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar repeat = require( './../../repeat' );\nvar format = require( './../../format' );\nvar floor = require( '@stdlib/math/base/special/floor' );\nvar ceil = require( '@stdlib/math/base/special/ceil' );\nvar lpad = require( './../../left-pad' );\nvar rpad = require( './../../right-pad' );\nvar abs = require( '@stdlib/math/base/special/abs' );\nvar FLOAT64_MAX_SAFE_INTEGER = require( '@stdlib/constants/float64/max-safe-integer' );\nvar validate = require( './validate.js' );\n\n\n// MAIN //\n\n/**\n* Pads a string such that the padded string has a length of `len`.\n*\n* @param {string} str - string to pad\n* @param {NonNegativeInteger} len - string length\n* @param {Options} [options] - function options\n* @param {string} [options.lpad=''] - string used to left pad\n* @param {string} [options.rpad=' '] - string used to right pad\n* @param {boolean} [options.centerRight=false] - boolean indicating whether to center right in the event of a tie\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @throws {RangeError} at least one padding must have a length greater than `0`\n* @returns {string} padded string\n*\n* @example\n* var str = pad( 'a', 5 );\n* // returns 'a '\n*\n* @example\n* var str = pad( 'a', 10, {\n* 'lpad': 'b'\n* });\n* // returns 'bbbbbbbbba'\n*\n* @example\n* var str = pad( 'a', 12, {\n* 'rpad': 'b'\n* });\n* // returns 'abbbbbbbbbbb'\n*\n* @example\n* var opts = {\n* 'lpad': 'a',\n* 'rpad': 'c'\n* };\n* var str = pad( 'b', 10, opts );\n* // returns 'aaaabccccc'\n*\n* @example\n* var opts = {\n* 'lpad': 'a',\n* 'rpad': 'c',\n* 'centerRight': true\n* };\n* var str = pad( 'b', 10, opts );\n* // returns 'aaaaabcccc'\n*/\nfunction pad( str, len, options ) {\n\tvar nright;\n\tvar nleft;\n\tvar isodd;\n\tvar right;\n\tvar left;\n\tvar opts;\n\tvar err;\n\tvar tmp;\n\tvar n;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( len > FLOAT64_MAX_SAFE_INTEGER ) {\n\t\tthrow new RangeError( format( 'invalid argument. Output string length exceeds maximum allowed string length. Value: `%u`.', len ) );\n\t}\n\topts = {};\n\tif ( arguments.length > 2 ) {\n\t\terr = validate( opts, options );\n\t\tif ( err ) {\n\t\t\tthrow err;\n\t\t}\n\t}\n\tif ( opts.lpad && opts.rpad ) {\n\t\tn = ( len-str.length ) / 2;\n\t\tif ( n === 0 ) {\n\t\t\treturn str;\n\t\t}\n\t\ttmp = floor( n );\n\t\tif ( tmp !== n ) {\n\t\t\tisodd = true;\n\t\t}\n\t\tif ( n < 0 ) {\n\t\t\tn = floor( abs( n ) );\n\t\t\tnleft = n;\n\t\t\tnright = str.length - n;\n\n\t\t\t// If |len-str.length| is an odd number, take away an additional character from one side...\n\t\t\tif ( isodd ) {\n\t\t\t\tif ( opts.centerRight ) {\n\t\t\t\t\tnright -= 1;\n\t\t\t\t} else {\n\t\t\t\t\tnleft += 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn str.substring( nleft, nright );\n\t\t}\n\t\tnleft = ceil( n / opts.lpad.length );\n\t\tleft = repeat( opts.lpad, nleft );\n\n\t\tnright = ceil( n / opts.rpad.length );\n\t\tright = repeat( opts.rpad, nright );\n\n\t\t// If (len-str.length) is an odd number, give one side one extra character...\n\t\tn = tmp;\n\t\tnleft = n;\n\t\tnright = n;\n\t\tif ( isodd ) {\n\t\t\tif ( opts.centerRight ) {\n\t\t\t\tnleft += 1;\n\t\t\t} else {\n\t\t\t\tnright += 1;\n\t\t\t}\n\t\t}\n\t\tleft = left.substring( 0, nleft );\n\t\tright = right.substring( 0, nright );\n\t\treturn left + str + right;\n\t}\n\tif ( opts.lpad ) {\n\t\ttmp = lpad( str, len, opts.lpad );\n\t\treturn tmp.substring( tmp.length-len );\n\t}\n\tif ( opts.rpad ) {\n\t\treturn ( rpad( str, len, opts.rpad ) ).substring( 0, len );\n\t}\n\tif ( opts.rpad === void 0 ) {\n\t\treturn ( rpad( str, len, ' ' ) ).substring( 0, len );\n\t}\n\tthrow new RangeError( format( 'invalid argument. At least one padding option must have a length greater than 0. Left padding: `%s`. Right padding: `%s`.', opts.lpad, opts.rpad ) );\n}\n\n\n// EXPORTS //\n\nmodule.exports = pad;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Pad a string.\n*\n* @module @stdlib/string/pad\n*\n* @example\n* var pad = require( '@stdlib/string/pad' );\n*\n* var str = pad( 'a', 5 );\n* // returns 'a '\n*\n* str = pad( 'a', 10, {\n* 'lpad': 'b'\n* });\n* // returns 'bbbbbbbbba'\n*\n* str = pad( 'a', 12, {\n* 'rpad': 'b'\n* });\n* // returns 'abbbbbbbbbbb'\n*\n* var opts = {\n* 'lpad': 'a',\n* 'rpad': 'c'\n* };\n* str = pad( 'b', 10, opts );\n* // returns 'aaaabccccc'\n*\n* opts = {\n* 'lpad': 'a',\n* 'rpad': 'c',\n* 'centerRight': true\n* };\n* str = pad( 'b', 10, opts );\n* // returns 'aaaaabcccc'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/pascalcase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to Pascal case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} Pascal-cased string\n*\n* @example\n* var out = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* @example\n* var out = pascalcase( 'IS_MOBILE' );\n* // returns 'IsMobile'\n*\n* @example\n* var out = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*\n* @example\n* var out = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*/\nfunction pascalcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = pascalcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to Pascal case.\n*\n* @module @stdlib/string/pascalcase\n*\n* @example\n* var pascalcase = require( '@stdlib/string/pascalcase' );\n*\n* var str = pascalcase( 'foo bar' );\n* // returns 'FooBar'\n*\n* str = pascalcase( '--foo-bar--' );\n* // returns 'FooBar'\n*\n* str = pascalcase( 'Hello World!' );\n* // returns 'HelloWorld'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/percent-encode' );\n\n\n// MAIN //\n\n/**\n* Percent-encodes a UTF-16 encoded string according to [RFC 3986][1].\n*\n* [1]: https://tools.ietf.org/html/rfc3986#section-2.1\n*\n* @param {string} str - string to percent-encode\n* @throws {TypeError} must provide a string\n* @returns {string} percent-encoded string\n*\n* @example\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\nfunction percentEncode( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = percentEncode;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Percent-encode a UTF-16 encoded string according to RFC 3986.\n*\n* @module @stdlib/string/percent-encode\n*\n* @example\n* var percentEncode = require( '@stdlib/string/percent-encode' );\n*\n* var str1 = 'Ladies + Gentlemen';\n*\n* var str2 = percentEncode( str1 );\n* // returns 'Ladies%20%2B%20Gentlemen'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' );\nvar codePointAt = require( './../../code-point-at' );\nvar hasUTF16SurrogatePairAt = require( '@stdlib/assert/has-utf16-surrogate-pair-at' );\nvar grapheme = require( './../../tools/grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar breakType = grapheme.breakType;\nvar breakProperty = grapheme.breakProperty;\nvar emojiProperty = grapheme.emojiProperty;\n\n\n// MAIN //\n\n/**\n* Returns the previous extended grapheme cluster break in a string before a specified position.\n*\n* @param {string} str - input string\n* @param {integer} [fromIndex=str.length-1] - position\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an integer\n* @returns {NonNegativeInteger} previous grapheme break position\n*\n* @example\n* var out = prevGraphemeClusterBreak( 'last man standing', 4 );\n* // returns 3\n*\n* @example\n* var out = prevGraphemeClusterBreak( 'presidential election', 8 );\n* // returns 7\n*\n* @example\n* var out = prevGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 0\n*\n* @example\n* var out = prevGraphemeClusterBreak( '\uD83C\uDF37', 1 );\n* // returns -1\n*/\nfunction prevGraphemeClusterBreak( str, fromIndex ) {\n\tvar breaks;\n\tvar emoji;\n\tvar ans;\n\tvar len;\n\tvar idx;\n\tvar cp;\n\tvar i;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tlen = str.length;\n\tif ( arguments.length > 1 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = fromIndex;\n\t} else {\n\t\tidx = len - 1;\n\t}\n\tif ( len === 0 || idx <= 0 ) {\n\t\treturn -1;\n\t}\n\tif ( idx >= len ) {\n\t\tidx = len - 1;\n\t}\n\n\t// Initialize caches for storing grapheme break and emoji properties:\n\tbreaks = [];\n\temoji = [];\n\n\t// Get the code point for the starting index:\n\tcp = codePointAt( str, 0 );\n\n\t// Get the corresponding grapheme break and emoji properties:\n\tbreaks.push( breakProperty( cp ) );\n\temoji.push( emojiProperty( cp ) );\n\n\tans = -1;\n\tfor ( i = 1; i <= idx; i++ ) {\n\t\t// If the current character is part of a surrogate pair, move along...\n\t\tif ( hasUTF16SurrogatePairAt( str, i-1 ) ) {\n\t\t\tans = i-2;\n\t\t\tbreaks.length = 0;\n\t\t\temoji.length = 0;\n\t\t\tcontinue;\n\t\t}\n\t\tcp = codePointAt( str, i );\n\n\t\t// Get the corresponding grapheme break and emoji properties:\n\t\tbreaks.push( breakProperty( cp ) );\n\t\temoji.push( emojiProperty( cp ) );\n\n\t\t// Determine if we've encountered a grapheme cluster break...\n\t\tif ( breakType( breaks, emoji ) > 0 ) {\n\t\t\tans = i-1;\n\t\t\tbreaks.length = 0;\n\t\t\temoji.length = 0;\n\t\t\tcontinue;\n\t\t}\n\t}\n\treturn ans;\n}\n\n\n// EXPORTS //\n\nmodule.exports = prevGraphemeClusterBreak;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the prev extended grapheme cluster break in a string before a specified position.\n*\n* @module @stdlib/string/prev-grapheme-cluster-break\n*\n* @example\n* var prevGraphemeClusterBreak = require( '@stdlib/string/prev-grapheme-cluster-break' );\n*\n* var out = prevGraphemeClusterBreak( '\u0905\u0928\u0941\u091A\u094D\u091B\u0947\u0926', 2 );\n* // returns 0\n*\n* out = prevGraphemeClusterBreak( '\uD83C\uDF37', 1 );\n* // returns -1\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar removeFirstCodeUnit = require( './../../base/remove-first' );\nvar removeFirstCodePoint = require( './../../base/remove-first-code-point' );\nvar removeFirstGraphemeCluster = require( './../../base/remove-first-grapheme-cluster' ); // eslint-disable-line id-length\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': removeFirstGraphemeCluster,\n\t'code_point': removeFirstCodePoint,\n\t'code_unit': removeFirstCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Removes the first character(s) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} [n=1] - number of characters to remove\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" to return (must be either `grapheme`, `code_point`, or `code_unit`)\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} updated string\n*\n* @example\n* var out = removeFirst( 'last man standing' );\n* // returns 'ast man standing'\n*\n* @example\n* var out = removeFirst( 'presidential election' );\n* // returns 'residential election'\n*\n* @example\n* var out = removeFirst( 'JavaScript' );\n* // returns 'avaScript'\n*\n* @example\n* var out = removeFirst( 'Hidden Treasures' );\n* // returns 'idden Treasures'\n*\n* @example\n* var out = removeFirst( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38'\n*\n* @example\n* var out = removeFirst( 'foo bar', 4 );\n* // returns 'bar'\n*/\nfunction removeFirst( str ) {\n\tvar options;\n\tvar nargs;\n\tvar opts;\n\tvar n;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tn = 1;\n\t} else if ( nargs === 2 ) {\n\t\tn = arguments[ 1 ];\n\t\tif ( isPlainObject( n ) ) {\n\t\t\toptions = n;\n\t\t\tn = 1;\n\t\t} else if ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t} else { // nargs > 2\n\t\tn = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t\toptions = arguments[ 2 ];\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\treturn FCNS[ opts.mode ]( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeFirst;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the first character(s) of a string.\n*\n* @module @stdlib/string/remove-first\n*\n* @example\n* var removeFirst = require( '@stdlib/string/remove-first' );\n*\n* var out = removeFirst( 'last man standing' );\n* // returns 'ast man standing'\n*\n* out = removeFirst( 'Hidden Treasures' );\n* // returns 'idden Treasures';\n*\n* out = removeFirst( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC38\uD83D\uDC35\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MAIN //\n\n/**\n* Removes the last `n` UTF-16 code units of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of UTF-16 code units to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* @example\n* var out = removeLast( 'presidential election', 1 );\n* // returns 'presidential electio'\n*\n* @example\n* var out = removeLast( 'JavaScript', 1 );\n* // returns 'JavaScrip'\n*\n* @example\n* var out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure'\n*/\nfunction removeLast( str, n ) {\n\treturn str.substring( 0, str.length - n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the last `n` UTF-16 code units of a string.\n*\n* @module @stdlib/string/base/remove-last\n*\n* @example\n* var removeLast = require( '@stdlib/string/base/remove-last' );\n*\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// VARIABLES //\n\nvar RE_UTF16_LOW_SURROGATE = /[\\uDC00-\\uDFFF]/; // TODO: replace with stdlib pkg\nvar RE_UTF16_HIGH_SURROGATE = /[\\uD800-\\uDBFF]/; // TODO: replace with stdlib pkg\n\n\n// MAIN //\n\n/**\n* Removes the last `n` Unicode code points of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of Unicode code points to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* @example\n* var out = removeLast( 'presidential election', 1 );\n* // returns 'presidential electio'\n*\n* @example\n* var out = removeLast( 'JavaScript', 1 );\n* // returns 'JavaScrip'\n*\n* @example\n* var out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure'\n*/\nfunction removeLast( str, n ) {\n\tvar len;\n\tvar ch1;\n\tvar ch2;\n\tvar cnt;\n\tvar i;\n\tif ( n === 0 ) {\n\t\treturn str;\n\t}\n\tlen = str.length;\n\tcnt = 0;\n\n\t// Process the string one Unicode code unit at a time and count UTF-16 surrogate pairs as a single Unicode code point...\n\tfor ( i = len - 1; i >= 0; i-- ) {\n\t\tch1 = str[ i ];\n\t\tcnt += 1;\n\n\t\t// Check for a low UTF-16 surrogate...\n\t\tif ( RE_UTF16_LOW_SURROGATE.test( ch1 ) ) {\n\t\t\t// Check for an unpaired surrogate at the end of the input string...\n\t\t\tif ( i === 0 ) {\n\t\t\t\t// We found an unpaired surrogate...\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Check whether the high surrogate is paired with a low surrogate...\n\t\t\tch2 = str[ i-1 ];\n\t\t\tif ( RE_UTF16_HIGH_SURROGATE.test( ch2 ) ) {\n\t\t\t\t// We found a surrogate pair:\n\t\t\t\ti -= 1; // bump the index to process the next code unit\n\t\t\t}\n\t\t}\n\t\t// Check whether we've found the desired number of code points...\n\t\tif ( cnt === n ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn str.substring( 0, i );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the last `n` Unicode code points of a string.\n*\n* @module @stdlib/string/base/remove-last-code-point\n*\n* @example\n* var removeLast = require( '@stdlib/string/base/remove-last-code-point' );\n*\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar nextGraphemeClusterBreak = require('./../../../next-grapheme-cluster-break');\nvar numGraphemeClusters = require( './../../../num-grapheme-clusters' );\n\n\n// MAIN //\n\n/**\n* Removes the last `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of grapheme clusters to remove\n* @returns {string} output string\n*\n* @example\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* @example\n* var out = removeLast( 'presidential election', 1 );\n* // returns 'presidential electio'\n*\n* @example\n* var out = removeLast( 'JavaScript', 1 );\n* // returns 'JavaScrip'\n*\n* @example\n* var out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure'\n*\n* @example\n* var out = removeLast( '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC30\uD83D\uDC38', 2 );\n* // returns '\uD83D\uDC36\uD83D\uDC2E\uD83D\uDC37'\n*\n* @example\n* var out = removeLast( 'foo bar', 5 );\n* // returns 'fo'\n*/\nfunction removeLast( str, n ) {\n\tvar total;\n\tvar num;\n\tvar i;\n\n\tif ( n === 0 ) {\n\t\treturn str;\n\t}\n\n\ttotal = numGraphemeClusters( str );\n\tif ( str === '' || total < n ) {\n\t\treturn '';\n\t}\n\n\ti = 0;\n\tnum = 0;\n\twhile ( num < total - n ) {\n\t\ti = nextGraphemeClusterBreak( str, i );\n\t\tnum += 1;\n\t}\n\treturn str.substring( 0, i );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the last `n` grapheme clusters (i.e., user-perceived characters) of a string.\n*\n* @module @stdlib/string/base/remove-last-grapheme-cluster\n*\n* @example\n* var removeLast = require( '@stdlib/string/base/remove-last-grapheme-cluster' );\n*\n* var out = removeLast( 'last man standing', 1 );\n* // returns 'last man standin'\n*\n* out = removeLast( 'Hidden Treasures', 1 );\n* // returns 'Hidden Treasure';\n*\n* out = removeLast( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isPlainObject = require( '@stdlib/assert/is-plain-object' );\nvar hasOwnProp = require( '@stdlib/assert/has-own-property' );\nvar contains = require( '@stdlib/array/base/assert/contains' ).factory;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar removeLastCodeUnit = require( './../../base/remove-last' );\nvar removeLastCodePoint = require( './../../base/remove-last-code-point' );\nvar removeLastGraphemeCluster = require( './../../base/remove-last-grapheme-cluster' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar MODES = [ 'grapheme', 'code_point', 'code_unit' ];\nvar FCNS = {\n\t'grapheme': removeLastGraphemeCluster,\n\t'code_point': removeLastCodePoint,\n\t'code_unit': removeLastCodeUnit\n};\nvar isMode = contains( MODES );\n\n\n// MAIN //\n\n/**\n* Removes the last character(s) of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} [n=1] - number of character to remove\n* @param {Options} [options] - options\n* @param {string} [options.mode=\"grapheme\"] - type of \"character\" to return (must be either `grapheme`, `code_point`, or `code_unit`)\n* @throws {TypeError} must provide a string primitive\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} options argument must be an object\n* @throws {TypeError} must provide valid options\n* @returns {string} updated string\n*\n* @example\n* var out = removeLast( 'last man standing' );\n* // returns 'last man standin'\n*\n* @example\n* var out = removeLast( 'presidential election' );\n* // returns 'presidential electio'\n*\n* @example\n* var out = removeLast( 'javaScript' );\n* // returns 'javaScrip'\n*\n* @example\n* var out = removeLast( 'Hidden Treasures' );\n* // returns 'Hidden Treasure'\n*\n* @example\n* var out = removeLast( 'leader', 2 );\n* // returns 'lead'\n*/\nfunction removeLast( str ) {\n\tvar options;\n\tvar nargs;\n\tvar opts;\n\tvar n;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\topts = {\n\t\t'mode': 'grapheme'\n\t};\n\tnargs = arguments.length;\n\tif ( nargs === 1 ) {\n\t\tn = 1;\n\t} else if ( nargs === 2 ) {\n\t\tn = arguments[ 1 ];\n\t\tif ( isPlainObject( n ) ) {\n\t\t\toptions = n;\n\t\t\tn = 1;\n\t\t} else if ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t} else { // nargs > 2\n\t\tn = arguments[ 1 ];\n\t\tif ( !isNonNegativeInteger( n ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );\n\t\t}\n\t\toptions = arguments[ 2 ];\n\t\tif ( !isPlainObject( options ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );\n\t\t}\n\t}\n\tif ( options ) {\n\t\tif ( hasOwnProp( options, 'mode' ) ) {\n\t\t\topts.mode = options.mode;\n\t\t\tif ( !isMode( opts.mode ) ) {\n\t\t\t\tthrow new TypeError( format( 'invalid option. `%s` option must be one of the following: \"%s\". Value: `%s`.', 'mode', MODES.join( '\", \"' ), opts.mode ) );\n\t\t\t}\n\t\t}\n\t}\n\treturn FCNS[ opts.mode ]( str, n );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove the last character(s) of a string.\n*\n* @module @stdlib/string/remove-last\n*\n* @example\n* var removeLast = require( '@stdlib/string/remove-last' );\n*\n* var out = removeLast( 'last man standing' );\n* // returns 'last man standin'\n*\n* out = removeLast( 'Hidden Treasures' );\n* // returns 'Hidden Treasure';\n*\n* out = removeLast( '\uD83D\uDC2E\uD83D\uDC37\uD83D\uDC38\uD83D\uDC35', 2 ) );\n* // returns '\uD83D\uDC2E\uD83D\uDC37'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\n// '\\ufeff' => 1111111011111111 => 0xFEFF => 65279\nvar BOM = 65279;\n\n\n// MAIN //\n\n/**\n* Removes a UTF-8 byte order mark (BOM) from the beginning of a string.\n*\n* ## Notes\n*\n* - A UTF-8 byte order mark ([BOM][1]) is the byte sequence `0xEF,0xBB,0xBF`.\n* - To convert a UTF-8 encoded `Buffer` to a `string`, the `Buffer` must be converted to [UTF-16][2]. The BOM thus gets converted to the single 16-bit code point `'\\ufeff'` (UTF-16 BOM).\n*\n* [1]: https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8\n* [2]: http://es5.github.io/#x4.3.16\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {string} string with BOM removed\n*\n* @example\n* var str = removeUTF8BOM( '\\ufeffbeep' );\n* // returns 'beep'\n*/\nfunction removeUTF8BOM( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tif ( str.charCodeAt( 0 ) === BOM ) {\n\t\treturn str.slice( 1 );\n\t}\n\treturn str;\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeUTF8BOM;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove a UTF-8 byte order mark (BOM) from the beginning of a string.\n*\n* @module @stdlib/string/remove-utf8-bom\n*\n* @example\n* var removeUTF8BOM = require( '@stdlib/string/remove-utf8-bom' );\n*\n* var str = removeUTF8BOM( '\\ufeffbeep' );\n* // returns 'beep'\n*/\n\n// MODULES //\n\nvar removeUTF8BOM = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = removeUTF8BOM;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Converts a string to uppercase.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} uppercase string\n*\n* @example\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\nfunction uppercase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn str.toUpperCase();\n}\n\n\n// EXPORTS //\n\nmodule.exports = uppercase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to uppercase.\n*\n* @module @stdlib/string/uppercase\n*\n* @example\n* var uppercase = require( '@stdlib/string/uppercase' );\n*\n* var str = uppercase( 'bEEp' );\n* // returns 'BEEP'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isStringArray = require( '@stdlib/assert/is-string-array' );\nvar uppercase = require( './../../uppercase' );\nvar isBoolean = require( '@stdlib/assert/is-boolean' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar tokenize = require( '@stdlib/nlp/tokenize' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Removes a list of words from a string.\n*\n* @param {string} str - input string\n* @param {StringArray} words - array of words to be removed\n* @param {boolean} [ignoreCase=false] - boolean indicating whether to perform a case-insensitive operation\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be an array of strings\n* @throws {TypeError} third argument must be a boolean\n* @returns {string} output string\n*\n* @example\n* var str = 'beep boop Foo bar';\n* var out = removeWords( str, [ 'boop', 'foo' ] );\n* // returns 'beep Foo bar'\n*\n* @example\n* var str = 'beep boop Foo bar';\n* var out = removeWords( str, [ 'boop', 'foo' ], true );\n* // returns 'beep bar'\n*/\nfunction removeWords( str, words, ignoreCase ) {\n\tvar tokens;\n\tvar token;\n\tvar list;\n\tvar flg;\n\tvar out;\n\tvar N;\n\tvar i;\n\tvar j;\n\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isStringArray( words ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be an array of strings. Value: `%s`.', words ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isBoolean( ignoreCase ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a boolean. Value: `%s`.', ignoreCase ) );\n\t\t}\n\t}\n\ttokens = tokenize( str, true );\n\tN = words.length;\n\tout = [];\n\tif ( ignoreCase ) {\n\t\tlist = words.slice();\n\t\tfor ( i = 0; i < N; i++ ) {\n\t\t\tlist[ i ] = uppercase( list[ i ] );\n\t\t}\n\t\tfor ( i = 0; i < tokens.length; i++ ) {\n\t\t\tflg = true;\n\t\t\ttoken = uppercase( tokens[ i ] );\n\t\t\tfor ( j = 0; j < N; j++ ) {\n\t\t\t\tif ( list[ j ] === token ) {\n\t\t\t\t\tflg = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( flg ) {\n\t\t\t\tout.push( tokens[ i ] );\n\t\t\t}\n\t\t}\n\t\treturn out.join( '' );\n\t}\n\t// Case: case-sensitive\n\tfor ( i = 0; i < tokens.length; i++ ) {\n\t\ttoken = tokens[ i ];\n\t\tflg = true;\n\t\tfor ( j = 0; j < N; j++ ) {\n\t\t\tif ( words[ j ] === token ) {\n\t\t\t\tflg = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif ( flg ) {\n\t\t\tout.push( token );\n\t\t}\n\t}\n\treturn out.join( '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = removeWords;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Remove a list of words from a string.\n*\n* @module @stdlib/string/remove-words\n*\n* @example\n* var removeWords = require( '@stdlib/string/remove-words' );\n*\n* var str = 'beep boop Foo bar';\n* var words = [ 'boop', 'foo' ];\n*\n* var out = removeWords( str, words );\n* // returns 'beep Foo bar'\n*\n* // Case-insensitive:\n* out = removeWords( str, words, true )\n* //returns 'beep bar'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/replace-before' );\n\n\n// MAIN //\n\n/**\n* Replaces the substring before the first occurrence of a specified search string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {string} replacement - replacement string\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be a string\n* @returns {string} output string\n*\n* @example\n* var out = replaceBefore( 'beep boop', ' ', 'foo' );\n* // returns 'foo boop'\n*\n* @example\n* var out = replaceBefore( 'beep boop', 'p', 'foo' );\n* // returns 'foop boop'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', '', 'foo' );\n* // returns 'Hello World!'\n*\n* @example\n* var out = replaceBefore( 'Hello World!', 'xyz', 'foo' );\n* // returns 'Hello World!'\n*/\nfunction replaceBefore( str, search, replacement ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( !isString( replacement ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', replacement ) );\n\t}\n\treturn base( str, search, replacement );\n}\n\n\n// EXPORTS //\n\nmodule.exports = replaceBefore;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2023 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Replace the substring before the first occurrence of a specified search string.\n*\n* @module @stdlib/string/replace-before\n*\n* @example\n* var replaceBefore = require( '@stdlib/string/replace-before' );\n*\n* var str = 'beep boop';\n*\n* var out = replaceBefore( str, ' ', 'foo' );\n* // returns 'foo boop'\n*\n* out = replaceBefore( str, 'o', 'bar' );\n* // returns 'baroop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar prevGraphemeClusterBreak = require( './../../prev-grapheme-cluster-break' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Reverses a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string primitive\n* @returns {string} reversed string\n*\n* @example\n* var out = reverse( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* @example\n* var out = reverse( 'presidential election' );\n* // returns 'noitcele laitnediserp'\n*\n* @example\n* var out = reverse( 'javaScript' );\n* // returns 'tpircSavaj'\n*\n* @example\n* var out = reverse( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH'\n*/\nfunction reverse( str ) {\n\tvar out;\n\tvar brk;\n\tvar idx;\n\tvar i;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( str === '' ) {\n\t\treturn '';\n\t}\n\n\tout = [];\n\tidx = str.length - 1;\n\twhile ( idx >= 0 ) {\n\t\tbrk = prevGraphemeClusterBreak( str, idx );\n\t\tfor ( i = brk + 1; i <= idx; i++ ) {\n\t\t\tout.push( str.charAt( i ) );\n\t\t}\n\t\tidx = brk;\n\t}\n\treturn out.join( '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = reverse;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Reverse a string.\n*\n* @module @stdlib/string/reverse\n*\n* @example\n* var reverseString = require( '@stdlib/string/reverse' );\n*\n* var out = reverseString( 'last man standing' );\n* // returns 'gnidnats nam tsal'\n*\n* out = reverseString( 'Hidden Treasures' );\n* // returns 'serusaerT neddiH';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/right-trim' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace from the end of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} trimmed string\n*\n* @example\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* @example\n* var out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* @example\n* var out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\nfunction rtrim( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the end of a string.\n*\n* @module @stdlib/string/right-trim\n*\n* @example\n* var rtrim = require( '@stdlib/string/right-trim' );\n*\n* var out = rtrim( ' Whitespace ' );\n* // returns ' Whitespace'\n*\n* out = rtrim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns '\\t\\t\\tTabs'\n*\n* out = rtrim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns '\\n\\n\\nNew Lines'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar splitGraphemeClusters = require( './../../split-grapheme-clusters' );\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar isStringArray = require( '@stdlib/assert/is-string-array' ).primitives;\nvar replace = require( './../../replace' );\nvar rescape = require( '@stdlib/utils/escape-regexp-string' );\nvar format = require( './../../format' );\n\n\n// VARIABLES //\n\nvar WHITESPACE_CHARS = '\\u0020\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff';\n\n\n// MAIN //\n\n/**\n* Trims `n` characters from the end of a string.\n*\n* @param {string} str - input string\n* @param {NonNegativeInteger} n - number of characters to trim\n* @param {(string|StringArray)} [chars] - characters to trim (defaults to whitespace characters)\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string or an array of strings\n* @returns {string} trimmed string\n*\n* @example\n* var str = ' abc ';\n* var out = rtrimN( str, 2 );\n* // returns ' abc '\n*\n* @example\n* var str = ' abc ';\n* var out = rtrimN( str, str.length );\n* // returns ' abc'\n*\n* @example\n* var str = '~~abc!~~';\n* var out = rtrimN( str, str.length, [ '~', '!' ] );\n* // returns '~~abc'\n*\n* @example\n* var str = '\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8';\n* var out = rtrimN( str, str.length, '\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8\uD83E\uDD16' );\n* // returns ''\n*/\nfunction rtrimN( str, n, chars ) {\n\tvar nElems;\n\tvar reStr;\n\tvar isStr;\n\tvar RE;\n\tvar i;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( n ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a nonnegative integer. Value: `%s`.', n ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tisStr = isString( chars );\n\t\tif ( !isStr && !isStringArray( chars ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Must provide a string or an array of strings. Value: `%s`.', chars ) );\n\t\t}\n\t\tif ( isStr ) {\n\t\t\tchars = splitGraphemeClusters( chars );\n\t\t}\n\t\tnElems = chars.length - 1;\n\t\treStr = '';\n\t\tfor ( i = 0; i < nElems; i++ ) {\n\t\t\treStr += rescape( chars[ i ] );\n\t\t\treStr += '|';\n\t\t}\n\t\treStr += rescape( chars[ nElems ] );\n\n\t\t// Case: Trim a specific set of characters from the end of a string..\n\t\tRE = new RegExp( '(?:' + reStr + '){0,'+n+'}$' );\n\t} else {\n\t\t// Case: Trim `n` whitespace characters from the end of a string...\n\t\tRE = new RegExp( '[' + WHITESPACE_CHARS + ']{0,'+n+'}$' );\n\t}\n\treturn replace( str, RE, '' );\n}\n\n\n// EXPORTS //\n\nmodule.exports = rtrimN;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim `n` characters from the end of a string.\n*\n* @module @stdlib/string/right-trim-n\n*\n* @example\n* var rtrimN = require( '@stdlib/string/right-trim-n' );\n*\n* var str = ' foo ';\n* var out = rtrimN( str, str.length );\n* // returns ' foo'\n*\n* str = '\uD83D\uDC36\uD83D\uDC36\uD83D\uDC36 Animals \uD83D\uDC36\uD83D\uDC36\uD83D\uDC36';\n* out = rtrimN( str, 4, [ '\uD83D\uDC36', ' ' ] );\n* // returns '\uD83D\uDC36\uD83D\uDC36\uD83D\uDC36 Animals'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/snakecase' );\n\n\n// MAIN //\n\n/**\n* Converts a string to snake case.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} snake-cased string\n*\n* @example\n* var str = snakecase( 'Hello World!' );\n* // returns 'hello_world'\n*\n* @example\n* var str = snakecase( 'foo bar' );\n* // returns 'foo_bar'\n*\n* @example\n* var str = snakecase( 'I am a tiny little teapot' );\n* // returns 'i_am_a_tiny_little_teapot'\n*\n* @example\n* var str = snakecase( 'BEEP boop' );\n* // returns 'beep_boop'\n*\n* @example\n* var str = snakecase( 'isMobile' );\n* // returns 'is_mobile'\n*/\nfunction snakecase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = snakecase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Convert a string to snake case.\n*\n* @module @stdlib/string/snakecase\n*\n* @example\n* var snakecase = require( '@stdlib/string/snakecase' );\n*\n* var str = snakecase( 'Foo Bar' );\n* // returns 'foo_bar'\n*\n* str = snakecase( 'I am a tiny little house' );\n* // returns 'i_am_a_tiny_little_house'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/startcase' );\n\n\n// MAIN //\n\n/**\n* Capitalizes the first letter of each word in an input string.\n*\n* @param {string} str - string to convert\n* @throws {TypeError} must provide a string\n* @returns {string} start case string\n*\n* @example\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\nfunction startcase( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = startcase;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Capitalize the first letter of each word in an input string.\n*\n* @module @stdlib/string/startcase\n*\n* @example\n* var startcase = require( '@stdlib/string/startcase' );\n*\n* var str = startcase( 'beep boop foo bar' );\n* // returns 'Beep Boop Foo Bar'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/starts-with' );\n\n\n// MAIN //\n\n/**\n* Tests if a string starts with the characters of another string.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} [position=0] - position at which to start searching\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {boolean} boolean indicating if the input string starts with the search string\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember' );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'Remember the story I used to tell you when you were a boy?', 'Remember, remember' );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'To be' );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be' );\n* // returns false\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'to be', 14 );\n* // returns true\n*\n* @example\n* var bool = startsWith( 'To be, or not to be, that is the question.', 'quest', -9 );\n* // returns true\n*/\nfunction startsWith( str, search, position ) {\n\tvar pos;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( position ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', position ) );\n\t\t}\n\t\tpos = position;\n\t} else {\n\t\tpos = 0;\n\t}\n\treturn base( str, search, pos );\n}\n\n\n// EXPORTS //\n\nmodule.exports = startsWith;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Test if a string starts with the characters of another string.\n*\n* @module @stdlib/string/starts-with\n*\n* @example\n* var startsWith = require( '@stdlib/string/starts-with' );\n*\n* var str = 'Fair is foul, and foul is fair, hover through fog and filthy air';\n* var bool = startsWith( str, 'Fair' );\n* // returns true\n*\n* bool = startsWith( str, 'fair' );\n* // returns false\n*\n* bool = startsWith( str, 'foul', 8 );\n* // returns true\n*\n* bool = startsWith( str, 'filthy', -10 );\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string after a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @param {integer} [fromIndex=0] - index at which to start the search\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {string} substring\n*\n* @example\n* var out = substringAfter( 'Hello, world!', ', ' );\n* // returns 'world!'\n*\n* @example\n* var out = substringAfter( 'beep boop', 'beep' );\n* // returns ' boop'\n*\n* @example\n* var out = substringAfter( 'beep boop', 'boop' );\n* // returns ''\n*\n* @example\n* var out = substringAfter( 'beep boop', 'xyz' );\n* // returns ''\n*\n* @example\n* var out = substringAfter( 'beep boop', 'beep', 5 );\n* // returns ''\n*\n* @example\n* var out = substringAfter( 'beep boop beep baz', 'beep', 5 );\n* // returns ' baz'\n*/\nfunction substringAfter( str, search, fromIndex ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be an integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = str.indexOf( search, fromIndex );\n\t} else {\n\t\tidx = str.indexOf( search );\n\t}\n\tif ( idx === -1 ) {\n\t\treturn '';\n\t}\n\treturn str.substring( idx+search.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringAfter;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string after a specified substring.\n*\n* @module @stdlib/string/substring-after\n*\n* @example\n* var substringAfter = require( '@stdlib/string/substring-after' );\n*\n* var str = 'beep boop';\n* var out = substringAfter( str, 'o' );\n* // returns 'op'\n*\n* out = substringAfter( str, ' ' );\n* // returns 'boop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isInteger = require( '@stdlib/assert/is-integer' ).isPrimitive;\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string after the last occurrence of a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search value\n* @param {integer} [fromIndex=str.length] - index of last character to be considered beginning of a match\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @throws {TypeError} third argument must be an integer\n* @returns {string} substring\n*\n* @example\n* var out = substringAfterLast( 'beep boop', 'b' );\n* // returns 'oop'\n*\n* @example\n* var out = substringAfterLast( 'beep boop', 'o' );\n* // returns 'p'\n*\n* @example\n* var out = substringAfterLast( 'Hello World', 'o' );\n* // returns 'rld'\n*\n* @example\n* var out = substringAfterLast( 'Hello World', '!' );\n* // returns ''\n*\n* @example\n* var out = substringAfterLast( 'Hello World', '' );\n* // returns ''\n*\n* @example\n* var out = substringAfterLast( 'beep boop baz', 'p b', 6 );\n* // returns 'oop baz'\n*/\nfunction substringAfterLast( str, search, fromIndex ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isInteger( fromIndex ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a nonnegative integer. Value: `%s`.', fromIndex ) );\n\t\t}\n\t\tidx = str.lastIndexOf( search, fromIndex );\n\t} else {\n\t\tidx = str.lastIndexOf( search );\n\t}\n\tif ( idx === -1 ) {\n\t\treturn '';\n\t}\n\treturn str.substring( idx+search.length );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringAfterLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string after the last occurrence of a specified substring.\n*\n* @module @stdlib/string/substring-after-last\n*\n* @example\n* var substringAfterLast = require( '@stdlib/string/substring-after-last' );\n*\n* var str = 'beep boop';\n* var out = substringAfterLast( str, 'b' ):\n* // returns 'oop'\n*\n* out = substringAfterLast( str, 'o' ):\n* // returns 'p'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string before a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search string\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @returns {string} substring\n*\n* @example\n* var out = substringBefore( 'beep boop', ' ' );\n* // returns 'beep'\n*\n* @example\n* var out = substringBefore( 'beep boop', 'p' );\n* // returns 'bee'\n*\n* @example\n* var out = substringBefore( 'Hello World!', '' );\n* // returns ''\n*\n* @example\n* var out = substringBefore( 'Hello World!', 'XYZ' );\n* // returns 'Hello World!'\n*/\nfunction substringBefore( str, search ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tidx = str.indexOf( search );\n\tif ( idx === -1 ) {\n\t\treturn str;\n\t}\n\treturn str.substring( 0, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringBefore;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string before a specified substring.\n*\n* @module @stdlib/string/substring-before\n*\n* @example\n* var substringBefore = require( '@stdlib/string/substring-before' );\n*\n* var str = 'beep boop';\n* var out = substringBefore( str, ' ' );\n* // returns 'beep'\n*\n* out = substringBefore( str, 'o' );\n* // returns 'beep b'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns the part of a string before the last occurrence of a specified substring.\n*\n* @param {string} str - input string\n* @param {string} search - search value\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a string\n* @returns {string} substring\n*\n* @example\n* var out = substringBeforeLast( 'abcba', 'b' );\n* // returns 'abc'\n*\n* @example\n* var out = substringBeforeLast( 'Hello World, my friend!', ' ' );\n* // returns 'Hello World, my'\n*\n* @example\n* var out = substringBeforeLast( 'abcba', ' ' );\n* // returns 'abcba'\n*\n* @example\n* var out = substringBeforeLast( 'abcba', '' );\n* // returns 'abcba'\n*/\nfunction substringBeforeLast( str, search ) {\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isString( search ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a string. Value: `%s`.', search ) );\n\t}\n\tidx = str.lastIndexOf( search );\n\tif ( idx === -1 ) {\n\t\treturn str;\n\t}\n\treturn str.substring( 0, idx );\n}\n\n\n// EXPORTS //\n\nmodule.exports = substringBeforeLast;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Return the part of a string before the last occurrence of a specified substring.\n*\n* @module @stdlib/string/substring-before-last\n*\n* @example\n* var substringBeforeLast = require( '@stdlib/string/substring-before-last' );\n*\n* var str = 'Beep Boop Beep';\n* var out = substringBeforeLast( str, 'Beep' );\n* // returns 'Beep Boop '\n*\n* out = substringBeforeLast( str, 'Boop' );\n* // returns 'Beep '\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates over each grapheme cluster in a string.\n*\n* @param {string} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = graphemeClusters2iterator( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\nfunction graphemeClusters2iterator( src ) {\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar i;\n\tif ( !isString( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be astring. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\ti = 0;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = nextGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': fcn.call( thisArg, src.substring( i ), i, src ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = fcn.call( thisArg, src.substring( i, j ), i, src );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = nextGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': src.substring( i ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = src.substring( i, j );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn graphemeClusters2iterator( src, fcn, thisArg );\n\t\t}\n\t\treturn graphemeClusters2iterator( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = graphemeClusters2iterator;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator which iterates over grapheme clusters.\n*\n* @module @stdlib/string/to-grapheme-cluster-iterator\n*\n* @example\n* var graphemeClusters2iterator = require( '@stdlib/string/to-grapheme-cluster-iterator' );\n*\n* var iter = graphemeClusters2iterator( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );\nvar isFunction = require( '@stdlib/assert/is-function' );\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar iteratorSymbol = require( '@stdlib/symbol/iterator' );\nvar prevGraphemeClusterBreak = require( './../../prev-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Returns an iterator which iterates from right to left over each grapheme cluster in a string.\n*\n* @param {string} src - input value\n* @param {Function} [mapFcn] - function to invoke for each iterated value\n* @param {*} [thisArg] - execution context\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a function\n* @returns {Iterator} iterator\n*\n* @example\n* var iter = graphemeClusters2iteratorRight( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\nfunction graphemeClusters2iteratorRight( src ) { // eslint-disable-line id-length\n\tvar thisArg;\n\tvar iter;\n\tvar FLG;\n\tvar fcn;\n\tvar i;\n\tif ( !isString( src ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be astring. Value: `%s`.', src ) );\n\t}\n\tif ( arguments.length > 1 ) {\n\t\tfcn = arguments[ 1 ];\n\t\tif ( !isFunction( fcn ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', fcn ) );\n\t\t}\n\t\tthisArg = arguments[ 2 ];\n\t}\n\ti = src.length - 1;\n\n\t// Create an iterator protocol-compliant object:\n\titer = {};\n\tif ( fcn ) {\n\t\tsetReadOnly( iter, 'next', next1 );\n\t} else {\n\t\tsetReadOnly( iter, 'next', next2 );\n\t}\n\tsetReadOnly( iter, 'return', end );\n\n\t// If an environment supports `Symbol.iterator`, make the iterator iterable:\n\tif ( iteratorSymbol ) {\n\t\tsetReadOnly( iter, iteratorSymbol, factory );\n\t}\n\treturn iter;\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next1() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = prevGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': fcn.call( thisArg, src.substring( j+1, i+1 ), j+1, src ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = fcn.call( thisArg, src.substring( j+1, i+1 ), j+1, src );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Returns an iterator protocol-compliant object containing the next iterated value.\n\t*\n\t* @private\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction next2() {\n\t\tvar v;\n\t\tvar j;\n\t\tif ( FLG ) {\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tj = prevGraphemeClusterBreak( src, i );\n\t\tif ( j === -1 ) {\n\t\t\tFLG = true;\n\t\t\tif ( src.length ) {\n\t\t\t\treturn {\n\t\t\t\t\t'value': src.substring( j+1, i+1 ),\n\t\t\t\t\t'done': false\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\tv = src.substring( j+1, i+1 );\n\t\ti = j;\n\t\treturn {\n\t\t\t'value': v,\n\t\t\t'done': false\n\t\t};\n\t}\n\n\t/**\n\t* Finishes an iterator.\n\t*\n\t* @private\n\t* @param {*} [value] - value to return\n\t* @returns {Object} iterator protocol-compliant object\n\t*/\n\tfunction end( value ) {\n\t\tFLG = true;\n\t\tif ( arguments.length ) {\n\t\t\treturn {\n\t\t\t\t'value': value,\n\t\t\t\t'done': true\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\t'done': true\n\t\t};\n\t}\n\n\t/**\n\t* Returns a new iterator.\n\t*\n\t* @private\n\t* @returns {Iterator} iterator\n\t*/\n\tfunction factory() {\n\t\tif ( fcn ) {\n\t\t\treturn graphemeClusters2iteratorRight( src, fcn, thisArg );\n\t\t}\n\t\treturn graphemeClusters2iteratorRight( src );\n\t}\n}\n\n\n// EXPORTS //\n\nmodule.exports = graphemeClusters2iteratorRight;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2022 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Create an iterator which iterates from right to left over grapheme clusters.\n*\n* @module @stdlib/string/to-grapheme-cluster-iterator-right\n*\n* @example\n* var graphemeClusters2iteratorRight = require( '@stdlib/string/to-grapheme-cluster-iterator-right' );\n*\n* var iter = graphemeClusters2iteratorRight( '\uD83C\uDF37\uD83C\uDF55' );\n*\n* var v = iter.next().value;\n* // returns '\uD83C\uDF55'\n*\n* v = iter.next().value;\n* // returns '\uD83C\uDF37'\n*\n* var bool = iter.next().done;\n* // returns true\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/trim' );\n\n\n// MAIN //\n\n/**\n* Trims whitespace characters from the beginning and end of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} trimmed string\n*\n* @example\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* @example\n* var out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* @example\n* var out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\nfunction trim( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Must provide a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = trim;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Trim whitespace characters from the beginning and end of a string.\n*\n* @module @stdlib/string/trim\n*\n* @example\n* var trim = require( '@stdlib/string/trim' );\n*\n* var out = trim( ' Whitespace ' );\n* // returns 'Whitespace'\n*\n* out = trim( '\\t\\t\\tTabs\\t\\t\\t' );\n* // returns 'Tabs'\n*\n* out = trim( '\\n\\n\\nNew Lines\\n\\n\\n' );\n* // returns 'New Lines'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar numGraphemeClusters = require( './../../num-grapheme-clusters' );\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\n\n\n// MAIN //\n\n/**\n* Truncates a string to a specified length.\n*\n* @param {string} str - input string\n* @param {integer} len - output string length (including ending)\n* @param {string} [ending='...'] - custom ending\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @returns {string} truncated string\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 7 );\n* // returns 'beep...'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 5, '>>>' );\n* // returns 'be>>>'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 10 );\n* // returns 'beep boop'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 0 );\n* // returns ''\n*\n* @example\n* var str = 'beep boop';\n* var out = truncate( str, 2 );\n* // returns '..'\n*\n* @example\n* var str = '\uD83D\uDC3A Wolf Brothers \uD83D\uDC3A';\n* var out = truncate( str, 6 );\n* // returns '\uD83D\uDC3A W...'\n*/\nfunction truncate( str, len, ending ) {\n\tvar endingLength;\n\tvar fromIndex;\n\tvar nVisual;\n\tvar idx;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isString( ending ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', ending ) );\n\t\t}\n\t}\n\tending = ending || '...';\n\tendingLength = numGraphemeClusters( ending );\n\tfromIndex = 0;\n\tif ( len > numGraphemeClusters( str ) ) {\n\t\treturn str;\n\t}\n\tif ( len - endingLength < 0 ) {\n\t\treturn ending.slice( 0, len );\n\t}\n\tnVisual = 0;\n\twhile ( nVisual < len - endingLength ) {\n\t\tidx = nextGraphemeClusterBreak( str, fromIndex );\n\t\tfromIndex = idx;\n\t\tnVisual += 1;\n\t}\n\treturn str.substring( 0, idx ) + ending;\n}\n\n\n// EXPORTS //\n\nmodule.exports = truncate;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Truncate a string to a specified length.\n*\n* @module @stdlib/string/truncate\n*\n* @example\n* var truncate = require( '@stdlib/string/truncate' );\n*\n* var out = truncate( 'beep boop', 7 );\n* // returns 'beep...'\n*\n* out = truncate( 'beep boop', 7, '|' );\n* // returns 'beep b|'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;\nvar numGraphemeClusters = require( './../../num-grapheme-clusters' );\nvar nextGraphemeClusterBreak = require( './../../next-grapheme-cluster-break' );\nvar format = require( './../../format' );\nvar round = require( '@stdlib/math/base/special/round' );\nvar floor = require( '@stdlib/math/base/special/floor' );\n\n\n// MAIN //\n\n/**\n* Truncates a string in the middle to a specified length.\n*\n* @param {string} str - input string\n* @param {integer} len - output string length (including sequence)\n* @param {string} [seq='...'] - custom replacement sequence\n* @throws {TypeError} first argument must be a string\n* @throws {TypeError} second argument must be a nonnegative integer\n* @throws {TypeError} third argument must be a string\n* @returns {string} truncated string\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 5 );\n* // returns 'b...p'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 5, '>>>' );\n* // returns 'b>>>p'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 10 );\n* // returns 'beep boop'\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 0 );\n* // returns ''\n*\n* @example\n* var str = 'beep boop';\n* var out = truncateMiddle( str, 2 );\n* // returns '..'\n*\n* @example\n* var str = '\uD83D\uDC3A Wolf Brothers \uD83D\uDC3A';\n* var out = truncateMiddle( str, 7 );\n* // returns '\uD83D\uDC3A ... \uD83D\uDC3A'\n*/\nfunction truncateMiddle( str, len, seq ) {\n\tvar seqLength;\n\tvar fromIndex;\n\tvar strLength;\n\tvar seqStart;\n\tvar nVisual;\n\tvar seqEnd;\n\tvar idx2;\n\tvar idx1;\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\tif ( !isNonNegativeInteger( len ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', len ) );\n\t}\n\tif ( arguments.length > 2 ) {\n\t\tif ( !isString( seq ) ) {\n\t\t\tthrow new TypeError( format( 'invalid argument. Third argument must be a string. Value: `%s`.', seq ) );\n\t\t}\n\t}\n\tseq = seq || '...';\n\tseqLength = numGraphemeClusters( seq );\n\tstrLength = numGraphemeClusters( str );\n\tfromIndex = 0;\n\tif ( len > strLength ) {\n\t\treturn str;\n\t}\n\tif ( len - seqLength < 0 ) {\n\t\treturn seq.slice( 0, len );\n\t}\n\tseqStart = round( ( len - seqLength ) / 2 );\n\tseqEnd = strLength - floor( ( len - seqLength ) / 2 );\n\tnVisual = 0;\n\twhile ( nVisual < seqStart ) {\n\t\tidx1 = nextGraphemeClusterBreak( str, fromIndex );\n\t\tfromIndex = idx1;\n\t\tnVisual += 1;\n\t}\n\tidx2 = idx1;\n\twhile ( idx2 > 0 ) {\n\t\tidx2 = nextGraphemeClusterBreak( str, fromIndex );\n\t\tif ( idx2 >= seqEnd + fromIndex - nVisual ) {\n\t\t\tbreak;\n\t\t}\n\t\tfromIndex = idx2;\n\t\tnVisual += 1;\n\t}\n\treturn str.substring( 0, idx1 ) + seq + str.substring( idx2 );\n}\n\n\n// EXPORTS //\n\nmodule.exports = truncateMiddle;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2021 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Truncate a string in the middle to a specified length.\n*\n* @module @stdlib/string/truncate-middle\n*\n* @example\n* var truncateMiddle = require( '@stdlib/string/truncate-middle' );\n*\n* var out = truncateMiddle( 'beep boop', 7 );\n* // returns 'be...op'\n*\n* out = truncateMiddle( 'beep boop', 7, '|' );\n* // returns 'bee|oop'\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isString = require( '@stdlib/assert/is-string' ).isPrimitive;\nvar format = require( './../../format' );\nvar base = require( './../../base/uncapitalize' );\n\n\n// MAIN //\n\n/**\n* Uncapitalizes the first character of a string.\n*\n* @param {string} str - input string\n* @throws {TypeError} must provide a string\n* @returns {string} input string with first character converted to lowercase\n*\n* @example\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* @example\n* var out = uncapitalize( 'Presidential election' );\n* // returns 'presidential election'\n*\n* @example\n* var out = uncapitalize( 'JavaScript' );\n* // returns 'javaScript'\n*\n* @example\n* var out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures'\n*/\nfunction uncapitalize( str ) {\n\tif ( !isString( str ) ) {\n\t\tthrow new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );\n\t}\n\treturn base( str );\n}\n\n\n// EXPORTS //\n\nmodule.exports = uncapitalize;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/**\n* Uncapitalize the first character of a string.\n*\n* @module @stdlib/string/uncapitalize\n*\n* @example\n* var uncapitalize = require( '@stdlib/string/uncapitalize' );\n*\n* var out = uncapitalize( 'Last man standing' );\n* // returns 'last man standing'\n*\n* out = uncapitalize( 'Hidden Treasures' );\n* // returns 'hidden Treasures';\n*/\n\n// MODULES //\n\nvar main = require( './main.js' );\n\n\n// EXPORTS //\n\nmodule.exports = main;\n", "/**\n* @license Apache-2.0\n*\n* Copyright (c) 2018 The Stdlib Authors.\n*\n* Licensed under the Apache License, Version 2.0 (the \"License\");\n* you may not use this file except in compliance with the License.\n* You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing, software\n* distributed under the License is distributed on an \"AS IS\" BASIS,\n* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n* See the License for the specific language governing permissions and\n* limitations under the License.\n*/\n\n'use strict';\n\n/*\n* When adding modules to the namespace, ensure that they are added in alphabetical order according to module name.\n*/\n\n/*\n* The following modules are intentionally not exported: tools\n*/\n\n// MODULES //\n\nvar setReadOnly = require( '@stdlib/utils/define-read-only-property' );\n\n\n// MAIN //\n\n/**\n* Top-level namespace.\n*\n* @namespace string\n*/\nvar string = {};\n\n/**\n* @name acronym\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/acronym}\n*/\nsetReadOnly( string, 'acronym', require( './../acronym' ) );\n\n/**\n* @name base\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/base}\n*/\nsetReadOnly( string, 'base', require( './../base' ) );\n\n/**\n* @name camelcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/camelcase}\n*/\nsetReadOnly( string, 'camelcase', require( './../camelcase' ) );\n\n/**\n* @name capitalize\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/capitalize}\n*/\nsetReadOnly( string, 'capitalize', require( './../capitalize' ) );\n\n/**\n* @name codePointAt\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/code-point-at}\n*/\nsetReadOnly( string, 'codePointAt', require( './../code-point-at' ) );\n\n/**\n* @name constantcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/constantcase}\n*/\nsetReadOnly( string, 'constantcase', require( './../constantcase' ) );\n\n/**\n* @name dotcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/dotcase}\n*/\nsetReadOnly( string, 'dotcase', require( './../dotcase' ) );\n\n/**\n* @name endsWith\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/ends-with}\n*/\nsetReadOnly( string, 'endsWith', require( './../ends-with' ) );\n\n/**\n* @name first\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/first}\n*/\nsetReadOnly( string, 'first', require( './../first' ) );\n\n/**\n* @name forEach\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/for-each}\n*/\nsetReadOnly( string, 'forEach', require( './../for-each' ) );\n\n/**\n* @name format\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/format}\n*/\nsetReadOnly( string, 'format', require( './../format' ) );\n\n/**\n* @name fromCodePoint\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/from-code-point}\n*/\nsetReadOnly( string, 'fromCodePoint', require( './../from-code-point' ) );\n\n/**\n* @name headercase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/headercase}\n*/\nsetReadOnly( string, 'headercase', require( './../headercase' ) );\n\n/**\n* @name kebabcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/kebabcase}\n*/\nsetReadOnly( string, 'kebabcase', require( './../kebabcase' ) );\n\n/**\n* @name lpad\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/left-pad}\n*/\nsetReadOnly( string, 'lpad', require( './../left-pad' ) );\n\n/**\n* @name ltrim\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/left-trim}\n*/\nsetReadOnly( string, 'ltrim', require( './../left-trim' ) );\n\n/**\n* @name ltrimN\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/left-trim-n}\n*/\nsetReadOnly( string, 'ltrimN', require( './../left-trim-n' ) );\n\n/**\n* @name lowercase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/lowercase}\n*/\nsetReadOnly( string, 'lowercase', require( './../lowercase' ) );\n\n/**\n* @name nextGraphemeClusterBreak\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/next-grapheme-cluster-break}\n*/\nsetReadOnly( string, 'nextGraphemeClusterBreak', require( './../next-grapheme-cluster-break' ) );\n\n/**\n* @name numGraphemeClusters\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/num-grapheme-clusters}\n*/\nsetReadOnly( string, 'numGraphemeClusters', require( './../num-grapheme-clusters' ) );\n\n/**\n* @name num2words\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/num2words}\n*/\nsetReadOnly( string, 'num2words', require( './../num2words' ) );\n\n/**\n* @name pad\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/pad}\n*/\nsetReadOnly( string, 'pad', require( './../pad' ) );\n\n/**\n* @name pascalcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/pascalcase}\n*/\nsetReadOnly( string, 'pascalcase', require( './../pascalcase' ) );\n\n/**\n* @name percentEncode\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/percent-encode}\n*/\nsetReadOnly( string, 'percentEncode', require( './../percent-encode' ) );\n\n/**\n* @name prevGraphemeClusterBreak\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/prev-grapheme-cluster-break}\n*/\nsetReadOnly( string, 'prevGraphemeClusterBreak', require( './../prev-grapheme-cluster-break' ) );\n\n/**\n* @name removeFirst\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-first}\n*/\nsetReadOnly( string, 'removeFirst', require( './../remove-first' ) );\n\n/**\n* @name removeLast\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-last}\n*/\nsetReadOnly( string, 'removeLast', require( './../remove-last' ) );\n\n/**\n* @name removePunctuation\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-punctuation}\n*/\nsetReadOnly( string, 'removePunctuation', require( './../remove-punctuation' ) );\n\n/**\n* @name removeUTF8BOM\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-utf8-bom}\n*/\nsetReadOnly( string, 'removeUTF8BOM', require( './../remove-utf8-bom' ) );\n\n/**\n* @name removeWords\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/remove-words}\n*/\nsetReadOnly( string, 'removeWords', require( './../remove-words' ) );\n\n/**\n* @name repeat\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/repeat}\n*/\nsetReadOnly( string, 'repeat', require( './../repeat' ) );\n\n/**\n* @name replace\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/replace}\n*/\nsetReadOnly( string, 'replace', require( './../replace' ) );\n\n/**\n* @name replaceBefore\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/replace-before}\n*/\nsetReadOnly( string, 'replaceBefore', require( './../replace-before' ) );\n\n/**\n* @name reverseString\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/reverse}\n*/\nsetReadOnly( string, 'reverseString', require( './../reverse' ) );\n\n/**\n* @name rpad\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/right-pad}\n*/\nsetReadOnly( string, 'rpad', require( './../right-pad' ) );\n\n/**\n* @name rtrim\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/right-trim}\n*/\nsetReadOnly( string, 'rtrim', require( './../right-trim' ) );\n\n/**\n* @name rtrimN\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/right-trim-n}\n*/\nsetReadOnly( string, 'rtrimN', require( './../right-trim-n' ) );\n\n/**\n* @name snakecase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/snakecase}\n*/\nsetReadOnly( string, 'snakecase', require( './../snakecase' ) );\n\n/**\n* @name splitGraphemeClusters\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/split-grapheme-clusters}\n*/\nsetReadOnly( string, 'splitGraphemeClusters', require( './../split-grapheme-clusters' ) );\n\n/**\n* @name startcase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/startcase}\n*/\nsetReadOnly( string, 'startcase', require( './../startcase' ) );\n\n/**\n* @name startsWith\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/starts-with}\n*/\nsetReadOnly( string, 'startsWith', require( './../starts-with' ) );\n\n/**\n* @name substringAfter\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-after}\n*/\nsetReadOnly( string, 'substringAfter', require( './../substring-after' ) );\n\n/**\n* @name substringAfterLast\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-after-last}\n*/\nsetReadOnly( string, 'substringAfterLast', require( './../substring-after-last' ) );\n\n/**\n* @name substringBefore\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-before}\n*/\nsetReadOnly( string, 'substringBefore', require( './../substring-before' ) );\n\n/**\n* @name substringBeforeLast\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/substring-before-last}\n*/\nsetReadOnly( string, 'substringBeforeLast', require( './../substring-before-last' ) );\n\n/**\n* @name graphemeClusters2iterator\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/to-grapheme-cluster-iterator}\n*/\nsetReadOnly( string, 'graphemeClusters2iterator', require( './../to-grapheme-cluster-iterator' ) );\n\n/**\n* @name graphemeClusters2iteratorRight\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/to-grapheme-cluster-iterator-right}\n*/\nsetReadOnly( string, 'graphemeClusters2iteratorRight', require( './../to-grapheme-cluster-iterator-right' ) );\n\n/**\n* @name trim\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/trim}\n*/\nsetReadOnly( string, 'trim', require( './../trim' ) );\n\n/**\n* @name truncate\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/truncate}\n*/\nsetReadOnly( string, 'truncate', require( './../truncate' ) );\n\n/**\n* @name truncateMiddle\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/truncate-middle}\n*/\nsetReadOnly( string, 'truncateMiddle', require( './../truncate-middle' ) );\n\n/**\n* @name uncapitalize\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/uncapitalize}\n*/\nsetReadOnly( string, 'uncapitalize', require( './../uncapitalize' ) );\n\n/**\n* @name uppercase\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/uppercase}\n*/\nsetReadOnly( string, 'uppercase', require( './../uppercase' ) );\n\n/**\n* @name utf16ToUTF8Array\n* @memberof string\n* @readonly\n* @type {Function}\n* @see {@link module:@stdlib/string/utf16-to-utf8-array}\n*/\nsetReadOnly( string, 'utf16ToUTF8Array', require( './../utf16-to-utf8-array' ) );\n\n\n// EXPORTS //\n\nmodule.exports = string;\n"],
+ "mappings": "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5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,KAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC5BA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,OAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACTA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC7BA,IAAS,QACP,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,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,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC5BA,IAAS,MACTA,IAAS,MACP,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ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AS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,MACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,MACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,OACTA,IAAS,MAEFF,EAAU,GAGf,OAAUE,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,G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",
+ "names": ["require_is_number", "__commonJSMin", "exports", "module", "isNumber", "value", "require_zero_pad", "__commonJSMin", "exports", "module", "startsWithMinus", "str", "zeros", "n", "out", "i", "zeroPad", "width", "right", "negative", "pad", "require_format_integer", "__commonJSMin", "exports", "module", "isNumber", "zeroPad", "lowercase", "uppercase", "formatInteger", "token", "base", "out", "i", "require_is_string", "__commonJSMin", "exports", "module", "isString", "value", "require_format_double", "__commonJSMin", "exports", "module", "isNumber", "abs", "lowercase", "uppercase", "replace", "RE_EXP_POS_DIGITS", "RE_EXP_NEG_DIGITS", "RE_ONLY_DIGITS", "RE_DIGITS_BEFORE_EXP", "RE_TRAILING_PERIOD_ZERO", "RE_PERIOD_ZERO_EXP", "RE_ZERO_BEFORE_EXP", "formatDouble", "token", "digits", "out", "f", "require_space_pad", "__commonJSMin", "exports", "module", "spaces", "n", "out", "i", "spacePad", "str", "width", "right", "pad", "require_main", "__commonJSMin", "exports", "module", "formatInteger", "isString", "formatDouble", "spacePad", "zeroPad", "fromCharCode", "isnan", "isArray", "initialize", "token", "out", "formatInterpolate", "tokens", "hasPeriod", "flags", "flag", "num", "pos", "i", "j", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE", "parse", "match", "token", "formatTokenize", "str", "content", "tokens", "prev", "require_lib", "__commonJSMin", "exports", "module", "main", "require_is_string", "__commonJSMin", "exports", "module", "isString", "value", "require_main", "__commonJSMin", "exports", "module", "interpolate", "tokenize", "isString", "format", "str", "tokens", "args", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "replace", "str", "search", "newval", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "rescape", "isFunction", "isString", "isRegExp", "format", "base", "replace", "str", "search", "newval", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "replace", "format", "RE", "removePunctuation", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "uppercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "lowercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_validate", "__commonJSMin", "exports", "module", "isPlainObject", "hasOwnProp", "isStringArray", "isEmptyArray", "format", "validate", "opts", "options", "require_stopwords", "__commonJSMin", "exports", "module", "require_main", "__commonJSMin", "exports", "module", "removePunctuation", "tokenize", "replace", "uppercase", "lowercase", "isString", "contains", "format", "validate", "STOPWORDS", "RE_HYPHEN", "acronym", "str", "options", "isStopWord", "words", "opts", "err", "out", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "capitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_builtin", "__commonJSMin", "exports", "module", "trim", "require_check", "__commonJSMin", "exports", "module", "trim", "str1", "str2", "test", "require_polyfill", "__commonJSMin", "exports", "module", "replace", "RE", "trim", "str", "require_main", "__commonJSMin", "exports", "module", "builtin", "trim", "str", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "check", "polyfill", "main", "trim", "require_main", "__commonJSMin", "exports", "module", "capitalize", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_TO_CAMEL", "RE_CAMEL", "replacer", "match", "p1", "offset", "camelcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "Ox10000", "Ox400", "OxD800", "OxDBFF", "OxDC00", "OxDFFF", "codePointAt", "str", "idx", "backward", "code", "low", "hi", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "uppercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "constantcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "min", "levenshteinDistance", "s1", "s2", "temp", "row", "pre", "m", "n", "i", "j", "k", "require_lib", "__commonJSMin", "exports", "module", "main", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "ns", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "dotcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "endsWith", "str", "search", "len", "idx", "N", "i", "require_builtin", "__commonJSMin", "exports", "module", "endsWith", "require_main", "__commonJSMin", "exports", "module", "builtin", "endsWith", "str", "search", "len", "idx", "N", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "endsWith", "require_main", "__commonJSMin", "exports", "module", "first", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_SURROGATE_PAIR", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "first", "str", "n", "len", "out", "ch1", "ch2", "cnt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isBoolean", "isString", "isInteger", "format", "base", "codePointAt", "str", "idx", "backward", "FLG", "require_lib", "__commonJSMin", "exports", "module", "main", "require_constants", "__commonJSMin", "exports", "module", "consts", "require_break_type", "__commonJSMin", "exports", "module", "constants", "count", "arr", "start", "end", "value", "cnt", "i", "every", "indexOf", "lastIndexOf", "breakType", "breaks", "emoji", "nextEmoji", "next", "prev", "idx", "N", "M", "require_emoji_property", "__commonJSMin", "exports", "module", "constants", "emojiProperty", "code", "require_break_property", "__commonJSMin", "exports", "module", "constants", "graphemeBreakProperty", "code", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "constants", "breakType", "emojiProperty", "breakProperty", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isInteger", "codePointAt", "hasUTF16SurrogatePairAt", "grapheme", "format", "breakType", "breakProperty", "emojiProperty", "nextGraphemeClusterBreak", "str", "fromIndex", "breaks", "emoji", "len", "idx", "cp", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "first", "str", "n", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "forEach", "str", "clbk", "thisArg", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "forEach", "str", "clbk", "thisArg", "len", "ch1", "ch2", "idx", "ch", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "forEach", "str", "clbk", "thisArg", "len", "idx", "brk", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "reWhitespace", "startcase", "str", "cap", "out", "ch", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "startcase", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "headercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "uppercase", "lowercase", "invcase", "str", "out", "ch", "s", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "kebabCase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "repeat", "str", "n", "rpt", "cnt", "require_builtin", "__commonJSMin", "exports", "module", "repeat", "require_main", "__commonJSMin", "exports", "module", "builtin", "repeat", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "repeat", "require_main", "__commonJSMin", "exports", "module", "repeat", "ceil", "lpad", "str", "len", "pad", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "replace", "RE", "ltrim", "str", "require_builtin", "__commonJSMin", "exports", "module", "ltrim", "require_main", "__commonJSMin", "exports", "module", "builtin", "ltrim", "str", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "ltrim", "require_main", "__commonJSMin", "exports", "module", "capitalize", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_TO_PASCAL", "RE_CAMEL", "replacer", "match", "p1", "pascalcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "Ox3F", "Ox80", "OxC0", "OxE0", "OxF0", "Ox3FF", "Ox800", "OxD800", "OxE000", "Ox10000", "utf16ToUTF8Array", "str", "code", "out", "len", "i", "require_lib", "__commonJSMin", "exports", "module", "utf16ToUTF8Array", "require_main", "__commonJSMin", "exports", "module", "utf16ToUTF8Array", "UNDERSCORE", "PERIOD", "HYPHEN", "TILDE", "ZERO", "NINE", "A", "Z", "a", "z", "percentEncode", "str", "byte", "out", "len", "buf", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "removeFirst", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "removeFirst", "str", "n", "len", "ch1", "ch2", "cnt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "removeFirst", "str", "n", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "replaceBefore", "str", "search", "replacement", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "repeat", "ceil", "rpad", "str", "len", "pad", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "replace", "RE", "rtrim", "str", "require_builtin", "__commonJSMin", "exports", "module", "rtrim", "require_main", "__commonJSMin", "exports", "module", "builtin", "rtrim", "str", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "rtrim", "require_main", "__commonJSMin", "exports", "module", "lowercase", "replace", "trim", "RE_WHITESPACE", "RE_SPECIAL", "RE_CAMEL", "snakecase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_has_builtin", "__commonJSMin", "exports", "module", "bool", "require_polyfill", "__commonJSMin", "exports", "module", "startsWith", "str", "search", "position", "pos", "i", "require_builtin", "__commonJSMin", "exports", "module", "startsWith", "require_main", "__commonJSMin", "exports", "module", "builtin", "startsWith", "str", "search", "position", "pos", "require_lib", "__commonJSMin", "exports", "module", "HAS_BUILTIN", "polyfill", "main", "startsWith", "require_main", "__commonJSMin", "exports", "module", "uncapitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_lib", "__commonJSMin", "exports", "module", "setReadOnly", "ns", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "camelcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "capitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "constantcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "dotcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isInteger", "isString", "format", "base", "endsWith", "str", "search", "len", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "isPlainObject", "hasOwnProp", "contains", "firstCodeUnit", "firstCodePoint", "firstGraphemeCluster", "format", "MODES", "FCNS", "isMode", "first", "str", "options", "nargs", "opts", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isFunction", "isString", "isPlainObject", "hasOwnProp", "contains", "forEachCodeUnit", "forEachCodePoint", "forEachGraphemeCluster", "format", "MODES", "FCNS", "isMode", "forEach", "str", "options", "clbk", "thisArg", "nargs", "opts", "cb", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isCollection", "format", "UNICODE_MAX", "UNICODE_MAX_BMP", "fromCharCode", "Ox10000", "OxD800", "OxDC00", "Ox3FF", "fromCodePoint", "args", "len", "str", "arr", "low", "hi", "pt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "headercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "kebabCase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "format", "FLOAT64_MAX_SAFE_INTEGER", "base", "lpad", "str", "len", "pad", "p", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "ltrim", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "nextGraphemeClusterBreak", "format", "splitGraphemeClusters", "str", "idx", "brk", "out", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "splitGraphemeClusters", "isNonNegativeInteger", "isStringArray", "replace", "rescape", "format", "WHITESPACE_CHARS", "ltrimN", "str", "n", "chars", "nElems", "reStr", "isStr", "RE", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "lowercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "nextGraphemeClusterBreak", "format", "numGraphemeClusters", "str", "count", "idx", "brk", "require_lib", "__commonJSMin", "exports", "module", "main", "require_units", "__commonJSMin", "exports", "module", "require_int2words_de", "__commonJSMin", "exports", "module", "floor", "endsWith", "UNITS", "ONES", "TENS", "pluralize", "word", "int2wordsDE", "num", "out", "rem", "i", "require_int2words_en", "__commonJSMin", "exports", "module", "floor", "UNITS", "ONES", "TENS", "int2wordsEN", "num", "out", "word", "rem", "i", "require_validate", "__commonJSMin", "exports", "module", "isPlainObject", "hasOwnProp", "indexOf", "format", "LANGUAGE_CODES", "validate", "opts", "options", "require_decimals", "__commonJSMin", "exports", "module", "decimals", "x", "fcn", "out", "len", "i", "require_main", "__commonJSMin", "exports", "module", "isNumber", "isInteger", "isfinite", "format", "int2wordsDE", "int2wordsEN", "validate", "decimals", "num2words", "num", "options", "parts", "opts", "err", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "format", "base", "repeat", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "format", "FLOAT64_MAX_SAFE_INTEGER", "base", "rpad", "str", "len", "pad", "p", "require_lib", "__commonJSMin", "exports", "module", "main", "require_validate", "__commonJSMin", "exports", "module", "isPlainObject", "hasOwnProp", "isString", "isBoolean", "format", "validate", "opts", "options", "require_main", "__commonJSMin", "exports", "module", "isNonNegativeInteger", "isString", "repeat", "format", "floor", "ceil", "lpad", "rpad", "abs", "FLOAT64_MAX_SAFE_INTEGER", "validate", "pad", "str", "len", "options", "nright", "nleft", "isodd", "right", "left", "opts", "err", "tmp", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "pascalcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "percentEncode", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isInteger", "codePointAt", "hasUTF16SurrogatePairAt", "grapheme", "format", "breakType", "breakProperty", "emojiProperty", "prevGraphemeClusterBreak", "str", "fromIndex", "breaks", "emoji", "ans", "len", "idx", "cp", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isPlainObject", "hasOwnProp", "contains", "isNonNegativeInteger", "removeFirstCodeUnit", "removeFirstCodePoint", "removeFirstGraphemeCluster", "format", "MODES", "FCNS", "isMode", "removeFirst", "str", "options", "nargs", "opts", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "removeLast", "str", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "RE_UTF16_LOW_SURROGATE", "RE_UTF16_HIGH_SURROGATE", "removeLast", "str", "n", "len", "ch1", "ch2", "cnt", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "nextGraphemeClusterBreak", "numGraphemeClusters", "removeLast", "str", "n", "total", "num", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isPlainObject", "hasOwnProp", "contains", "isNonNegativeInteger", "removeLastCodeUnit", "removeLastCodePoint", "removeLastGraphemeCluster", "format", "MODES", "FCNS", "isMode", "removeLast", "str", "options", "nargs", "opts", "n", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "BOM", "removeUTF8BOM", "str", "require_lib", "__commonJSMin", "exports", "module", "removeUTF8BOM", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "uppercase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isStringArray", "uppercase", "isBoolean", "isString", "tokenize", "format", "removeWords", "str", "words", "ignoreCase", "tokens", "token", "list", "flg", "out", "N", "i", "j", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "replaceBefore", "str", "search", "replacement", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "prevGraphemeClusterBreak", "isString", "format", "reverse", "str", "out", "brk", "idx", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "rtrim", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "splitGraphemeClusters", "isNonNegativeInteger", "isStringArray", "replace", "rescape", "format", "WHITESPACE_CHARS", "rtrimN", "str", "n", "chars", "nElems", "reStr", "isStr", "RE", "i", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "snakecase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "startcase", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isInteger", "isString", "format", "base", "startsWith", "str", "search", "position", "pos", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isInteger", "format", "substringAfter", "str", "search", "fromIndex", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isInteger", "isString", "format", "substringAfterLast", "str", "search", "fromIndex", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "substringBefore", "str", "search", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "substringBeforeLast", "str", "search", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isString", "iteratorSymbol", "nextGraphemeClusterBreak", "format", "graphemeClusters2iterator", "src", "thisArg", "iter", "FLG", "fcn", "i", "next1", "next2", "end", "factory", "v", "j", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "setReadOnly", "isFunction", "isString", "iteratorSymbol", "prevGraphemeClusterBreak", "format", "graphemeClusters2iteratorRight", "src", "thisArg", "iter", "FLG", "fcn", "i", "next1", "next2", "end", "factory", "v", "j", "value", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "trim", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "numGraphemeClusters", "nextGraphemeClusterBreak", "format", "truncate", "str", "len", "ending", "endingLength", "fromIndex", "nVisual", "idx", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "isNonNegativeInteger", "numGraphemeClusters", "nextGraphemeClusterBreak", "format", "round", "floor", "truncateMiddle", "str", "len", "seq", "seqLength", "fromIndex", "strLength", "seqStart", "nVisual", "seqEnd", "idx2", "idx1", "require_lib", "__commonJSMin", "exports", "module", "main", "require_main", "__commonJSMin", "exports", "module", "isString", "format", "base", "uncapitalize", "str", "require_lib", "__commonJSMin", "exports", "module", "main", "setReadOnly", "string"]
}
diff --git a/remove-first/test/test.js b/remove-first/test/test.js
index 1bc69e1f..ebed95cf 100644
--- a/remove-first/test/test.js
+++ b/remove-first/test/test.js
@@ -359,7 +359,7 @@ tape( 'the function supports removing the first `n` characters of a provided str
t.strictEqual( out, '书/六書', 'returns expected value' );
out = removeFirst( '🌷', 1, opts );
- t.strictEqual( out, '\udf37', 'returns expected value' );
+ t.strictEqual( out, '', 'returns expected value' );
t.end();
});
diff --git a/remove-last/README.md b/remove-last/README.md
index 4947541c..96bb0565 100644
--- a/remove-last/README.md
+++ b/remove-last/README.md
@@ -30,9 +30,9 @@ limitations under the License.
var removeLast = require( '@stdlib/string/remove-last' );
```
-#### removeLast( str\[, n] )
+#### removeLast( str\[, n]\[, options] )
-Removes the last character of a `string`.
+Removes the last character(s) of an input string.
```javascript
var out = removeLast( 'last man standing' );
@@ -42,7 +42,17 @@ out = removeLast( 'Hidden Treasures' );
// returns 'Hidden Treasure'
```
-If provided a second argument, the function removes the last `n` characters.
+The function supports the following options:
+
+- **mode**: type of characters to remove. Must be one of the following:
+
+ - `'grapheme'`: grapheme clusters. Appropriate for strings containing visual characters which can span multiple Unicode code points (e.g., emoji).
+ - `'code_point'`: Unicode code points. Appropriate for strings containing visual characters which are comprised of more than one Unicode code unit (e.g., ideographic symbols and punctuation and mathematical alphanumerics).
+ - `'code_unit'`: UTF-16 code units. Appropriate for strings containing visual characters drawn from the basic multilingual plane (BMP) (e.g., common characters, such as those from the Latin, Greek, and Cyrillic alphabets).
+
+ Default: `'grapheme'`.
+
+By default, the function returns the last character. To return the last `n` characters, provide a second argument specifying the number of characters to return.
```javascript
var out = removeLast( 'foo bar', 4 );
@@ -56,6 +66,18 @@ out = removeLast( 'foo bar', 0 );
+
+
+
+
+## Notes
+
+- By default, the function assumes the general case in which an input string may contain an arbitrary number of grapheme clusters. This assumption comes with a performance cost. Accordingly, if an input string is known to only contain visual characters of a particular type (e.g., only alphanumeric), one can achieve better performance by specifying the appropriate `mode` option.
+
+
+
+
+
## Examples
@@ -107,6 +129,7 @@ Options:
-V, --version Print the package version.
--n Number of characters to remove. Default: 1.
--split sep Delimiter for stdin data. Default: '/\\r?\\n/'.
+ --mode mode Type of character to remove. Default: 'grapheme'.
```
diff --git a/remove-last/benchmark/benchmark.js b/remove-last/benchmark/benchmark.js
index 597b667f..c032a309 100644
--- a/remove-last/benchmark/benchmark.js
+++ b/remove-last/benchmark/benchmark.js
@@ -49,3 +49,93 @@ bench( pkg, function benchmark( b ) {
b.pass( 'benchmark finished' );
b.end();
});
+
+bench( pkg+':mode=grapheme', function benchmark( b ) {
+ var values;
+ var opts;
+ var out;
+ var i;
+
+ values = [
+ 'beep boop',
+ 'foo bar',
+ 'xyz abc'
+ ];
+ opts = {
+ 'mode': 'grapheme'
+ };
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ out = removeLast( values[ i%values.length ], opts );
+ if ( typeof out !== 'string' ) {
+ b.fail( 'should return a string' );
+ }
+ }
+ b.toc();
+ if ( !isString( out ) ) {
+ b.fail( 'should return a string' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+});
+
+bench( pkg+':mode=code_point', function benchmark( b ) {
+ var values;
+ var opts;
+ var out;
+ var i;
+
+ values = [
+ 'beep boop',
+ 'foo bar',
+ 'xyz abc'
+ ];
+ opts = {
+ 'mode': 'code_point'
+ };
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ out = removeLast( values[ i%values.length ], opts );
+ if ( typeof out !== 'string' ) {
+ b.fail( 'should return a string' );
+ }
+ }
+ b.toc();
+ if ( !isString( out ) ) {
+ b.fail( 'should return a string' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+});
+
+bench( pkg+':mode=code_unit', function benchmark( b ) {
+ var values;
+ var opts;
+ var out;
+ var i;
+
+ values = [
+ 'beep boop',
+ 'foo bar',
+ 'xyz abc'
+ ];
+ opts = {
+ 'mode': 'code_unit'
+ };
+
+ b.tic();
+ for ( i = 0; i < b.iterations; i++ ) {
+ out = removeLast( values[ i%values.length ], opts );
+ if ( typeof out !== 'string' ) {
+ b.fail( 'should return a string' );
+ }
+ }
+ b.toc();
+ if ( !isString( out ) ) {
+ b.fail( 'should return a string' );
+ }
+ b.pass( 'benchmark finished' );
+ b.end();
+});
diff --git a/remove-last/bin/cli b/remove-last/bin/cli
index d4cd6705..d76e824f 100755
--- a/remove-last/bin/cli
+++ b/remove-last/bin/cli
@@ -45,6 +45,7 @@ function main() {
var split;
var flags;
var args;
+ var opts;
var cli;
var n;
@@ -64,6 +65,12 @@ function main() {
}
if ( flags.n ) {
n = parseInt( flags.n, 10 );
+ } else {
+ n = 1;
+ }
+ opts = {};
+ if ( flags.mode ) {
+ opts.mode = flags.mode;
}
// Get any provided command-line arguments:
@@ -81,10 +88,10 @@ function main() {
}
return stdin( onRead );
}
- if ( n ) {
- console.log( removeLast( args[ 0 ], n ) ); // eslint-disable-line no-console
- } else {
- console.log( removeLast( args[ 0 ] ) ); // eslint-disable-line no-console
+ try {
+ console.log( removeLast( args[ 0 ], n, opts ) ); // eslint-disable-line no-console
+ } catch ( error ) {
+ return cli.error( error );
}
/**
@@ -107,13 +114,14 @@ function main() {
if ( lines[ lines.length-1 ] === '' ) {
lines.pop();
}
- if ( n ) {
- for ( i = 0; i < lines.length; i++ ) {
- console.log( removeLast( lines[ i ], n ) ); // eslint-disable-line no-console
+ if ( lines.length ) {
+ try {
+ console.log( removeLast( lines[ 0 ], n, opts ) ); // eslint-disable-line no-console
+ } catch ( error ) {
+ return cli.error( error );
}
- } else {
- for ( i = 0; i < lines.length; i++ ) {
- console.log( removeLast( lines[ i ] ) ); // eslint-disable-line no-console
+ for ( i = 1; i < lines.length; i++ ) {
+ console.log( removeLast( lines[ i ], n, opts ) ); // eslint-disable-line no-console
}
}
}
diff --git a/remove-last/docs/repl.txt b/remove-last/docs/repl.txt
index f25ece81..2b500266 100644
--- a/remove-last/docs/repl.txt
+++ b/remove-last/docs/repl.txt
@@ -1,5 +1,5 @@
-{{alias}}( str[, n] )
+{{alias}}( str[, n][, options] )
Removes the last character(s) of a `string`.
Parameters
@@ -10,6 +10,25 @@
n: integer (optional)
Number of characters to remove. Default: 1.
+ options: Object (optional)
+ Options.
+
+ options.mode: string (optional)
+ Type of characters to remove. The following modes are supported:
+
+ - grapheme: grapheme clusters. Appropriate for strings containing visual
+ characters which can span multiple Unicode code points (e.g., emoji).
+ - code_point: Unicode code points. Appropriate for strings containing
+ visual characters which are comprised of more than one Unicode code
+ unit (e.g., ideographic symbols and punctuation and mathematical
+ alphanumerics).
+ - code_unit': UTF-16 code units. Appropriate for strings containing
+ visual characters drawn from the basic multilingual plane (BMP) (e.g.,
+ common characters, such as those from the Latin, Greek, and Cyrillic
+ alphabets).
+
+ Default: 'grapheme'.
+
Returns
-------
out: string
diff --git a/remove-last/docs/types/index.d.ts b/remove-last/docs/types/index.d.ts
index b3f326f0..563d5178 100644
--- a/remove-last/docs/types/index.d.ts
+++ b/remove-last/docs/types/index.d.ts
@@ -18,6 +18,69 @@
// TypeScript Version: 4.1
+// tslint:disable:unified-signatures
+
+/**
+* Interface describing function options.
+*/
+interface Options {
+ /**
+ * Specifies the type of characters to remove (default: 'grapheme').
+ *
+ * ## Notes
+ *
+ * - The following option values are supported:
+ *
+ * - `'grapheme'`: grapheme clusters. Appropriate for strings containing visual characters which can span multiple Unicode code points (e.g., emoji).
+ * - `'code_point'`: Unicode code points. Appropriate for strings containing visual characters which are comprised of more than one Unicode code unit (e.g., ideographic symbols and punctuation and mathematical alphanumerics).
+ * - `'code_unit'`: UTF-16 code units. Appropriate for strings containing visual characters drawn from the basic multilingual plane (BMP) (e.g., common characters, such as those from the Latin, Greek, and Cyrillic alphabets).
+ */
+ mode?: 'grapheme' | 'code_point' | 'code_unit';
+}
+
+/**
+* Removes the last character(s) of a string.
+*
+* @param str - input string
+* @param n - number of characters to remove (default: 1)
+* @param options - options
+* @returns updated string
+*
+* @example
+* var out = removeLast( 'last man standing', 1, {
+* 'mode': 'code_unit'
+* });
+* // returns 'last man standin'
+*
+* @example
+* var out = removeLast( '🐶🐮🐷🐰🐸', 2, {
+* 'mode': 'grapheme'
+* });
+* // returns '🐶🐮🐷'
+*/
+declare function removeLast( str: string, n: number, options?: Options ): string;
+
+/**
+* Removes the last character of a string.
+*
+* @param str - input string
+* @param options - options
+* @returns updated string
+*
+* @example
+* var out = removeLast( 'last man standing', {
+* 'mode': 'code_unit'
+* });
+* // returns 'last man standin'
+*
+* @example
+* var out = removeFirst( '🐶🐮🐷🐰🐸', {
+* 'mode': 'grapheme'
+* });
+* // returns '🐶🐮🐷🐰'
+*/
+declare function removeLast( str: string, options?: Options ): string;
+
/**
* Removes the last character(s) of a string.
*
diff --git a/remove-last/docs/types/test.ts b/remove-last/docs/types/test.ts
index fe0720be..486e4f76 100644
--- a/remove-last/docs/types/test.ts
+++ b/remove-last/docs/types/test.ts
@@ -24,6 +24,9 @@ import removeLast = require( './index' );
// The function returns a string...
{
removeLast( 'abc' ); // $ExpectType string
+ removeLast( 'abc', 1 ); // $ExpectType string
+ removeLast( 'abc', {} ); // $ExpectType string
+ removeLast( 'abc', 1, {} ); // $ExpectType string
}
// The compiler throws an error if the function is provided a value other than a string...
@@ -36,17 +39,69 @@ import removeLast = require( './index' );
removeLast( [] ); // $ExpectError
removeLast( {} ); // $ExpectError
removeLast( ( x: number ): number => x ); // $ExpectError
+
+ removeLast( true, 1 ); // $ExpectError
+ removeLast( false, 1 ); // $ExpectError
+ removeLast( null, 1 ); // $ExpectError
+ removeLast( undefined, 1 ); // $ExpectError
+ removeLast( 5, 1 ); // $ExpectError
+ removeLast( [], 1 ); // $ExpectError
+ removeLast( {}, 1 ); // $ExpectError
+ removeLast( ( x: number ): number => x, 1 ); // $ExpectError
+
+ removeLast( true, {} ); // $ExpectError
+ removeLast( false, {} ); // $ExpectError
+ removeLast( null, {} ); // $ExpectError
+ removeLast( undefined, {} ); // $ExpectError
+ removeLast( 5, {} ); // $ExpectError
+ removeLast( [], {} ); // $ExpectError
+ removeLast( {}, {} ); // $ExpectError
+ removeLast( ( x: number ): number => x, {} ); // $ExpectError
+
+ removeLast( true, 1, {} ); // $ExpectError
+ removeLast( false, 1, {} ); // $ExpectError
+ removeLast( null, 1, {} ); // $ExpectError
+ removeLast( undefined, 1, {} ); // $ExpectError
+ removeLast( 5, 1, {} ); // $ExpectError
+ removeLast( [], 1, {} ); // $ExpectError
+ removeLast( {}, 1, {} ); // $ExpectError
+ removeLast( ( x: number ): number => x, 1, {} ); // $ExpectError
}
-// The compiler throws an error if the function is provided a second argument that is not a number...
+// The compiler throws an error if the function is provided an invalid second argument...
{
removeLast( 'abc', true ); // $ExpectError
removeLast( 'abc', false ); // $ExpectError
removeLast( 'abc', null ); // $ExpectError
removeLast( 'abc', 'abc' ); // $ExpectError
removeLast( 'abc', [] ); // $ExpectError
- removeLast( 'abc', {} ); // $ExpectError
removeLast( 'abc', ( x: number ): number => x ); // $ExpectError
+
+ removeLast( 'abc', true, {} ); // $ExpectError
+ removeLast( 'abc', false, {} ); // $ExpectError
+ removeLast( 'abc', null, {} ); // $ExpectError
+ removeLast( 'abc', '', {} ); // $ExpectError
+ removeLast( 'abc', [], {} ); // $ExpectError
+ removeLast( 'abc', {}, {} ); // $ExpectError
+ removeLast( 'abc', ( x: number ): number => x, {} ); // $ExpectError
+}
+
+// The compiler throws an error if the function is provided an invalid `mode` option...
+{
+ removeLast( 'abc', { 'mode': true } ); // $ExpectError
+ removeLast( 'abc', { 'mode': false } ); // $ExpectError
+ removeLast( 'abc', { 'mode': null } ); // $ExpectError
+ removeLast( 'abc', { 'mode': '' } ); // $ExpectError
+ removeLast( 'abc', { 'mode': [] } ); // $ExpectError
+ removeLast( 'abc', { 'mode': ( x: number ): number => x } ); // $ExpectError
+
+ removeLast( 'abc', 1, { 'mode': true } ); // $ExpectError
+ removeLast( 'abc', 1, { 'mode': false } ); // $ExpectError
+ removeLast( 'abc', 1, { 'mode': null } ); // $ExpectError
+ removeLast( 'abc', 1, { 'mode': '' } ); // $ExpectError
+ removeLast( 'abc', 1, { 'mode': [] } ); // $ExpectError
+ removeLast( 'abc', 1, { 'mode': {} } ); // $ExpectError
+ removeLast( 'abc', 1, { 'mode': ( x: number ): number => x } ); // $ExpectError
}
// The compiler throws an error if the function is provided insufficient arguments...
diff --git a/remove-last/docs/usage.txt b/remove-last/docs/usage.txt
index 903c21a3..bc7c9401 100644
--- a/remove-last/docs/usage.txt
+++ b/remove-last/docs/usage.txt
@@ -7,3 +7,4 @@ Options:
-V, --version Print the package version.
--n Number of characters to remove. Default: 1.
--split sep Delimiter for stdin data. Default: '/\\r?\\n/'.
+ --mode mode Type of character to remove. Default: 'grapheme'.
diff --git a/remove-last/etc/cli_opts.json b/remove-last/etc/cli_opts.json
index 5d6ecc98..2ceae458 100644
--- a/remove-last/etc/cli_opts.json
+++ b/remove-last/etc/cli_opts.json
@@ -5,7 +5,8 @@
],
"string": [
"n",
- "split"
+ "split",
+ "mode"
],
"alias": {
"help": [
diff --git a/remove-last/lib/main.js b/remove-last/lib/main.js
index bda14944..ba58b544 100644
--- a/remove-last/lib/main.js
+++ b/remove-last/lib/main.js
@@ -21,11 +21,27 @@
// MODULES //
var isString = require( '@stdlib/assert/is-string' ).isPrimitive;
+var isPlainObject = require( '@stdlib/assert/is-plain-object' );
+var hasOwnProp = require( '@stdlib/assert/has-own-property' );
+var contains = require( '@stdlib/array/base/assert/contains' ).factory;
var isNonNegativeInteger = require( '@stdlib/assert/is-nonnegative-integer' ).isPrimitive;
-var prevGraphemeClusterBreak = require( './../../prev-grapheme-cluster-break' );
+var removeLastCodeUnit = require( './../../base/remove-last' );
+var removeLastCodePoint = require( './../../base/remove-last-code-point' );
+var removeLastGraphemeCluster = require( './../../base/remove-last-grapheme-cluster' );
var format = require( './../../format' );
+// VARIABLES //
+
+var MODES = [ 'grapheme', 'code_point', 'code_unit' ];
+var FCNS = {
+ 'grapheme': removeLastGraphemeCluster,
+ 'code_point': removeLastCodePoint,
+ 'code_unit': removeLastCodeUnit
+};
+var isMode = contains( MODES );
+
+
// MAIN //
/**
@@ -33,8 +49,12 @@ var format = require( './../../format' );
*
* @param {string} str - input string
* @param {NonNegativeInteger} [n=1] - number of character to remove
+* @param {Options} [options] - options
+* @param {string} [options.mode="grapheme"] - type of "character" to return (must be either `grapheme`, `code_point`, or `code_unit`)
* @throws {TypeError} must provide a string primitive
* @throws {TypeError} second argument must be a nonnegative integer
+* @throws {TypeError} options argument must be an object
+* @throws {TypeError} must provide valid options
* @returns {string} updated string
*
* @example
@@ -57,30 +77,48 @@ var format = require( './../../format' );
* var out = removeLast( 'leader', 2 );
* // returns 'lead'
*/
-function removeLast( str, n ) {
- var i;
+function removeLast( str ) {
+ var options;
+ var nargs;
+ var opts;
+ var n;
if ( !isString( str ) ) {
throw new TypeError( format( 'invalid argument. First argument must be a string. Value: `%s`.', str ) );
}
- if ( str === '' ) {
- return '';
- }
- if ( arguments.length > 1 ) {
+ opts = {
+ 'mode': 'grapheme'
+ };
+ nargs = arguments.length;
+ if ( nargs === 1 ) {
+ n = 1;
+ } else if ( nargs === 2 ) {
+ n = arguments[ 1 ];
+ if ( isPlainObject( n ) ) {
+ options = n;
+ n = 1;
+ } else if ( !isNonNegativeInteger( n ) ) {
+ throw new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );
+ }
+ } else { // nargs > 2
+ n = arguments[ 1 ];
if ( !isNonNegativeInteger( n ) ) {
throw new TypeError( format( 'invalid argument. Second argument must be a nonnegative integer. Value: `%s`.', n ) );
}
- if ( n === 0 ) {
- return str;
+ options = arguments[ 2 ];
+ if ( !isPlainObject( options ) ) {
+ throw new TypeError( format( 'invalid argument. Options argument must be an object. Value: `%s`.', options ) );
}
- i = str.length - 1;
- while ( n > 0 ) {
- i = prevGraphemeClusterBreak( str, i );
- n -= 1;
+ }
+ if ( options ) {
+ if ( hasOwnProp( options, 'mode' ) ) {
+ opts.mode = options.mode;
+ if ( !isMode( opts.mode ) ) {
+ throw new TypeError( format( 'invalid option. `%s` option must be one of the following: "%s". Value: `%s`.', 'mode', MODES.join( '", "' ), opts.mode ) );
+ }
}
- return str.substring( 0, i + 1 );
}
- return str.substring( 0, prevGraphemeClusterBreak( str, str.length-1 ) + 1 ); // eslint-disable-line max-len
+ return FCNS[ opts.mode ]( str, n );
}
diff --git a/remove-last/test/test.cli.js b/remove-last/test/test.cli.js
index 4c693b04..f37d6523 100644
--- a/remove-last/test/test.cli.js
+++ b/remove-last/test/test.cli.js
@@ -182,6 +182,46 @@ tape( 'the command-line interface removes the last `n` characters of a string ar
}
});
+tape( 'the command-line interface supports specifying the type of characters to remove', opts, function test( t ) {
+ var cmd = [
+ EXEC_PATH,
+ '-e',
+ '"process.stdin.isTTY = true; process.argv[ 2 ] = \'beep\'; process.argv[ 3 ] = \'--mode=code_point\'; require( \''+fpath+'\' );"'
+ ];
+
+ exec( cmd.join( ' ' ), done );
+
+ function done( error, stdout, stderr ) {
+ if ( error ) {
+ t.fail( error.message );
+ } else {
+ t.strictEqual( stdout.toString(), 'bee\n', 'expected value' );
+ t.strictEqual( stderr.toString(), '', 'does not print to `stderr`' );
+ }
+ t.end();
+ }
+});
+
+tape( 'if provided an invalid option, the command-line interface prints an error and sets a non-zero exit code', opts, function test( t ) {
+ var cmd = [
+ EXEC_PATH,
+ '-e',
+ '"process.stdin.isTTY = true; process.argv[ 2 ] = \'beep\'; process.argv[ 3 ] = \'--mode=foo\'; require( \''+fpath+'\' );"'
+ ];
+
+ exec( cmd.join( ' ' ), done );
+
+ function done( error, stdout, stderr ) {
+ if ( error ) {
+ t.pass( error.message );
+ t.strictEqual( error.code, 1, 'expected exit code' );
+ }
+ t.strictEqual( stdout.toString(), '', 'does not print to `stdout`' );
+ t.strictEqual( stderr.toString().length > 0, true, 'expected value' );
+ t.end();
+ }
+});
+
tape( 'the command-line interface supports use as a standard stream', opts, function test( t ) {
var cmd = [
'printf "beep\nboop"',
@@ -247,6 +287,28 @@ tape( 'the command-line interface supports specifying a custom delimiter when us
}
});
+tape( 'the command-line interface supports specifying the type of characters to remove when used as a standard stream', opts, function test( t ) {
+ var cmd = [
+ 'printf \'foo\nbar\nbaz\'',
+ '|',
+ EXEC_PATH,
+ fpath,
+ '--mode code_point'
+ ];
+
+ exec( cmd.join( ' ' ), done );
+
+ function done( error, stdout, stderr ) {
+ if ( error ) {
+ t.fail( error.message );
+ } else {
+ t.strictEqual( stdout.toString(), 'fo\nba\nba\n', 'expected value' );
+ t.strictEqual( stderr.toString(), '', 'does not print to `stderr`' );
+ }
+ t.end();
+ }
+});
+
tape( 'the command-line interface supports specifying a custom delimiter when used as a standard stream (regexp)', opts, function test( t ) {
var cmd = [
'printf \'foo\tbar\tbaz\'',
diff --git a/remove-last/test/test.js b/remove-last/test/test.js
index c6c79eb9..b036830d 100644
--- a/remove-last/test/test.js
+++ b/remove-last/test/test.js
@@ -59,6 +59,33 @@ tape( 'the function throws an error if not provided a string', function test( t
}
});
+tape( 'the function throws an error if not provided a string (options)', function test( t ) {
+ var values;
+ var i;
+
+ values = [
+ 5,
+ null,
+ true,
+ void 0,
+ NaN,
+ [],
+ {},
+ function noop() {}
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ removeLast( value, {} );
+ };
+ }
+});
+
tape( 'the function throws an error if provided a second argument which is not a nonnegative integer', function test( t ) {
var values;
var i;
@@ -71,7 +98,6 @@ tape( 'the function throws an error if provided a second argument which is not a
void 0,
NaN,
[],
- {},
function noop() {}
];
@@ -87,8 +113,124 @@ tape( 'the function throws an error if provided a second argument which is not a
}
});
+tape( 'the function throws an error if provided a second argument which is not a nonnegative integer (options)', function test( t ) {
+ var values;
+ var i;
+
+ values = [
+ 'abc',
+ 3.14,
+ null,
+ true,
+ void 0,
+ NaN,
+ [],
+ {},
+ function noop() {}
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ removeLast( 'beep', value, {} );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided an options argument which is not an object', function test( t ) {
+ var values;
+ var i;
+
+ values = [
+ 'abc',
+ 3,
+ null,
+ true,
+ void 0,
+ NaN,
+ [],
+ function noop() {}
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ removeLast( 'beep', 1, value );
+ };
+ }
+});
+
+tape( 'the function throws an error if provided a `mode` option which is not a supported mode (second argument)', function test( t ) {
+ var values;
+ var i;
+
+ values = [
+ 'abc',
+ 3,
+ null,
+ true,
+ void 0,
+ NaN,
+ [],
+ function noop() {}
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ removeLast( 'beep', {
+ 'mode': value
+ });
+ };
+ }
+});
+
+tape( 'the function throws an error if provided a `mode` option which is not a supported mode (third argument)', function test( t ) {
+ var values;
+ var i;
+
+ values = [
+ 'abc',
+ 3,
+ null,
+ true,
+ void 0,
+ NaN,
+ [],
+ function noop() {}
+ ];
+
+ for ( i = 0; i < values.length; i++ ) {
+ t.throws( badValue( values[i] ), TypeError, 'throws an error when provided '+values[i] );
+ }
+ t.end();
+
+ function badValue( value ) {
+ return function badValue() {
+ removeLast( 'beep', 1, {
+ 'mode': value
+ });
+ };
+ }
+});
+
tape( 'the function returns an empty string if provided an empty string', function test( t ) {
t.strictEqual( removeLast( '' ), '', 'returns empty string' );
+ t.strictEqual( removeLast( '', 1 ), '', 'returns expected value' );
+ t.strictEqual( removeLast( '', {} ), '', 'returns expected value' );
+ t.strictEqual( removeLast( '', 1, {} ), '', 'returns expected value' );
t.end();
});
@@ -104,18 +246,6 @@ tape( 'the function removes the last character of a given string', function test
out = removeLast( 'Hello World' );
t.strictEqual( out, 'Hello Worl', 'removes character' );
- t.end();
-});
-
-tape( 'the function removes the last character of a given string (Unicode characters)', function test( t ) {
- var out;
-
- out = removeLast( '😀😀😀' );
- t.strictEqual( out, '😀😀', 'removes character' );
-
- out = removeLast( '🤖 Robot Army 🤖' );
- t.strictEqual( out, '🤖 Robot Army ', 'removes character' );
-
out = removeLast( 'अनुच्छेद' );
t.strictEqual( out, 'अनुच्छे', 'returns expected value' );
@@ -128,20 +258,26 @@ tape( 'the function removes the last character of a given string (Unicode charac
t.end();
});
-tape( 'the function returns the original string if provided zero for the second parameter', function test( t ) {
+tape( 'the function returns the original string if provided zero as the second argument', function test( t ) {
var out;
out = removeLast( 'hello world', 0 );
t.strictEqual( out, 'hello world', 'returns original string' );
+ out = removeLast( 'hello world', 0, {} );
+ t.strictEqual( out, 'hello world', 'returns expected value' );
+
t.end();
});
-tape( 'the function removes the last `n` characters when supplied a second argument', function test( t ) {
+tape( 'the function removes the last `n` characters of a given string (default)', function test( t ) {
var out;
- out = removeLast( 'hello world', 5 );
- t.strictEqual( out, 'hello ', 'removes characters' );
+ out = removeLast( 'hello world', 1 );
+ t.strictEqual( out, 'hello worl', 'removes last character' );
+
+ out = removeLast( 'hello world', 6 );
+ t.strictEqual( out, 'hello', 'returns expected value' );
out = removeLast( '!!!', 1 );
t.strictEqual( out, '!!', 'removes character' );
@@ -149,35 +285,123 @@ tape( 'the function removes the last `n` characters when supplied a second argum
out = removeLast( '!!!', 2 );
t.strictEqual( out, '!', 'removes character' );
+ out = removeLast( 'अनुच्छेद', 1 );
+ t.strictEqual( out, 'अनुच्छे', 'returns expected value' );
+
+ out = removeLast( '六书/六書', 1 );
+ t.strictEqual( out, '六书/六', 'returns expected value' );
+
+ out = removeLast( '🌷', 1 );
+ t.strictEqual( out, '', 'returns expected value' );
+
t.end();
});
-tape( 'the function returns an empty string if `n` is greater than or equal to the length of the string', function test( t ) {
+tape( 'the function supports removing the last `n` characters of a provided string (mode=grapheme)', function test( t ) {
+ var opts;
var out;
- out = removeLast( 'hello world', 12 );
- t.strictEqual( out, '', 'returns empty string' );
+ opts = {
+ 'mode': 'grapheme'
+ };
- out = removeLast( '!!!', 3 );
- t.strictEqual( out, '', 'returns empty string' );
+ out = removeLast( 'hello world', 1, opts );
+ t.strictEqual( out, 'hello worl', 'returns expected value' );
+
+ out = removeLast( 'hello world', 7, opts );
+ t.strictEqual( out, 'hell', 'returns expected value' );
+
+ out = removeLast( '!!!', 1, opts );
+ t.strictEqual( out, '!!', 'returns expected value' );
+
+ out = removeLast( '!!!', 2, opts );
+ t.strictEqual( out, '!', 'returns expected value' );
+
+ out = removeLast( 'अनुच्छेद', 1, opts );
+ t.strictEqual( out, 'अनुच्छे', 'returns expected value' );
+
+ out = removeLast( '六书/六書', 1, opts );
+ t.strictEqual( out, '六书/六', 'returns expected value' );
+
+ out = removeLast( '🌷', 1, opts );
+ t.strictEqual( out, '', 'returns expected value' );
+
+ out = removeLast( '👉🏿', 1, opts );
+ t.strictEqual( out, '', 'returns expected value' );
t.end();
});
-tape( 'the function removes the last `n` characters when supplied a second argument (Unicode characters)', function test( t ) {
+tape( 'the function supports removing the last `n` characters of a provided string (mode=code_point)', function test( t ) {
+ var opts;
var out;
- out = removeLast( '😀😀😀', 1 );
- t.strictEqual( out, '😀😀', 'removes character' );
+ opts = {
+ 'mode': 'code_point'
+ };
- out = removeLast( '🤖 Robot Army 🤖', 2 );
- t.strictEqual( out, '🤖 Robot Army', 'removes character' );
+ out = removeLast( 'hello world', 1, opts );
+ t.strictEqual( out, 'hello worl', 'returns expected value' );
- out = removeLast( '六书/六書', 1 );
+ out = removeLast( 'hello world', 7, opts );
+ t.strictEqual( out, 'hell', 'returns expected value' );
+
+ out = removeLast( '!!!', 1, opts );
+ t.strictEqual( out, '!!', 'returns expected value' );
+
+ out = removeLast( '!!!', 2, opts );
+ t.strictEqual( out, '!', 'returns expected value' );
+
+ out = removeLast( 'अनुच्छेद', 1, opts );
+ t.strictEqual( out, 'अनुच्छे', 'returns expected value' );
+
+ out = removeLast( '六书/六書', 1, opts );
t.strictEqual( out, '六书/六', 'returns expected value' );
- out = removeLast( '🌷', 1 );
+ out = removeLast( '🌷', 1, opts );
t.strictEqual( out, '', 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function supports removing the last `n` characters of a provided string (mode=code_unit)', function test( t ) {
+ var opts;
+ var out;
+
+ opts = {
+ 'mode': 'code_unit'
+ };
+
+ out = removeLast( 'hello world', 1, opts );
+ t.strictEqual( out, 'hello worl', 'returns expected value' );
+
+ out = removeLast( 'hello world', 7, opts );
+ t.strictEqual( out, 'hell', 'returns expected value' );
+
+ out = removeLast( '!!!', 1, opts );
+ t.strictEqual( out, '!!', 'returns expected value' );
+
+ out = removeLast( '!!!', 2, opts );
+ t.strictEqual( out, '!', 'returns expected value' );
+
+ out = removeLast( 'अनुच्छेद', 1, opts );
+ t.strictEqual( out, 'अनुच्छे', 'returns expected value' );
+
+ out = removeLast( '六书/六書', 1, opts );
+ t.strictEqual( out, '六书/六', 'returns expected value' );
+
+ out = removeLast( '🌷', 1, opts );
+ t.strictEqual( out, '\ud83c', 'returns expected value' );
+ t.end();
+});
+
+tape( 'the function returns an empty string if `n` is greater than or equal to the length of the string', function test( t ) {
+ var out;
+
+ out = removeLast( 'hello world', 12 );
+ t.strictEqual( out, '', 'returns empty string' );
+
+ out = removeLast( '!!!', 3 );
+ t.strictEqual( out, '', 'returns empty string' );
t.end();
});