summaryrefslogtreecommitdiffstats
path: root/js/src/tests/ecma_6
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /js/src/tests/ecma_6
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'js/src/tests/ecma_6')
-rw-r--r--js/src/tests/ecma_6/Array/browser.js0
-rw-r--r--js/src/tests/ecma_6/Array/concat-proxy.js25
-rw-r--r--js/src/tests/ecma_6/Array/concat-spreadable-basic.js37
-rw-r--r--js/src/tests/ecma_6/Array/concat-spreadable-primitive.js34
-rw-r--r--js/src/tests/ecma_6/Array/fill.js97
-rw-r--r--js/src/tests/ecma_6/Array/find_findindex.js285
-rw-r--r--js/src/tests/ecma_6/Array/for_of_1.js138
-rw-r--r--js/src/tests/ecma_6/Array/for_of_2.js58
-rw-r--r--js/src/tests/ecma_6/Array/for_of_3.js60
-rw-r--r--js/src/tests/ecma_6/Array/for_of_4.js64
-rw-r--r--js/src/tests/ecma_6/Array/from_basics.js51
-rw-r--r--js/src/tests/ecma_6/Array/from_constructor.js56
-rw-r--r--js/src/tests/ecma_6/Array/from_errors.js152
-rw-r--r--js/src/tests/ecma_6/Array/from_iterable.js50
-rw-r--r--js/src/tests/ecma_6/Array/from_length_setter.js13
-rw-r--r--js/src/tests/ecma_6/Array/from_mapping.js41
-rw-r--r--js/src/tests/ecma_6/Array/from_primitive.js21
-rw-r--r--js/src/tests/ecma_6/Array/from_proxy.js55
-rw-r--r--js/src/tests/ecma_6/Array/from_realms.js37
-rw-r--r--js/src/tests/ecma_6/Array/from_string.js23
-rw-r--r--js/src/tests/ecma_6/Array/from_surfaces.js13
-rw-r--r--js/src/tests/ecma_6/Array/from_this.js48
-rw-r--r--js/src/tests/ecma_6/Array/getter-name.js9
-rw-r--r--js/src/tests/ecma_6/Array/indexOf-never-returns-negative-zero.js4
-rw-r--r--js/src/tests/ecma_6/Array/isArray.js67
-rw-r--r--js/src/tests/ecma_6/Array/iterator_edge_cases.js50
-rw-r--r--js/src/tests/ecma_6/Array/lastIndexOf-never-returns-negative-zero.js4
-rw-r--r--js/src/tests/ecma_6/Array/shell.js0
-rw-r--r--js/src/tests/ecma_6/Array/shift_for_in.js13
-rw-r--r--js/src/tests/ecma_6/Array/sort_basics.js46
-rw-r--r--js/src/tests/ecma_6/Array/sort_holes.js66
-rw-r--r--js/src/tests/ecma_6/Array/sort_proxy.js38
-rw-r--r--js/src/tests/ecma_6/Array/sort_small.js33
-rw-r--r--js/src/tests/ecma_6/Array/species.js182
-rw-r--r--js/src/tests/ecma_6/Array/to-length.js40
-rw-r--r--js/src/tests/ecma_6/Array/toLocaleString-nointl.js26
-rw-r--r--js/src/tests/ecma_6/Array/toLocaleString.js14
-rw-r--r--js/src/tests/ecma_6/Array/unscopables.js51
-rw-r--r--js/src/tests/ecma_6/Array/values.js20
-rw-r--r--js/src/tests/ecma_6/ArrayBuffer/CloneArrayBuffer.js35
-rw-r--r--js/src/tests/ecma_6/ArrayBuffer/browser.js0
-rw-r--r--js/src/tests/ecma_6/ArrayBuffer/constructorNotCallable.js8
-rw-r--r--js/src/tests/ecma_6/ArrayBuffer/getter-name.js10
-rw-r--r--js/src/tests/ecma_6/ArrayBuffer/shell.js0
-rw-r--r--js/src/tests/ecma_6/ArrayBuffer/slice-species.js180
-rw-r--r--js/src/tests/ecma_6/ArrowFunctions/browser.js0
-rw-r--r--js/src/tests/ecma_6/ArrowFunctions/shell.js0
-rw-r--r--js/src/tests/ecma_6/ArrowFunctions/yield-in-arrow.js77
-rw-r--r--js/src/tests/ecma_6/Class/boundFunctionSubclassing.js37
-rw-r--r--js/src/tests/ecma_6/Class/browser.js0
-rw-r--r--js/src/tests/ecma_6/Class/bytecodePatternMatching.js29
-rw-r--r--js/src/tests/ecma_6/Class/classConstructorNoCall.js21
-rw-r--r--js/src/tests/ecma_6/Class/classHeritage.js97
-rw-r--r--js/src/tests/ecma_6/Class/className.js247
-rw-r--r--js/src/tests/ecma_6/Class/classPrototype.js65
-rw-r--r--js/src/tests/ecma_6/Class/compPropDestr.js11
-rw-r--r--js/src/tests/ecma_6/Class/compPropNames.js243
-rw-r--r--js/src/tests/ecma_6/Class/constructorCalled.js45
-rw-r--r--js/src/tests/ecma_6/Class/defaultConstructorBase.js18
-rw-r--r--js/src/tests/ecma_6/Class/defaultConstructorDerivedSpread.js19
-rw-r--r--js/src/tests/ecma_6/Class/defaultConstructorNotCallable.js8
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorArrowEvalBinding.js12
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorArrowEvalClosed.js11
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorArrowEvalEscape.js13
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorArrowEvalEscapeUninitialized.js38
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorArrowEvalGetThis.js10
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorArrowEvalNestedSuperCall.js34
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorArrowEvalSuperCall.js18
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorInlining.js19
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorName.js11
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorReturnPrimitive.js15
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorTDZExplicitThis.js12
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorTDZOffEdge.js11
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorTDZReturnAliasedTry.js14
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorTDZReturnObject.js13
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorTDZReturnTry.js16
-rw-r--r--js/src/tests/ecma_6/Class/derivedConstructorTDZReturnUndefined.js13
-rw-r--r--js/src/tests/ecma_6/Class/extendBuiltinConstructors.js111
-rw-r--r--js/src/tests/ecma_6/Class/geterNoExprClosure.js20
-rw-r--r--js/src/tests/ecma_6/Class/innerBinding.js86
-rw-r--r--js/src/tests/ecma_6/Class/member-expr-after-super.js44
-rw-r--r--js/src/tests/ecma_6/Class/methDefn.js204
-rw-r--r--js/src/tests/ecma_6/Class/methDefnGen.js83
-rw-r--r--js/src/tests/ecma_6/Class/method-named-static.js56
-rw-r--r--js/src/tests/ecma_6/Class/methodInstallation.js101
-rw-r--r--js/src/tests/ecma_6/Class/methodName.js40
-rw-r--r--js/src/tests/ecma_6/Class/methodOverwrites.js80
-rw-r--r--js/src/tests/ecma_6/Class/methodsPrototype.js39
-rw-r--r--js/src/tests/ecma_6/Class/newTargetArgumentsIntact.js44
-rw-r--r--js/src/tests/ecma_6/Class/newTargetArrow.js24
-rw-r--r--js/src/tests/ecma_6/Class/newTargetBound.js16
-rw-r--r--js/src/tests/ecma_6/Class/newTargetCCW.js10
-rw-r--r--js/src/tests/ecma_6/Class/newTargetDVG.js7
-rw-r--r--js/src/tests/ecma_6/Class/newTargetDefaults.js25
-rw-r--r--js/src/tests/ecma_6/Class/newTargetDirectInvoke.js50
-rw-r--r--js/src/tests/ecma_6/Class/newTargetEval.js34
-rw-r--r--js/src/tests/ecma_6/Class/newTargetGenerators.js14
-rw-r--r--js/src/tests/ecma_6/Class/newTargetMethods.js51
-rw-r--r--js/src/tests/ecma_6/Class/newTargetNonFunction.js10
-rw-r--r--js/src/tests/ecma_6/Class/newTargetProxyNative.js5
-rw-r--r--js/src/tests/ecma_6/Class/outerBinding.js45
-rw-r--r--js/src/tests/ecma_6/Class/shell.js16
-rw-r--r--js/src/tests/ecma_6/Class/staticConstructor.js22
-rw-r--r--js/src/tests/ecma_6/Class/staticMethods.js15
-rw-r--r--js/src/tests/ecma_6/Class/strictExecution.js38
-rw-r--r--js/src/tests/ecma_6/Class/stringConstructor.js12
-rw-r--r--js/src/tests/ecma_6/Class/subclassedArrayUnboxed.js22
-rw-r--r--js/src/tests/ecma_6/Class/superCallBadDynamicSuperClass.js12
-rw-r--r--js/src/tests/ecma_6/Class/superCallBadNewTargetPrototype.js25
-rw-r--r--js/src/tests/ecma_6/Class/superCallBaseInvoked.js55
-rw-r--r--js/src/tests/ecma_6/Class/superCallIllegal.js7
-rw-r--r--js/src/tests/ecma_6/Class/superCallInvalidBase.js9
-rw-r--r--js/src/tests/ecma_6/Class/superCallOrder.js26
-rw-r--r--js/src/tests/ecma_6/Class/superCallProperBase.js34
-rw-r--r--js/src/tests/ecma_6/Class/superCallSpreadCall.js27
-rw-r--r--js/src/tests/ecma_6/Class/superCallThisInit.js45
-rw-r--r--js/src/tests/ecma_6/Class/superPropBasicCalls.js27
-rw-r--r--js/src/tests/ecma_6/Class/superPropBasicChain.js11
-rw-r--r--js/src/tests/ecma_6/Class/superPropBasicGetter.js36
-rw-r--r--js/src/tests/ecma_6/Class/superPropBasicNew.js17
-rw-r--r--js/src/tests/ecma_6/Class/superPropChains.js58
-rw-r--r--js/src/tests/ecma_6/Class/superPropDVG.js17
-rw-r--r--js/src/tests/ecma_6/Class/superPropDelete.js46
-rw-r--r--js/src/tests/ecma_6/Class/superPropDerivedCalls.js77
-rw-r--r--js/src/tests/ecma_6/Class/superPropDestructuring.js43
-rw-r--r--js/src/tests/ecma_6/Class/superPropEvalInsideArrow.js11
-rw-r--r--js/src/tests/ecma_6/Class/superPropEvalInsideNested.js13
-rw-r--r--js/src/tests/ecma_6/Class/superPropFor.js25
-rw-r--r--js/src/tests/ecma_6/Class/superPropHeavyweightArrow.js12
-rw-r--r--js/src/tests/ecma_6/Class/superPropHomeObject.js62
-rw-r--r--js/src/tests/ecma_6/Class/superPropIncDecElem.js24
-rw-r--r--js/src/tests/ecma_6/Class/superPropLazyInnerFunction.js19
-rw-r--r--js/src/tests/ecma_6/Class/superPropNoOverwriting.js58
-rw-r--r--js/src/tests/ecma_6/Class/superPropOrdering.js93
-rw-r--r--js/src/tests/ecma_6/Class/superPropProtoChanges.js22
-rw-r--r--js/src/tests/ecma_6/Class/superPropProxies.js83
-rw-r--r--js/src/tests/ecma_6/Class/superPropSkips.js45
-rw-r--r--js/src/tests/ecma_6/Class/superPropStatics.js34
-rw-r--r--js/src/tests/ecma_6/Class/superPropStrictAssign.js23
-rw-r--r--js/src/tests/ecma_6/Class/uninitializedThisError.js57
-rw-r--r--js/src/tests/ecma_6/Comprehensions/arguments.js14
-rw-r--r--js/src/tests/ecma_6/Comprehensions/array-yield.js23
-rw-r--r--js/src/tests/ecma_6/Comprehensions/error-messages.js172
-rw-r--r--js/src/tests/ecma_6/Comprehensions/generator-semantics.js52
-rw-r--r--js/src/tests/ecma_6/Comprehensions/nested-for-if.js20
-rw-r--r--js/src/tests/ecma_6/Comprehensions/scope.js18
-rw-r--r--js/src/tests/ecma_6/Comprehensions/shell.js0
-rw-r--r--js/src/tests/ecma_6/Comprehensions/sudoku.js168
-rw-r--r--js/src/tests/ecma_6/Comprehensions/syntax.js6
-rw-r--r--js/src/tests/ecma_6/Comprehensions/toSource.js14
-rw-r--r--js/src/tests/ecma_6/DataView/browser.js0
-rw-r--r--js/src/tests/ecma_6/DataView/detach-after-construction.js11
-rw-r--r--js/src/tests/ecma_6/DataView/get-set-index-range.js36
-rw-r--r--js/src/tests/ecma_6/DataView/getter-name.js11
-rw-r--r--js/src/tests/ecma_6/DataView/shell.js0
-rw-r--r--js/src/tests/ecma_6/Date/browser.js0
-rw-r--r--js/src/tests/ecma_6/Date/constructor-one-Date-argument.js40
-rw-r--r--js/src/tests/ecma_6/Date/non-iso.js63
-rw-r--r--js/src/tests/ecma_6/Date/prototype-is-not-a-date.js15
-rw-r--r--js/src/tests/ecma_6/Date/shell.js0
-rw-r--r--js/src/tests/ecma_6/Date/toISOString.js53
-rw-r--r--js/src/tests/ecma_6/Date/toPrimitive.js62
-rw-r--r--js/src/tests/ecma_6/Date/toString-generic.js13
-rw-r--r--js/src/tests/ecma_6/Date/two-digit-years.js69
-rw-r--r--js/src/tests/ecma_6/Destructuring/browser.js0
-rw-r--r--js/src/tests/ecma_6/Destructuring/cover-init-name-syntax.js72
-rw-r--r--js/src/tests/ecma_6/Destructuring/iterator-primitive.js36
-rw-r--r--js/src/tests/ecma_6/Destructuring/rest-with-trailing-comma.js45
-rw-r--r--js/src/tests/ecma_6/Destructuring/shell.js0
-rw-r--r--js/src/tests/ecma_6/Destructuring/yield-in-object-destr-function.js182
-rw-r--r--js/src/tests/ecma_6/Destructuring/yield-in-object-destr-generator.js200
-rw-r--r--js/src/tests/ecma_6/Destructuring/yield-in-object-destr-script.js123
-rw-r--r--js/src/tests/ecma_6/Destructuring/yield-with-escape-in-object-destr-function.js182
-rw-r--r--js/src/tests/ecma_6/Destructuring/yield-with-escape-in-object-destr-generator.js200
-rw-r--r--js/src/tests/ecma_6/Destructuring/yield-with-escape-in-object-destr-script.js123
-rw-r--r--js/src/tests/ecma_6/Expressions/ToPropertyKey-symbols.js90
-rw-r--r--js/src/tests/ecma_6/Expressions/binary-literals.js115
-rw-r--r--js/src/tests/ecma_6/Expressions/browser.js0
-rw-r--r--js/src/tests/ecma_6/Expressions/computed-property-side-effects.js35
-rw-r--r--js/src/tests/ecma_6/Expressions/delete-constant-folded-and-or.js41
-rw-r--r--js/src/tests/ecma_6/Expressions/delete-name-parenthesized-early-error-strict-mode.js76
-rw-r--r--js/src/tests/ecma_6/Expressions/destructuring-array-default-call.js10
-rw-r--r--js/src/tests/ecma_6/Expressions/destructuring-array-default-class.js72
-rw-r--r--js/src/tests/ecma_6/Expressions/destructuring-array-default-function-nested.js11
-rw-r--r--js/src/tests/ecma_6/Expressions/destructuring-array-default-function.js11
-rw-r--r--js/src/tests/ecma_6/Expressions/destructuring-array-default-simple.js16
-rw-r--r--js/src/tests/ecma_6/Expressions/destructuring-array-default-yield.js22
-rw-r--r--js/src/tests/ecma_6/Expressions/destructuring-array-done.js319
-rw-r--r--js/src/tests/ecma_6/Expressions/destructuring-array-lexical.js12
-rw-r--r--js/src/tests/ecma_6/Expressions/destructuring-pattern-parenthesized.js140
-rw-r--r--js/src/tests/ecma_6/Expressions/object-literal-__proto__.js267
-rw-r--r--js/src/tests/ecma_6/Expressions/object-literal-computed-property-evaluation.js38
-rw-r--r--js/src/tests/ecma_6/Expressions/octal-literals.js103
-rw-r--r--js/src/tests/ecma_6/Expressions/shell.js186
-rw-r--r--js/src/tests/ecma_6/Expressions/tagged-template-constant-folding.js28
-rw-r--r--js/src/tests/ecma_6/Function/arguments-extra-property.js33
-rw-r--r--js/src/tests/ecma_6/Function/arguments-iterator.js167
-rw-r--r--js/src/tests/ecma_6/Function/arguments-parameter-shadowing.js22
-rw-r--r--js/src/tests/ecma_6/Function/arrow-has-duplicated.js15
-rw-r--r--js/src/tests/ecma_6/Function/bound-length-and-name.js40
-rw-r--r--js/src/tests/ecma_6/Function/bound-non-constructable.js17
-rw-r--r--js/src/tests/ecma_6/Function/bound-prototype.js37
-rw-r--r--js/src/tests/ecma_6/Function/browser.js0
-rw-r--r--js/src/tests/ecma_6/Function/configurable-length-builtins.js21
-rw-r--r--js/src/tests/ecma_6/Function/configurable-length.js86
-rw-r--r--js/src/tests/ecma_6/Function/construct-bound-proxy-with-many-arguments.js13
-rw-r--r--js/src/tests/ecma_6/Function/function-constructor-toString-arguments-before-parsing-params.js23
-rw-r--r--js/src/tests/ecma_6/Function/function-name.js64
-rw-r--r--js/src/tests/ecma_6/Function/has-instance-jitted.js96
-rw-r--r--js/src/tests/ecma_6/Function/has-instance.js101
-rw-r--r--js/src/tests/ecma_6/Function/length-with-destructuring-and-parameter-expression.js31
-rw-r--r--js/src/tests/ecma_6/Function/line-terminator-before-arrow.js9
-rw-r--r--js/src/tests/ecma_6/Function/method-has-duplicated.js19
-rw-r--r--js/src/tests/ecma_6/Function/parameter-redeclaration.js19
-rw-r--r--js/src/tests/ecma_6/Function/rest-has-duplicated.js17
-rw-r--r--js/src/tests/ecma_6/Function/rest-parameter-names.js68
-rw-r--r--js/src/tests/ecma_6/Function/return-finally.js172
-rw-r--r--js/src/tests/ecma_6/Function/shell.js0
-rw-r--r--js/src/tests/ecma_6/Function/spread-iterator-primitive.js28
-rw-r--r--js/src/tests/ecma_6/Generators/delegating-yield-1.js42
-rw-r--r--js/src/tests/ecma_6/Generators/delegating-yield-10.js49
-rw-r--r--js/src/tests/ecma_6/Generators/delegating-yield-11.js20
-rw-r--r--js/src/tests/ecma_6/Generators/delegating-yield-12.js49
-rw-r--r--js/src/tests/ecma_6/Generators/delegating-yield-2.js71
-rw-r--r--js/src/tests/ecma_6/Generators/delegating-yield-3.js40
-rw-r--r--js/src/tests/ecma_6/Generators/delegating-yield-4.js18
-rw-r--r--js/src/tests/ecma_6/Generators/delegating-yield-5.js37
-rw-r--r--js/src/tests/ecma_6/Generators/delegating-yield-6.js56
-rw-r--r--js/src/tests/ecma_6/Generators/delegating-yield-7.js38
-rw-r--r--js/src/tests/ecma_6/Generators/delegating-yield-8.js44
-rw-r--r--js/src/tests/ecma_6/Generators/delegating-yield-9.js37
-rw-r--r--js/src/tests/ecma_6/Generators/iteration.js574
-rw-r--r--js/src/tests/ecma_6/Generators/iterator-next-non-object.js64
-rw-r--r--js/src/tests/ecma_6/Generators/objects.js49
-rw-r--r--js/src/tests/ecma_6/Generators/return-finally.js309
-rw-r--r--js/src/tests/ecma_6/Generators/runtime.js132
-rw-r--r--js/src/tests/ecma_6/Generators/shell.js17
-rw-r--r--js/src/tests/ecma_6/Generators/syntax.js140
-rw-r--r--js/src/tests/ecma_6/Generators/yield-non-regexp.js16
-rw-r--r--js/src/tests/ecma_6/Generators/yield-star-iterator-primitive.js31
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-eval.js51
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-generators.js26
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-if.js42
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-label.js43
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-property.js18
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-same-name.js7
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-with.js18
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b.js31
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-deprecated-redecl.js78
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-hoisted-tdz.js30
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-strict.js45
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/browser.js0
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/bug-1216623.js19
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/catch-body.js19
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/const-declaration-in-for-loop.js88
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/eval-has-lexical-environment.js45
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/eval-nondefinable-function.js10
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/for-loop-with-bindings-added-at-runtime.js125
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/for-loop.js121
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/implicit-this-in-with.js18
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/nondefinable-function-same-script.js24
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/redeclaring-global-properties.js64
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/shell.js5
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-basics.js22
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-closures.js23
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-const.js8
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-delete.js27
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-getters.js41
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-global.js18
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-ignored.js22
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-miss.js7
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-mutation-frozen.js18
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-mutation.js44
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-proto.js39
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-proxy.js46
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-strict.js32
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/unscopables-tdz.js9
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b-eval-destructuring.js10
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b-eval-for-of.js12
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b-eval.js21
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b.js116
-rw-r--r--js/src/tests/ecma_6/LexicalEnvironment/with-global-ignores-global-let-variables.js24
-rw-r--r--js/src/tests/ecma_6/Map/NaN-as-key.js55
-rw-r--r--js/src/tests/ecma_6/Map/browser.js0
-rw-r--r--js/src/tests/ecma_6/Map/constructor-iterator-primitive.js34
-rw-r--r--js/src/tests/ecma_6/Map/forEach-selfhosted-behavior.js51
-rw-r--r--js/src/tests/ecma_6/Map/getter-name.js10
-rw-r--r--js/src/tests/ecma_6/Map/iterable.js28
-rw-r--r--js/src/tests/ecma_6/Map/shell.js0
-rw-r--r--js/src/tests/ecma_6/Map/symbols.js33
-rw-r--r--js/src/tests/ecma_6/Math/20.2.2.ToNumber.js112
-rw-r--r--js/src/tests/ecma_6/Math/acosh-approx.js283
-rw-r--r--js/src/tests/ecma_6/Math/acosh-exact.js26
-rw-r--r--js/src/tests/ecma_6/Math/asinh-approx.js303
-rw-r--r--js/src/tests/ecma_6/Math/asinh-exact.js19
-rw-r--r--js/src/tests/ecma_6/Math/atanh-approx.js280
-rw-r--r--js/src/tests/ecma_6/Math/atanh-exact.js35
-rw-r--r--js/src/tests/ecma_6/Math/browser.js0
-rw-r--r--js/src/tests/ecma_6/Math/cbrt-approx.js17
-rw-r--r--js/src/tests/ecma_6/Math/cbrt-exact.js19
-rw-r--r--js/src/tests/ecma_6/Math/clz32.js40
-rw-r--r--js/src/tests/ecma_6/Math/cosh-approx.js276
-rw-r--r--js/src/tests/ecma_6/Math/cosh-exact.js19
-rw-r--r--js/src/tests/ecma_6/Math/expm1-approx.js62
-rw-r--r--js/src/tests/ecma_6/Math/expm1-exact.js20
-rw-r--r--js/src/tests/ecma_6/Math/expm1-monotonicity.js94
-rw-r--r--js/src/tests/ecma_6/Math/fround.js81
-rw-r--r--js/src/tests/ecma_6/Math/log10-approx.js9
-rw-r--r--js/src/tests/ecma_6/Math/log10-exact.js30
-rw-r--r--js/src/tests/ecma_6/Math/log1p-approx.js20
-rw-r--r--js/src/tests/ecma_6/Math/log1p-exact.js29
-rw-r--r--js/src/tests/ecma_6/Math/log2-approx.js8
-rw-r--r--js/src/tests/ecma_6/Math/log2-exact.js30
-rw-r--r--js/src/tests/ecma_6/Math/shell.js74
-rw-r--r--js/src/tests/ecma_6/Math/sign.js34
-rw-r--r--js/src/tests/ecma_6/Math/sinh-approx.js297
-rw-r--r--js/src/tests/ecma_6/Math/sinh-exact.js19
-rw-r--r--js/src/tests/ecma_6/Math/tanh-approx.js282
-rw-r--r--js/src/tests/ecma_6/Math/tanh-exact.js19
-rw-r--r--js/src/tests/ecma_6/Math/trunc.js50
-rw-r--r--js/src/tests/ecma_6/Number/15.7.3.7-EPSILON.js24
-rw-r--r--js/src/tests/ecma_6/Number/20.1.2.10-MIN_SAFE_INTEGER.js26
-rw-r--r--js/src/tests/ecma_6/Number/20.1.2.6-MAX_SAFE_INTEGER.js26
-rw-r--r--js/src/tests/ecma_6/Number/20.1.3.2-toExponential.js47
-rw-r--r--js/src/tests/ecma_6/Number/20.1.3.2-toPrecision.js47
-rw-r--r--js/src/tests/ecma_6/Number/20.1.3.3-toFixed.js17
-rw-r--r--js/src/tests/ecma_6/Number/ToNumber.js26
-rw-r--r--js/src/tests/ecma_6/Number/browser.js0
-rw-r--r--js/src/tests/ecma_6/Number/isSafeInteger-01.js40
-rw-r--r--js/src/tests/ecma_6/Number/parseFloat-01.js27
-rw-r--r--js/src/tests/ecma_6/Number/parseInt-01.js172
-rw-r--r--js/src/tests/ecma_6/Number/parseInt-default-to-decimal.js30
-rw-r--r--js/src/tests/ecma_6/Number/shell.js0
-rw-r--r--js/src/tests/ecma_6/Object/accessor-arguments-rest.js24
-rw-r--r--js/src/tests/ecma_6/Object/accessor-name.js36
-rw-r--r--js/src/tests/ecma_6/Object/accessor-non-constructor.js20
-rw-r--r--js/src/tests/ecma_6/Object/assign.js303
-rw-r--r--js/src/tests/ecma_6/Object/browser.js0
-rw-r--r--js/src/tests/ecma_6/Object/bug-1150906.js13
-rw-r--r--js/src/tests/ecma_6/Object/bug-1206700.js10
-rw-r--r--js/src/tests/ecma_6/Object/defineProperties-order.js17
-rw-r--r--js/src/tests/ecma_6/Object/defineProperty-proxy.js54
-rw-r--r--js/src/tests/ecma_6/Object/destructuring-shorthand-defaults.js135
-rw-r--r--js/src/tests/ecma_6/Object/duplProps.js116
-rw-r--r--js/src/tests/ecma_6/Object/freeze-proxy.js27
-rw-r--r--js/src/tests/ecma_6/Object/freeze.js21
-rw-r--r--js/src/tests/ecma_6/Object/getOwnPropertyDescriptor.js35
-rw-r--r--js/src/tests/ecma_6/Object/getOwnPropertySymbols-proxy.js28
-rw-r--r--js/src/tests/ecma_6/Object/getOwnPropertySymbols.js46
-rw-r--r--js/src/tests/ecma_6/Object/getPrototypeOf.js22
-rw-r--r--js/src/tests/ecma_6/Object/getter-name.js10
-rw-r--r--js/src/tests/ecma_6/Object/isExtensible.js21
-rw-r--r--js/src/tests/ecma_6/Object/isFrozen.js21
-rw-r--r--js/src/tests/ecma_6/Object/isSealed.js21
-rw-r--r--js/src/tests/ecma_6/Object/keys.js23
-rw-r--r--js/src/tests/ecma_6/Object/method-non-constructor.js12
-rw-r--r--js/src/tests/ecma_6/Object/preventExtensions-proxy.js23
-rw-r--r--js/src/tests/ecma_6/Object/preventExtensions.js21
-rw-r--r--js/src/tests/ecma_6/Object/property-descriptor-order.js17
-rw-r--r--js/src/tests/ecma_6/Object/propertyIsEnumerable-proxy.js59
-rw-r--r--js/src/tests/ecma_6/Object/seal-proxy.js27
-rw-r--r--js/src/tests/ecma_6/Object/seal.js21
-rw-r--r--js/src/tests/ecma_6/Object/setPrototypeOf-cross-realm-cycle.js11
-rw-r--r--js/src/tests/ecma_6/Object/setPrototypeOf-cycle.js16
-rw-r--r--js/src/tests/ecma_6/Object/setPrototypeOf-same-value.js11
-rw-r--r--js/src/tests/ecma_6/Object/shell.js0
-rw-r--r--js/src/tests/ecma_6/Object/toLocaleString.js13
-rw-r--r--js/src/tests/ecma_6/Object/toPrimitive-callers.js57
-rw-r--r--js/src/tests/ecma_6/Object/toPrimitive.js101
-rw-r--r--js/src/tests/ecma_6/Promise/browser.js0
-rw-r--r--js/src/tests/ecma_6/Promise/bug-1287334.js12
-rw-r--r--js/src/tests/ecma_6/Promise/bug-1288382.js13
-rw-r--r--js/src/tests/ecma_6/Promise/bug-1289040.js13
-rw-r--r--js/src/tests/ecma_6/Promise/dependent-promises.js41
-rw-r--r--js/src/tests/ecma_6/Promise/enqueue-promise-reactions.js43
-rw-r--r--js/src/tests/ecma_6/Promise/get-wait-for-all-promise.js65
-rw-r--r--js/src/tests/ecma_6/Promise/iterator-primitive.js28
-rw-r--r--js/src/tests/ecma_6/Promise/methods-non-enumerable.js9
-rw-r--r--js/src/tests/ecma_6/Promise/promise-all.js30
-rw-r--r--js/src/tests/ecma_6/Promise/promise-basics.js101
-rw-r--r--js/src/tests/ecma_6/Promise/promise-rejection-tracking.js36
-rw-r--r--js/src/tests/ecma_6/Promise/promise-species.js13
-rw-r--r--js/src/tests/ecma_6/Promise/promise-subclassing.js67
-rw-r--r--js/src/tests/ecma_6/Promise/self-resolve.js23
-rw-r--r--js/src/tests/ecma_6/Promise/shell.js0
-rw-r--r--js/src/tests/ecma_6/Proxy/getPrototypeOf.js285
-rw-r--r--js/src/tests/ecma_6/Proxy/global-receiver.js35
-rw-r--r--js/src/tests/ecma_6/Proxy/hasInstance.js13
-rw-r--r--js/src/tests/ecma_6/Proxy/json-stringify-replacer-array-revocable-proxy.js39
-rw-r--r--js/src/tests/ecma_6/Proxy/ownkeys-allowed-types.js20
-rw-r--r--js/src/tests/ecma_6/Proxy/ownkeys-linear.js70
-rw-r--r--js/src/tests/ecma_6/Proxy/ownkeys-trap-duplicates.js32
-rw-r--r--js/src/tests/ecma_6/Proxy/proxy-__proto__.js59
-rw-r--r--js/src/tests/ecma_6/Proxy/proxy-constructNonObject.js18
-rw-r--r--js/src/tests/ecma_6/Proxy/proxy-for-in.js37
-rw-r--r--js/src/tests/ecma_6/Proxy/proxy-no-receiver-overwrite.js23
-rw-r--r--js/src/tests/ecma_6/Proxy/proxy-with-revoked-arguments.js53
-rw-r--r--js/src/tests/ecma_6/Proxy/regress-bug1037770.js7
-rw-r--r--js/src/tests/ecma_6/Proxy/regress-bug1062349.js31
-rw-r--r--js/src/tests/ecma_6/Proxy/regress-bug950407.js11
-rw-r--r--js/src/tests/ecma_6/Proxy/revocable-proxy-prototype.js40
-rw-r--r--js/src/tests/ecma_6/Proxy/revoke-as-side-effect.js73
-rw-r--r--js/src/tests/ecma_6/Proxy/setPrototypeOf.js258
-rw-r--r--js/src/tests/ecma_6/Proxy/shell.js0
-rw-r--r--js/src/tests/ecma_6/Proxy/trap-null.js103
-rw-r--r--js/src/tests/ecma_6/Reflect/apply.js130
-rw-r--r--js/src/tests/ecma_6/Reflect/argumentsList.js164
-rw-r--r--js/src/tests/ecma_6/Reflect/browser.js0
-rw-r--r--js/src/tests/ecma_6/Reflect/construct.js107
-rw-r--r--js/src/tests/ecma_6/Reflect/defineProperty.js164
-rw-r--r--js/src/tests/ecma_6/Reflect/deleteProperty.js80
-rw-r--r--js/src/tests/ecma_6/Reflect/get.js72
-rw-r--r--js/src/tests/ecma_6/Reflect/getOwnPropertyDescriptor.js21
-rw-r--r--js/src/tests/ecma_6/Reflect/getPrototypeOf.js17
-rw-r--r--js/src/tests/ecma_6/Reflect/has.js41
-rw-r--r--js/src/tests/ecma_6/Reflect/isExtensible.js57
-rw-r--r--js/src/tests/ecma_6/Reflect/ownKeys.js66
-rw-r--r--js/src/tests/ecma_6/Reflect/preventExtensions.js56
-rw-r--r--js/src/tests/ecma_6/Reflect/propertyKeys.js84
-rw-r--r--js/src/tests/ecma_6/Reflect/set.js280
-rw-r--r--js/src/tests/ecma_6/Reflect/setPrototypeOf.js72
-rw-r--r--js/src/tests/ecma_6/Reflect/shell.js9
-rw-r--r--js/src/tests/ecma_6/Reflect/surfaces.js59
-rw-r--r--js/src/tests/ecma_6/Reflect/target.js44
-rw-r--r--js/src/tests/ecma_6/RegExp/RegExpExec-exec.js18
-rw-r--r--js/src/tests/ecma_6/RegExp/RegExpExec-return.js31
-rw-r--r--js/src/tests/ecma_6/RegExp/browser.js0
-rw-r--r--js/src/tests/ecma_6/RegExp/class-null.js15
-rw-r--r--js/src/tests/ecma_6/RegExp/compile-lastIndex.js88
-rw-r--r--js/src/tests/ecma_6/RegExp/constructor-IsRegExp.js86
-rw-r--r--js/src/tests/ecma_6/RegExp/constructor-constructor.js78
-rw-r--r--js/src/tests/ecma_6/RegExp/constructor-ordering-2.js21
-rw-r--r--js/src/tests/ecma_6/RegExp/constructor-ordering.js16
-rw-r--r--js/src/tests/ecma_6/RegExp/constructor-regexp-unicode.js9
-rw-r--r--js/src/tests/ecma_6/RegExp/constructor-regexp.js61
-rw-r--r--js/src/tests/ecma_6/RegExp/descriptor.js25
-rw-r--r--js/src/tests/ecma_6/RegExp/escape.js70
-rw-r--r--js/src/tests/ecma_6/RegExp/exec-lastIndex-negative.js27
-rw-r--r--js/src/tests/ecma_6/RegExp/flag-accessors.js49
-rw-r--r--js/src/tests/ecma_6/RegExp/flags-param-handling.js18
-rw-r--r--js/src/tests/ecma_6/RegExp/flags.js26
-rw-r--r--js/src/tests/ecma_6/RegExp/getter-name.js16
-rw-r--r--js/src/tests/ecma_6/RegExp/ignoreCase-multiple.js71
-rw-r--r--js/src/tests/ecma_6/RegExp/lastIndex-nonwritable.js27
-rw-r--r--js/src/tests/ecma_6/RegExp/match-this.js12
-rw-r--r--js/src/tests/ecma_6/RegExp/match-trace.js147
-rw-r--r--js/src/tests/ecma_6/RegExp/match.js36
-rw-r--r--js/src/tests/ecma_6/RegExp/replace-compile.js21
-rw-r--r--js/src/tests/ecma_6/RegExp/replace-global-unicode.js18
-rw-r--r--js/src/tests/ecma_6/RegExp/replace-sticky-lastIndex.js23
-rw-r--r--js/src/tests/ecma_6/RegExp/replace-sticky.js21
-rw-r--r--js/src/tests/ecma_6/RegExp/replace-this.js12
-rw-r--r--js/src/tests/ecma_6/RegExp/replace-trace.js309
-rw-r--r--js/src/tests/ecma_6/RegExp/replace-twoBytes.js44
-rw-r--r--js/src/tests/ecma_6/RegExp/replace.js34
-rw-r--r--js/src/tests/ecma_6/RegExp/search-this.js12
-rw-r--r--js/src/tests/ecma_6/RegExp/search-trace.js76
-rw-r--r--js/src/tests/ecma_6/RegExp/search.js26
-rw-r--r--js/src/tests/ecma_6/RegExp/shell.js0
-rw-r--r--js/src/tests/ecma_6/RegExp/source.js29
-rw-r--r--js/src/tests/ecma_6/RegExp/split-deleted-flags.js11
-rw-r--r--js/src/tests/ecma_6/RegExp/split-flags-on-obj.js21
-rw-r--r--js/src/tests/ecma_6/RegExp/split-invalid-lastIndex.js31
-rw-r--r--js/src/tests/ecma_6/RegExp/split-limit.js14
-rw-r--r--js/src/tests/ecma_6/RegExp/split-obj.js12
-rw-r--r--js/src/tests/ecma_6/RegExp/split-prop-access.js19
-rw-r--r--js/src/tests/ecma_6/RegExp/split-this.js12
-rw-r--r--js/src/tests/ecma_6/RegExp/split-trace.js229
-rw-r--r--js/src/tests/ecma_6/RegExp/split.js30
-rw-r--r--js/src/tests/ecma_6/RegExp/sticky.js126
-rw-r--r--js/src/tests/ecma_6/RegExp/test-trailing.js31
-rw-r--r--js/src/tests/ecma_6/RegExp/toString.js42
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-back-reference.js39
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-braced.js166
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-character-class-escape.js75
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-class-braced.js236
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-class-empty.js25
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-class-ignoreCase.js28
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-class-lead-trail.js142
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-class-negated.js64
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-class-range.js28
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-class-raw.js65
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-disallow-extended.js117
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-everything.js59
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-ignoreCase-ascii.js45
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-ignoreCase-escape.js71
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-ignoreCase-negated.js19
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-ignoreCase.js2643
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-index.js17
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-lead-trail.js218
-rw-r--r--js/src/tests/ecma_6/RegExp/unicode-raw.js139
-rw-r--r--js/src/tests/ecma_6/Set/NaN-as-key.js56
-rw-r--r--js/src/tests/ecma_6/Set/browser.js0
-rw-r--r--js/src/tests/ecma_6/Set/forEach-selfhosted-behavior.js51
-rw-r--r--js/src/tests/ecma_6/Set/getter-name.js10
-rw-r--r--js/src/tests/ecma_6/Set/shell.js0
-rw-r--r--js/src/tests/ecma_6/Set/symbols.js27
-rw-r--r--js/src/tests/ecma_6/Statements/arrow-function-at-end-of-for-statement-head.js64
-rw-r--r--js/src/tests/ecma_6/Statements/arrow-function-in-for-statement-head.js33
-rw-r--r--js/src/tests/ecma_6/Statements/browser.js0
-rw-r--r--js/src/tests/ecma_6/Statements/for-in-with-declaration.js31
-rw-r--r--js/src/tests/ecma_6/Statements/for-in-with-destructuring-assignments.js130
-rw-r--r--js/src/tests/ecma_6/Statements/for-inof-coverinitname-destr-assign.js55
-rw-r--r--js/src/tests/ecma_6/Statements/for-inof-loop-const-declaration.js94
-rw-r--r--js/src/tests/ecma_6/Statements/for-inof-name-iteration-expression-contains-index-string.js43
-rw-r--r--js/src/tests/ecma_6/Statements/for-loop-declaration-contains-computed-name.js48
-rw-r--r--js/src/tests/ecma_6/Statements/for-loop-declaration-contains-initializer.js50
-rw-r--r--js/src/tests/ecma_6/Statements/for-of-iterator-primitive.js28
-rw-r--r--js/src/tests/ecma_6/Statements/for-of-var-with-initializer.js32
-rw-r--r--js/src/tests/ecma_6/Statements/if-constant-folding.js35
-rw-r--r--js/src/tests/ecma_6/Statements/property-reference-self-assignment.js38
-rw-r--r--js/src/tests/ecma_6/Statements/shell.js0
-rw-r--r--js/src/tests/ecma_6/Statements/try-completion.js482
-rw-r--r--js/src/tests/ecma_6/String/AdvanceStringIndex.js43
-rw-r--r--js/src/tests/ecma_6/String/IsRegExp.js24
-rw-r--r--js/src/tests/ecma_6/String/browser.js0
-rw-r--r--js/src/tests/ecma_6/String/codePointAt.js84
-rw-r--r--js/src/tests/ecma_6/String/fromCodePoint.js60
-rw-r--r--js/src/tests/ecma_6/String/internalUsage.js30
-rw-r--r--js/src/tests/ecma_6/String/iterator_edge_cases.js27
-rw-r--r--js/src/tests/ecma_6/String/make-normalize-generateddata-input.py70
-rw-r--r--js/src/tests/ecma_6/String/match-GetMethod.js28
-rw-r--r--js/src/tests/ecma_6/String/match.js31
-rw-r--r--js/src/tests/ecma_6/String/normalize-form-non-atom.js18
-rw-r--r--js/src/tests/ecma_6/String/normalize-generateddata-input.js18735
-rw-r--r--js/src/tests/ecma_6/String/normalize-generateddata-part0.js22
-rw-r--r--js/src/tests/ecma_6/String/normalize-generateddata-part1-not-listed.js38
-rw-r--r--js/src/tests/ecma_6/String/normalize-generateddata-part1.js22
-rw-r--r--js/src/tests/ecma_6/String/normalize-generateddata-part2.js22
-rw-r--r--js/src/tests/ecma_6/String/normalize-generateddata-part3.js22
-rw-r--r--js/src/tests/ecma_6/String/normalize-generic.js20
-rw-r--r--js/src/tests/ecma_6/String/normalize-parameter.js19
-rw-r--r--js/src/tests/ecma_6/String/normalize-rope.js23
-rw-r--r--js/src/tests/ecma_6/String/raw.js55
-rw-r--r--js/src/tests/ecma_6/String/replace-GetMethod.js24
-rw-r--r--js/src/tests/ecma_6/String/replace.js19
-rw-r--r--js/src/tests/ecma_6/String/search-GetMethod.js24
-rw-r--r--js/src/tests/ecma_6/String/search.js27
-rw-r--r--js/src/tests/ecma_6/String/shell.js59
-rw-r--r--js/src/tests/ecma_6/String/split-GetMethod.js24
-rw-r--r--js/src/tests/ecma_6/String/split-order.js22
-rw-r--r--js/src/tests/ecma_6/String/split.js19
-rw-r--r--js/src/tests/ecma_6/String/string-code-point-upper-lower-mapping.js396
-rw-r--r--js/src/tests/ecma_6/String/unicode-braced.js64
-rw-r--r--js/src/tests/ecma_6/Symbol/as-base-value.js87
-rw-r--r--js/src/tests/ecma_6/Symbol/browser.js0
-rw-r--r--js/src/tests/ecma_6/Symbol/comparisons.js34
-rw-r--r--js/src/tests/ecma_6/Symbol/constructor.js35
-rw-r--r--js/src/tests/ecma_6/Symbol/conversions.js89
-rw-r--r--js/src/tests/ecma_6/Symbol/enumeration-order.js40
-rw-r--r--js/src/tests/ecma_6/Symbol/enumeration.js52
-rw-r--r--js/src/tests/ecma_6/Symbol/equality.js30
-rw-r--r--js/src/tests/ecma_6/Symbol/errors.js17
-rw-r--r--js/src/tests/ecma_6/Symbol/for-in-order.js33
-rw-r--r--js/src/tests/ecma_6/Symbol/for.js31
-rw-r--r--js/src/tests/ecma_6/Symbol/json-stringify-keys.js19
-rw-r--r--js/src/tests/ecma_6/Symbol/json-stringify-values.js33
-rw-r--r--js/src/tests/ecma_6/Symbol/keyFor.js15
-rw-r--r--js/src/tests/ecma_6/Symbol/property-accessor.js39
-rw-r--r--js/src/tests/ecma_6/Symbol/property-basics.js44
-rw-r--r--js/src/tests/ecma_6/Symbol/property-inheritance.js50
-rw-r--r--js/src/tests/ecma_6/Symbol/property-nonwritable.js31
-rw-r--r--js/src/tests/ecma_6/Symbol/property-reflection.js136
-rw-r--r--js/src/tests/ecma_6/Symbol/realms.js36
-rw-r--r--js/src/tests/ecma_6/Symbol/shell.js0
-rw-r--r--js/src/tests/ecma_6/Symbol/species.js30
-rw-r--r--js/src/tests/ecma_6/Symbol/surfaces.js34
-rw-r--r--js/src/tests/ecma_6/Symbol/toPrimitive.js39
-rw-r--r--js/src/tests/ecma_6/Symbol/toString.js27
-rw-r--r--js/src/tests/ecma_6/Symbol/toStringTag.js155
-rw-r--r--js/src/tests/ecma_6/Symbol/typed-arrays.js17
-rw-r--r--js/src/tests/ecma_6/Symbol/typeof.js11
-rw-r--r--js/src/tests/ecma_6/Symbol/valueOf.js22
-rw-r--r--js/src/tests/ecma_6/Symbol/well-known.js41
-rw-r--r--js/src/tests/ecma_6/Syntax/browser.js0
-rw-r--r--js/src/tests/ecma_6/Syntax/declaration-forbidden-in-label.js34
-rw-r--r--js/src/tests/ecma_6/Syntax/escaped-let-static-identifier.js57
-rw-r--r--js/src/tests/ecma_6/Syntax/escaped-strict-reserved-words-and-yield.js105
-rw-r--r--js/src/tests/ecma_6/Syntax/identifier_vertical_tilde.js20
-rw-r--r--js/src/tests/ecma_6/Syntax/identifiers-with-extended-unicode-escape.js222
-rw-r--r--js/src/tests/ecma_6/Syntax/keyword-unescaped-requirement.js68
-rw-r--r--js/src/tests/ecma_6/Syntax/let-as-label.js35
-rw-r--r--js/src/tests/ecma_6/Syntax/shell.js0
-rw-r--r--js/src/tests/ecma_6/Syntax/statement-versus-statementlistitem.js148
-rw-r--r--js/src/tests/ecma_6/Syntax/unicode_other_id_continue.js45
-rw-r--r--js/src/tests/ecma_6/Syntax/unicode_other_id_start.js48
-rw-r--r--js/src/tests/ecma_6/Syntax/yield-as-identifier.js54
-rw-r--r--js/src/tests/ecma_6/TemplateStrings/browser.js2
-rw-r--r--js/src/tests/ecma_6/TemplateStrings/debugLineNumber.js50
-rw-r--r--js/src/tests/ecma_6/TemplateStrings/lineNumber.js72
-rw-r--r--js/src/tests/ecma_6/TemplateStrings/noSubst.js148
-rw-r--r--js/src/tests/ecma_6/TemplateStrings/shell.js1
-rw-r--r--js/src/tests/ecma_6/TemplateStrings/tagTempl.js291
-rw-r--r--js/src/tests/ecma_6/TemplateStrings/templLit.js118
-rw-r--r--js/src/tests/ecma_6/TypedArray/Tconstructor-fromTypedArray-byteLength.js17
-rw-r--r--js/src/tests/ecma_6/TypedArray/browser.js0
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-ArrayBuffer-species-wrap.js63
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-ArrayBuffer-species.js51
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-iterable-generator.js16
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-iterable-modified-array-iterator-next.js28
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-iterable-modified-array-iterator.js28
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-iterable-nonpacked-array.js17
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-iterable-not-callable.js15
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-iterable-packed-array-side-effect.js17
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-iterable-packed-array.js16
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-iterable-undefined-or-null.js22
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-iterator-primitive.js29
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-non-detached.js15
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-not-callable.js10
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor-undefined-args.js14
-rw-r--r--js/src/tests/ecma_6/TypedArray/constructor_bad-args.js13
-rw-r--r--js/src/tests/ecma_6/TypedArray/detached-array-buffer-checks.js109
-rw-r--r--js/src/tests/ecma_6/TypedArray/element-setting-converts-using-ToNumber.js90
-rw-r--r--js/src/tests/ecma_6/TypedArray/entries.js38
-rw-r--r--js/src/tests/ecma_6/TypedArray/every-and-some.js249
-rw-r--r--js/src/tests/ecma_6/TypedArray/fill.js65
-rw-r--r--js/src/tests/ecma_6/TypedArray/filter-species.js56
-rw-r--r--js/src/tests/ecma_6/TypedArray/find-and-findIndex.js52
-rw-r--r--js/src/tests/ecma_6/TypedArray/forEach.js93
-rw-r--r--js/src/tests/ecma_6/TypedArray/from_basics.js42
-rw-r--r--js/src/tests/ecma_6/TypedArray/from_constructor.js36
-rw-r--r--js/src/tests/ecma_6/TypedArray/from_errors.js76
-rw-r--r--js/src/tests/ecma_6/TypedArray/from_iterable.js49
-rw-r--r--js/src/tests/ecma_6/TypedArray/from_mapping.js45
-rw-r--r--js/src/tests/ecma_6/TypedArray/from_realms.js32
-rw-r--r--js/src/tests/ecma_6/TypedArray/from_string.js24
-rw-r--r--js/src/tests/ecma_6/TypedArray/from_surfaces.js12
-rw-r--r--js/src/tests/ecma_6/TypedArray/from_this.js59
-rw-r--r--js/src/tests/ecma_6/TypedArray/getter-name.js16
-rw-r--r--js/src/tests/ecma_6/TypedArray/has-property-op.js22
-rw-r--r--js/src/tests/ecma_6/TypedArray/includes.js40
-rw-r--r--js/src/tests/ecma_6/TypedArray/indexOf-and-lastIndexOf.js117
-rw-r--r--js/src/tests/ecma_6/TypedArray/indexOf-never-returns-negative-zero.js7
-rw-r--r--js/src/tests/ecma_6/TypedArray/iterator.js42
-rw-r--r--js/src/tests/ecma_6/TypedArray/join.js48
-rw-r--r--js/src/tests/ecma_6/TypedArray/keys.js36
-rw-r--r--js/src/tests/ecma_6/TypedArray/lastIndexOf-never-returns-negative-zero.js7
-rw-r--r--js/src/tests/ecma_6/TypedArray/map-and-filter.js274
-rw-r--r--js/src/tests/ecma_6/TypedArray/map-species.js56
-rw-r--r--js/src/tests/ecma_6/TypedArray/object-defineproperty.js68
-rw-r--r--js/src/tests/ecma_6/TypedArray/of.js92
-rw-r--r--js/src/tests/ecma_6/TypedArray/prototype-constructor-identity.js55
-rw-r--r--js/src/tests/ecma_6/TypedArray/reduce-and-reduceRight.js188
-rw-r--r--js/src/tests/ecma_6/TypedArray/reverse.js38
-rw-r--r--js/src/tests/ecma_6/TypedArray/seal-and-freeze.js48
-rw-r--r--js/src/tests/ecma_6/TypedArray/set-negative-offset.js35
-rw-r--r--js/src/tests/ecma_6/TypedArray/set-same-buffer-different-source-target-types.js41
-rw-r--r--js/src/tests/ecma_6/TypedArray/set.js21
-rw-r--r--js/src/tests/ecma_6/TypedArray/shell.js114
-rw-r--r--js/src/tests/ecma_6/TypedArray/slice-species.js49
-rw-r--r--js/src/tests/ecma_6/TypedArray/slice.js45
-rw-r--r--js/src/tests/ecma_6/TypedArray/sort_basics.js73
-rw-r--r--js/src/tests/ecma_6/TypedArray/sort_comparators.js32
-rw-r--r--js/src/tests/ecma_6/TypedArray/sort_errors.js87
-rw-r--r--js/src/tests/ecma_6/TypedArray/sort_globals.js9
-rw-r--r--js/src/tests/ecma_6/TypedArray/sort_small.js38
-rw-r--r--js/src/tests/ecma_6/TypedArray/sort_snans.js72
-rw-r--r--js/src/tests/ecma_6/TypedArray/sorting_buffer_access.js15
-rw-r--r--js/src/tests/ecma_6/TypedArray/subarray-species.js63
-rw-r--r--js/src/tests/ecma_6/TypedArray/subarray.js29
-rw-r--r--js/src/tests/ecma_6/TypedArray/toLocaleString-detached.js38
-rw-r--r--js/src/tests/ecma_6/TypedArray/toLocaleString-nointl.js40
-rw-r--r--js/src/tests/ecma_6/TypedArray/toLocaleString.js80
-rw-r--r--js/src/tests/ecma_6/TypedArray/toString.js69
-rw-r--r--js/src/tests/ecma_6/TypedArray/uint8clamped-constructor.js9
-rw-r--r--js/src/tests/ecma_6/TypedArray/values.js37
-rw-r--r--js/src/tests/ecma_6/WeakMap/browser.js0
-rw-r--r--js/src/tests/ecma_6/WeakMap/shell.js0
-rw-r--r--js/src/tests/ecma_6/WeakMap/symbols.js10
-rw-r--r--js/src/tests/ecma_6/browser.js0
-rw-r--r--js/src/tests/ecma_6/extensions/ArrayBuffer-slice-arguments-detaching.js81
-rw-r--r--js/src/tests/ecma_6/extensions/DataView-construct-arguments-detaching.js81
-rw-r--r--js/src/tests/ecma_6/extensions/DataView-set-arguments-detaching.js85
-rw-r--r--js/src/tests/ecma_6/extensions/RegExp-replace-lastParen.js12
-rw-r--r--js/src/tests/ecma_6/extensions/String-match-flags.js27
-rw-r--r--js/src/tests/ecma_6/extensions/TypedArray-set-object-funky-length-detaches.js66
-rw-r--r--js/src/tests/ecma_6/extensions/TypedArray-subarray-arguments-detaching.js112
-rw-r--r--js/src/tests/ecma_6/extensions/array-isArray-proxy-recursion.js41
-rw-r--r--js/src/tests/ecma_6/extensions/browser.js0
-rw-r--r--js/src/tests/ecma_6/extensions/element-setting-ToNumber-detaches.js36
-rw-r--r--js/src/tests/ecma_6/extensions/for-loop-with-lexical-declaration-and-nested-function-statement.js130
-rw-r--r--js/src/tests/ecma_6/extensions/keyword-unescaped-requirement-modules.js99
-rw-r--r--js/src/tests/ecma_6/extensions/keyword-unescaped-requirement.js43
-rw-r--r--js/src/tests/ecma_6/extensions/new-cross-compartment.js42
-rw-r--r--js/src/tests/ecma_6/extensions/reentrant-RegExp-creation-and-gc-during-new-RegExp-pattern-ToString.js41
-rw-r--r--js/src/tests/ecma_6/extensions/setImmutablePrototype.js195
-rw-r--r--js/src/tests/ecma_6/extensions/shell.js5
-rw-r--r--js/src/tests/ecma_6/shell.js235
-rw-r--r--js/src/tests/ecma_6/toLength.js41
689 files changed, 57315 insertions, 0 deletions
diff --git a/js/src/tests/ecma_6/Array/browser.js b/js/src/tests/ecma_6/Array/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/browser.js
diff --git a/js/src/tests/ecma_6/Array/concat-proxy.js b/js/src/tests/ecma_6/Array/concat-proxy.js
new file mode 100644
index 000000000..ab733e2f1
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/concat-proxy.js
@@ -0,0 +1,25 @@
+var BUGNUMBER = 1287520;
+var summary = 'Array.prototype.concat should check HasProperty everytime for non-dense array';
+
+print(BUGNUMBER + ": " + summary);
+
+var a = [1, 2, 3];
+a.constructor = {
+ [Symbol.species]: function(...args) {
+ var p = new Proxy(new Array(...args), {
+ defineProperty(target, propertyKey, receiver) {
+ if (propertyKey === "0") delete a[1];
+ return Reflect.defineProperty(target, propertyKey, receiver);
+ }
+ });
+ return p;
+ }
+};
+
+var p = a.concat();
+assertEq(0 in p, true);
+assertEq(1 in p, false);
+assertEq(2 in p, true);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/concat-spreadable-basic.js b/js/src/tests/ecma_6/Array/concat-spreadable-basic.js
new file mode 100644
index 000000000..c13f8f5cd
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/concat-spreadable-basic.js
@@ -0,0 +1,37 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+"use strict";
+
+const x = Object.freeze([1, 2, 3]);
+
+let fakeArray = {
+ [Symbol.isConcatSpreadable]: true,
+ length: 2,
+ 0: "hello",
+ 1: "world"
+}
+assertDeepEq(x.concat(fakeArray), [1, 2, 3, "hello", "world"]);
+assertDeepEq(x.concat(fakeArray, fakeArray), [1, 2, 3, "hello", "world", "hello", "world"]);
+
+for (let truthy of [true, 3.41, "abc", Symbol(), {}]) {
+ let obj = {[Symbol.isConcatSpreadable]: truthy, length: 1, 0: "hey"}
+ assertDeepEq(x.concat(obj), [1, 2, 3, "hey"]);
+}
+
+for (let notTruthy of [null, undefined, false, 0, NaN, ""]) {
+ let obj = {[Symbol.isConcatSpreadable]: notTruthy, length: 1, 0: "hey"}
+ assertDeepEq(x.concat(obj), [1, 2, 3, obj]);
+}
+
+let array = [5, 4];
+assertDeepEq(x.concat(array), [1, 2, 3, 5, 4]);
+
+// Can make arrays non-spreadable
+array[Symbol.isConcatSpreadable] = false;
+assertDeepEq(x.concat(array), [1, 2, 3, [5, 4]]);
+
+// Explicitly spreadable
+array[Symbol.isConcatSpreadable] = true;
+assertDeepEq(x.concat(array), [1, 2, 3, 5, 4]);
+
+reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/concat-spreadable-primitive.js b/js/src/tests/ecma_6/Array/concat-spreadable-primitive.js
new file mode 100644
index 000000000..d2264bfa2
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/concat-spreadable-primitive.js
@@ -0,0 +1,34 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+"use strict";
+
+// Primitive values should never be tried to spread
+let primitives = [
+ 10,
+ false,
+ Symbol()
+ // Can't change String.prototype.length
+];
+
+for (let value of primitives) {
+ let prototype = Object.getPrototypeOf(value);
+ prototype[Symbol.isConcatSpreadable] = true;
+
+ Object.defineProperty(prototype, "length", {
+ configurable: true,
+ get() {
+ // Should never invoke length getter
+ assertEq(true, false);
+ },
+ });
+
+ let x = [1, 2].concat(value);
+ assertDeepEq(x, [1, 2, value]);
+
+ delete prototype[Symbol.isConcatSpreadable];
+ delete prototype.length;
+
+ prototype.length;
+}
+
+reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/fill.js b/js/src/tests/ecma_6/Array/fill.js
new file mode 100644
index 000000000..70f1e0b52
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/fill.js
@@ -0,0 +1,97 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 911147;
+var summary = 'Array.prototype.fill';
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+assertEq(typeof [].fill, 'function');
+assertEq([].fill.length, 1);
+
+// Default values for arguments and absolute values for negative start and end
+// arguments are resolved correctly.
+assertDeepEq([].fill(1), []);
+assertDeepEq([1,1,1].fill(2), [2,2,2]);
+assertDeepEq([1,1,1].fill(2, 1), [1,2,2]);
+assertDeepEq([1,1,1].fill(2, 1, 2), [1,2,1]);
+assertDeepEq([1,1,1].fill(2, -2), [1,2,2]);
+assertDeepEq([1,1,1].fill(2, -2, -1), [1,2,1]);
+assertDeepEq([1,1,1].fill(2, undefined), [2,2,2]);
+assertDeepEq([1,1,1].fill(2, undefined, undefined), [2,2,2]);
+assertDeepEq([1,1,1].fill(2, 1, undefined), [1,2,2]);
+assertDeepEq([1,1,1].fill(2, undefined, 1), [2,1,1]);
+assertDeepEq([1,1,1].fill(2, 2, 1), [1,1,1]);
+assertDeepEq([1,1,1].fill(2, -1, 1), [1,1,1]);
+assertDeepEq([1,1,1].fill(2, -2, 1), [1,1,1]);
+assertDeepEq([1,1,1].fill(2, 1, -2), [1,1,1]);
+assertDeepEq([1,1,1].fill(2, 0.1), [2,2,2]);
+assertDeepEq([1,1,1].fill(2, 0.9), [2,2,2]);
+assertDeepEq([1,1,1].fill(2, 1.1), [1,2,2]);
+assertDeepEq([1,1,1].fill(2, 0.1, 0.9), [1,1,1]);
+assertDeepEq([1,1,1].fill(2, 0.1, 1.9), [2,1,1]);
+assertDeepEq([1,1,1].fill(2, 0.1, 1.9), [2,1,1]);
+assertDeepEq([1,1,1].fill(2, -0), [2,2,2]);
+assertDeepEq([1,1,1].fill(2, 0, -0), [1,1,1]);
+assertDeepEq([1,1,1].fill(2, NaN), [2,2,2]);
+assertDeepEq([1,1,1].fill(2, 0, NaN), [1,1,1]);
+assertDeepEq([1,1,1].fill(2, false), [2,2,2]);
+assertDeepEq([1,1,1].fill(2, true), [1,2,2]);
+assertDeepEq([1,1,1].fill(2, "0"), [2,2,2]);
+assertDeepEq([1,1,1].fill(2, "1"), [1,2,2]);
+assertDeepEq([1,1,1].fill(2, "-2"), [1,2,2]);
+assertDeepEq([1,1,1].fill(2, "-2", "-1"), [1,2,1]);
+assertDeepEq([1,1,1].fill(2, {valueOf: ()=>1}), [1,2,2]);
+assertDeepEq([1,1,1].fill(2, 0, {valueOf: ()=>1}), [2,1,1]);
+
+// fill works generically for objects, too.
+assertDeepEq([].fill.call({length: 2}, 2), {0: 2, 1: 2, length: 2});
+
+var setterCalled = false;
+var objWithSetter = {set "0"(val) { setterCalled = true}, length: 1};
+[].fill.call(objWithSetter, 2);
+assertEq(setterCalled, true);
+
+var setHandlerCallCount = 0;
+var proxy = new Proxy({length: 3}, {set(t, i, v, r) { setHandlerCallCount++; return true; }});
+[].fill.call(proxy, 2);
+assertEq(setHandlerCallCount, 3);
+
+var valueOfCallCount = 0;
+var typedArray = new Uint8ClampedArray(3);
+[].fill.call(typedArray, {valueOf: function() {valueOfCallCount++; return 2000;}});
+assertEq(valueOfCallCount, 3);
+assertEq(typedArray[0], 0xff);
+
+// All remaining cases should throw.
+var objWithGetterOnly = {get "0"() {return 1;}, length: 1};
+
+var objWithReadOnlyProp = {length: 1};
+Object.defineProperty(objWithReadOnlyProp, 0, {value: 1, writable: false});
+
+var objWithNonconfigurableProp = {length: 1};
+Object.defineProperty(objWithNonconfigurableProp, 0, {value: 1, configurable: false});
+
+var frozenObj = {length: 1};
+Object.freeze(frozenObj);
+
+var frozenArray = [1, 1, 1];
+Object.freeze(frozenArray);
+
+assertThrowsInstanceOf(() => [].fill.call(objWithGetterOnly, 2), TypeError);
+assertThrowsInstanceOf(() => [].fill.call(objWithReadOnlyProp, 2), TypeError);
+assertThrowsInstanceOf(() => [].fill.call(objWithNonconfigurableProp, 2), TypeError);
+assertThrowsInstanceOf(() => [].fill.call(frozenObj, 2), TypeError);
+assertThrowsInstanceOf(() => [].fill.call(frozenArray, 2), TypeError);
+assertThrowsInstanceOf(() => [].fill.call("111", 2), TypeError);
+assertThrowsInstanceOf(() => [].fill.call(null, 2), TypeError);
+assertThrowsInstanceOf(() => [].fill.call(undefined, 2), TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/find_findindex.js b/js/src/tests/ecma_6/Array/find_findindex.js
new file mode 100644
index 000000000..6e32ea6b0
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/find_findindex.js
@@ -0,0 +1,285 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 885553;
+var summary = 'Array.prototype.find and Array.prototype.findIndex';
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function isString(v, index, array)
+{
+ assertEq(array[index], v);
+ return typeof v == 'string';
+}
+
+function dumpError(e)
+{
+ var s = e.name + ': ' + e.message +
+ ' File: ' + e.fileName +
+ ', Line: ' + e.lineNumber +
+ ', Stack: ' + e.stack;
+ return s;
+}
+
+var expect;
+var actual;
+var obj;
+
+var strings = ['hello', 'Array', 'WORLD'];
+var mixed = [0, '1', 2];
+var sparsestrings = new Array();
+sparsestrings[2] = 'sparse';
+var arraylike = {0:0, 1:'string', 2:2, length:3};
+// array for which JSObject::isIndexed() holds.
+var indexedArray = [];
+Object.defineProperty(indexedArray, 42, { get: function() { return 42; } });
+Object.defineProperty(indexedArray, 142, { get: function() { return 'string'; } });
+
+// find and findIndex have 1 required argument
+
+expect = 1;
+actual = Array.prototype.find.length;
+reportCompare(expect, actual, 'Array.prototype.find.length == 1');
+actual = Array.prototype.findIndex.length;
+reportCompare(expect, actual, 'Array.prototype.findIndex.length == 1');
+
+// throw TypeError if no predicate specified
+expect = 'TypeError';
+try
+{
+ strings.find();
+ actual = 'no error';
+}
+catch(e)
+{
+ actual = e.name;
+}
+reportCompare(expect, actual, 'Array.find(undefined) throws TypeError');
+try
+{
+ strings.findIndex();
+ actual = 'no error';
+}
+catch(e)
+{
+ actual = e.name;
+}
+reportCompare(expect, actual, 'Array.findIndex(undefined) throws TypeError');
+
+// Length gets treated as integer, not uint32
+obj = { length: -4294967295, 0: 42 };
+expected = undefined;
+actual = Array.prototype.find.call(obj, () => true);
+reportCompare(expected, actual, 'find correctly treats "length" as an integer');
+expected = -1
+actual = Array.prototype.findIndex.call(obj, () => true);
+reportCompare(expected, actual, 'findIndex correctly treats "length" as an integer');
+
+// test find and findIndex results
+try
+{
+ expect = 'hello';
+ actual = strings.find(isString);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, 'strings: find finds first string element');
+
+try
+{
+ expect = 0;
+ actual = strings.findIndex(isString);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, 'strings: findIndex finds first string element');
+
+try
+{
+ expect = '1';
+ actual = mixed.find(isString);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, 'mixed: find finds first string element');
+
+try
+{
+ expect = 1;
+ actual = mixed.findIndex(isString);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, 'mixed: findIndex finds first string element');
+
+try
+{
+ expect = 'sparse';
+ actual = sparsestrings.find(isString);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, 'sparsestrings: find finds first string element');
+
+try
+{
+ expect = 2;
+ actual = sparsestrings.findIndex(isString);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, 'sparsestrings: findIndex finds first string element');
+
+try
+{
+ expect = 'string';
+ actual = [].find.call(arraylike, isString);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, 'arraylike: find finds first string element');
+
+try
+{
+ expect = 1;
+ actual = [].findIndex.call(arraylike, isString);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, 'arraylike: findIndex finds first string element');
+
+try
+{
+ expect = 1;
+ actual = 0;
+ Array.prototype.find.call({get 0(){ actual++ }, length: 1}, ()=>true);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, 'arraylike with getter: getter only called once');
+
+try
+{
+ expect = 'string';
+ actual = [].find.call(indexedArray, isString);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, 'indexedArray: find finds first string element');
+
+try
+{
+ expect = 142;
+ actual = [].findIndex.call(indexedArray, isString);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, 'indexedArray: findIndex finds first string element');
+
+// Bug 1058394 - Array#find and Array#findIndex no longer skip holes
+var sparseArray = [,,1];
+var sparseArrayWithInheritedDataProperty = Object.setPrototypeOf([,,1], {
+ __proto__: [].__proto__,
+ 0 : 0
+});
+var sparseArrayWithInheritedAccessorProperty = Object.setPrototypeOf([,,1], {
+ __proto__: [].__proto__,
+ get 0(){
+ throw "get 0";
+ }
+});
+
+try
+{
+ expect = undefined;
+ actual = sparseArray.find(() => true);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, "Don't skip holes in Array#find.");
+
+try
+{
+ expect = 0;
+ actual = sparseArray.findIndex(() => true);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, "Don't skip holes in Array#findIndex.");
+
+try
+{
+ expect = 0;
+ actual = sparseArrayWithInheritedDataProperty.find(v => v === 0);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, "Array#find can find inherited data property.");
+
+try
+{
+ expect = 0;
+ actual = sparseArrayWithInheritedDataProperty.findIndex(v => v === 0);
+}
+catch(e)
+{
+ actual = dumpError(e);
+}
+reportCompare(expect, actual, "Array#findIndex can find inherited data property.");
+
+try
+{
+ expect = "get 0";
+ actual = sparseArrayWithInheritedAccessorProperty.find(() => true);
+}
+catch(e)
+{
+ actual = e;
+}
+reportCompare(expect, actual, "Array#find can find inherited accessor property.");
+
+try
+{
+ expect = "get 0";
+ actual = sparseArrayWithInheritedAccessorProperty.findIndex(() => true);
+}
+catch(e)
+{
+ actual = e;
+}
+reportCompare(expect, actual, "Array#findIndex can find inherited accessor property.");
diff --git a/js/src/tests/ecma_6/Array/for_of_1.js b/js/src/tests/ecma_6/Array/for_of_1.js
new file mode 100644
index 000000000..0233c1d27
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/for_of_1.js
@@ -0,0 +1,138 @@
+// Test corner cases of for-of iteration over Arrays.
+// The current SetObject::construct method uses a ForOfIterator to extract
+// values from the array, so we use that mechanism to test ForOfIterator here.
+
+// Test the properties and prototype of a generator object.
+function TestManySmallArrays() {
+ function doIter(f, arr) {
+ return f(...new Set(arr));
+ }
+
+ function fun(a, b, c) {
+ var result = 0;
+ for (var i = 0; i < arguments.length; i++)
+ result += arguments[i];
+ return result;
+ }
+
+
+ var TRUE_SUM = 0;
+ var N = 100;
+ var M = 3;
+ var sum = 0;
+ for (var i = 0; i < N; i++) {
+ var arr = new Array(M);
+ for (var j = 0; j < M; j++) {
+ arr[j] = j;
+ TRUE_SUM += j;
+ }
+ sum += doIter(fun, arr);
+ }
+ assertEq(sum, TRUE_SUM);
+}
+TestManySmallArrays();
+
+// Test the properties and prototype of a generator object.
+function TestSingleSmallArray() {
+ function doIter(f, arr) {
+ return f(...new Set(arr));
+ }
+
+ function fun(a, b, c) {
+ var result = 0;
+ for (var i = 0; i < arguments.length; i++)
+ result += arguments[i];
+ return result;
+ }
+
+
+ var TRUE_SUM = 0;
+ var N = 100;
+ var M = 3;
+ var arr = new Array(M);
+ for (var j = 0; j < M; j++) {
+ arr[j] = j;
+ TRUE_SUM += j;
+ }
+ TRUE_SUM *= N;
+
+ var sum = 0;
+ for (var i = 0; i < N; i++) {
+ sum += doIter(fun, arr);
+ }
+ assertEq(sum, TRUE_SUM);
+}
+TestSingleSmallArray();
+
+
+function TestChangeArrayPrototype() {
+ function doIter(f, arr) {
+ return f(...new Set(arr));
+ }
+
+ function fun(a, b, c) {
+ var result = 0;
+ for (var i = 0; i < arguments.length; i++)
+ result += arguments[i];
+ return result;
+ }
+
+ var Proto1 = Object.create(Array.prototype);
+
+ var TRUE_SUM = 0;
+ var N = 100;
+ var MID = N/2;
+ var M = 3;
+ var arr = new Array(M);
+ var ARR_SUM = 0;
+ for (var j = 0; j < M; j++) {
+ arr[j] = j;
+ ARR_SUM += j;
+ }
+
+ var sum = 0;
+ for (var i = 0; i < N; i++) {
+ sum += doIter(fun, arr);
+ if (i == MID)
+ arr.__proto__ = Proto1;
+ TRUE_SUM += ARR_SUM;
+ }
+ assertEq(sum, TRUE_SUM);
+}
+TestChangeArrayPrototype();
+
+
+function TestChangeManyArrayShape() {
+ function doIter(f, arr) {
+ return f(...new Set(arr));
+ }
+
+ function fun(a, b, c) {
+ var result = 0;
+ for (var i = 0; i < arguments.length; i++)
+ result += arguments[i];
+ return result;
+ }
+
+ var TRUE_SUM = 0;
+ var N = 100;
+ var MID = N/2;
+ var M = 3;
+ var sum = 0;
+ for (var i = 0; i < N; i++) {
+ var arr = new Array(M);
+ var ARR_SUM = 0;
+ for (var j = 0; j < M; j++) {
+ arr[j] = j;
+ ARR_SUM += j;
+ }
+ arr['v_' + i] = i;
+ sum += doIter(fun, arr);
+ TRUE_SUM += ARR_SUM;
+ }
+ assertEq(sum, TRUE_SUM);
+}
+TestChangeManyArrayShape();
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/for_of_2.js b/js/src/tests/ecma_6/Array/for_of_2.js
new file mode 100644
index 000000000..1d5dd81fc
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/for_of_2.js
@@ -0,0 +1,58 @@
+// Test corner cases of for-of iteration over Arrays.
+// The current SetObject::construct method uses a ForOfIterator to extract
+// values from the array, so we use that mechanism to test ForOfIterator here.
+
+//
+// Check case where ArrayIterator.prototype.next changes in the middle of iteration.
+//
+function TestChangeArrayIteratorNext() {
+ function doIter(f, arr) {
+ return f(...new Set(arr));
+ }
+
+ function fun(a, b, c) {
+ var result = 0;
+ for (var i = 0; i < arguments.length; i++)
+ result += arguments[i];
+ return result;
+ }
+
+ var GET_COUNT = 0;
+ function getter() {
+ GET_COUNT++;
+ if (GET_COUNT == MID)
+ iterProto.next = NewNext;
+ return M2;
+ }
+
+ var iter = ([])[Symbol.iterator]();
+ var iterProto = Object.getPrototypeOf(iter);
+ var OldNext = iterProto.next;
+ var NewNext = function () {
+ return OldNext.apply(this, arguments);
+ };
+
+ var TRUE_SUM = 0;
+ var N = 100;
+ var MID = N/2;
+ var M = 3;
+ var arr = new Array(M);
+ var ARR_SUM = 0;
+ for (var j = 0; j < M; j++) {
+ arr[j] = j;
+ ARR_SUM += j;
+ }
+ var M2 = (M/2)|0;
+ Object.defineProperty(arr, M2, {'get':getter});
+
+ var sum = 0;
+ for (var i = 0; i < N; i++) {
+ sum += doIter(fun, arr);
+ TRUE_SUM += ARR_SUM;
+ }
+ assertEq(sum, TRUE_SUM);
+}
+TestChangeArrayIteratorNext();
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/for_of_3.js b/js/src/tests/ecma_6/Array/for_of_3.js
new file mode 100644
index 000000000..c90eb1f00
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/for_of_3.js
@@ -0,0 +1,60 @@
+// Test corner cases of for-of iteration over Arrays.
+// The current SetObject::construct method uses a ForOfIterator to extract
+// values from the array, so we use that mechanism to test ForOfIterator here.
+
+//
+// Check array length increases changes during iteration.
+//
+function TestIncreaseArrayLength() {
+ function doIter(f, arr) {
+ return f(...new Set(arr));
+ }
+
+ function fun(a, b, c) {
+ var result = 0;
+ for (var i = 0; i < arguments.length; i++)
+ result += arguments[i];
+ return result;
+ }
+
+ var GET_COUNT = 0;
+ function getter() {
+ GET_COUNT++;
+ if (GET_COUNT == MID) {
+ ARR_SUM += arr.length;
+ arr.push(arr.length);
+ }
+ return M2;
+ }
+
+ var iter = ([])[Symbol.iterator]();
+ var iterProto = Object.getPrototypeOf(iter);
+ var OldNext = iterProto.next;
+ var NewNext = function () {
+ return OldNext.apply(this, arguments);
+ };
+
+ var TRUE_SUM = 0;
+ var N = 100;
+ var MID = N/2;
+ var M = 3;
+ var arr = new Array(M);
+ var ARR_SUM = 0;
+ for (var j = 0; j < M; j++) {
+ arr[j] = j;
+ ARR_SUM += j;
+ }
+ var M2 = (M/2)|0;
+ Object.defineProperty(arr, M2, {'get':getter});
+
+ var sum = 0;
+ for (var i = 0; i < N; i++) {
+ sum += doIter(fun, arr);
+ TRUE_SUM += ARR_SUM;
+ }
+ assertEq(sum, TRUE_SUM);
+}
+TestIncreaseArrayLength();
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/for_of_4.js b/js/src/tests/ecma_6/Array/for_of_4.js
new file mode 100644
index 000000000..4572727a1
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/for_of_4.js
@@ -0,0 +1,64 @@
+// Test corner cases of for-of iteration over Arrays.
+// The current SetObject::construct method uses a ForOfIterator to extract
+// values from the array, so we use that mechanism to test ForOfIterator here.
+
+//
+// Check array length decreases changes during iteration.
+//
+function TestDecreaseArrayLength() {
+ function doIter(f, arr) {
+ return f(...new Set(arr));
+ }
+
+ function fun(a, b, c) {
+ var result = 0;
+ for (var i = 0; i < arguments.length; i++)
+ result += arguments[i];
+ return result;
+ }
+
+ var GET_COUNT = 0;
+ function getter() {
+ GET_COUNT++;
+ if (GET_COUNT == MID) {
+ arr.length = 0;
+ }
+ return M2;
+ }
+
+ var iter = ([])[Symbol.iterator]();
+ var iterProto = Object.getPrototypeOf(iter);
+ var OldNext = iterProto.next;
+ var NewNext = function () {
+ return OldNext.apply(this, arguments);
+ };
+
+ var TRUE_SUM = 0;
+ var N = 100;
+ var MID = N/2;
+ var M = 3;
+ var arr = new Array(M);
+ var ARR_SUM = 0;
+ for (var j = 0; j < M; j++) {
+ arr[j] = j;
+ ARR_SUM += j;
+ }
+ var M2 = (M/2)|0;
+ Object.defineProperty(arr, M2, {'get':getter});
+
+ var sum = 0;
+ for (var i = 0; i < N; i++) {
+ var oldLen = arr.length;
+ sum += doIter(fun, arr);
+ var newLen = arr.length;
+ if (oldLen == newLen)
+ TRUE_SUM += arr.length > 0 ? ARR_SUM : 0;
+ else
+ TRUE_SUM += 1
+ }
+ assertEq(sum, TRUE_SUM);
+}
+TestDecreaseArrayLength();
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/from_basics.js b/js/src/tests/ecma_6/Array/from_basics.js
new file mode 100644
index 000000000..623207a41
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/from_basics.js
@@ -0,0 +1,51 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Array.from copies arrays.
+var src = [1, 2, 3], copy = Array.from(src);
+assertEq(copy === src, false);
+assertEq(Array.isArray(copy), true);
+assertDeepEq(copy, src);
+
+// Non-element properties are not copied.
+var a = [0, 1];
+a.name = "lisa";
+assertDeepEq(Array.from(a), [0, 1]);
+
+// It's a shallow copy.
+src = [[0], [1]];
+copy = Array.from(src);
+assertEq(copy[0], src[0]);
+assertEq(copy[1], src[1]);
+
+// Array.from can copy non-iterable objects, if they're array-like.
+src = {0: "zero", 1: "one", length: 2};
+copy = Array.from(src);
+assertEq(Array.isArray(copy), true);
+assertDeepEq(copy, ["zero", "one"]);
+
+// Properties past the .length are not copied.
+src = {0: "zero", 1: "one", 2: "two", 9: "nine", name: "lisa", length: 2};
+assertDeepEq(Array.from(src), ["zero", "one"]);
+
+// If an object has neither an @@iterator method nor .length,
+// then it's treated as zero-length.
+assertDeepEq(Array.from({}), []);
+
+// Source object property order doesn't matter.
+src = {length: 2, 1: "last", 0: "first"};
+assertDeepEq(Array.from(src), ["first", "last"]);
+
+// Array.from does not preserve holes.
+assertDeepEq(Array.from(Array(3)), [undefined, undefined, undefined]);
+assertDeepEq(Array.from([, , 2, 3]), [undefined, undefined, 2, 3]);
+assertDeepEq(Array.from([0, , , ,]), [0, undefined, undefined, undefined]);
+
+// Even on non-iterable objects.
+assertDeepEq(Array.from({length: 4}), [undefined, undefined, undefined, undefined]);
+
+// Array.from should coerce negative lengths to zero.
+assertDeepEq(Array.from({length: -1}), []);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/from_constructor.js b/js/src/tests/ecma_6/Array/from_constructor.js
new file mode 100644
index 000000000..6846ef09a
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/from_constructor.js
@@ -0,0 +1,56 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Array.from can be applied to any constructor.
+// For example, the Date builtin constructor.
+var d = Array.from.call(Date, ["A", "B"]);
+assertEq(Array.isArray(d), false);
+assertEq(Object.prototype.toString.call(d), "[object Date]");
+assertEq(Object.getPrototypeOf(d), Date.prototype);
+assertEq(d.length, 2);
+assertEq(d[0], "A");
+assertEq(d[1], "B");
+
+// Or Object.
+var obj = Array.from.call(Object, []);
+assertEq(Array.isArray(obj), false);
+assertEq(Object.getPrototypeOf(obj), Object.prototype);
+assertEq(Object.getOwnPropertyNames(obj).join(","), "length");
+assertEq(obj.length, 0);
+
+// Or any JS function.
+function C(arg) {
+ this.args = arguments;
+}
+var c = Array.from.call(C, {length: 1, 0: "zero"});
+assertEq(c instanceof C, true);
+assertEq(c.args.length, 1);
+assertEq(c.args[0], 1);
+assertEq(c.length, 1);
+assertEq(c[0], "zero");
+
+// If the 'this' value passed to Array.from is not a constructor,
+// a plain Array is created.
+var arr = [3, 4, 5];
+var nonconstructors = [
+ {}, Math, Object.getPrototypeOf, undefined, 17,
+ () => ({}) // arrow functions are not constructors
+];
+for (var v of nonconstructors) {
+ obj = Array.from.call(v, arr);
+ assertEq(Array.isArray(obj), true);
+ assertDeepEq(obj, arr);
+}
+
+// Array.from does not get confused if global.Array is replaced with another
+// constructor.
+function NotArray() {
+}
+var RealArray = Array;
+NotArray.from = Array.from;
+Array = NotArray;
+assertEq(RealArray.from([1]) instanceof RealArray, true);
+assertEq(NotArray.from([1]) instanceof NotArray, true);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/from_errors.js b/js/src/tests/ecma_6/Array/from_errors.js
new file mode 100644
index 000000000..cbf0eb195
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/from_errors.js
@@ -0,0 +1,152 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Array.from throws if the argument is undefined or null.
+assertThrowsInstanceOf(() => Array.from(), TypeError);
+assertThrowsInstanceOf(() => Array.from(undefined), TypeError);
+assertThrowsInstanceOf(() => Array.from(null), TypeError);
+
+// Array.from throws if an element can't be defined on the new object.
+function ObjectWithReadOnlyElement() {
+ Object.defineProperty(this, "0", {value: null});
+ this.length = 0;
+}
+ObjectWithReadOnlyElement.from = Array.from;
+assertDeepEq(ObjectWithReadOnlyElement.from([]), new ObjectWithReadOnlyElement);
+assertThrowsInstanceOf(() => ObjectWithReadOnlyElement.from([1]), TypeError);
+
+// The same, but via preventExtensions.
+function InextensibleObject() {
+ Object.preventExtensions(this);
+}
+InextensibleObject.from = Array.from;
+assertThrowsInstanceOf(() => InextensibleObject.from([1]), TypeError);
+
+// We will now test this property, that Array.from throws if the .length can't
+// be assigned, using several different kinds of object.
+var obj;
+function init(self) {
+ obj = self;
+ self[0] = self[1] = self[2] = self[3] = 0;
+}
+
+function testUnsettableLength(C, Exc) {
+ if (Exc === undefined)
+ Exc = TypeError; // the usual expected exception type
+ C.from = Array.from;
+
+ obj = null;
+ assertThrowsInstanceOf(() => C.from([]), Exc);
+ assertEq(obj instanceof C, true);
+ for (var i = 0; i < 4; i++)
+ assertEq(obj[0], 0);
+
+ obj = null;
+ assertThrowsInstanceOf(() => C.from([0, 10, 20, 30]), Exc);
+ assertEq(obj instanceof C, true);
+ for (var i = 0; i < 4; i++)
+ assertEq(obj[i], i * 10);
+}
+
+// Array.from throws if the new object's .length can't be assigned because
+// there is no .length and the object is inextensible.
+function InextensibleObject4() {
+ init(this);
+ Object.preventExtensions(this);
+}
+testUnsettableLength(InextensibleObject4);
+
+// Array.from throws if the new object's .length can't be assigned because it's
+// read-only.
+function ObjectWithReadOnlyLength() {
+ init(this);
+ Object.defineProperty(this, "length", {configurable: true, writable: false, value: 4});
+}
+testUnsettableLength(ObjectWithReadOnlyLength);
+
+// The same, but using a builtin type.
+Uint8Array.from = Array.from;
+assertThrowsInstanceOf(() => Uint8Array.from([]), TypeError);
+
+// Array.from throws if the new object's .length can't be assigned because it
+// inherits a readonly .length along the prototype chain.
+function ObjectWithInheritedReadOnlyLength() {
+ init(this);
+}
+Object.defineProperty(ObjectWithInheritedReadOnlyLength.prototype,
+ "length",
+ {configurable: true, writable: false, value: 4});
+testUnsettableLength(ObjectWithInheritedReadOnlyLength);
+
+// The same, but using an object with a .length getter but no setter.
+function ObjectWithGetterOnlyLength() {
+ init(this);
+ Object.defineProperty(this, "length", {configurable: true, get: () => 4});
+}
+testUnsettableLength(ObjectWithGetterOnlyLength);
+
+// The same, but with a setter that throws.
+function ObjectWithThrowingLengthSetter() {
+ init(this);
+ Object.defineProperty(this, "length", {
+ configurable: true,
+ get: () => 4,
+ set: () => { throw new RangeError("surprise!"); }
+ });
+}
+testUnsettableLength(ObjectWithThrowingLengthSetter, RangeError);
+
+// Array.from throws if mapfn is neither callable nor undefined.
+assertThrowsInstanceOf(() => Array.from([3, 4, 5], {}), TypeError);
+assertThrowsInstanceOf(() => Array.from([3, 4, 5], "also not a function"), TypeError);
+assertThrowsInstanceOf(() => Array.from([3, 4, 5], null), TypeError);
+
+// Even if the function would not have been called.
+assertThrowsInstanceOf(() => Array.from([], JSON), TypeError);
+
+// If mapfn is not undefined and not callable, the error happens before anything else.
+// Before calling the constructor, before touching the arrayLike.
+var log = "";
+function C() {
+ log += "C";
+ obj = this;
+}
+var p = new Proxy({}, {
+ has: function () { log += "1"; },
+ get: function () { log += "2"; },
+ getOwnPropertyDescriptor: function () { log += "3"; }
+});
+assertThrowsInstanceOf(() => Array.from.call(C, p, {}), TypeError);
+assertEq(log, "");
+
+// If mapfn throws, the new object has already been created.
+var arrayish = {
+ get length() { log += "l"; return 1; },
+ get 0() { log += "0"; return "q"; }
+};
+log = "";
+var exc = {surprise: "ponies"};
+assertThrowsValue(() => Array.from.call(C, arrayish, () => { throw exc; }), exc);
+assertEq(log, "lC0");
+assertEq(obj instanceof C, true);
+
+// It's a TypeError if the @@iterator property is a primitive (except null and undefined).
+for (var primitive of ["foo", 17, Symbol(), true]) {
+ assertThrowsInstanceOf(() => Array.from({[Symbol.iterator] : primitive}), TypeError);
+}
+assertDeepEq(Array.from({[Symbol.iterator]: null}), []);
+assertDeepEq(Array.from({[Symbol.iterator]: undefined}), []);
+
+// It's a TypeError if the iterator's .next() method returns a primitive.
+for (var primitive of [undefined, null, 17]) {
+ assertThrowsInstanceOf(
+ () => Array.from({
+ [Symbol.iterator]() {
+ return {next() { return primitive; }};
+ }
+ }),
+ TypeError);
+}
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/from_iterable.js b/js/src/tests/ecma_6/Array/from_iterable.js
new file mode 100644
index 000000000..568181961
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/from_iterable.js
@@ -0,0 +1,50 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Array.from works on arguments objects.
+(function () {
+ assertDeepEq(Array.from(arguments), ["arg0", "arg1", undefined]);
+})("arg0", "arg1", undefined);
+
+// If an object has both .length and [@@iterator] properties, [@@iterator] is used.
+var a = ['a', 'e', 'i', 'o', 'u'];
+a[Symbol.iterator] = function* () {
+ for (var i = 5; i--; )
+ yield this[i];
+};
+
+var log = '';
+function f(x) {
+ log += x;
+ return x + x;
+}
+
+var b = Array.from(a, f);
+assertDeepEq(b, ['uu', 'oo', 'ii', 'ee', 'aa']);
+assertEq(log, 'uoiea');
+
+// In fact, if [@@iterator] is present, .length isn't queried at all.
+var pa = new Proxy(a, {
+ has: function (target, id) {
+ if (id === "length")
+ throw new Error(".length should not be queried (has)");
+ return id in target;
+ },
+ get: function (target, id) {
+ if (id === "length")
+ throw new Error(".length should not be queried (get)");
+ return target[id];
+ },
+ getOwnPropertyDescriptor: function (target, id) {
+ if (id === "length")
+ throw new Error(".length should not be queried (getOwnPropertyDescriptor)");
+ return Object.getOwnPropertyDescriptor(target, id)
+ }
+});
+log = "";
+b = Array.from(pa, f);
+assertDeepEq(b, ['uu', 'oo', 'ii', 'ee', 'aa']);
+assertEq(log, 'uoiea');
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/from_length_setter.js b/js/src/tests/ecma_6/Array/from_length_setter.js
new file mode 100644
index 000000000..43f35f73e
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/from_length_setter.js
@@ -0,0 +1,13 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Array.from calls a length setter if present.
+var hits = 0;
+function C() {}
+C.prototype = {set length(v) { hits++; }};
+C.from = Array.from;
+var copy = C.from(["A", "B"]);
+assertEq(hits, 1);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/from_mapping.js b/js/src/tests/ecma_6/Array/from_mapping.js
new file mode 100644
index 000000000..568b9d6d7
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/from_mapping.js
@@ -0,0 +1,41 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// If the mapfn argument to Array.from is undefined, don't map.
+assertDeepEq(Array.from([3, 4, 5], undefined), [3, 4, 5]);
+assertDeepEq(Array.from([4, 5, 6], undefined, Math), [4, 5, 6]);
+
+// mapfn is called with two arguments: value and index.
+var log = [];
+function f() {
+ log.push(Array.from(arguments));
+ return log.length;
+}
+assertDeepEq(Array.from(['a', 'e', 'i', 'o', 'u'], f), [1, 2, 3, 4, 5]);
+assertDeepEq(log, [['a', 0], ['e', 1], ['i', 2], ['o', 3], ['u', 4]]);
+
+// If the object to be copied is non-iterable, mapfn is still called with two
+// arguments.
+log = [];
+assertDeepEq(Array.from({0: "zero", 1: "one", length: 2}, f), [1, 2]);
+assertDeepEq(log, [["zero", 0], ["one", 1]]);
+
+// If the object to be copied is iterable and the constructor is not Array,
+// mapfn is still called with two arguments.
+log = [];
+function C() {}
+C.from = Array.from;
+var c = new C;
+c[0] = 1;
+c[1] = 2;
+c.length = 2;
+assertDeepEq(C.from(["zero", "one"], f), c);
+assertDeepEq(log, [["zero", 0], ["one", 1]]);
+
+// The mapfn is called even if the value to be mapped is undefined.
+assertDeepEq(Array.from([0, 1, , 3], String), ["0", "1", "undefined", "3"]);
+var arraylike = {length: 4, "0": 0, "1": 1, "3": 3};
+assertDeepEq(Array.from(arraylike, String), ["0", "1", "undefined", "3"]);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/from_primitive.js b/js/src/tests/ecma_6/Array/from_primitive.js
new file mode 100644
index 000000000..e3f68d8bc
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/from_primitive.js
@@ -0,0 +1,21 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+for (let primitive of [true, 3.14, "hello", Symbol()]) {
+ let prototype = Object.getPrototypeOf(primitive);
+
+ Object.defineProperty(prototype, Symbol.iterator, {
+ configurable: true,
+ get() {
+ "use strict";
+ assertEq(this, primitive);
+ return () => [this][Symbol.iterator]();
+ },
+ });
+ assertEq(Array.from(primitive)[0], primitive);
+
+ delete prototype[Symbol.iterator];
+}
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/from_proxy.js b/js/src/tests/ecma_6/Array/from_proxy.js
new file mode 100644
index 000000000..c3c82d0b7
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/from_proxy.js
@@ -0,0 +1,55 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Two tests involving Array.from and a Proxy.
+var log = [];
+function LoggingProxy(target) {
+ var h = {
+ defineProperty: function (t, id) {
+ log.push("define", id);
+ return true;
+ },
+ has: function (t, id) {
+ log.push("has", id);
+ return id in t;
+ },
+ get: function (t, id) {
+ log.push("get", id);
+ return t[id];
+ },
+ set: function (t, id, v) {
+ log.push("set", id);
+ t[id] = v;
+ return true;
+ }
+ };
+ return new Proxy(target || [], h);
+}
+
+// When the new object created by Array.from is a Proxy,
+// Array.from calls handler.defineProperty to create new elements
+// but handler.set to set the length.
+LoggingProxy.from = Array.from;
+LoggingProxy.from([3, 4, 5]);
+assertDeepEq(log, ["define", "0", "define", "1", "define", "2", "set", "length"]);
+
+// When the argument passed to Array.from is a Proxy, Array.from
+// calls handler.get on it.
+log = [];
+assertDeepEq(Array.from(new LoggingProxy([3, 4, 5])), [3, 4, 5]);
+assertDeepEq(log, ["get", Symbol.iterator,
+ "get", "length", "get", "0",
+ "get", "length", "get", "1",
+ "get", "length", "get", "2",
+ "get", "length"]);
+
+// Array-like iteration only gets the length once.
+log = [];
+var arr = [5, 6, 7];
+arr[Symbol.iterator] = undefined;
+assertDeepEq(Array.from(new LoggingProxy(arr)), [5, 6, 7]);
+assertDeepEq(log, ["get", Symbol.iterator,
+ "get", "length", "get", "0", "get", "1", "get", "2"]);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/from_realms.js b/js/src/tests/ecma_6/Array/from_realms.js
new file mode 100644
index 000000000..e3a863606
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/from_realms.js
@@ -0,0 +1,37 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+if (typeof newGlobal === 'function') {
+ // G.Array.from, where G is any global, produces an array whose prototype
+ // is G.Array.prototype.
+ var g = newGlobal();
+ var ga = g.Array.from([1, 2, 3]);
+ assertEq(ga instanceof g.Array, true);
+
+ // Even if G.Array is not passed in as the 'this' value to the call.
+ var from = g.Array.from
+ var ga2 = from([1, 2, 3]);
+ assertEq(ga2 instanceof g.Array, true);
+
+ // Array.from can be applied to a constructor from another realm.
+ var p = Array.from.call(g.Array, [1, 2, 3]);
+ assertEq(p instanceof g.Array, true);
+ var q = g.Array.from.call(Array, [3, 4, 5]);
+ assertEq(q instanceof Array, true);
+
+ // The default 'this' value received by a non-strict mapping function is
+ // that function's global, not Array.from's global or the caller's global.
+ var h = newGlobal(), result = undefined;
+ h.mainGlobal = this;
+ h.eval("function f() { mainGlobal.result = this; }");
+ g.Array.from.call(Array, [5, 6, 7], h.f);
+ // (Give each global in the test a name, for better error messages. But use
+ // globalName, because window.name is complicated.)
+ this.globalName = "main";
+ g.globalName = "g";
+ h.globalName = "h";
+ assertEq(result.globalName, "h");
+}
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/from_string.js b/js/src/tests/ecma_6/Array/from_string.js
new file mode 100644
index 000000000..3ad19e253
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/from_string.js
@@ -0,0 +1,23 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Array.from on a string iterates over the string.
+assertDeepEq(Array.from("test string"),
+ ['t', 'e', 's', 't', ' ', 's', 't', 'r', 'i', 'n', 'g']);
+
+// Array.from on a string handles surrogate pairs correctly.
+var gclef = "\uD834\uDD1E"; // U+1D11E MUSICAL SYMBOL G CLEF
+assertDeepEq(Array.from(gclef), [gclef]);
+assertDeepEq(Array.from(gclef + " G"), [gclef, " ", "G"]);
+
+// Array.from on a string calls the @@iterator method.
+String.prototype[Symbol.iterator] = function* () { yield 1; yield 2; };
+assertDeepEq(Array.from("anything"), [1, 2]);
+
+// If the iterator method is deleted, Strings are still arraylike.
+delete String.prototype[Symbol.iterator];
+assertDeepEq(Array.from("works"), ['w', 'o', 'r', 'k', 's']);
+assertDeepEq(Array.from(gclef), ['\uD834', '\uDD1E']);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/from_surfaces.js b/js/src/tests/ecma_6/Array/from_surfaces.js
new file mode 100644
index 000000000..680b64817
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/from_surfaces.js
@@ -0,0 +1,13 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Check superficial features of Array.from.
+var desc = Object.getOwnPropertyDescriptor(Array, "from");
+assertEq(desc.configurable, true);
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, true);
+assertEq(Array.from.length, 1);
+assertThrowsInstanceOf(() => new Array.from(), TypeError); // not a constructor
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/from_this.js b/js/src/tests/ecma_6/Array/from_this.js
new file mode 100644
index 000000000..978c90b87
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/from_this.js
@@ -0,0 +1,48 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// The third argument to Array.from is passed as the 'this' value to the
+// mapping function.
+var hits = 0, obj = {};
+function f(x) {
+ assertEq(this, obj);
+ hits++;
+}
+Array.from(["a", "b", "c"], f, obj);
+assertEq(hits, 3);
+
+// Without an argument, undefined is passed...
+hits = 0;
+function gs(x) {
+ "use strict";
+ assertEq(this, undefined);
+ hits++;
+}
+Array.from("def", gs);
+assertEq(hits, 3);
+
+// ...and if the mapping function is non-strict, that means the global is
+// passed.
+var global = this;
+hits = 0;
+function g(x) {
+ assertEq(this, global);
+ hits++;
+}
+Array.from("ghi", g);
+assertEq(hits, 3);
+
+// A primitive value can be passed.
+for (var v of [0, "str", undefined]) {
+ hits = 0;
+ var mapfn = function h(x) {
+ "use strict";
+ assertEq(this, v);
+ hits++;
+ };
+ Array.from("pq", mapfn, v);
+ assertEq(hits, 2);
+}
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/getter-name.js b/js/src/tests/ecma_6/Array/getter-name.js
new file mode 100644
index 000000000..3829c729b
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/getter-name.js
@@ -0,0 +1,9 @@
+var BUGNUMBER = 1180290;
+var summary = 'Array getters should have get prefix';
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(Object.getOwnPropertyDescriptor(Array, Symbol.species).get.name, "get [Symbol.species]");
+
+if (typeof reportCompare === 'function')
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/indexOf-never-returns-negative-zero.js b/js/src/tests/ecma_6/Array/indexOf-never-returns-negative-zero.js
new file mode 100644
index 000000000..0b39bf0a1
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/indexOf-never-returns-negative-zero.js
@@ -0,0 +1,4 @@
+assertEq([17].indexOf(17, -0), +0);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/isArray.js b/js/src/tests/ecma_6/Array/isArray.js
new file mode 100644
index 000000000..b752ad54e
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/isArray.js
@@ -0,0 +1,67 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+var global = this;
+var otherGlobal = newGlobal();
+
+var thisGlobal = () => global;
+var alternateGlobals = (function(i) {
+ return () => (i++ % 2) === 0 ? global : otherGlobal;
+})(0);
+
+function performTests(pickGlobal)
+{
+ // Base case.
+ assertEq(Array.isArray([]), true);
+
+ // Simple case: proxy to an array.
+ var proxy = new (pickGlobal()).Proxy([], {});
+ assertEq(Array.isArray(proxy), true);
+
+ // Recursive proxy ultimately terminating in an array.
+ for (var i = 0; i < 10; i++) {
+ proxy = new (pickGlobal()).Proxy(proxy, {});
+ assertEq(Array.isArray(proxy), true);
+ }
+
+ // Revocable proxy to an array.
+ var revocable = (pickGlobal()).Proxy.revocable([], {});
+ proxy = revocable.proxy;
+ assertEq(Array.isArray(proxy), true);
+
+ // Recursive proxy ultimately terminating in a revocable proxy to an array.
+ for (var i = 0; i < 10; i++) {
+ proxy = new (pickGlobal()).Proxy(proxy, {});
+ assertEq(Array.isArray(proxy), true);
+ }
+
+ // Revoked proxy to (formerly) an array.
+ revocable.revoke();
+ assertThrowsInstanceOf(() => Array.isArray(revocable.proxy), TypeError);
+
+ // Recursive proxy ultimately terminating in a revoked proxy to an array.
+ assertThrowsInstanceOf(() => Array.isArray(proxy), TypeError);
+
+}
+
+performTests(thisGlobal);
+performTests(alternateGlobals);
+
+function crossGlobalTest()
+{
+ var array = new otherGlobal.Array();
+
+ // Array from another global.
+ assertEq(Array.isArray(array), true);
+
+ // Proxy to an array from another global.
+ assertEq(Array.isArray(new Proxy(array, {})), true);
+
+ // Other-global proxy to an array from that selfsame global.
+ assertEq(Array.isArray(new otherGlobal.Proxy(array, {})), true);
+}
+
+crossGlobalTest();
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/iterator_edge_cases.js b/js/src/tests/ecma_6/Array/iterator_edge_cases.js
new file mode 100644
index 000000000..156aaba5f
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/iterator_edge_cases.js
@@ -0,0 +1,50 @@
+// Test that we can't confuse %ArrayIteratorPrototype% for an
+// ArrayIterator object.
+function TestArrayIteratorPrototypeConfusion() {
+ var iter = [][Symbol.iterator]();
+ try {
+ iter.next.call(Object.getPrototypeOf(iter))
+ throw new Error("Call did not throw");
+ } catch (e) {
+ assertEq(e instanceof TypeError, true);
+ assertEq(e.message, "next method called on incompatible Array Iterator");
+ }
+}
+TestArrayIteratorPrototypeConfusion();
+
+// Tests that we can use %ArrayIteratorPrototype%.next on a
+// cross-compartment iterator.
+function TestArrayIteratorWrappers() {
+ var iter = [][Symbol.iterator]();
+ assertDeepEq(iter.next.call(newGlobal().eval('[5][Symbol.iterator]()')),
+ { value: 5, done: false })
+}
+if (typeof newGlobal === "function") {
+ TestArrayIteratorWrappers();
+}
+
+// Tests that calling |next| on an array iterator after iteration has finished
+// doesn't get the array's |length| property.
+function TestIteratorNextGetLength() {
+ var lengthCalledTimes = 0;
+ var array = {
+ __proto__: Array.prototype,
+ get length() {
+ lengthCalledTimes += 1;
+ return {
+ valueOf() {
+ return 0;
+ }
+ };
+ }
+ };
+ var it = array[Symbol.iterator]();
+ it.next();
+ it.next();
+ assertEq(1, lengthCalledTimes);
+}
+TestIteratorNextGetLength();
+
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/lastIndexOf-never-returns-negative-zero.js b/js/src/tests/ecma_6/Array/lastIndexOf-never-returns-negative-zero.js
new file mode 100644
index 000000000..296f87ec1
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/lastIndexOf-never-returns-negative-zero.js
@@ -0,0 +1,4 @@
+assertEq([17].lastIndexOf(17, -0), +0);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/shell.js b/js/src/tests/ecma_6/Array/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/shell.js
diff --git a/js/src/tests/ecma_6/Array/shift_for_in.js b/js/src/tests/ecma_6/Array/shift_for_in.js
new file mode 100644
index 000000000..1bbf2d9c2
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/shift_for_in.js
@@ -0,0 +1,13 @@
+var BUGNUMBER = 1247701;
+var summary = 'Array.prototype.shift on a dense array with holes should update for-in enumeration properties.';
+
+print(BUGNUMBER + ": " + summary);
+
+var x = ["a", , "b", , "c", "d" , "e", "f", "g"];
+for (var p in x) {
+ assertEq(p in x, true);
+ x.shift();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/sort_basics.js b/js/src/tests/ecma_6/Array/sort_basics.js
new file mode 100644
index 000000000..e3011e5c4
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/sort_basics.js
@@ -0,0 +1,46 @@
+// Note: failed runs should include their "SEED" value in error messages,
+// setting "const SEED" to that value will recreate the data from any such run.
+const SEED = (Math.random() * 10) + 1;
+
+// Create an array filled with random values, 'size' is the desired length of
+// the array and 'seed' is an initial value supplied to a pseudo-random number
+// generator.
+function genRandomArray(size, seed) {
+ return Array.from(XorShiftGenerator(seed, size));
+}
+
+function SortTest(size, seed) {
+ let arrOne = genRandomArray(size, seed);
+ let arrTwo = Array.from(arrOne);
+ let arrThree = Array.from(arrOne);
+ let typedArrays = [
+ new Uint8Array(arrOne),
+ new Int32Array(arrOne),
+ new Float32Array(arrOne)
+ ];
+
+ let sorted = Array.from((Int32Array.from(arrOne)).sort());
+
+ // Test numeric comparators against typed array sort.
+ assertDeepEq(sorted, arrTwo.sort((x, y) => (x - y)),
+ `The array is not properly sorted! seed: ${SEED}`);
+
+ // Use multiplication to kill comparator optimization and trigger
+ // self-hosted sorting.
+ assertDeepEq(sorted, arrThree.sort((x, y) => (1*x - 1*y)),
+ `The array is not properly sorted! seed: ${SEED}`);
+
+ // Ensure that typed arrays are also sorted property.
+ for (typedArr of typedArrays) {
+ let sortedTypedArray = Array.prototype.sort.call(typedArr, (x, y) => (1*x - 1*y))
+ assertDeepEq(sorted, Array.from(sortedTypedArray),
+ `The array is not properly sorted! seed: ${SEED}`);
+ }
+}
+
+SortTest(2048, SEED);
+SortTest(16, SEED);
+SortTest(0, SEED);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/sort_holes.js b/js/src/tests/ecma_6/Array/sort_holes.js
new file mode 100644
index 000000000..7424bd889
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/sort_holes.js
@@ -0,0 +1,66 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// We should preserve holes when sorting sparce arrays.
+// See bug: 1246860
+
+function denseCount(arr) {
+ var c = 0;
+ for (var i = 0; i < arr.length; i++)
+ if (i in arr)
+ c++;
+ return c;
+}
+
+let a = [,,,,,,,,,,,,,,,,,,,,{size: 1},{size: 2}];
+let b = [,,,,,,,,,,,,,,,,,,,,{size: 1},{size: 2}].sort();
+let c = [,,,,,,,,,,,,,,,,,,,,{size: 1},{size: 2}].sort((a, b) => {+a.size - +b.size});
+
+assertEq(a.length, 22);
+assertEq(denseCount(a), 2);
+assertEq(a.length, b.length);
+assertEq(b.length, c.length);
+assertEq(denseCount(a), denseCount(b));
+assertEq(denseCount(b), denseCount(c));
+
+let superSparce = new Array(5000);
+superSparce[0] = 99;
+superSparce[4000] = 0;
+superSparce[4999] = -1;
+
+assertEq(superSparce.length, 5000);
+assertEq(denseCount(superSparce), 3);
+
+superSparce.sort((a, b) => 1*a-b);
+assertEq(superSparce.length, 5000);
+assertEq(denseCount(superSparce), 3);
+assertEq(superSparce[0], -1);
+assertEq(superSparce[1], 0);
+assertEq(superSparce[2], 99);
+
+let allHoles = new Array(2600);
+assertEq(allHoles.length, 2600);
+assertEq(denseCount(allHoles), 0);
+allHoles.sort((a, b) => 1*a-b);
+assertEq(allHoles.length, 2600);
+assertEq(denseCount(allHoles), 0);
+
+let oneHole = new Array(2600);
+oneHole[1399] = {size: 27};
+assertEq(oneHole.length, 2600);
+assertEq(denseCount(oneHole), 1);
+oneHole.sort((a, b) => {+a.size - +b.size});
+assertDeepEq(oneHole[0], {size: 27});
+assertEq(oneHole.length, 2600);
+assertEq(denseCount(oneHole), 1);
+
+// Sealed objects should be sortable, including those with holes (so long
+// as the holes appear at the end, so that they don't need to be moved).
+assertDeepEq(Object.seal([0, 99, -1]).sort((x, y) => 1 * x - y),
+ Object.seal([-1, 0, 99]));
+
+assertDeepEq(Object.seal([1, 5, 4, , ,]).sort((x, y) => 1 * x - y),
+ Object.seal([1, 4, 5, , ,]));
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/sort_proxy.js b/js/src/tests/ecma_6/Array/sort_proxy.js
new file mode 100644
index 000000000..40ebb907b
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/sort_proxy.js
@@ -0,0 +1,38 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Ensure, via proxy, that only get, set, delete, has, and getOwnPropertyDescriptor
+// are touched during sorting.
+
+const handler = {
+ set: function(target, prop, value) {
+ target[prop] = value;
+ return value;
+ },
+ getPrototypeOf: () => { throw "You shouldn't touch getPrototypeOf!" },
+ setPrototypeOf: () => { throw "You shouldn't touch setPrototypeOf!" },
+ isExtensible: () => { throw "You shouldn't touch isExtensible!" },
+ preventExtensions: () => { throw "You shouldn't touch preventExtensions!" },
+ defineProperty: () => { throw "You shouldn't touch defineProperty!" },
+ ownKeys: () => { throw "You shouldn't touch ownKeys!" },
+ apply: () => { throw "You shouldn't touch apply!" },
+ construct: () => { throw "You shouldn't touch construct!" },
+}
+
+function testArray(arr) {
+ let proxy = new Proxy(arr, handler)
+
+ // The supplied comparators trigger a JavaScript implemented sort.
+ proxy.sort((x, y) => 1 * x - y);
+ arr.sort((x, y) => 1 * x - y);
+
+ for (let i in arr)
+ assertEq(arr[i], proxy[i]);
+}
+
+testArray([-1]);
+testArray([5, -1, 2, 99]);
+testArray([5, -1, , , , 2, 99]);
+testArray([]);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/sort_small.js b/js/src/tests/ecma_6/Array/sort_small.js
new file mode 100644
index 000000000..fa8b789e1
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/sort_small.js
@@ -0,0 +1,33 @@
+// Sort every possible permutation of some arrays.
+function sortAllPermutations(data, comparefn) {
+ for (let permutation of Permutations(Array.from(data))) {
+ let sorted = (Array.from(permutation)).sort(comparefn);
+ for (let i in sorted) {
+ assertEq(sorted[i], data[i],
+ [`[${permutation}].sort(${comparefn})`,
+ `returned ${sorted}, expected ${data}`].join(' '));
+ }
+ }
+}
+
+let lex = [2112, "bob", "is", "my", "name"];
+let nans = [1/undefined, NaN, Number.NaN]
+
+let num1 = [-11, 0, 0, 100, 101];
+let num2 = [-11, 100, 201234.23, undefined, undefined];
+
+sortAllPermutations(lex);
+sortAllPermutations(nans);
+
+sortAllPermutations(nans, (x, y) => x - y);
+// Multiplication kills comparator optimization.
+sortAllPermutations(nans, (x, y) => (1*x - 1*y));
+
+sortAllPermutations(num1, (x, y) => x - y);
+sortAllPermutations(num1, (x, y) => (1*x - 1*y));
+
+sortAllPermutations(num2, (x, y) => x - y);
+sortAllPermutations(num2, (x, y) => (1*x - 1*y));
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/species.js b/js/src/tests/ecma_6/Array/species.js
new file mode 100644
index 000000000..3669c286f
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/species.js
@@ -0,0 +1,182 @@
+var BUGNUMBER = 1165052;
+var summary = 'Use ArraySpeciesCreate in Array.prototype.{concat,filter,map,slice,splice}.';
+
+print(BUGNUMBER + ": " + summary);
+
+function test(funcName, args, expectedLength, expectedLogs) {
+ // modified @@species
+ function FakeArray(n) {
+ this.length = n;
+ }
+ var a = [1, 2, 3, 4, 5];
+ a.constructor = {
+ [Symbol.species]: FakeArray
+ };
+ var b = a[funcName](...args);
+ assertEq(b.constructor, FakeArray);
+
+ function FakeArrayWithSpecies(n) {
+ this.length = n;
+ }
+ FakeArrayWithSpecies[Symbol.species] = FakeArrayWithSpecies;
+ a = [1, 2, 3, 4, 5];
+ a.constructor = FakeArrayWithSpecies;
+ b = a[funcName](...args);
+ assertEq(b.constructor, FakeArrayWithSpecies);
+
+ function FakeArrayWithHook(n) {
+ return new Proxy(new FakeArray(n), {
+ set(that, name, value) {
+ logs += "set:" + name + ":" + value + ",";
+ return true;
+ },
+ defineProperty(that, name, desc) {
+ logs += "define:" + name + ":" + desc.value + ":" + desc.configurable + ":" + desc.enumerable + ":" + desc.writable + ",";
+ return true;
+ }
+ });
+ }
+ var logs = "";
+ var ctorProxy = new Proxy({}, {
+ get(that, name) {
+ logs += "c-get:" + name.toString() + ",";
+ if (name == Symbol.species)
+ return FakeArrayWithHook;
+
+ return undefined;
+ }
+ });
+ a = new Proxy([1, 2, 3, 4, 5], {
+ get(that, name) {
+ logs += "get:" + name.toString() + ",";
+ if (name == "constructor")
+ return ctorProxy;
+ return that[name];
+ }
+ });
+ b = a[funcName](...args);
+ assertEq(b.constructor, FakeArray);
+ assertEq(Object.keys(b).sort().join(","), "length");
+ assertEq(b.length, expectedLength);
+ assertEq(logs, expectedLogs);
+
+ // no @@species
+ a = [1, 2, 3, 4, 5];
+ a.constructor = FakeArray;
+ b = a[funcName](...args);
+ assertEq(b.constructor, Array);
+
+ a = [1, 2, 3, 4, 5];
+ a.constructor = {
+ [Symbol.species]: undefined
+ };
+ b = a[funcName](...args);
+ assertEq(b.constructor, Array);
+
+ a = [1, 2, 3, 4, 5];
+ a.constructor = {
+ [Symbol.species]: null
+ };
+ b = a[funcName](...args);
+ assertEq(b.constructor, Array);
+
+ // invalid @@species
+ for (var species of [0, 1.1, true, false, "a", /a/, Symbol.iterator, [], {}]) {
+ a = [1, 2, 3, 4, 5];
+ a.constructor = {
+ [Symbol.species]: species
+ };
+ assertThrowsInstanceOf(() => a[funcName](...args), TypeError);
+ }
+
+ // undefined constructor
+ a = [1, 2, 3, 4, 5];
+ a.constructor = undefined;
+ b = a[funcName](...args);
+ assertEq(b.constructor, Array);
+
+ // invalid constructor
+ for (var ctor of [null, 0, 1.1, true, false, "a", Symbol.iterator]) {
+ a = [1, 2, 3, 4, 5];
+ a.constructor = ctor;
+ assertThrowsInstanceOf(() => a[funcName](...args), TypeError);
+ }
+
+ // not an array
+ a = new Proxy({
+ 0: 1, 1: 2, 2: 3, 3: 4, 4: 5,
+ length: 5,
+ [funcName]: Array.prototype[funcName]
+ }, {
+ get(that, name) {
+ assertEq(name !== "constructor", true);
+ return that[name];
+ }
+ });
+ b = a[funcName](...args);
+ assertEq(b.constructor, Array);
+
+ // @@species from different global
+ var g = newGlobal();
+ g.eval("function FakeArray(n) { this.length = n; }");
+ a = [1, 2, 3, 4, 5];
+ a.constructor = {
+ [Symbol.species]: g.FakeArray
+ };
+ b = a[funcName](...args);
+ assertEq(b.constructor, g.FakeArray);
+
+ a = [1, 2, 3, 4, 5];
+ a.constructor = {
+ [Symbol.species]: g.Array
+ };
+ b = a[funcName](...args);
+ assertEq(b.constructor, g.Array);
+
+ // constructor from different global
+ g.eval("function FakeArrayWithSpecies(n) { this.length = n; }");
+ g.eval("FakeArrayWithSpecies[Symbol.species] = FakeArrayWithSpecies;");
+ a = [1, 2, 3, 4, 5];
+ a.constructor = g.FakeArrayWithSpecies;
+ b = a[funcName](...args);
+ assertEq(b.constructor, g.FakeArrayWithSpecies);
+
+ g.eval("var a = [1, 2, 3, 4, 5];");
+ b = Array.prototype[funcName].apply(g.a, args);
+ assertEq(b.constructor, Array);
+
+ // running in different global
+ b = g.a[funcName](...args);
+ assertEq(b.constructor, g.Array);
+
+ // subclasses
+ // not-modified @@species
+ eval(`
+class ${funcName}Class extends Array {
+}
+a = new ${funcName}Class(1, 2, 3, 4, 5);
+b = a[funcName](...args);
+assertEq(b.constructor, ${funcName}Class);
+`);
+
+ // modified @@species
+ eval(`
+class ${funcName}Class2 extends Array {
+ static get [Symbol.species]() {
+ return Date;
+ }
+}
+a = new ${funcName}Class2(1, 2, 3, 4, 5);
+b = a[funcName](...args);
+assertEq(b.constructor, Date);
+`);
+}
+
+test("concat", [], 0, "get:concat,get:constructor,c-get:Symbol(Symbol.species),get:Symbol(Symbol.isConcatSpreadable),get:length,get:0,define:0:1:true:true:true,get:1,define:1:2:true:true:true,get:2,define:2:3:true:true:true,get:3,define:3:4:true:true:true,get:4,define:4:5:true:true:true,set:length:5,");
+test("filter", [x => x % 2], 0, "get:filter,get:length,get:constructor,c-get:Symbol(Symbol.species),get:0,define:0:1:true:true:true,get:1,get:2,define:1:3:true:true:true,get:3,get:4,define:2:5:true:true:true,");
+test("map", [x => x * 2], 5, "get:map,get:length,get:constructor,c-get:Symbol(Symbol.species),get:0,define:0:2:true:true:true,get:1,define:1:4:true:true:true,get:2,define:2:6:true:true:true,get:3,define:3:8:true:true:true,get:4,define:4:10:true:true:true,");
+test("slice", [], 5, "get:slice,get:length,get:constructor,c-get:Symbol(Symbol.species),get:0,define:0:1:true:true:true,get:1,define:1:2:true:true:true,get:2,define:2:3:true:true:true,get:3,define:3:4:true:true:true,get:4,define:4:5:true:true:true,set:length:5,");
+test("splice", [0, 5], 5, "get:splice,get:length,get:constructor,c-get:Symbol(Symbol.species),get:0,define:0:1:true:true:true,get:1,define:1:2:true:true:true,get:2,define:2:3:true:true:true,get:3,define:3:4:true:true:true,get:4,define:4:5:true:true:true,set:length:5,");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/to-length.js b/js/src/tests/ecma_6/Array/to-length.js
new file mode 100644
index 000000000..d6b4c6d7c
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/to-length.js
@@ -0,0 +1,40 @@
+const max = Number.MAX_SAFE_INTEGER;
+
+assertEq(Array.prototype.indexOf.call({length: Infinity, [max - 1]: 'test'}, 'test', max - 3), max - 1);
+assertEq(Array.prototype.lastIndexOf.call({length: Infinity, [max - 2]: 'test', [max - 1]: 'test2'}, 'test'), max - 2);
+
+// ToLength doesn't truncate Infinity to zero, so the callback should be invoked
+assertThrowsValue(() => Array.prototype.every.call({length: Infinity, [0]: undefined}, () => { throw "invoked" }), "invoked");
+assertThrowsValue(() => Array.prototype.some.call({length: Infinity, [0]: undefined}, () => { throw "invoked" }), "invoked");
+// Timeout before calling our callback
+// assertThrowsValue(() => Array.prototype.sort.call({length: Infinity}, () => { throw "invoked" }), "invoked");
+assertThrowsValue(() => Array.prototype.forEach.call({length: Infinity, [0]: undefined}, () => { throw "invoked" }), "invoked");
+assertThrowsValue(() => Array.prototype.filter.call({length: Infinity, [0]: undefined}, () => { throw "invoked" }), "invoked");
+assertThrowsValue(() => Array.prototype.reduce.call({length: Infinity, [0]: undefined, [1]: undefined}, () => { throw "invoked" }), "invoked");
+assertThrowsValue(() => Array.prototype.reduceRight.call({length: Infinity, [max - 1]: undefined, [max - 2]: undefined}, () => { throw "invoked" }), "invoked");
+assertThrowsValue(() => Array.prototype.find.call({length: Infinity}, () => { throw "invoked" }), "invoked");
+assertThrowsValue(() => Array.prototype.findIndex.call({length: Infinity}, () => { throw "invoked" }), "invoked");
+assertThrowsValue(() => Array.prototype.fill.call({length: Infinity, set "0"(v) { throw "invoked"; }}, () => { throw "invoked" }), "invoked");
+assertThrowsValue(() => Array.prototype.copyWithin.call({length: Infinity, get [max - 2]() { throw "invoked"; }}, max - 2, max - 2), "invoked");
+
+assertEq(Array.prototype.includes.call({length: Infinity, [max - 1]: "test"}, "test", max - 3), true);
+
+// Invoking the Array constructor with MAX_SAFE_INTEGER will throw, 0 won't
+assertThrowsInstanceOf(() => Array.from({length: Infinity}), RangeError);
+
+// Make sure ArraySpeciesCreate is called with ToLength applied to the length property
+var proxy = new Proxy([], {
+ get(target, property) {
+ if (property === "length")
+ return Infinity;
+
+ assertEq(property, "constructor");
+ function fakeConstructor(length) { assertEq(length, max); throw "invoked"; };
+ fakeConstructor[Symbol.species] = fakeConstructor;
+ return fakeConstructor;
+ }
+})
+assertThrowsValue(() => Array.prototype.map.call(proxy, () => { }), "invoked");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/toLocaleString-nointl.js b/js/src/tests/ecma_6/Array/toLocaleString-nointl.js
new file mode 100644
index 000000000..b0cee8304
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/toLocaleString-nointl.js
@@ -0,0 +1,26 @@
+if (typeof Intl !== "object") {
+ const localeSep = [,,].toLocaleString();
+
+ const obj = {
+ toLocaleString() {
+ assertEq(arguments.length, 0);
+ return "pass";
+ }
+ };
+
+ // Ensure no arguments are passed to the array elements.
+ // - Single element case.
+ assertEq([obj].toLocaleString(), "pass");
+ // - More than one element.
+ assertEq([obj, obj].toLocaleString(), "pass" + localeSep + "pass");
+
+ // Ensure no arguments are passed to the array elements even if supplied.
+ const locales = {}, options = {};
+ // - Single element case.
+ assertEq([obj].toLocaleString(locales, options), "pass");
+ // - More than one element.
+ assertEq([obj, obj].toLocaleString(locales, options), "pass" + localeSep + "pass");
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/toLocaleString.js b/js/src/tests/ecma_6/Array/toLocaleString.js
new file mode 100644
index 000000000..4a16cb4a4
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/toLocaleString.js
@@ -0,0 +1,14 @@
+"use strict";
+
+Object.defineProperty(String.prototype, "toLocaleString", {
+ get() {
+ assertEq(typeof this, "string");
+
+ return function() { return typeof this; };
+ }
+})
+
+assertEq(["test"].toLocaleString(), "string");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Array/unscopables.js b/js/src/tests/ecma_6/Array/unscopables.js
new file mode 100644
index 000000000..6685309a0
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/unscopables.js
@@ -0,0 +1,51 @@
+let Array_unscopables = Array.prototype[Symbol.unscopables];
+
+let desc = Reflect.getOwnPropertyDescriptor(Array.prototype, Symbol.unscopables);
+assertDeepEq(desc, {
+ value: Array_unscopables,
+ writable: false,
+ enumerable: false,
+ configurable: true
+});
+
+assertEq(Reflect.getPrototypeOf(Array_unscopables), null);
+
+let desc2 = Object.getOwnPropertyDescriptor(Array_unscopables, "values");
+assertDeepEq(desc2, {
+ value: true,
+ writable: true,
+ enumerable: true,
+ configurable: true
+});
+
+let keys = Reflect.ownKeys(Array_unscopables);
+print(uneval(keys));
+assertDeepEq(keys, [
+ "copyWithin",
+ "entries",
+ "fill",
+ "find",
+ "findIndex",
+ "includes",
+ "keys",
+ "values"
+]);
+
+for (let key of keys)
+ assertEq(Array_unscopables[key], true);
+
+// Test that it actually works
+assertThrowsInstanceOf(() => {
+ with ([]) {
+ return entries;
+ }
+}, ReferenceError);
+
+{
+ let fill = 33;
+ with (Array.prototype) {
+ assertEq(fill, 33);
+ }
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Array/values.js b/js/src/tests/ecma_6/Array/values.js
new file mode 100644
index 000000000..902a66812
--- /dev/null
+++ b/js/src/tests/ecma_6/Array/values.js
@@ -0,0 +1,20 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+if (Array.prototype.values) {
+ assertEq(Array.prototype.values, Array.prototype[Symbol.iterator]);
+ assertEq(Array.prototype.values.name, "values");
+ assertEq(Array.prototype.values.length, 0);
+
+ function valuesUnscopeable() {
+ var values = "foo";
+ with ([1, 2, 3]) {
+ assertEq(indexOf, Array.prototype.indexOf);
+ assertEq(values, "foo");
+ }
+ }
+ valuesUnscopeable();
+}
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/ArrayBuffer/CloneArrayBuffer.js b/js/src/tests/ecma_6/ArrayBuffer/CloneArrayBuffer.js
new file mode 100644
index 000000000..480314ad8
--- /dev/null
+++ b/js/src/tests/ecma_6/ArrayBuffer/CloneArrayBuffer.js
@@ -0,0 +1,35 @@
+var BUGNUMBER = 1264941;
+var summary = 'CloneArrayBuffer should be called with byteLength of source typedArray';
+
+print(BUGNUMBER + ": " + summary);
+
+function test(ctor, byteLength) {
+ var abuf = new ctor(byteLength);
+ assertEq(abuf.byteLength, byteLength);
+
+ for (var byteOffset of [0, 16]) {
+ for (var elementLength = 0;
+ elementLength < (byteLength - byteOffset) / Float64Array.BYTES_PER_ELEMENT;
+ elementLength++) {
+ var a1 = new Float64Array(abuf, byteOffset, elementLength);
+ assertEq(a1.buffer.byteLength, byteLength);
+ assertEq(a1.byteLength, elementLength * Float64Array.BYTES_PER_ELEMENT);
+ assertEq(a1.byteOffset, byteOffset);
+
+ var a2 = new Float64Array(a1);
+ assertEq(a2.buffer.byteLength, a1.byteLength);
+ assertEq(a2.byteLength, a1.byteLength);
+ assertEq(a2.byteOffset, 0);
+ }
+ }
+}
+
+test(ArrayBuffer, 16);
+test(ArrayBuffer, 128);
+
+class MyArrayBuffer extends ArrayBuffer {}
+test(MyArrayBuffer, 16);
+test(MyArrayBuffer, 128);
+
+if (typeof reportCompare === 'function')
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/ArrayBuffer/browser.js b/js/src/tests/ecma_6/ArrayBuffer/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/ArrayBuffer/browser.js
diff --git a/js/src/tests/ecma_6/ArrayBuffer/constructorNotCallable.js b/js/src/tests/ecma_6/ArrayBuffer/constructorNotCallable.js
new file mode 100644
index 000000000..9df97fe86
--- /dev/null
+++ b/js/src/tests/ecma_6/ArrayBuffer/constructorNotCallable.js
@@ -0,0 +1,8 @@
+assertThrowsInstanceOf(() => ArrayBuffer(), TypeError);
+assertThrowsInstanceOf(() => ArrayBuffer(1), TypeError);
+assertThrowsInstanceOf(() => ArrayBuffer.call(null), TypeError);
+assertThrowsInstanceOf(() => ArrayBuffer.apply(null, []), TypeError);
+assertThrowsInstanceOf(() => Reflect.apply(ArrayBuffer, null, []), TypeError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/ArrayBuffer/getter-name.js b/js/src/tests/ecma_6/ArrayBuffer/getter-name.js
new file mode 100644
index 000000000..434782bfe
--- /dev/null
+++ b/js/src/tests/ecma_6/ArrayBuffer/getter-name.js
@@ -0,0 +1,10 @@
+var BUGNUMBER = 1180290;
+var summary = 'ArrayBuffer getters should have get prefix';
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(Object.getOwnPropertyDescriptor(ArrayBuffer, Symbol.species).get.name, "get [Symbol.species]");
+assertEq(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength").get.name, "get byteLength");
+
+if (typeof reportCompare === 'function')
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/ArrayBuffer/shell.js b/js/src/tests/ecma_6/ArrayBuffer/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/ArrayBuffer/shell.js
diff --git a/js/src/tests/ecma_6/ArrayBuffer/slice-species.js b/js/src/tests/ecma_6/ArrayBuffer/slice-species.js
new file mode 100644
index 000000000..6f025d162
--- /dev/null
+++ b/js/src/tests/ecma_6/ArrayBuffer/slice-species.js
@@ -0,0 +1,180 @@
+const tests = [
+ [Int8Array, [9, 10, 11, 12, 13, 14, 15, 16]],
+ [Uint8Array, [9, 10, 11, 12, 13, 14, 15, 16]],
+ [Uint8ClampedArray, [9, 10, 11, 12, 13, 14, 15, 16]],
+ [Int16Array, [5, 6, 7, 8]],
+ [Uint16Array, [5, 6, 7, 8]],
+ [Int32Array, [3, 4]],
+ [Uint32Array, [3, 4]],
+ [Float32Array, [3, 4]],
+ [Float64Array, [2]],
+];
+
+let logs = [];
+for (let [ctor, answer] of tests) {
+ let arr = new ctor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
+
+ let proxyProto = new Proxy({}, {
+ get(that, name) {
+ throw new Error("unexpected prop access");
+ }
+ });
+
+ class MyArrayBuffer extends ArrayBuffer {}
+
+ arr.buffer.constructor = new Proxy({}, {
+ get(that, name) {
+ if (name == Symbol.species) {
+ logs.push("get @@species");
+ let C = new Proxy(function(...args) {
+ logs.push("call ctor");
+ return new MyArrayBuffer(...args);
+ }, {
+ get(that, name) {
+ logs.push("get ctor." + String(name));
+ if (name == "prototype") {
+ return proxyProto;
+ }
+ throw new Error("unexpected prop access");
+ }
+ });
+ return C;
+ }
+ throw new Error("unexpected prop access");
+ }
+ });
+
+ logs.length = 0;
+ let buf = arr.buffer.slice(8, 16);
+ assertEq(buf.constructor, MyArrayBuffer);
+ assertDeepEq(logs, ["get @@species", "get ctor.prototype", "call ctor"]);
+ assertDeepEq([...new ctor(buf)], answer);
+
+
+ // modified @@species
+ let a = arr.buffer;
+ a.constructor = {
+ [Symbol.species]: MyArrayBuffer
+ };
+ let b = a.slice(8, 16);
+ assertEq(b.constructor, MyArrayBuffer);
+ assertDeepEq([...new ctor(b)], answer);
+
+ class MyArrayBufferWithSpecies extends ArrayBuffer {
+ get [Symbol.species]() {
+ return MyArrayBufferWithSpecies;
+ }
+ }
+ a = arr.buffer;
+ a.constructor = MyArrayBufferWithSpecies;
+ b = a.slice(8, 16);
+ assertEq(b.constructor, MyArrayBufferWithSpecies);
+ assertDeepEq([...new ctor(b)], answer);
+
+ // no @@species
+ a = arr.buffer;
+ a.constructor = {
+ [Symbol.species]: undefined
+ };
+ b = a.slice(8, 16);
+ assertEq(b.constructor, ArrayBuffer);
+ assertDeepEq([...new ctor(b)], answer);
+
+ a = arr.buffer;
+ a.constructor = {
+ [Symbol.species]: null
+ };
+ b = a.slice(8, 16);
+ assertEq(b.constructor, ArrayBuffer);
+ assertDeepEq([...new ctor(b)], answer);
+
+ // invalid @@species
+ for (let species of [0, 1.1, true, false, "a", /a/, Symbol.iterator, [], {}]) {
+ a = arr.buffer;
+ a.constructor = {
+ [Symbol.species]: species
+ };
+ assertThrowsInstanceOf(() => a.slice(8, 16), TypeError);
+ }
+
+ // undefined constructor
+ a = arr.buffer;
+ a.constructor = undefined;
+ b = a.slice(8, 16);
+ assertEq(b.constructor, ArrayBuffer);
+ assertDeepEq([...new ctor(b)], answer);
+
+ // invalid constructor
+ for (let ctor of [null, 0, 1.1, true, false, "a", Symbol.iterator]) {
+ a = arr.buffer;
+ a.constructor = ctor;
+ assertThrowsInstanceOf(() => a.slice(8, 16), TypeError);
+ }
+
+ // @@species from different global
+ let g = newGlobal();
+ g.eval("var MyArrayBuffer = class MyArrayBuffer extends ArrayBuffer {};");
+ a = arr.buffer;
+ a.constructor = {
+ [Symbol.species]: g.MyArrayBuffer
+ };
+ b = a.slice(8, 16);
+ assertEq(b.constructor, g.MyArrayBuffer);
+ assertDeepEq([...new ctor(b)], answer);
+
+ a = arr.buffer;
+ a.constructor = {
+ [Symbol.species]: g.ArrayBuffer
+ };
+ b = a.slice(8, 16);
+ assertEq(b.constructor, g.ArrayBuffer);
+ assertDeepEq([...new ctor(b)], answer);
+
+ // constructor from different global
+ g.eval(`
+var MyArrayBufferWithSpecies = class MyArrayBufferWithSpecies extends ArrayBuffer {
+ get [Symbol.species]() {
+ return MyArrayBufferWithSpecies;
+ }
+};
+`);
+ a = arr.buffer;
+ a.constructor = g.MyArrayBufferWithSpecies;
+ b = a.slice(8, 16);
+ assertEq(b.constructor, g.MyArrayBufferWithSpecies);
+ assertDeepEq([...new ctor(b)], answer);
+
+ g.eval(`
+var arr = new ${ctor.name}([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]);
+var a = arr.buffer;
+`);
+ b = ArrayBuffer.prototype.slice.call(g.a, 8, 16);
+ assertEq(b.constructor, g.ArrayBuffer);
+ assertDeepEq([...new ctor(b)], answer);
+
+ // running in different global
+ b = g.a.slice(8, 16);
+ assertEq(b.constructor, g.ArrayBuffer);
+ assertDeepEq([...new ctor(b)], answer);
+
+ // subclasses
+ // not-modified @@species
+ a = new MyArrayBuffer(16);
+ b = a.slice(8, 16);
+ assertEq(b.constructor, MyArrayBuffer);
+
+ // modified @@species
+ class MyArrayBuffer2 extends ArrayBuffer {
+ }
+ class MyArrayBuffer3 extends ArrayBuffer {
+ static get [Symbol.species]() {
+ return MyArrayBuffer2;
+ }
+ }
+ a = new MyArrayBuffer3(16);
+ b = a.slice(8, 16);
+ assertEq(b.constructor, MyArrayBuffer2);
+}
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/ArrowFunctions/browser.js b/js/src/tests/ecma_6/ArrowFunctions/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/ArrowFunctions/browser.js
diff --git a/js/src/tests/ecma_6/ArrowFunctions/shell.js b/js/src/tests/ecma_6/ArrowFunctions/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/ArrowFunctions/shell.js
diff --git a/js/src/tests/ecma_6/ArrowFunctions/yield-in-arrow.js b/js/src/tests/ecma_6/ArrowFunctions/yield-in-arrow.js
new file mode 100644
index 000000000..8b849a1c8
--- /dev/null
+++ b/js/src/tests/ecma_6/ArrowFunctions/yield-in-arrow.js
@@ -0,0 +1,77 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const yieldInParameters = [
+ `(a = yield) => {}`,
+ `(a = yield /a/g) => {}`, // Should parse as division, not yield expression with regexp.
+ `yield => {};`,
+ `(yield) => {};`,
+ `(yield = 0) => {};`,
+ `([yield]) => {};`,
+ `([yield = 0]) => {};`,
+ `([...yield]) => {};`,
+ `({a: yield}) => {};`,
+ `({yield}) => {};`,
+ `({yield = 0}) => {};`,
+];
+
+const yieldInBody = [
+ `() => yield;`,
+ `() => yield /a/g;`,
+ `() => { var x = yield; }`,
+ `() => { var x = yield /a/g; }`,
+
+ `() => { var yield; };`,
+ `() => { var yield = 0; };`,
+ `() => { var [yield] = []; };`,
+ `() => { var [yield = 0] = []; };`,
+ `() => { var [...yield] = []; };`,
+ `() => { var {a: yield} = {}; };`,
+ `() => { var {yield} = {}; };`,
+ `() => { var {yield = 0} = {}; };`,
+
+ `() => { let yield; };`,
+ `() => { let yield = 0; };`,
+ `() => { let [yield] = []; };`,
+ `() => { let [yield = 0] = []; };`,
+ `() => { let [...yield] = []; };`,
+ `() => { let {a: yield} = {}; };`,
+ `() => { let {yield} = {}; };`,
+ `() => { let {yield = 0} = {}; };`,
+
+ `() => { const yield = 0; };`,
+ `() => { const [yield] = []; };`,
+ `() => { const [yield = 0] = []; };`,
+ `() => { const [...yield] = []; };`,
+ `() => { const {a: yield} = {}; };`,
+ `() => { const {yield} = {}; };`,
+ `() => { const {yield = 0} = {}; };`,
+];
+
+
+// Script context.
+for (let test of [...yieldInParameters, ...yieldInBody]) {
+ eval(test);
+ assertThrowsInstanceOf(() => eval(`"use strict"; ${test}`), SyntaxError);
+}
+
+// Function context.
+for (let test of [...yieldInParameters, ...yieldInBody]) {
+ eval(`function f() { ${test} }`);
+ assertThrowsInstanceOf(() => eval(`"use strict"; function f() { ${test} }`), SyntaxError);
+}
+
+// Generator context.
+for (let test of yieldInParameters) {
+ assertThrowsInstanceOf(() => eval(`function* g() { ${test} }`), SyntaxError);
+}
+for (let test of yieldInBody) {
+ eval(`function* g() { ${test} }`);
+}
+for (let test of [...yieldInParameters, ...yieldInBody]) {
+ assertThrowsInstanceOf(() => eval(`"use strict"; function* g() { ${test} }`), SyntaxError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Class/boundFunctionSubclassing.js b/js/src/tests/ecma_6/Class/boundFunctionSubclassing.js
new file mode 100644
index 000000000..be9058bb9
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/boundFunctionSubclassing.js
@@ -0,0 +1,37 @@
+class func extends Function { }
+let inst = new func("x", "return this.bar + x");
+
+// First, ensure that we get sane prototype chains for the bound instance
+let bound = inst.bind({bar: 3}, 4);
+assertEq(bound instanceof func, true);
+assertEq(bound(), 7);
+
+// Check the corner case for Function.prototype.bind where the function has
+// a null [[Prototype]]
+Object.setPrototypeOf(inst, null);
+bound = Function.prototype.bind.call(inst, {bar:1}, 3);
+assertEq(Object.getPrototypeOf(bound), null);
+assertEq(bound(), 4);
+
+// Check that we actually pass the proper new.target when calling super()
+function toBind() { }
+
+var boundArgs = [];
+for (let i = 0; i < 5; i++) {
+ boundArgs.push(i);
+ let bound = toBind.bind(undefined, ...boundArgs);
+
+ // We have to wire it up by hand to allow us to use a bound function
+ // as a superclass, but it's doable.
+ bound.prototype = {};
+ class test extends bound { };
+ let passedArgs = [];
+ for (let j = 0; j < 15; j++) {
+ passedArgs.push(j);
+ assertEq(Object.getPrototypeOf(new test(...passedArgs)), test.prototype);
+ }
+}
+
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/browser.js b/js/src/tests/ecma_6/Class/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/browser.js
diff --git a/js/src/tests/ecma_6/Class/bytecodePatternMatching.js b/js/src/tests/ecma_6/Class/bytecodePatternMatching.js
new file mode 100644
index 000000000..446184f80
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/bytecodePatternMatching.js
@@ -0,0 +1,29 @@
+// Constructors can't be called so we can't pattern match
+// them in replace and sort.
+function a() {
+ var b = {a: "A"};
+
+ class X {
+ constructor(a) {
+ return b[a]
+ }
+ };
+
+ assertThrowsInstanceOf(() => "a".replace(/a/, X), TypeError);
+}
+
+function b() {
+ class X {
+ constructor(x, y) {
+ return x - y;
+ }
+ }
+
+ assertThrowsInstanceOf(() => [1, 2, 3].sort(X), TypeError);
+}
+
+a();
+b();
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/Class/classConstructorNoCall.js b/js/src/tests/ecma_6/Class/classConstructorNoCall.js
new file mode 100644
index 000000000..f59f87b9c
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/classConstructorNoCall.js
@@ -0,0 +1,21 @@
+// Class constructors don't have a [[Call]]
+class Foo {
+ constructor() { }
+}
+
+assertThrowsInstanceOf(Foo, TypeError);
+
+class Bar extends Foo {
+ constructor() { }
+}
+
+assertThrowsInstanceOf(Bar, TypeError);
+
+assertThrowsInstanceOf(class { constructor() { } }, TypeError);
+assertThrowsInstanceOf(class extends Foo { constructor() { } }, TypeError);
+
+assertThrowsInstanceOf(class foo { constructor() { } }, TypeError);
+assertThrowsInstanceOf(class foo extends Foo { constructor() { } }, TypeError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/classHeritage.js b/js/src/tests/ecma_6/Class/classHeritage.js
new file mode 100644
index 000000000..478c23fc2
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/classHeritage.js
@@ -0,0 +1,97 @@
+// It's an error to have a non-constructor as your heritage
+assertThrowsInstanceOf(() => eval(`class a extends Math.sin {
+ constructor() { }
+ }`), TypeError);
+assertThrowsInstanceOf(() => eval(`(class a extends Math.sin {
+ constructor() { }
+ })`), TypeError);
+
+// Unless it's null, in which case it works like a normal class, except that
+// the prototype object does not inherit from Object.prototype.
+class basic {
+ constructor() { }
+}
+class nullExtends extends null {
+ constructor() { }
+}
+var nullExtendsExpr = class extends null { constructor() { } };
+
+assertEq(Object.getPrototypeOf(basic), Function.prototype);
+assertEq(Object.getPrototypeOf(basic.prototype), Object.prototype);
+
+for (let extension of [nullExtends, nullExtendsExpr]) {
+ assertEq(Object.getPrototypeOf(extension), Function.prototype);
+ assertEq(Object.getPrototypeOf(extension.prototype), null);
+}
+
+var baseMethodCalled;
+var staticMethodCalled;
+var overrideCalled;
+class base {
+ constructor() { };
+ method() { baseMethodCalled = true; }
+ static staticMethod() { staticMethodCalled = true; }
+ override() { overrideCalled = "base" }
+}
+class derived extends base {
+ constructor() { super(); };
+ override() { overrideCalled = "derived"; }
+}
+var derivedExpr = class extends base {
+ constructor() { super(); };
+ override() { overrideCalled = "derived"; }
+};
+
+// Make sure we get the right object layouts.
+for (let extension of [derived, derivedExpr]) {
+ baseMethodCalled = false;
+ staticMethodCalled = false;
+ overrideCalled = "";
+ // Make sure we get the right object layouts.
+ assertEq(Object.getPrototypeOf(extension), base);
+ assertEq(Object.getPrototypeOf(extension.prototype), base.prototype);
+
+ // We do inherit the methods, right?
+ (new extension()).method();
+ assertEq(baseMethodCalled, true);
+
+ // But we can still override them?
+ (new extension()).override();
+ assertEq(overrideCalled, "derived");
+
+ // What about the statics?
+ extension.staticMethod();
+ assertEq(staticMethodCalled, true);
+}
+
+// Gotta extend an object, or null.
+function nope() {
+ class Foo extends "Bar" {
+ constructor() { }
+ }
+}
+function nopeExpr() {
+ (class extends "Bar" {
+ constructor() { }
+ });
+}
+assertThrowsInstanceOf(nope, TypeError);
+assertThrowsInstanceOf(nopeExpr, TypeError);
+
+// The .prototype of the extension must be an object, or null.
+nope.prototype = "not really, no";
+function stillNo() {
+ class Foo extends nope {
+ constructor() { }
+ }
+}
+function stillNoExpr() {
+ (class extends nope {
+ constructor() { }
+ });
+}
+assertThrowsInstanceOf(stillNo, TypeError);
+assertThrowsInstanceOf(stillNoExpr, TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/Class/className.js b/js/src/tests/ecma_6/Class/className.js
new file mode 100644
index 000000000..a33397a8a
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/className.js
@@ -0,0 +1,247 @@
+function testName(C, name, hasValue, hasGetter, hasSetter, isFunction=false) {
+ if (isFunction) {
+ assertEq(typeof C.name, "function");
+ } else {
+ assertEq(C.name, name);
+ }
+
+ var desc = Object.getOwnPropertyDescriptor(C, "name");
+ if (!hasValue && !hasGetter && !hasSetter) {
+ assertEq(desc, undefined);
+ return;
+ }
+
+ if (hasValue) {
+ assertEq("value" in desc, true);
+ if (isFunction) {
+ assertEq(typeof desc.value, "function");
+ } else {
+ assertEq(desc.value, name);
+ }
+ // FIXME: Methods defined in classes should not be enumerable
+ // (bug 1144630).
+ // assertEq(desc.enumerable, false);
+ assertEq(desc.configurable, true);
+
+ assertEq("get" in desc, false);
+ assertEq("set" in desc, false);
+
+ return;
+ }
+
+ assertEq("value" in desc, false);
+
+ if (hasGetter) {
+ assertEq("get" in desc, true);
+ assertEq(desc.get(), name);
+ // assertEq(desc.enumerable, false);
+ assertEq(desc.configurable, true);
+ } else {
+ assertEq("get" in desc, true);
+ assertEq(desc.get, undefined);
+ // assertEq(desc.enumerable, false);
+ assertEq(desc.configurable, true);
+ }
+
+ if (hasSetter) {
+ assertEq("set" in desc, true);
+ assertEq(typeof desc.set, "function");
+ // assertEq(desc.enumerable, false);
+ assertEq(desc.configurable, true);
+ } else {
+ assertEq("set" in desc, true);
+ assertEq(desc.set, undefined);
+ // assertEq(desc.enumerable, false);
+ assertEq(desc.configurable, true);
+ }
+}
+
+// ---- declaration ---
+
+class Decl {
+ constructor() {}
+}
+testName(Decl, "Decl", true, false, false);
+
+class DeclWithFunc {
+ constructor() {}
+ static name() {}
+}
+testName(DeclWithFunc, "DeclWithFunc", true, false, false, true);
+
+class DeclWithGetter {
+ constructor() {}
+ static get name() { return "base"; }
+}
+testName(DeclWithGetter, "base", false, true, false);
+
+class DeclWithSetter {
+ constructor() {}
+ static set name(v) {}
+}
+testName(DeclWithSetter, undefined, false, false, true);
+
+class DeclWithGetterSetter {
+ constructor() {}
+ static get name() { return "base"; }
+ static set name(v) {}
+}
+testName(DeclWithGetterSetter, "base", false, true, true);
+
+function prop() {
+ return "name";
+}
+class DeclWithComputed {
+ constructor() {}
+ static get [prop()]() { return "base"; }
+}
+testName(DeclWithGetterSetter, "base", false, true, true);
+
+class ExtendedDecl1 extends Decl {
+ constructor() {}
+}
+testName(ExtendedDecl1, "ExtendedDecl1", true, false, false);
+delete ExtendedDecl1.name;
+testName(ExtendedDecl1, "Decl", false, false, false);
+
+class ExtendedDecl2 extends DeclWithGetterSetter {
+ constructor() {}
+ static get name() { return "extend"; }
+}
+testName(ExtendedDecl2, "extend", false, true, false);
+delete ExtendedDecl2.name;
+testName(ExtendedDecl2, "base", false, false, false);
+
+class ExtendedDecl3 extends DeclWithGetterSetter {
+ constructor() {}
+ static set name(v) {}
+}
+testName(ExtendedDecl3, undefined, false, false, true);
+delete ExtendedDecl3.name;
+testName(ExtendedDecl3, "base", false, false, false);
+
+// ---- expression ---
+
+let Expr = class Expr {
+ constructor() {}
+};
+testName(Expr, "Expr", true, false, false);
+
+let ExprWithGetter = class ExprWithGetter {
+ constructor() {}
+ static get name() { return "base"; }
+};
+testName(ExprWithGetter, "base", false, true, false);
+
+let ExprWithSetter = class ExprWithSetter {
+ constructor() {}
+ static set name(v) {}
+};
+testName(ExprWithSetter, undefined, false, false, true);
+
+let ExprWithGetterSetter = class ExprWithGetterSetter {
+ constructor() {}
+ static get name() { return "base"; }
+ static set name(v) {}
+};
+testName(ExprWithGetterSetter, "base", false, true, true);
+
+
+let ExtendedExpr1 = class ExtendedExpr1 extends Expr {
+ constructor() {}
+};
+testName(ExtendedExpr1, "ExtendedExpr1", true, false, false);
+delete ExtendedExpr1.name;
+testName(ExtendedExpr1, "Expr", false, false, false);
+
+let ExtendedExpr2 = class ExtendedExpr2 extends ExprWithGetterSetter {
+ constructor() {}
+ static get name() { return "extend"; }
+};
+testName(ExtendedExpr2, "extend", false, true, false);
+delete ExtendedExpr2.name;
+testName(ExtendedExpr2, "base", false, false, false);
+
+let ExtendedExpr3 = class ExtendedExpr3 extends ExprWithGetterSetter {
+ constructor() {}
+ static set name(v) {}
+};
+testName(ExtendedExpr3, undefined, false, false, true);
+delete ExtendedExpr3.name;
+testName(ExtendedExpr3, "base", false, false, false);
+
+// ---- anonymous ----
+
+// Anonymous class expressions don't get name properties unless specified in a
+// static manner.
+let Anon = class {
+ constructor() {}
+};
+testName(Anon, "", false, false, false);
+
+let AnonDefault = class { };
+testName(AnonDefault, "", false, false, false);
+
+let AnonWithGetter = class {
+ constructor() {}
+ static get name() { return "base"; }
+};
+testName(AnonWithGetter, "base", false, true, false);
+
+let AnonWithSetter = class {
+ constructor() {}
+ static set name(v) {}
+};
+testName(AnonWithSetter, undefined, false, false, true);
+
+let AnonWithGetterSetter = class {
+ constructor() {}
+ static get name() { return "base"; }
+ static set name(v) {}
+};
+testName(AnonWithGetterSetter, "base", false, true, true);
+
+
+let ExtendedAnon1 = class extends Anon {
+ constructor() {}
+};
+testName(ExtendedAnon1, "", false, false, false);
+
+let ExtendedAnonDefault = class extends Anon { };
+testName(ExtendedAnonDefault, "", false, false, false);
+
+let ExtendedAnon2 = class extends AnonWithGetterSetter {
+ constructor() {}
+ static get name() { return "extend"; }
+};
+testName(ExtendedAnon2, "extend", false, true, false);
+delete ExtendedAnon2.name;
+testName(ExtendedAnon2, "base", false, false, false);
+
+let ExtendedAnon3 = class extends AnonWithGetterSetter {
+ constructor() {}
+ static set name(v) {}
+};
+testName(ExtendedAnon3, undefined, false, false, true);
+delete ExtendedAnon3.name;
+testName(ExtendedAnon3, "base", false, false, false);
+
+// ---- mixed ----
+
+let ExtendedExpr4 = class ExtendedExpr4 extends Anon {
+ constructor() {}
+}
+testName(ExtendedExpr4, "ExtendedExpr4", true, false, false);
+delete ExtendedExpr4.name;
+testName(ExtendedExpr4, "", false, false, false);
+
+let ExtendedExpr5 = class ExtendedExpr5 extends AnonWithGetterSetter {
+ constructor() {}
+ static get name() { return "extend"; }
+}
+testName(ExtendedExpr5, "extend", false, true, false);
+delete ExtendedExpr5.name;
+testName(ExtendedExpr5, "base", false, false, false);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/Class/classPrototype.js b/js/src/tests/ecma_6/Class/classPrototype.js
new file mode 100644
index 000000000..0d2296037
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/classPrototype.js
@@ -0,0 +1,65 @@
+// The prototype of a class is a non-writable, non-configurable, non-enumerable data property.
+class a { constructor() { } }
+let b = class { constructor() { } };
+for (let test of [a,b]) {
+ var protoDesc = Object.getOwnPropertyDescriptor(test, "prototype");
+ assertEq(protoDesc.writable, false);
+ assertEq(protoDesc.configurable, false);
+ assertEq(protoDesc.enumerable, false);
+
+ var prototype = protoDesc.value;
+ assertEq(typeof prototype, "object");
+ assertEq(Object.getPrototypeOf(prototype), Object.prototype);
+ assertEq(Object.isExtensible(prototype), true);
+
+ var desiredPrototype = {};
+ Object.defineProperty(desiredPrototype, "constructor", { writable: true,
+ configurable: true,
+ enumerable: false,
+ value: test });
+ assertDeepEq(prototype, desiredPrototype);
+}
+
+// As such, it should by a TypeError to try and overwrite "prototype" with a
+// static member. The only way to try is with a computed property name; the rest
+// are early errors.
+assertThrowsInstanceOf(() => eval(`
+ class a {
+ constructor() { };
+ static ["prototype"]() { }
+ }
+ `), TypeError);
+assertThrowsInstanceOf(() => eval(`
+ class a {
+ constructor() { };
+ static get ["prototype"]() { }
+ }
+ `), TypeError);
+assertThrowsInstanceOf(() => eval(`
+ class a {
+ constructor() { };
+ static set ["prototype"](x) { }
+ }
+ `), TypeError);
+
+assertThrowsInstanceOf(() => eval(`(
+ class a {
+ constructor() { };
+ static ["prototype"]() { }
+ }
+ )`), TypeError);
+assertThrowsInstanceOf(() => eval(`(
+ class a {
+ constructor() { };
+ static get ["prototype"]() { }
+ }
+ )`), TypeError);
+assertThrowsInstanceOf(() => eval(`(
+ class a {
+ constructor() { };
+ static set ["prototype"](x) { }
+ }
+ )`), TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/Class/compPropDestr.js b/js/src/tests/ecma_6/Class/compPropDestr.js
new file mode 100644
index 000000000..2bd8cbd49
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/compPropDestr.js
@@ -0,0 +1,11 @@
+var BUGNUMBER = 924688;
+var summary = 'Computed Property Names';
+
+print(BUGNUMBER + ": " + summary);
+
+var key = "z";
+var { [key]: foo } = { z: "bar" };
+assertEq(foo, "bar");
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Class/compPropNames.js b/js/src/tests/ecma_6/Class/compPropNames.js
new file mode 100644
index 000000000..1c4064d8a
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/compPropNames.js
@@ -0,0 +1,243 @@
+var BUGNUMBER = 924688;
+var summary = 'Computed Property Names';
+
+print(BUGNUMBER + ": " + summary);
+
+// Function definitions.
+function syntaxError (script) {
+ try {
+ Function(script);
+ } catch (e) {
+ if (e instanceof SyntaxError) {
+ return;
+ }
+ }
+ throw new Error('Expected syntax error: ' + script);
+}
+
+
+// Tests begin.
+
+assertThrowsInstanceOf(function() { var a = {[field1]: "a", [field2]: "b"}; }, ReferenceError);
+
+assertThrowsInstanceOf(function() {
+ field1 = 1;
+ var a = {[field1]: "a", [field2]: "b"};
+ }, ReferenceError);
+
+var f1 = 1;
+var f2 = 2;
+var a = {[f1]: "a", [f2]: "b"};
+assertEq(a[1], "a");
+assertEq(a[2], "b");
+
+var a = {[f1]: "a", f2: "b"};
+assertEq(a[1], "a");
+assertEq(a.f2, "b");
+
+var a = {["f1"]: "a", [++f2]: "b"};
+assertEq(a.f1, "a");
+assertEq(a[3], "b");
+
+var a = {["f1"]: "a", f2: "b"};
+assertEq(a.f1, "a");
+assertEq(a.f2, "b");
+
+
+var i = 0;
+var a = {
+ ["foo" + ++i]: i,
+ ["foo" + ++i]: i,
+ ["foo" + ++i]: i
+};
+assertEq(a.foo1, 1);
+assertEq(a.foo2, 2);
+assertEq(a.foo3, 3);
+
+var expr = "abc";
+syntaxError("({[");
+syntaxError("({[expr");
+syntaxError("({[expr]");
+syntaxError("({[expr]})");
+syntaxError("({[expr] 0})");
+syntaxError("({[expr], 0})");
+syntaxError("[[expr]: 0]");
+syntaxError("({[expr]: name: 0})");
+syntaxError("({[1, 2]: 3})"); // because '1,2' is an Expression but not an AssignmentExpression
+syntaxError("({[1;]: 1})"); // and not an ExpressionStatement
+syntaxError("({[if (0) 0;]})"); // much less a Statement
+syntaxError("function f() { {[x]: 1} }"); // that's not even an ObjectLiteral
+syntaxError("function f() { [x]: 1 }"); // or that
+syntaxError('a = {[f1@]: "a", [f2]: "b"}'); // unexpected symbol at end of AssignmentExpression
+try { JSON.parse('{["a"]:4}'); } catch(e) {
+ if (!(e instanceof SyntaxError)) throw new Error('Expected syntax error');
+}
+
+// Property characteristics.
+a = { ["b"] : 4 };
+b = Object.getOwnPropertyDescriptor(a, "b");
+assertEq(b.configurable, true);
+assertEq(b.enumerable, true);
+assertEq(b.writable, true);
+assertEq(b.value, 4);
+
+// Setter and getter are not hit.
+Object.defineProperty(Object.prototype, "x", { set: function (x) { throw "FAIL"; },
+ get: function (x) { throw "FAIL"; } });
+var a = {["x"]: 0};
+assertEq(a.x, 0);
+
+a = {["x"]: 1, ["x"]: 2};
+assertEq(a.x, 2);
+a = {x: 1, ["x"]: 2};
+assertEq(a.x, 2);
+a = {["x"]: 1, x: 2};
+assertEq(a.x, 2);
+
+// Symbols
+var unique_sym = Symbol("1"), registered_sym = Symbol.for("2");
+a = { [unique_sym] : 2, [registered_sym] : 3 };
+assertEq(a[unique_sym], 2);
+assertEq(a[registered_sym], 3);
+
+// Same expression can be run several times to build objects with different property names.
+a = [];
+for (var i = 0; i < 3; i++) {
+ a[i] = {["foo" + i]: i};
+}
+assertEq(a[0].foo0, 0);
+assertEq(a[1].foo1, 1);
+assertEq(a[2].foo2, 2);
+
+// Following are stored in object's elements rather than slots.
+var i = 0;
+a = { [++i] : i,
+ [++i] : i,
+ [++i] : i,
+ [++i] : i,
+ [++i] : i,
+ [++i] : i,
+ [++i] : i,
+ [++i] : i
+}
+for (var i = 1; i < 9; i++)
+ assertEq(a[i], i);
+syntaxError("a.1");
+syntaxError("a.2");
+syntaxError("a.3");
+syntaxError("a.4");
+syntaxError("a.5");
+syntaxError("a.6");
+syntaxError("a.7");
+syntaxError("a.8");
+
+// Adding a single large index.
+var i = 0;
+a = { [++i] : i,
+ [++i] : i,
+ [++i] : i,
+ [++i] : i,
+ [++i] : i,
+ [++i] : i,
+ [++i] : i,
+ [++i] : i,
+ [3000] : 2999
+}
+for (var i = 1; i < 9; i++)
+ assertEq(a[i], i);
+assertEq(a[3000], 2999);
+
+// Defining several properties using eval.
+var code = "({";
+for (i = 0; i < 1000; i++)
+ code += "['foo' + " + i + "]: 'ok', "
+code += "['bar']: 'ok'});";
+var obj = eval(code);
+for (i = 0; i < 1000; i++)
+ assertEq(obj["foo" + i], "ok");
+assertEq(obj["bar"], "ok");
+
+// Can yield in a computed property name which is in a generator.
+function* g() {
+ var a = { [yield 1]: 2, [yield 2]: 3};
+ return a;
+}
+
+var it = g();
+var next = it.next();
+assertEq(next.done, false);
+assertEq(next.value, 1);
+next = it.next("hello");
+assertEq(next.done, false);
+assertEq(next.value, 2);
+next = it.next("world");
+assertEq(next.done, true);
+assertEq(next.value.hello, 2);
+assertEq(next.value.world, 3);
+
+// get and set.
+expr = "abc";
+syntaxError("({get [");
+syntaxError("({get [expr()");
+syntaxError("({get [expr]()");
+syntaxError("({get [expr]()})");
+syntaxError("({get [expr] 0 ()})");
+syntaxError("({get [expr], 0(})");
+syntaxError("[get [expr]: 0()]");
+syntaxError("({get [expr](: name: 0})");
+syntaxError("({get [1, 2](): 3})");
+syntaxError("({get [1;](): 1})");
+syntaxError("({get [if (0) 0;](){}})");
+syntaxError("({set [(a)");
+syntaxError("({set [expr(a)");
+syntaxError("({set [expr](a){}");
+syntaxError("({set [expr]}(a)");
+syntaxError("({set [expr](a), 0})");
+syntaxError("[set [expr](a): 0]");
+syntaxError("({set [expr](a): name: 0})");
+syntaxError("({set [1, 2](a) {return 3;}})");
+syntaxError("({set [1;](a) {return 1}})");
+syntaxError("({set [if (0) 0;](a){}})");
+syntaxError("function f() { {get [x](): 1} }");
+syntaxError("function f() { get [x](): 1 }");
+syntaxError("function f() { {set [x](a): 1} }");
+syntaxError("function f() { set [x](a): 1 }");
+f1 = "abc";
+syntaxError('a = {get [f1@](){}, set [f1](a){}}'); // unexpected symbol at end of AssignmentExpression
+syntaxError('a = {get@ [f1](){}, set [f1](a){}}'); // unexpected symbol after get
+syntaxError('a = {get [f1](){}, set@ [f1](a){}}'); // unexpected symbol after set
+
+expr = "hey";
+a = {get [expr]() { return 3; }, set[expr](v) { throw 2; }};
+assertEq(a.hey, 3);
+assertThrowsValue(() => { a.hey = 5; }, 2);
+
+// Symbols with duplicate get and set.
+expr = Symbol("hey");
+a = {get [expr]() { return 3; }, set[expr](v) { throw 2; },
+ set [expr] (w) { throw 4; }, get[expr](){return 5; }};
+assertEq(a[expr], 5);
+assertThrowsValue(() => { a[expr] = 7; }, 4);
+
+// expressions with side effects are called in the right order
+log = "";
+obj = {
+ "a": log += 'a',
+ get [log += 'b']() {},
+ [log += 'c']: log += 'd',
+ set [log += 'e'](a) {}
+};
+assertEq(log, "abcde");
+
+// assignment expressions, objects and regex in computed names
+obj = {
+ get [a = "hey"]() { return 1; },
+ get [a = {b : 4}.b]() { return 2; },
+ set [/x/.source](a) { throw 3; }
+}
+assertEq(obj.hey, 1);
+assertEq(obj[4], 2);
+assertThrowsValue(() => { obj.x = 7; }, 3);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Class/constructorCalled.js b/js/src/tests/ecma_6/Class/constructorCalled.js
new file mode 100644
index 000000000..144cc08c7
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/constructorCalled.js
@@ -0,0 +1,45 @@
+// The constructor specified should get called, regardless of order, or
+// other distractions
+
+var called = false;
+class a { constructor(x) { assertEq(x, 4); called = true } }
+new a(4);
+assertEq(called, true);
+
+called = false;
+var aExpr = class { constructor(x) { assertEq(x, 4); called = true } };
+new aExpr(4);
+assertEq(called, true);
+
+called = false;
+class b { constructor() { called = true } method() { } }
+new b();
+assertEq(called, true);
+
+called = false;
+var bExpr = class { constructor() { called = true } method() { } };
+new bExpr();
+assertEq(called, true);
+
+called = false;
+class c { method() { } constructor() { called = true; } }
+new c();
+assertEq(called, true);
+
+called = false;
+var cExpr = class { method() { } constructor() { called = true; } }
+new cExpr();
+assertEq(called, true);
+
+called = false;
+class d { ["constructor"]() { throw new Error("NO"); } constructor() { called = true; } }
+new d();
+assertEq(called, true);
+
+called = false;
+var dExpr = class { ["constructor"]() { throw new Error("NO"); } constructor() { called = true; } }
+new dExpr();
+assertEq(called, true);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/Class/defaultConstructorBase.js b/js/src/tests/ecma_6/Class/defaultConstructorBase.js
new file mode 100644
index 000000000..2d977935d
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/defaultConstructorBase.js
@@ -0,0 +1,18 @@
+class base {
+ method() { return 1; }
+ *gen() { return 2; }
+ static sMethod() { return 3; }
+ get answer() { return 42; }
+}
+
+// Having a default constructor should work, and also not make you lose
+// everything for no good reason
+
+assertEq(Object.getPrototypeOf(new base()), base.prototype);
+assertEq(new base().method(), 1);
+assertEq(new base().gen().next().value, 2);
+assertEq(base.sMethod(), 3);
+assertEq(new base().answer, 42);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/defaultConstructorDerivedSpread.js b/js/src/tests/ecma_6/Class/defaultConstructorDerivedSpread.js
new file mode 100644
index 000000000..2b85e4d3d
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/defaultConstructorDerivedSpread.js
@@ -0,0 +1,19 @@
+/* Make sure that the default derived class constructor has the required spread semantics.
+ *
+ * Test credit André Bargull
+ */
+
+Array.prototype[Symbol.iterator] = function*() { yield 1; yield 2; };
+
+class Base {
+ constructor(a, b) {
+ assertEq(a, 1);
+ assertEq(b, 2);
+ }
+};
+class Derived extends Base {};
+
+new Derived();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/defaultConstructorNotCallable.js b/js/src/tests/ecma_6/Class/defaultConstructorNotCallable.js
new file mode 100644
index 000000000..558f8dcc2
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/defaultConstructorNotCallable.js
@@ -0,0 +1,8 @@
+class badBase {}
+assertThrowsInstanceOf(badBase, TypeError);
+
+class badSub extends (class {}) {}
+assertThrowsInstanceOf(badSub, TypeError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalBinding.js b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalBinding.js
new file mode 100644
index 000000000..d6b15baab
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalBinding.js
@@ -0,0 +1,12 @@
+// Make sure it doesn't matter when we make the arrow function
+new class extends class { } {
+ constructor() {
+ let arrow = () => this;
+ assertThrowsInstanceOf(arrow, ReferenceError);
+ super();
+ assertEq(arrow(), this);
+ }
+}();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalClosed.js b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalClosed.js
new file mode 100644
index 000000000..431a73c92
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalClosed.js
@@ -0,0 +1,11 @@
+new class extends class { } {
+ constructor() {
+ let a1 = () => this;
+ let a2 = (() => super());
+ assertThrowsInstanceOf(a1, ReferenceError);
+ assertEq(a2(), a1());
+ }
+}();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalEscape.js b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalEscape.js
new file mode 100644
index 000000000..2676d4b94
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalEscape.js
@@ -0,0 +1,13 @@
+let arrow;
+
+class foo extends class { } {
+ constructor() {
+ arrow = () => this;
+ super();
+ }
+}
+
+assertEq(new foo(), arrow());
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalEscapeUninitialized.js b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalEscapeUninitialized.js
new file mode 100644
index 000000000..970beb043
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalEscapeUninitialized.js
@@ -0,0 +1,38 @@
+let superArrow;
+let thisArrow;
+
+let thisStash;
+
+class base {
+ constructor() {
+ // We run this constructor twice as part of the double init check
+ if (!thisStash)
+ thisStash = {prop:45};
+ return thisStash;
+ }
+}
+
+class foo extends base {
+ constructor() {
+ superArrow = (()=>super());
+ thisArrow = ()=>this;
+ }
+}
+
+// Populate the arrow function saves. Since we never invoke super(), we throw
+assertThrowsInstanceOf(()=>new foo(), ReferenceError);
+
+// No |this| binding in the closure, yet
+assertThrowsInstanceOf(thisArrow, ReferenceError);
+
+// call super()
+superArrow();
+
+// Can't call it twice
+assertThrowsInstanceOf(superArrow, ReferenceError);
+
+// Oh look, |this| is populated, now.
+assertEq(thisArrow(), thisStash);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalGetThis.js b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalGetThis.js
new file mode 100644
index 000000000..26f9843d2
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalGetThis.js
@@ -0,0 +1,10 @@
+new class extends class { } {
+ constructor() {
+ super();
+ assertEq(this, (()=>this)());
+ assertEq(this, eval("this"));
+ }
+}();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalNestedSuperCall.js b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalNestedSuperCall.js
new file mode 100644
index 000000000..d81f18648
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalNestedSuperCall.js
@@ -0,0 +1,34 @@
+new class extends class { } {
+ constructor() {
+ (()=>eval("super()"))();
+ assertEq(this, eval("this"));
+ assertEq(this, (()=>this)());
+ }
+}();
+
+new class extends class { } {
+ constructor() {
+ (()=>(()=>super())())();
+ assertEq(this, eval("this"));
+ assertEq(this, (()=>this)());
+ }
+}();
+
+new class extends class { } {
+ constructor() {
+ eval("(()=>super())()");
+ assertEq(this, eval("this"));
+ assertEq(this, (()=>this)());
+ }
+}();
+
+new class extends class { } {
+ constructor() {
+ eval("eval('super()')");
+ assertEq(this, eval("this"));
+ assertEq(this, (()=>this)());
+ }
+}();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalSuperCall.js b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalSuperCall.js
new file mode 100644
index 000000000..0f60df746
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorArrowEvalSuperCall.js
@@ -0,0 +1,18 @@
+new class extends class { } {
+ constructor() {
+ assertEq(eval("super(); this"), this);
+ assertEq(this, eval("this"));
+ assertEq(this, (()=>this)());
+ }
+}();
+
+new class extends class { } {
+ constructor() {
+ (()=>super())();
+ assertEq(this, eval("this"));
+ assertEq(this, (()=>this)());
+ }
+}();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorInlining.js b/js/src/tests/ecma_6/Class/derivedConstructorInlining.js
new file mode 100644
index 000000000..387ea1d69
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorInlining.js
@@ -0,0 +1,19 @@
+// Since we (for now!) can't emit jitcode for derived class statements. Make
+// sure we can correctly invoke derived class constructors.
+
+class foo extends null {
+ constructor() {
+ // Anything that tests |this| should throw, so just let it run off the
+ // end.
+ }
+}
+
+function intermediate() {
+ new foo();
+}
+
+for (let i = 0; i < 1100; i++)
+ assertThrownErrorContains(intermediate, "|this|");
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorName.js b/js/src/tests/ecma_6/Class/derivedConstructorName.js
new file mode 100644
index 000000000..13d47addb
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorName.js
@@ -0,0 +1,11 @@
+class A {
+ constructor() { }
+}
+
+class B extends A { }
+
+var b = new B();
+assertEq(b.constructor.name, "B");
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorReturnPrimitive.js b/js/src/tests/ecma_6/Class/derivedConstructorReturnPrimitive.js
new file mode 100644
index 000000000..8b1594fa8
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorReturnPrimitive.js
@@ -0,0 +1,15 @@
+class foo extends null {
+ constructor() {
+ // Returning a primitive is a TypeError in derived constructors. This
+ // ensures that super() can take the return value directly, without
+ // checking it. Use |null| here, as a tricky check to make sure we
+ // didn't lump it in with the object check, somehow.
+ return null;
+ }
+}
+
+for (let i = 0; i < 1100; i++)
+ assertThrownErrorContains(() => new foo(), "return");
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorTDZExplicitThis.js b/js/src/tests/ecma_6/Class/derivedConstructorTDZExplicitThis.js
new file mode 100644
index 000000000..fc5dd3858
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorTDZExplicitThis.js
@@ -0,0 +1,12 @@
+class foo extends null {
+ constructor() {
+ this;
+ assertEq(false, true);
+ }
+}
+
+for (let i = 0; i < 1100; i++)
+ assertThrownErrorContains(() => new foo(), "|this|");
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorTDZOffEdge.js b/js/src/tests/ecma_6/Class/derivedConstructorTDZOffEdge.js
new file mode 100644
index 000000000..145b12d2a
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorTDZOffEdge.js
@@ -0,0 +1,11 @@
+class foo extends null {
+ constructor() {
+ // Let it fall off the edge and throw.
+ }
+}
+
+for (let i = 0; i < 1100; i++)
+ assertThrownErrorContains(() => new foo(), "|this|");
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorTDZReturnAliasedTry.js b/js/src/tests/ecma_6/Class/derivedConstructorTDZReturnAliasedTry.js
new file mode 100644
index 000000000..3399c69b0
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorTDZReturnAliasedTry.js
@@ -0,0 +1,14 @@
+class base {}
+class derived extends base {
+ constructor() {
+ try {
+ (function() { p1(eval()) }())
+ } catch (e) {
+ return
+ }
+ }
+}
+assertThrowsInstanceOf(()=>new derived(), ReferenceError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorTDZReturnObject.js b/js/src/tests/ecma_6/Class/derivedConstructorTDZReturnObject.js
new file mode 100644
index 000000000..48206a881
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorTDZReturnObject.js
@@ -0,0 +1,13 @@
+class foo extends null {
+ constructor() {
+ // If you return an object, we don't care that |this| went
+ // uninitialized
+ return {};
+ }
+}
+
+for (let i = 0; i < 1100; i++)
+ new foo();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorTDZReturnTry.js b/js/src/tests/ecma_6/Class/derivedConstructorTDZReturnTry.js
new file mode 100644
index 000000000..96791c0e7
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorTDZReturnTry.js
@@ -0,0 +1,16 @@
+class base {}
+class derived extends base {
+ constructor() {
+ try {
+ return;
+ } catch (e) {
+ try {
+ return;
+ } catch (e) {}
+ }
+ }
+}
+assertThrowsInstanceOf(() => new derived, ReferenceError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/derivedConstructorTDZReturnUndefined.js b/js/src/tests/ecma_6/Class/derivedConstructorTDZReturnUndefined.js
new file mode 100644
index 000000000..ab31b7aed
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/derivedConstructorTDZReturnUndefined.js
@@ -0,0 +1,13 @@
+class foo extends null {
+ constructor() {
+ // Explicit returns of undefined should act the same as falling off the
+ // end of the function. That is to say, they should throw.
+ return undefined;
+ }
+}
+
+for (let i = 0; i < 1100; i++)
+ assertThrownErrorContains(() => new foo(), "|this|");
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/extendBuiltinConstructors.js b/js/src/tests/ecma_6/Class/extendBuiltinConstructors.js
new file mode 100644
index 000000000..480dd7b57
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/extendBuiltinConstructors.js
@@ -0,0 +1,111 @@
+function testBuiltinInstanceIsInstanceOf(instance, builtin, class_) {
+ assertEq(instance instanceof class_, true);
+ assertEq(instance instanceof builtin, true);
+
+ if (builtin === Array)
+ assertEq(Array.isArray(instance), true);
+}
+
+function testBuiltinInstance(builtin, ...args) {
+ class sub extends builtin {
+ constructor(...args) {
+ super(...args);
+ this.called = true;
+ }
+ }
+
+ let instance = new sub(...args);
+ assertEq(instance.called, true);
+ testBuiltinInstanceIsInstanceOf(instance, builtin, sub);
+}
+
+function testBuiltinMultipleSubclasses(builtin, ...args) {
+ function f(obj, prop) {
+ assertEq(obj.prop, prop);
+ }
+
+ class sub1 extends builtin { };
+ class sub2 extends builtin { };
+
+ const prop1 = "A";
+ const prop2 = "B";
+
+ sub1.prototype.prop = prop1;
+ sub2.prototype.prop = prop2;
+
+ let instance1 = new sub1(...args);
+ let instance2 = new sub2(...args);
+
+ // Also make sure we get the properties we want with a default constructor
+ testBuiltinInstanceIsInstanceOf(instance1, builtin, sub1);
+
+ for (let i = 0; i < 10; i++) {
+ f(instance1, prop1);
+ f(instance2, prop2);
+ }
+}
+
+function testBuiltin(builtin, ...args) {
+ testBuiltinInstance(builtin, ...args);
+ testBuiltinMultipleSubclasses(builtin, ...args);
+}
+
+function testBuiltinTypedArrays() {
+ let typedArrays = [Int8Array,
+ Uint8Array,
+ Uint8ClampedArray,
+ Int16Array,
+ Uint16Array,
+ Int32Array,
+ Uint32Array,
+ Float32Array,
+ Float64Array];
+
+ for (let array of typedArrays) {
+ testBuiltin(array);
+ testBuiltin(array, 5);
+ testBuiltin(array, new array());
+ testBuiltin(array, new ArrayBuffer());
+ }
+}
+
+testBuiltin(Function);
+testBuiltin(Object);
+testBuiltin(Boolean);
+testBuiltin(Error);
+testBuiltin(EvalError);
+testBuiltin(RangeError);
+testBuiltin(ReferenceError);
+testBuiltin(SyntaxError);
+testBuiltin(TypeError);
+testBuiltin(URIError);
+testBuiltin(Number);
+testBuiltin(Date);
+testBuiltin(Date, 5);
+testBuiltin(Date, 5, 10);
+testBuiltin(RegExp);
+testBuiltin(RegExp, /Regexp Argument/);
+testBuiltin(RegExp, "String Argument");
+testBuiltin(Map);
+testBuiltin(Set);
+testBuiltin(WeakMap);
+testBuiltin(WeakSet);
+testBuiltin(ArrayBuffer);
+testBuiltinTypedArrays();
+testBuiltin(DataView, new ArrayBuffer());
+testBuiltin(DataView, new (newGlobal().ArrayBuffer)());
+testBuiltin(String);
+testBuiltin(Array);
+testBuiltin(Array, 15);
+testBuiltin(Array, 3.0);
+testBuiltin(Array, "non-length one-arg");
+testBuiltin(Array, 5, 10, 15, "these are elements");
+// More Promise subclassing tests can be found in ecma_6/Promise/promise-subclassing.js
+if (typeof Promise !== "undefined")
+ testBuiltin(Promise, _=>{});
+
+if (this.SharedArrayBuffer)
+ testBuiltin(SharedArrayBuffer);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/geterNoExprClosure.js b/js/src/tests/ecma_6/Class/geterNoExprClosure.js
new file mode 100644
index 000000000..e37cb287a
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/geterNoExprClosure.js
@@ -0,0 +1,20 @@
+// getter/setter with expression closure is allowed only in object literal.
+
+assertThrowsInstanceOf(() => eval(`
+ class foo {
+ constructor() {}
+
+ get a() 1
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ class foo {
+ constructor() {}
+
+ set a(v) 1
+ }
+`), SyntaxError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/innerBinding.js b/js/src/tests/ecma_6/Class/innerBinding.js
new file mode 100644
index 000000000..b1afa177e
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/innerBinding.js
@@ -0,0 +1,86 @@
+// Named class definitions should create an immutable inner binding.
+// Since all code in classes is in strict mode, attempts to mutate it
+// should throw.
+class Foof { constructor() { }; tryBreak() { Foof = 4; } }
+for (let result of [Foof, class Bar { constructor() { }; tryBreak() { Bar = 4; } }])
+ assertThrowsInstanceOf(() => new result().tryBreak(), TypeError);
+
+{
+ class foo { constructor() { }; tryBreak() { foo = 4; } }
+ for (let result of [foo, class Bar { constructor() { }; tryBreak() { Bar = 4 } }])
+ assertThrowsInstanceOf(() => new result().tryBreak(), TypeError);
+}
+
+// TDZ applies to inner bindings
+assertThrowsInstanceOf(()=>eval(`class Bar {
+ constructor() { };
+ [Bar] () { };
+ }`), ReferenceError);
+
+assertThrowsInstanceOf(()=>eval(`(class Bar {
+ constructor() { };
+ [Bar] () { };
+ })`), ReferenceError);
+
+// There's no magic "inner binding" global
+{
+ class Foo {
+ constructor() { };
+ test() {
+ class Bar {
+ constructor() { }
+ test() { return Foo === Bar }
+ }
+ return new Bar().test();
+ }
+ }
+ assertEq(new Foo().test(), false);
+ assertEq(new class foo {
+ constructor() { };
+ test() {
+ return new class bar {
+ constructor() { }
+ test() { return foo === bar }
+ }().test();
+ }
+ }().test(), false);
+}
+
+// Inner bindings are shadowable
+{
+ class Foo {
+ constructor() { }
+ test(Foo) { return Foo; }
+ }
+ assertEq(new Foo().test(4), 4);
+ assertEq(new class foo {
+ constructor() { };
+ test(foo) { return foo }
+ }().test(4), 4);
+}
+
+// Inner bindings in expressions should shadow even existing names.
+class Foo { constructor() { } static method() { throw new Error("NO!"); } }
+assertEq(new class Foo {
+ constructor() { };
+ static method() { return 4; };
+ test() { return Foo.method(); }
+ }().test(), 4);
+
+// The outer binding is distinct from the inner one
+{
+ let orig_X;
+
+ class X {
+ constructor() { }
+ f() { assertEq(X, orig_X); }
+ }
+
+ orig_X = X;
+ X = 13;
+ assertEq(X, 13);
+ new orig_X().f();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/Class/member-expr-after-super.js b/js/src/tests/ecma_6/Class/member-expr-after-super.js
new file mode 100644
index 000000000..fa965b24e
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/member-expr-after-super.js
@@ -0,0 +1,44 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+class Base {
+ get test() {
+ return "ok";
+ }
+}
+
+class SuperThenProperty extends Base {
+ constructor() {
+ var result = super().test;
+ return {result};
+ }
+}
+assertEq(new SuperThenProperty().result, "ok");
+
+class SuperThenMember extends Base {
+ constructor() {
+ var result = super()["tes" + String.fromCodePoint("t".codePointAt(0))];
+ return {result};
+ }
+}
+assertEq(new SuperThenMember().result, "ok");
+
+class SuperThenCall extends Function {
+ constructor() {
+ var result = super("o, k", "return o + k;")("o", "k");
+ return {result};
+ }
+}
+assertEq(new SuperThenCall().result, "ok");
+
+class SuperThenTemplateCall extends Function {
+ constructor() {
+ var result = super("cooked", "return cooked[0][0] + cooked.raw[0][1];")`ok`;
+ return {result};
+ }
+}
+assertEq(new SuperThenTemplateCall().result, "ok");
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Class/methDefn.js b/js/src/tests/ecma_6/Class/methDefn.js
new file mode 100644
index 000000000..9513bdfb3
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/methDefn.js
@@ -0,0 +1,204 @@
+var BUGNUMBER = 924672;
+var summary = 'Method Definitions'
+
+print(BUGNUMBER + ": " + summary);
+
+// Function definitions.
+function syntaxError (script) {
+ try {
+ Function(script);
+ } catch (e) {
+ if (e instanceof SyntaxError) {
+ return;
+ }
+ }
+ throw new Error('Expected syntax error: ' + script);
+}
+
+
+// Tests begin.
+
+syntaxError("{a(){}}");
+syntaxError("b = {a(");
+syntaxError("b = {a)");
+syntaxError("b = {a(}");
+syntaxError("b = {a)}");
+syntaxError("b = {a()");
+syntaxError("b = {a()}");
+syntaxError("b = {a(){}");
+syntaxError("b = {a){}");
+syntaxError("b = {a}}");
+syntaxError("b = {a{}}");
+syntaxError("b = {a({}}");
+syntaxError("b = {a@(){}}");
+syntaxError("b = {a() => 0}");
+syntaxError("b = {a() void 0}");
+syntaxError("b = {a() 1}");
+syntaxError("b = {a() false}");
+
+b = {a(){return 5;}};
+assertEq(b.a(), 5);
+
+b = {a(){return "hey";}};
+assertEq(b.a(), "hey");
+
+b = {a(){return arguments;}};
+assertEq(b.a().length, 0);
+
+b = {a(c){return arguments;}};
+assertEq(b.a().length, 0);
+
+b = {a(c){return arguments;}};
+assertEq(b.a(1).length, 1);
+
+b = {a(c){return arguments;}};
+assertEq(b.a(1)[0], 1);
+
+b = {a(c,d){return arguments;}};
+assertEq(b.a(1,2).length, 2);
+
+b = {a(c,d){return arguments;}};
+assertEq(b.a(1,2)[0], 1);
+
+b = {a(c,d){return arguments;}};
+assertEq(b.a(1,2)[1], 2);
+
+// Methods along with other properties.
+syntaxError("b = {,a(){}}");
+syntaxError("b = {@,a(){}}");
+syntaxError("b = {a(){},@}");
+syntaxError("b = {a : 5 , (){}}");
+syntaxError("b = {a : 5@ , a(){}}");
+syntaxError("b = {a : , a(){}}");
+syntaxError("b = {a : 5, a()}}");
+syntaxError("b = {a : 5, a({}}");
+syntaxError("b = {a : 5, a){}}");
+syntaxError("b = {a : 5, a(){}");
+var c = "d";
+b = { a : 5,
+ [c] : "hey",
+ e() {return 6;},
+ get f() {return 7;},
+ set f(g) {this.h = 9;}
+}
+assertEq(b.a, 5);
+assertEq(b.d, "hey");
+assertEq(b.e(), 6);
+assertEq(b.f, 7);
+assertEq(b.h !== 9, true);
+b.f = 15;
+assertEq(b.h, 9);
+
+
+var i = 0;
+var a = {
+ foo0 : function (){return 0;},
+ ["foo" + ++i](){return 1;},
+ ["foo" + ++i](){return 2;},
+ ["foo" + ++i](){return 3;},
+ foo4(){return 4;}
+};
+assertEq(a.foo0(), 0);
+assertEq(a.foo1(), 1);
+assertEq(a.foo2(), 2);
+assertEq(a.foo3(), 3);
+assertEq(a.foo4(), 4);
+
+// Symbols.
+var unique_sym = Symbol("1"), registered_sym = Symbol.for("2");
+a = { [unique_sym](){return 2;}, [registered_sym](){return 3;} };
+assertEq(a[unique_sym](), 2);
+assertEq(a[registered_sym](), 3);
+
+// Method characteristics.
+a = { b(){ return 4;} };
+b = Object.getOwnPropertyDescriptor(a, "b");
+assertEq(b.configurable, true);
+assertEq(b.enumerable, true);
+assertEq(b.writable, true);
+assertEq(b.value(), 4);
+
+// prototype property
+assertEq(a.b.prototype, undefined);
+assertEq(a.b.hasOwnProperty("prototype"), false);
+
+// Defining several methods using eval.
+var code = "({";
+for (i = 0; i < 1000; i++)
+ code += "['foo' + " + i + "]() {return 'ok';}, "
+code += "['bar']() {return 'all ok'}});";
+var obj = eval(code);
+for (i = 0; i < 1000; i++)
+ assertEq(obj["foo" + i](), "ok");
+assertEq(obj["bar"](), "all ok");
+
+// this
+var obj = {
+ a : "hey",
+ meth(){return this.a;}
+}
+assertEq(obj.meth(), "hey");
+
+// Inheritance
+var obj2 = Object.create(obj);
+assertEq(obj2.meth(), "hey");
+
+var obj = {
+ a() {
+ return "hey";
+ }
+}
+assertEq(obj.a.call(), "hey");
+
+// Duplicates
+var obj = {
+ meth : 3,
+ meth() { return 4; },
+ meth() { return 5; }
+}
+assertEq(obj.meth(), 5);
+
+var obj = {
+ meth() { return 4; },
+ meth() { return 5; },
+ meth : 3
+}
+assertEq(obj.meth, 3);
+assertThrowsInstanceOf(function() {obj.meth();}, TypeError);
+
+// Strict mode
+a = {b(c){"use strict";return c;}};
+assertEq(a.b(1), 1);
+a = {["b"](c){"use strict";return c;}};
+assertEq(a.b(1), 1);
+
+// Allow strict-reserved names as methods in objects.
+// (Bug 1124362)
+a = { static() { return 4; } };
+assertEq(a.static(), 4);
+
+a = { get static() { return 4; } };
+assertEq(a.static, 4);
+
+a = { set static(x) { assertEq(x, 4); } };
+a.static = 4;
+
+function testStrictMode() {
+ "use strict";
+ var obj = { static() { return 4; } };
+ assertEq(obj.static(), 4);
+
+ obj = { get static() { return 4; } };
+ assertEq(obj.static, 4);
+
+ obj = { set static(x) { assertEq(x, 4); } };
+ obj.static = 4;
+}
+testStrictMode();
+
+// Tests provided by benvie in the bug to distinguish from ES5 desugar.
+assertEq(({ method() {} }).method.name, "method");
+assertThrowsInstanceOf(function() {({ method() { method() } }).method() }, ReferenceError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Class/methDefnGen.js b/js/src/tests/ecma_6/Class/methDefnGen.js
new file mode 100644
index 000000000..3165ed448
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/methDefnGen.js
@@ -0,0 +1,83 @@
+var BUGNUMBER = 924672;
+var summary = 'Method Definitions - Generators'
+
+print(BUGNUMBER + ": " + summary);
+
+// Function definitions.
+function syntaxError (script) {
+ try {
+ Function(script);
+ } catch (e) {
+ if (e instanceof SyntaxError) {
+ return;
+ }
+ }
+ throw new Error('Expected syntax error: ' + script);
+}
+
+
+// Tests begin.
+
+syntaxError("{*a(){}}");
+syntaxError("b = {*(){}");
+syntaxError("b = {*{}");
+syntaxError("b = {*){}");
+syntaxError("b = {*({}");
+syntaxError("b = {*(){");
+syntaxError("b = {*()}");
+syntaxError("b = {*a(");
+syntaxError("b = {*a)");
+syntaxError("b = {*a(}");
+syntaxError("b = {*a)}");
+syntaxError("b = {*a()");
+syntaxError("b = {*a()}");
+syntaxError("b = {*a(){}");
+syntaxError("b = {*a){}");
+syntaxError("b = {*a}}");
+syntaxError("b = {*a{}}");
+syntaxError("b = {*a({}}");
+syntaxError("b = {*a@(){}}");
+syntaxError("b = {*@(){}}");
+syntaxError("b = {*get a(){}}");
+syntaxError("b = {get *a(){}}");
+syntaxError("b = {get a*(){}}");
+syntaxError("b = {*set a(c){}}");
+syntaxError("b = {set *a(c){}}");
+syntaxError("b = {set a*(c){}}");
+syntaxError("b = {*a : 1}");
+syntaxError("b = {a* : 1}");
+syntaxError("b = {a :* 1}");
+syntaxError("b = {a*(){}}");
+
+// Generator methods.
+b = { * g() {
+ var a = { [yield 1]: 2, [yield 2]: 3};
+ return a;
+} }
+var it = b.g();
+var next = it.next();
+assertEq(next.done, false);
+assertEq(next.value, 1);
+next = it.next("hello");
+assertEq(next.done, false);
+assertEq(next.value, 2);
+next = it.next("world");
+assertEq(next.done, true);
+assertEq(next.value.hello, 2);
+assertEq(next.value.world, 3);
+
+// prototype property
+assertEq(b.g.hasOwnProperty("prototype"), true);
+
+// Strict mode
+a = {*b(c){"use strict";yield c;}};
+assertEq(a.b(1).next().value, 1);
+a = {*["b"](c){"use strict";return c;}};
+assertEq(a.b(1).next().value, 1);
+
+// Generators should not have [[Construct]]
+a = {*g() { yield 1; }}
+assertThrowsInstanceOf(() => { new a.g }, TypeError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Class/method-named-static.js b/js/src/tests/ecma_6/Class/method-named-static.js
new file mode 100644
index 000000000..c5a2ed882
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/method-named-static.js
@@ -0,0 +1,56 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Instance method named "static", with and without escape sequence.
+assertEq((new class {
+ static() { return "method-static-no-escape"; }
+}).static(), "method-static-no-escape");
+
+assertEq((new class {
+ st\u0061tic() { return "method-static-escape"; }
+}).static(), "method-static-escape");
+
+// Instance getter named "static", with and without escape sequence.
+assertEq((new class {
+ get static() { return "getter-static-no-escape"; }
+}).static, "getter-static-no-escape");
+
+assertEq((new class {
+ get static() { return "getter-static-escape"; }
+}).static, "getter-static-escape");
+
+// Static method named "static", with and without escape sequence.
+assertEq(class {
+ static static() { return "static-method-static-no-escape"; }
+}.static(), "static-method-static-no-escape");
+
+assertEq(class {
+ static st\u0061tic() { return "static-method-static-escape"; }
+}.static(), "static-method-static-escape");
+
+// Static getter named "static", with and without escape sequence.
+assertEq(class {
+ static get static() { return "static-getter-static-no-escape"; }
+}.static, "static-getter-static-no-escape");
+
+assertEq(class {
+ static get st\u0061tic() { return "static-getter-static-escape"; }
+}.static, "static-getter-static-escape");
+
+
+// The static modifier itself must not contain any escape sequences.
+assertThrowsInstanceOf(() => eval(String.raw`
+ class C {
+ st\u0061tic m() {}
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ class C {
+ st\u0061tic get m() {}
+ }
+`), SyntaxError);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Class/methodInstallation.js b/js/src/tests/ecma_6/Class/methodInstallation.js
new file mode 100644
index 000000000..bbb6c2f72
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/methodInstallation.js
@@ -0,0 +1,101 @@
+// Do the things we write in classes actually appear as they are supposed to?
+
+var methodCalled;
+var getterCalled;
+var setterCalled;
+var constructorCalled;
+var staticMethodCalled;
+var staticGetterCalled;
+var staticSetterCalled;
+class testClass {
+ constructor() { constructorCalled = true; }
+ __proto__() { methodCalled = true }
+ get getter() { getterCalled = true; }
+ set setter(x) { setterCalled = true; }
+ static staticMethod() { staticMethodCalled = true; }
+ static get staticGetter() { staticGetterCalled = true; }
+ static set staticSetter(x) { staticSetterCalled = true; }
+ *[Symbol.iterator]() { yield "cow"; yield "pig"; }
+}
+
+for (let a of [testClass,
+ class {
+ constructor() { constructorCalled = true; }
+ __proto__() { methodCalled = true }
+ get getter() { getterCalled = true; }
+ set setter(x) { setterCalled = true; }
+ static staticMethod() { staticMethodCalled = true; }
+ static get staticGetter() { staticGetterCalled = true; }
+ static set staticSetter(x) { staticSetterCalled = true; }
+ *[Symbol.iterator]() { yield "cow"; yield "pig"; }
+ }]) {
+
+ methodCalled = false;
+ getterCalled = false;
+ setterCalled = false;
+ constructorCalled = false;
+ staticMethodCalled = false;
+ staticGetterCalled = false;
+ staticSetterCalled = false;
+
+ var aConstDesc = Object.getOwnPropertyDescriptor(a.prototype, "constructor");
+ assertEq(aConstDesc.writable, true);
+ assertEq(aConstDesc.configurable, true);
+ assertEq(aConstDesc.enumerable, false);
+ new aConstDesc.value();
+ assertEq(constructorCalled, true);
+
+ // __proto__ is just an identifier for classes. No prototype changes are made.
+ assertEq(Object.getPrototypeOf(a.prototype), Object.prototype);
+ var aMethDesc = Object.getOwnPropertyDescriptor(a.prototype, "__proto__");
+ assertEq(aMethDesc.writable, true);
+ assertEq(aMethDesc.configurable, true);
+ assertEq(aMethDesc.enumerable, false);
+ aMethDesc.value();
+ assertEq(methodCalled, true);
+
+ var aGetDesc = Object.getOwnPropertyDescriptor(a.prototype, "getter");
+ assertEq(aGetDesc.configurable, true);
+ assertEq(aGetDesc.enumerable, false);
+ aGetDesc.get();
+ assertThrowsInstanceOf(() => new aGetDesc.get, TypeError);
+ assertEq(getterCalled, true);
+
+ var aSetDesc = Object.getOwnPropertyDescriptor(a.prototype, "setter");
+ assertEq(aSetDesc.configurable, true);
+ assertEq(aSetDesc.enumerable, false);
+ aSetDesc.set();
+ assertThrowsInstanceOf(() => new aSetDesc.set, TypeError);
+ assertEq(setterCalled, true);
+ assertDeepEq(aSetDesc, Object.getOwnPropertyDescriptor(a.prototype, "setter"));
+
+ assertEq(Object.getOwnPropertyDescriptor(new a(), "staticMethod"), undefined);
+ var aStaticMethDesc = Object.getOwnPropertyDescriptor(a, "staticMethod");
+ assertEq(aStaticMethDesc.configurable, true);
+ assertEq(aStaticMethDesc.enumerable, false);
+ assertEq(aStaticMethDesc.writable, true);
+ aStaticMethDesc.value();
+ assertThrowsInstanceOf(() => new aStaticMethDesc.value, TypeError);
+ assertEq(staticMethodCalled, true);
+
+ assertEq(Object.getOwnPropertyDescriptor(new a(), "staticGetter"), undefined);
+ var aStaticGetDesc = Object.getOwnPropertyDescriptor(a, "staticGetter");
+ assertEq(aStaticGetDesc.configurable, true);
+ assertEq(aStaticGetDesc.enumerable, false);
+ aStaticGetDesc.get();
+ assertThrowsInstanceOf(() => new aStaticGetDesc.get, TypeError);
+ assertEq(staticGetterCalled, true);
+
+ assertEq(Object.getOwnPropertyDescriptor(new a(), "staticSetter"), undefined);
+ var aStaticSetDesc = Object.getOwnPropertyDescriptor(a, "staticSetter");
+ assertEq(aStaticSetDesc.configurable, true);
+ assertEq(aStaticSetDesc.enumerable, false);
+ aStaticSetDesc.set();
+ assertThrowsInstanceOf(() => new aStaticSetDesc.set, TypeError);
+ assertEq(staticSetterCalled, true);
+
+ assertEq([...new a()].join(), "cow,pig");
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/Class/methodName.js b/js/src/tests/ecma_6/Class/methodName.js
new file mode 100644
index 000000000..02a726c10
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/methodName.js
@@ -0,0 +1,40 @@
+class TestClass {
+ get getter() { }
+ set setter(x) { }
+ method() { }
+
+ static get staticGetter() { }
+ static set staticSetter(x) { }
+ static staticMethod() { }
+
+ get 1() { }
+ set 2(v) { }
+ 3() { }
+
+ static get 4() { }
+ static set 5(x) { }
+ static 6() { }
+}
+
+function name(obj, property, get) {
+ let desc = Object.getOwnPropertyDescriptor(obj, property);
+ return (get ? desc.get : desc.set).name;
+}
+
+assertEq(name(TestClass.prototype, "getter", true), "get getter");
+assertEq(name(TestClass.prototype, "setter", false), "set setter");
+assertEq(TestClass.prototype.method.name, "method");
+
+assertEq(name(TestClass, "staticGetter", true), "get staticGetter");
+assertEq(name(TestClass, "staticSetter", false), "set staticSetter");
+assertEq(TestClass.staticMethod.name, "staticMethod");
+
+assertEq(name(TestClass.prototype, "1", true), "get 1");
+assertEq(name(TestClass.prototype, "2", false), "set 2");
+assertEq(TestClass.prototype[3].name, "3");
+
+assertEq(name(TestClass, "4", true), "get 4");
+assertEq(name(TestClass, "5", false), "set 5");
+assertEq(TestClass[6].name, "6");
+
+reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Class/methodOverwrites.js b/js/src/tests/ecma_6/Class/methodOverwrites.js
new file mode 100644
index 000000000..c1c460a28
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/methodOverwrites.js
@@ -0,0 +1,80 @@
+// Ensure that we can overwrite methods when more tha one is present.
+{
+ var result = 0;
+ // Regardless of order, the constructor is overridden by any CPN, because it's
+ // processed seperately.
+ class a { ["constructor"]() { result += 1; }; constructor() { result += 2; } }
+ var aInst = new a();
+ assertEq(result, 2);
+ aInst.constructor();
+ assertEq(result, 3);
+
+ class b { constructor() { result += 2; } ["constructor"]() { result += 1; }; }
+ var bInst = new b();
+ assertEq(result, 5);
+ bInst.constructor();
+ assertEq(result, 6);
+
+ class c { constructor() { } method() { result += 1 } get method() { result += 2 } }
+ new c().method;
+ assertEq(result, 8);
+
+ class d { constructor() { } get method() { result += 1 } method() { result += 2 } }
+ new d().method();
+ assertEq(result, 10);
+
+ // getters and setter should not overwrite each other, but merge cleanly.
+ class e { constructor() { } get method() { result += 1 } set method(x) { } }
+ new e().method;
+ assertEq(result, 11);
+
+ class f { constructor() { }
+ set method(x) { throw "NO"; }
+ method() { throw "NO" }
+ get method() { return new Function("result += 1"); }
+ }
+ new f().method();
+ assertEq(result, 12);
+}
+
+// Try again with expressions.
+{
+ var result = 0;
+ // Regardless of order, the constructor is overridden by any CPN, because it's
+ // processed seperately.
+ let a = class { ["constructor"]() { result += 1; }; constructor() { result += 2; } };
+ var aInst = new a();
+ assertEq(result, 2);
+ aInst.constructor();
+ assertEq(result, 3);
+
+ let b = class { constructor() { result += 2; } ["constructor"]() { result += 1; }; };
+ var bInst = new b();
+ assertEq(result, 5);
+ bInst.constructor();
+ assertEq(result, 6);
+
+ let c = class { constructor() { } method() { result += 1 } get method() { result += 2 } };
+ new c().method;
+ assertEq(result, 8);
+
+ let d = class { constructor() { } get method() { result += 1 } method() { result += 2 } };
+ new d().method();
+ assertEq(result, 10);
+
+ // getters and setter should not overwrite each other, but merge cleanly.
+ let e = class { constructor() { } get method() { result += 1 } set method(x) { } };
+ new e().method;
+ assertEq(result, 11);
+
+ let f = class { constructor() { }
+ set method(x) { throw "NO"; }
+ method() { throw "NO" }
+ get method() { return new Function("result += 1"); }
+ };
+ new f().method();
+ assertEq(result, 12);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/Class/methodsPrototype.js b/js/src/tests/ecma_6/Class/methodsPrototype.js
new file mode 100644
index 000000000..07a565ceb
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/methodsPrototype.js
@@ -0,0 +1,39 @@
+class TestClass {
+ constructor() { }
+ method() { }
+ get getter() { }
+ set setter(x) { }
+ *generator() { }
+ static staticMethod() { }
+ static get staticGetter() { }
+ static set staticSetter(x) { }
+ static *staticGenerator() { }
+}
+
+var test = new TestClass();
+
+var hasPrototype = [
+ test.constructor,
+ test.generator,
+ TestClass.staticGenerator
+]
+
+for (var fun of hasPrototype) {
+ assertEq(fun.hasOwnProperty('prototype'), true);
+}
+
+var hasNoPrototype = [
+ test.method,
+ Object.getOwnPropertyDescriptor(test.__proto__, 'getter').get,
+ Object.getOwnPropertyDescriptor(test.__proto__, 'setter').set,
+ TestClass.staticMethod,
+ Object.getOwnPropertyDescriptor(TestClass, 'staticGetter').get,
+ Object.getOwnPropertyDescriptor(TestClass, 'staticSetter').set,
+]
+
+for (var fun of hasNoPrototype) {
+ assertEq(fun.hasOwnProperty('prototype'), false);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/Class/newTargetArgumentsIntact.js b/js/src/tests/ecma_6/Class/newTargetArgumentsIntact.js
new file mode 100644
index 000000000..d047085ea
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/newTargetArgumentsIntact.js
@@ -0,0 +1,44 @@
+// Since we put new.target at the end of the arguments vector, ensrue that it
+// doesn't interact with the arguments object
+
+var argsContent;
+
+function argsWithNewTarget(foo) {
+ assertEq(arguments.length, argsContent.length);
+ for (let i = 0; i < arguments.length; i++)
+ assertEq(arguments[i], argsContent[i]);
+ let nt = new.target;
+
+ // Assigning to the arguments object shouldn't infect new.target, either
+ arguments[arguments.length] = 42;
+ assertEq(new.target, nt);
+}
+
+// Test constructing invocations, with under and overflow
+argsContent = [];
+for (let i = 0; i < 100; i++)
+ new argsWithNewTarget();
+
+argsContent = [1];
+for (let i = 0; i < 100; i++)
+ new argsWithNewTarget(1);
+
+argsContent = [1,2,3];
+for (let i = 0; i < 100; i++)
+ new argsWithNewTarget(1, 2, 3);
+
+// Test spreadnew as well.
+argsContent = [];
+for (let i = 0; i < 100; i++)
+ new argsWithNewTarget(...[]);
+
+argsContent = [1];
+for (let i = 0; i < 100; i++)
+ new argsWithNewTarget(...[1]);
+
+argsContent = [1,2,3];
+for (let i = 0; i < 100; i++)
+ new argsWithNewTarget(...[1,2,3]);
+
+if (typeof reportCompare === "function")
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/newTargetArrow.js b/js/src/tests/ecma_6/Class/newTargetArrow.js
new file mode 100644
index 000000000..548f75047
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/newTargetArrow.js
@@ -0,0 +1,24 @@
+// new.target is valid in any arrow function not in a global context.
+new Function('(() => new.target)()');
+
+// It's also good inside eval, but not global eval
+assertThrowsInstanceOf(() => eval('() => new.target'), SyntaxError);
+
+function assertNewTarget(expected) {
+ assertEq((()=>new.target)(), expected);
+ assertEq(eval('()=>new.target')(), expected);
+
+ // Make sure that arrow functions can escape their original context and
+ // still get the right answer.
+ return (() => new.target);
+}
+
+const ITERATIONS = 550;
+for (let i = 0; i < ITERATIONS; i++)
+ assertEq(assertNewTarget(undefined)(), undefined);
+
+for (let i = 0; i < ITERATIONS; i++)
+ assertEq(new assertNewTarget(assertNewTarget)(), assertNewTarget);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/newTargetBound.js b/js/src/tests/ecma_6/Class/newTargetBound.js
new file mode 100644
index 000000000..f65cfe3ca
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/newTargetBound.js
@@ -0,0 +1,16 @@
+function boundTarget(expected) {
+ assertEq(new.target, expected);
+}
+
+let bound = boundTarget.bind(undefined);
+
+const TEST_ITERATIONS = 550;
+
+for (let i = 0; i < TEST_ITERATIONS; i++)
+ bound(undefined);
+
+for (let i = 0; i < TEST_ITERATIONS; i++)
+ new bound(boundTarget);
+
+if (typeof reportCompare === "function")
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/newTargetCCW.js b/js/src/tests/ecma_6/Class/newTargetCCW.js
new file mode 100644
index 000000000..9f5f870d4
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/newTargetCCW.js
@@ -0,0 +1,10 @@
+// Make sure we wrap the new target on CCW construct calls.
+var g = newGlobal();
+
+let f = g.eval('(function (expected) { this.accept = new.target === expected; })');
+
+for (let i = 0; i < 1100; i++)
+ assertEq(new f(f).accept, true);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/newTargetDVG.js b/js/src/tests/ecma_6/Class/newTargetDVG.js
new file mode 100644
index 000000000..1f9c7d7fc
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/newTargetDVG.js
@@ -0,0 +1,7 @@
+function thunk() {
+ new.target();
+}
+assertThrownErrorContains(thunk, "new.target");
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/Class/newTargetDefaults.js b/js/src/tests/ecma_6/Class/newTargetDefaults.js
new file mode 100644
index 000000000..d5a4c5640
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/newTargetDefaults.js
@@ -0,0 +1,25 @@
+// Check that new.target works properly in defaults.
+
+function check(expected, actual = new.target) { assertEq(actual, expected); }
+new check(check);
+check(undefined);
+
+let evaldCheck = eval("(" + check.toString() + ")");
+new evaldCheck(evaldCheck);
+evaldCheck(undefined);
+
+function testInFunction() {
+ function checkInFunction(expected, actual = new.target) { assertEq(actual, expected); }
+ new checkInFunction(checkInFunction);
+ checkInFunction(undefined);
+
+ let evaldCheckInFunction = eval("(" + checkInFunction.toString() + ")");
+ new evaldCheckInFunction(evaldCheckInFunction);
+ evaldCheckInFunction(undefined);
+}
+
+testInFunction();
+new testInFunction();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/newTargetDirectInvoke.js b/js/src/tests/ecma_6/Class/newTargetDirectInvoke.js
new file mode 100644
index 000000000..d2cd1128c
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/newTargetDirectInvoke.js
@@ -0,0 +1,50 @@
+// new.target is valid inside Function() invocations
+var func = new Function("new.target");
+
+// Note that this will also test new.target in ion inlines. When the toplevel
+// script is compiled, assertNewTarget will be inlined.
+function assertNewTarget(expected, unused) { assertEq(new.target, expected); }
+
+// Test non-constructing invocations, with arg underflow, overflow, and correct
+// numbers
+for (let i = 0; i < 100; i++)
+ assertNewTarget(undefined, null);
+
+for (let i = 0; i < 100; i++)
+ assertNewTarget(undefined);
+
+for (let i = 0; i < 100; i++)
+ assertNewTarget(undefined, null, 1);
+
+// Test spread-call
+for (let i = 0; i < 100; i++)
+ assertNewTarget(...[undefined]);
+
+for (let i = 0; i < 100; i++)
+ assertNewTarget(...[undefined, null]);
+
+for (let i = 0; i < 100; i++)
+ assertNewTarget(...[undefined, null, 1]);
+
+// Test constructing invocations, again with under and overflow
+for (let i = 0; i < 100; i++)
+ new assertNewTarget(assertNewTarget, null);
+
+for (let i = 0; i < 100; i++)
+ new assertNewTarget(assertNewTarget);
+
+for (let i = 0; i < 100; i++)
+ new assertNewTarget(assertNewTarget, null, 1);
+
+// Test spreadnew as well.
+for (let i = 0; i < 100; i++)
+ new assertNewTarget(...[assertNewTarget]);
+
+for (let i = 0; i < 100; i++)
+ new assertNewTarget(...[assertNewTarget, null]);
+
+for (let i = 0; i < 100; i++)
+ new assertNewTarget(...[assertNewTarget, null, 1]);
+
+if (typeof reportCompare === "function")
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/newTargetEval.js b/js/src/tests/ecma_6/Class/newTargetEval.js
new file mode 100644
index 000000000..e3940bbf9
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/newTargetEval.js
@@ -0,0 +1,34 @@
+// Eval of new.target is invalid outside functions.
+try {
+ eval('new.target');
+ assertEq(false, true);
+} catch (e if e instanceof SyntaxError) { }
+
+// new.target is invalid inside eval inside top-level arrow functions
+assertThrowsInstanceOf(() => eval('new.target'), SyntaxError);
+
+// new.target is invalid inside indirect eval.
+let ieval = eval;
+try {
+ (function () ieval('new.target'))();
+ assertEq(false, true);
+} catch (e if e instanceof SyntaxError) { }
+
+function assertNewTarget(expected) {
+ assertEq(eval('new.target'), expected);
+ assertEq((()=>eval('new.target'))(), expected);
+
+ // Also test nestings "by induction"
+ assertEq(eval('eval("new.target")'), expected);
+ assertEq(eval("eval('eval(`new.target`)')"), expected);
+}
+
+const ITERATIONS = 550;
+for (let i = 0; i < ITERATIONS; i++)
+ assertNewTarget(undefined);
+
+for (let i = 0; i < ITERATIONS; i++)
+ new assertNewTarget(assertNewTarget);
+
+if (typeof reportCompare === "function")
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/newTargetGenerators.js b/js/src/tests/ecma_6/Class/newTargetGenerators.js
new file mode 100644
index 000000000..614b1ab90
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/newTargetGenerators.js
@@ -0,0 +1,14 @@
+function *generatorNewTarget(expected) {
+ assertEq(new.target, expected);
+ assertEq(eval('new.target'), expected);
+ assertEq((() => new.target)(), expected);
+ yield (() => new.target);
+}
+
+const ITERATIONS = 25;
+
+for (let i = 0; i < ITERATIONS; i++)
+ assertEq(generatorNewTarget(undefined).next().value(), undefined);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/newTargetMethods.js b/js/src/tests/ecma_6/Class/newTargetMethods.js
new file mode 100644
index 000000000..2383dc8bd
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/newTargetMethods.js
@@ -0,0 +1,51 @@
+// Just like newTargetDirectInvoke, except to prove it works in functions
+// defined with method syntax as well. Note that methods, getters, and setters
+// are not constructible.
+
+let ol = {
+ olTest(arg) { assertEq(arg, 4); assertEq(new.target, undefined); },
+ get ol() { assertEq(new.target, undefined); },
+ set ol(arg) { assertEq(arg, 4); assertEq(new.target, undefined); }
+}
+
+class cl {
+ constructor() { assertEq(new.target, cl); }
+ clTest(arg) { assertEq(arg, 4); assertEq(new.target, undefined); }
+ get cl() { assertEq(new.target, undefined); }
+ set cl(arg) { assertEq(arg, 4); assertEq(new.target, undefined); }
+
+ static staticclTest(arg) { assertEq(arg, 4); assertEq(new.target, undefined); }
+ static get staticcl() { assertEq(new.target, undefined); }
+ static set staticcl(arg) { assertEq(arg, 4); assertEq(new.target, undefined); }
+}
+
+const TEST_ITERATIONS = 150;
+
+for (let i = 0; i < TEST_ITERATIONS; i++)
+ ol.olTest(4);
+for (let i = 0; i < TEST_ITERATIONS; i++)
+ ol.ol;
+for (let i = 0; i < TEST_ITERATIONS; i++)
+ ol.ol = 4;
+
+for (let i = 0; i < TEST_ITERATIONS; i++)
+ cl.staticclTest(4);
+for (let i = 0; i < TEST_ITERATIONS; i++)
+ cl.staticcl;
+for (let i = 0; i < TEST_ITERATIONS; i++)
+ cl.staticcl = 4;
+
+for (let i = 0; i < TEST_ITERATIONS; i++)
+ new cl();
+
+let clInst = new cl();
+
+for (let i = 0; i < TEST_ITERATIONS; i++)
+ clInst.clTest(4);
+for (let i = 0; i < TEST_ITERATIONS; i++)
+ clInst.cl;
+for (let i = 0; i < TEST_ITERATIONS; i++)
+ clInst.cl = 4;
+
+if (typeof reportCompare === "function")
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/newTargetNonFunction.js b/js/src/tests/ecma_6/Class/newTargetNonFunction.js
new file mode 100644
index 000000000..59e6febef
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/newTargetNonFunction.js
@@ -0,0 +1,10 @@
+// Make sure that we can plumb new.target, even if the results are going to
+// throw.
+
+assertThrowsInstanceOf(() => new ""(...Array()), TypeError);
+
+assertThrowsInstanceOf(() => new ""(), TypeError);
+assertThrowsInstanceOf(() => new ""(1), TypeError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/newTargetProxyNative.js b/js/src/tests/ecma_6/Class/newTargetProxyNative.js
new file mode 100644
index 000000000..89cdd64ab
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/newTargetProxyNative.js
@@ -0,0 +1,5 @@
+var proxyToArray = new Proxy(Array, {});
+new proxyToArray();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/outerBinding.js b/js/src/tests/ecma_6/Class/outerBinding.js
new file mode 100644
index 000000000..e0f88a494
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/outerBinding.js
@@ -0,0 +1,45 @@
+// |reftest| skip-if(!xulRuntime.shell)
+//
+// The above skip-if is because global lexicals aren't yet implemented. Remove
+// that and the |evaluate| call below once they are.
+//
+// A class statement creates a mutable lexical outer binding.
+
+class Foo { constructor() { } }
+assertEq(typeof Foo, "function");
+Foo = 5;
+assertEq(Foo, 5);
+
+{
+ class foo { constructor() { } }
+ assertEq(typeof foo, "function");
+ foo = 4;
+ assertEq(foo, 4);
+}
+
+{
+ class PermanentBinding { constructor() { } }
+ delete PermanentBinding;
+ // That...didn't actually work, right?
+ assertEq(typeof PermanentBinding, "function");
+}
+
+evaluate("const globalConstant = 0; var earlyError = true;");
+
+try {
+ evaluate("earlyError = false; class globalConstant { constructor() { } }");
+} catch (e if e instanceof SyntaxError) { }
+assertEq(earlyError, true);
+
+function strictEvalShadows() {
+ "use strict";
+ let x = 4;
+ eval(`class x { constructor() { } }
+ assertEq(typeof x, "function");
+ `);
+ assertEq(x, 4);
+}
+strictEvalShadows()
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/Class/shell.js b/js/src/tests/ecma_6/Class/shell.js
new file mode 100644
index 000000000..7fb703b98
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/shell.js
@@ -0,0 +1,16 @@
+// NOTE: This only turns on 1.8.5 in shell builds. The browser requires the
+// futzing in js/src/tests/browser.js (which only turns on 1.8, the most
+// the browser supports).
+if (typeof version != 'undefined')
+ version(185);
+
+function assertThrownErrorContains(thunk, substr) {
+ try {
+ thunk();
+ } catch (e) {
+ if (e.message.indexOf(substr) !== -1)
+ return;
+ throw new Error("Expected error containing " + substr + ", got " + e);
+ }
+ throw new Error("Expected error containing " + substr + ", no exception thrown");
+}
diff --git a/js/src/tests/ecma_6/Class/staticConstructor.js b/js/src/tests/ecma_6/Class/staticConstructor.js
new file mode 100644
index 000000000..bd79c2200
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/staticConstructor.js
@@ -0,0 +1,22 @@
+class testBasic {
+ constructor() { }
+ static constructor() { }
+}
+
+class testWithExtends extends null {
+ constructor() { };
+ static constructor() { };
+}
+
+class testOrder {
+ static constructor() { };
+ constructor() { };
+}
+
+class testOrderWithExtends extends null {
+ static constructor() { };
+ constructor() { };
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/staticMethods.js b/js/src/tests/ecma_6/Class/staticMethods.js
new file mode 100644
index 000000000..756e5abf5
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/staticMethods.js
@@ -0,0 +1,15 @@
+// basic static method test
+class X {
+ static count() { return ++this.hits; }
+ constructor() { }
+}
+X.hits = 0;
+assertEq(X.count(), 1);
+
+// A static method is just a function.
+assertEq(X.count instanceof Function, true);
+assertEq(X.count.length, 0);
+assertEq(X.count.bind({hits: 77})(), 78);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/Class/strictExecution.js b/js/src/tests/ecma_6/Class/strictExecution.js
new file mode 100644
index 000000000..f459311e5
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/strictExecution.js
@@ -0,0 +1,38 @@
+// Classes are always strict mode. Check computed property names and heritage
+// expressions as well.
+
+class a { constructor() { Object.preventExtensions({}).prop = 0; } }
+assertThrowsInstanceOf(() => new a(), TypeError);
+var aExpr = class { constructor() { Object.preventExtensions().prop = 0; } };
+assertThrowsInstanceOf(() => new aExpr(), TypeError);
+
+function shouldThrowCPN() {
+ class b {
+ [Object.preventExtensions({}).prop = 4]() { }
+ constructor() { }
+ }
+}
+function shouldThrowCPNExpr() {
+ var b = class {
+ [Object.preventExtensions({}).prop = 4]() { }
+ constructor() { }
+ };
+}
+assertThrowsInstanceOf(shouldThrowCPN, TypeError);
+assertThrowsInstanceOf(shouldThrowCPNExpr, TypeError);
+
+function shouldThrowHeritage() {
+ class b extends (Object.preventExtensions({}).prop = 4) {
+ constructor() { }
+ }
+}
+function shouldThrowHeritageExpr() {
+ var b = class extends (Object.preventExtensions({}).prop = 4) {
+ constructor() { }
+ };
+}
+assertThrowsInstanceOf(shouldThrowHeritage, TypeError);
+assertThrowsInstanceOf(shouldThrowHeritageExpr, TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/Class/stringConstructor.js b/js/src/tests/ecma_6/Class/stringConstructor.js
new file mode 100644
index 000000000..4e8ae3331
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/stringConstructor.js
@@ -0,0 +1,12 @@
+class A {
+ "constructor"() { return {}; }
+}
+assertEq(new A() instanceof A, false);
+
+class B extends class { } {
+ "constructor"() { return {}; }
+}
+assertEq(new B() instanceof B, false);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/subclassedArrayUnboxed.js b/js/src/tests/ecma_6/Class/subclassedArrayUnboxed.js
new file mode 100644
index 000000000..eb27a960d
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/subclassedArrayUnboxed.js
@@ -0,0 +1,22 @@
+class foo extends Array { }
+
+function testArrs(arrs) {
+ for (let arr of arrs) {
+ assertEq(Object.getPrototypeOf(arr), foo.prototype);
+ }
+}
+
+var arrs = [];
+for (var i = 0; i < 25; i++)
+ arrs.push(new foo(1));
+
+testArrs(arrs);
+
+arrs[0].nonIndexedProp = "uhoh";
+
+arrs.push(new foo(1));
+
+testArrs(arrs);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superCallBadDynamicSuperClass.js b/js/src/tests/ecma_6/Class/superCallBadDynamicSuperClass.js
new file mode 100644
index 000000000..f5b3ac3c0
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superCallBadDynamicSuperClass.js
@@ -0,0 +1,12 @@
+class base { constructor() { } }
+
+class inst extends base { constructor() { super(); } }
+Object.setPrototypeOf(inst, Math.sin);
+assertThrowsInstanceOf(() => new inst(), TypeError);
+
+class defaultInst extends base { }
+Object.setPrototypeOf(inst, Math.sin);
+assertThrowsInstanceOf(() => new inst(), TypeError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superCallBadNewTargetPrototype.js b/js/src/tests/ecma_6/Class/superCallBadNewTargetPrototype.js
new file mode 100644
index 000000000..43d1eb60d
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superCallBadNewTargetPrototype.js
@@ -0,0 +1,25 @@
+class base { constructor() { } }
+
+// lies and the lying liars who tell them
+function lies() { }
+lies.prototype = 4;
+
+assertThrowsInstanceOf(()=>Reflect.consruct(base, [], lies), TypeError);
+
+// lie a slightly different way
+function get(target, property, receiver) {
+ if (property === "prototype")
+ return 42;
+ return Reflect.get(target, property, receiver);
+}
+
+class inst extends base {
+ constructor() { super(); }
+}
+assertThrowsInstanceOf(()=>new new Proxy(inst, {get})(), TypeError);
+
+class defaultInst extends base {}
+assertThrowsInstanceOf(()=>new new Proxy(defaultInst, {get})(), TypeError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superCallBaseInvoked.js b/js/src/tests/ecma_6/Class/superCallBaseInvoked.js
new file mode 100644
index 000000000..b66f9be17
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superCallBaseInvoked.js
@@ -0,0 +1,55 @@
+function testBase(base) {
+ class instance extends base {
+ constructor(inst, one) {
+ super(inst, one);
+ }
+ }
+
+ let inst = new instance(instance, 1);
+ assertEq(Object.getPrototypeOf(inst), instance.prototype);
+ assertEq(inst.calledBase, true);
+
+ class defaultInstance extends base { }
+ let defInst = new defaultInstance(defaultInstance, 1);
+ assertEq(Object.getPrototypeOf(defInst), defaultInstance.prototype);
+ assertEq(defInst.calledBase, true);
+}
+
+class base {
+ // Base class must be [[Construct]]ed, as you cannot [[Call]] a class
+ // constructor
+ constructor(nt, one) {
+ assertEq(new.target, nt);
+
+ // Check argument ordering
+ assertEq(one, 1);
+ this.calledBase = true;
+ }
+}
+
+testBase(base);
+testBase(class extends base {
+ constructor(nt, one) {
+ // Every step of the way, new.target and args should be right
+ assertEq(new.target, nt);
+ assertEq(one, 1);
+ super(nt, one);
+ }
+ });
+function baseFunc(nt, one) {
+ assertEq(new.target, nt);
+ assertEq(one, 1);
+ this.calledBase = true;
+}
+
+testBase(baseFunc);
+
+let handler = {};
+let p = new Proxy(baseFunc, handler);
+testBase(p);
+
+handler.construct = (target, args, nt) => Reflect.construct(target, args, nt);
+testBase(p);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superCallIllegal.js b/js/src/tests/ecma_6/Class/superCallIllegal.js
new file mode 100644
index 000000000..8b7b36397
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superCallIllegal.js
@@ -0,0 +1,7 @@
+// super() invalid outside derived class constructors, including in dynamic
+// functions and eval
+assertThrowsInstanceOf(() => new Function("super();"), SyntaxError);
+assertThrowsInstanceOf(() => eval("super()"), SyntaxError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superCallInvalidBase.js b/js/src/tests/ecma_6/Class/superCallInvalidBase.js
new file mode 100644
index 000000000..86b24f96c
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superCallInvalidBase.js
@@ -0,0 +1,9 @@
+class instance extends null {
+ constructor() { super(); }
+}
+
+assertThrowsInstanceOf(() => new instance(), TypeError);
+assertThrowsInstanceOf(() => new class extends null { }(), TypeError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superCallOrder.js b/js/src/tests/ecma_6/Class/superCallOrder.js
new file mode 100644
index 000000000..051658eef
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superCallOrder.js
@@ -0,0 +1,26 @@
+function base() { }
+
+class beforeSwizzle extends base {
+ constructor() {
+ super(Object.setPrototypeOf(beforeSwizzle, null));
+ }
+}
+
+new beforeSwizzle();
+
+// Again, testing both dynamic prototype dispatch, and that we get the function
+// before evaluating args
+class beforeThrow extends base {
+ constructor() {
+ function thrower() { throw new Error(); }
+ super(thrower());
+ }
+}
+
+Object.setPrototypeOf(beforeThrow, Math.sin);
+
+// Will throw that Math.sin is not a constructor before evaluating the args
+assertThrowsInstanceOf(() => new beforeThrow(), TypeError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superCallProperBase.js b/js/src/tests/ecma_6/Class/superCallProperBase.js
new file mode 100644
index 000000000..cc03f57d0
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superCallProperBase.js
@@ -0,0 +1,34 @@
+class base1 {
+ constructor() {
+ this.base = 1;
+ }
+}
+
+class base2 {
+ constructor() {
+ this.base = 2;
+ }
+}
+
+class inst extends base1 {
+ constructor() {
+ super();
+ }
+}
+
+assertEq(new inst().base, 1);
+
+Object.setPrototypeOf(inst, base2);
+
+assertEq(new inst().base, 2);
+
+// Still works with default constructor
+
+class defaultInst extends base1 { }
+
+assertEq(new defaultInst().base, 1);
+Object.setPrototypeOf(defaultInst, base2);
+assertEq(new defaultInst().base, 2);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superCallSpreadCall.js b/js/src/tests/ecma_6/Class/superCallSpreadCall.js
new file mode 100644
index 000000000..1045f1a22
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superCallSpreadCall.js
@@ -0,0 +1,27 @@
+class base {
+ constructor(a, b, c) {
+ assertEq(a, 1);
+ assertEq(b, 2);
+ assertEq(c, 3);
+ this.calledBase = true;
+ }
+}
+
+class doTest extends base {
+ constructor(arr) {
+ super(...arr);
+ }
+}
+
+assertEq(new doTest([1,2,3]).calledBase, true);
+
+class testRest extends base {
+ constructor(...args) {
+ super(...args);
+ }
+}
+
+assertEq(new testRest(1,2,3).calledBase, true);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superCallThisInit.js b/js/src/tests/ecma_6/Class/superCallThisInit.js
new file mode 100644
index 000000000..4154b3611
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superCallThisInit.js
@@ -0,0 +1,45 @@
+function base() { this.prop = 42; }
+
+class testInitialize extends base {
+ constructor() {
+ // A poor man's assertThrowsInstanceOf, as arrow functions are currently
+ // disabled in this context
+ try {
+ this;
+ throw new Error();
+ } catch (e if e instanceof ReferenceError) { }
+ super();
+ assertEq(this.prop, 42);
+ }
+}
+assertEq(new testInitialize().prop, 42);
+
+// super() twice is a no-go.
+class willThrow extends base {
+ constructor() {
+ super();
+ super();
+ }
+}
+assertThrowsInstanceOf(()=>new willThrow(), ReferenceError);
+
+// This is determined at runtime, not the syntax level.
+class willStillThrow extends base {
+ constructor() {
+ for (let i = 0; i < 3; i++) {
+ super();
+ }
+ }
+}
+assertThrowsInstanceOf(()=>new willStillThrow(), ReferenceError);
+
+class canCatchThrow extends base {
+ constructor() {
+ super();
+ try { super(); } catch(e) { }
+ }
+}
+assertEq(new canCatchThrow().prop, 42);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropBasicCalls.js b/js/src/tests/ecma_6/Class/superPropBasicCalls.js
new file mode 100644
index 000000000..29ed49319
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropBasicCalls.js
@@ -0,0 +1,27 @@
+// Super property (and calls) works in non-extending classes and object
+// litterals.
+class toStringTest {
+ constructor() {
+ // Install a property to make it plausible that it's the same this
+ this.foo = "rhinoceros";
+ }
+
+ test() {
+ assertEq(super.toSource(), super["toSource"]());
+ assertEq(super.toSource(), this.toSource());
+ }
+}
+
+new toStringTest().test();
+
+let toStrOL = {
+ test() {
+ assertEq(super.toSource(), super["toSource"]());
+ assertEq(super.toSource(), this.toSource());
+ }
+}
+
+toStrOL.test();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropBasicChain.js b/js/src/tests/ecma_6/Class/superPropBasicChain.js
new file mode 100644
index 000000000..12bf84820
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropBasicChain.js
@@ -0,0 +1,11 @@
+var o = {
+ access() {
+ super.foo.bar;
+ }
+};
+
+// Delazify
+assertThrowsInstanceOf(o.access, TypeError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropBasicGetter.js b/js/src/tests/ecma_6/Class/superPropBasicGetter.js
new file mode 100644
index 000000000..fe1f4eeee
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropBasicGetter.js
@@ -0,0 +1,36 @@
+class base {
+ constructor() {}
+
+ getValue() {
+ return this._prop;
+ }
+
+ setValue(v) {
+ this._prop = v;
+ }
+}
+
+class derived extends base {
+ constructor() { super(); }
+
+ get a() { return super.getValue(); }
+ set a(v) { super.setValue(v); }
+
+ get b() { return eval('super.getValue()'); }
+ set b(v) { eval('super.setValue(v);'); }
+
+ test() {
+ this.a = 15;
+ assertEq(this.a, 15);
+
+ assertEq(this.b, 15);
+ this.b = 30;
+ assertEq(this.b, 30);
+ }
+}
+
+var derivedInstance = new derived();
+derivedInstance.test();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropBasicNew.js b/js/src/tests/ecma_6/Class/superPropBasicNew.js
new file mode 100644
index 000000000..e1ca9b4ae
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropBasicNew.js
@@ -0,0 +1,17 @@
+class Base {
+ constructor() {}
+}
+class Mid extends Base {
+ constructor() { super(); }
+ f() { return new super.constructor(); }
+}
+class Derived extends Mid {
+ constructor() { super(); }
+}
+
+let d = new Derived();
+var df = d.f();
+assertEq(df.constructor, Base);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropChains.js b/js/src/tests/ecma_6/Class/superPropChains.js
new file mode 100644
index 000000000..e8c0de05c
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropChains.js
@@ -0,0 +1,58 @@
+// First, let's test the trivial. A chain of three works.
+class base {
+ constructor() { }
+ testChain() {
+ this.baseCalled = true;
+ }
+}
+
+class middle extends base {
+ constructor() { super(); }
+ testChain() {
+ this.middleCalled = true;
+ super.testChain();
+ }
+}
+
+class derived extends middle {
+ constructor() { super(); }
+ testChain() {
+ super.testChain();
+ assertEq(this.middleCalled, true);
+ assertEq(this.baseCalled, true);
+ }
+}
+
+new derived().testChain();
+
+// Super even chains in a wellbehaved fashion with normal functions.
+function bootlegMiddle() { }
+bootlegMiddle.prototype = middle.prototype;
+
+new class extends bootlegMiddle {
+ constructor() { super(); }
+ testChain() {
+ super.testChain();
+ assertEq(this.middleCalled, true);
+ assertEq(this.baseCalled, true);
+ }
+ }().testChain();
+
+// Now let's try out some "long" chains
+base.prototype.x = "yeehaw";
+
+let chain = class extends base { constructor() { super(); } }
+
+const CHAIN_LENGTH = 100;
+for (let i = 0; i < CHAIN_LENGTH; i++)
+ chain = class extends chain { constructor() { super(); } }
+
+// Now we poke the chain
+let inst = new chain();
+inst.testChain();
+assertEq(inst.baseCalled, true);
+
+assertEq(inst.x, "yeehaw");
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropDVG.js b/js/src/tests/ecma_6/Class/superPropDVG.js
new file mode 100644
index 000000000..f187cb6ea
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropDVG.js
@@ -0,0 +1,17 @@
+// Super property accesses should play nice with the pretty printer.
+class testNonExistent {
+ constructor() {
+ super["prop"]();
+ }
+}
+// Should fold to super.prop
+assertThrownErrorContains(() => new testNonExistent(), 'super.prop');
+
+var ol = { testNonExistent() { super.prop(); } };
+assertThrownErrorContains(() => ol.testNonExistent(), "super.prop");
+
+var olElem = { testNonExistent() { var prop = "prop"; super[prop](); } };
+assertThrownErrorContains(() => olElem.testNonExistent(), "super[prop]");
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropDelete.js b/js/src/tests/ecma_6/Class/superPropDelete.js
new file mode 100644
index 000000000..44bf0d3f6
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropDelete.js
@@ -0,0 +1,46 @@
+// Make sure we get the proper side effects.
+// |delete super.prop| and |delete super[expr]| throw universally.
+
+class base {
+ constructor() { }
+}
+
+class derived extends base {
+ constructor() { super(); }
+ testDeleteProp() { delete super.prop; }
+ testDeleteElem() {
+ let sideEffect = 0;
+ assertThrowsInstanceOf(() => delete super[sideEffect = 1], ReferenceError);
+ assertEq(sideEffect, 1);
+ }
+ testDeleteElemPropValFirst() {
+ // The deletion error is a reference error, but by munging the prototype
+ // chain, we can force a typeerror from JSOP_SUPERBASE
+ delete super[Object.setPrototypeOf(derived.prototype, null)];
+ }
+}
+
+var d = new derived();
+assertThrowsInstanceOf(() => d.testDeleteProp(), ReferenceError);
+d.testDeleteElem();
+assertThrowsInstanceOf(() => d.testDeleteElemPropValFirst(), TypeError);
+
+// |delete super.x| does not delete anything before throwing.
+var thing1 = {
+ go() { delete super.toString; }
+};
+let saved = Object.prototype.toString;
+assertThrowsInstanceOf(() => thing1.go(), ReferenceError);
+assertEq(Object.prototype.toString, saved);
+
+// |delete super.x| does not tell the prototype to delete anything, when it's a proxy.
+var thing2 = {
+ go() { delete super.prop; }
+};
+Object.setPrototypeOf(thing2, new Proxy({}, {
+ deleteProperty(x) { throw "FAIL"; }
+}));
+assertThrowsInstanceOf(() => thing2.go(), ReferenceError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropDerivedCalls.js b/js/src/tests/ecma_6/Class/superPropDerivedCalls.js
new file mode 100644
index 000000000..1a8a03605
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropDerivedCalls.js
@@ -0,0 +1,77 @@
+let derivedInstance;
+
+class base {
+ constructor() { }
+ method(a, b, c) {
+ assertEq(this, derivedInstance);
+ this.methodCalled = true;
+ assertEq(a, 1);
+ assertEq(b, 2);
+ assertEq(c, 3);
+ }
+
+ get prop() {
+ assertEq(this, derivedInstance);
+ this.getterCalled = true;
+ return this._prop;
+ }
+
+ set prop(val) {
+ assertEq(this, derivedInstance);
+ this.setterCalled = true;
+ this._prop = val;
+ }
+}
+
+class derived extends base {
+ constructor() { super(); }
+
+ // |super| actually checks the chain, not |this|
+ method() { throw "FAIL"; }
+ get prop() { throw "FAIL"; }
+ set prop(v) { throw "FAIL"; }
+
+ test() {
+ this.reset();
+ // While we're here. Let's check on super spread calls...
+ let spread = [1,2,3];
+ super.method(...spread);
+ super.prop++;
+ this.asserts();
+ }
+
+ testInEval() {
+ this.reset();
+ eval("super.method(1,2,3); super.prop++");
+ this.asserts();
+ }
+
+ testInArrow() {
+ this.reset();
+ (() => (super.method(1,2,3), super.prop++))();
+ this.asserts();
+ }
+
+ reset() {
+ this._prop = 0;
+ this.methodCalled = false;
+ this.setterCalled = false;
+ this.getterCalled = false;
+ }
+
+ asserts() {
+ assertEq(this.methodCalled, true);
+ assertEq(this.getterCalled, true);
+ assertEq(this.setterCalled, true);
+ assertEq(this._prop, 1);
+ }
+
+}
+
+derivedInstance = new derived();
+derivedInstance.test();
+derivedInstance.testInEval();
+derivedInstance.testInArrow();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropDestructuring.js b/js/src/tests/ecma_6/Class/superPropDestructuring.js
new file mode 100644
index 000000000..84d1bb517
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropDestructuring.js
@@ -0,0 +1,43 @@
+class base {
+ constructor() { }
+}
+
+let seenValues;
+Object.defineProperty(base.prototype, "minutes",
+ {
+ set(x) {
+ assertEq(x, 525600);
+ seenValues.push(x);
+ }
+ });
+Object.defineProperty(base.prototype, "intendent",
+ {
+ set(x) {
+ assertEq(x, "Fred");
+ seenValues.push(x)
+ }
+ });
+
+const testArr = [525600, "Fred"];
+class derived extends base {
+ constructor() { super(); }
+ prepForTest() { seenValues = []; }
+ testAsserts() { assertDeepEq(seenValues, testArr); }
+ testProps() {
+ this.prepForTest();
+ [super.minutes, super.intendent] = testArr;
+ this.testAsserts();
+ }
+ testElems() {
+ this.prepForTest();
+ [super["minutes"], super["intendent"]] = testArr;
+ this.testAsserts();
+ }
+}
+
+let d = new derived();
+d.testProps();
+d.testElems();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropEvalInsideArrow.js b/js/src/tests/ecma_6/Class/superPropEvalInsideArrow.js
new file mode 100644
index 000000000..882f93ba0
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropEvalInsideArrow.js
@@ -0,0 +1,11 @@
+class foo {
+ constructor() { }
+
+ method() {
+ return (() => eval('super.toString'));
+ }
+}
+assertEq(new foo().method()(), Object.prototype.toString);
+
+if (typeof reportCompare === "function")
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropEvalInsideNested.js b/js/src/tests/ecma_6/Class/superPropEvalInsideNested.js
new file mode 100644
index 000000000..04cdab049
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropEvalInsideNested.js
@@ -0,0 +1,13 @@
+// It's invalid to eval super.prop inside a nested non-method, even if it
+// appears inside a method definition
+assertThrowsInstanceOf(() =>
+({
+ method() {
+ (function () {
+ eval('super.toString');
+ })();
+ }
+}).method(), SyntaxError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropFor.js b/js/src/tests/ecma_6/Class/superPropFor.js
new file mode 100644
index 000000000..23b222cb3
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropFor.js
@@ -0,0 +1,25 @@
+class testForIn {
+ constructor() {
+ let hits = 0;
+ for (super.prop in { prop1: 1, prop2: 2 })
+ hits++;
+ assertEq(this.prop, "prop2");
+ assertEq(hits, 2);
+ }
+}
+
+new testForIn();
+
+
+({
+ testForOf() {
+ let hits = 0;
+ for (super["prop"] of [1, 2])
+ hits++;
+ assertEq(this.prop, 2);
+ assertEq(hits, 2);
+ }
+}).testForOf();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropHeavyweightArrow.js b/js/src/tests/ecma_6/Class/superPropHeavyweightArrow.js
new file mode 100644
index 000000000..ce30690d5
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropHeavyweightArrow.js
@@ -0,0 +1,12 @@
+class foo {
+ constructor() { }
+
+ method() {
+ return (() => (eval(''), super.toString));
+ }
+}
+
+assertEq(new foo().method()(), Object.prototype.toString);
+
+if (typeof reportCompare === "function")
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropHomeObject.js b/js/src/tests/ecma_6/Class/superPropHomeObject.js
new file mode 100644
index 000000000..7694ae852
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropHomeObject.js
@@ -0,0 +1,62 @@
+// This is super weird. A super property reference in the spec contains two
+// things. The first is the object to do the lookup on, the super base. This
+// should be unchanged, no matter what's going on: I can move the method to
+// another object. I can pull it out as its own function. I can put it on my
+// head and run around the front yard. No changes. The other half, the |this|
+// for invoked calls, is the this at the time of referencing the property, which
+// means it's gonna vary wildly as stuff gets moved around.
+
+class base {
+ constructor() { }
+ test(expectedThis) { assertEq(this, expectedThis); }
+}
+
+class derived extends base {
+ constructor() { super(); }
+ test(expected) { super.test(expected); }
+ testArrow() { return (() => super.test(this)); }
+ ["testCPN"](expected) { super.test(expected); }
+}
+
+let derivedInstance = new derived();
+derivedInstance.test(derivedInstance);
+derivedInstance.testCPN(derivedInstance);
+
+let obj = { test: derivedInstance.test };
+obj.test(obj);
+
+let testSolo = derivedInstance.test;
+// Hah! The engine is not prepared for non-object receivers, since this couldn't
+// happen before. Hope Waldo fixes this soon as he claims he will :)
+assertThrowsInstanceOf(() =>testSolo(undefined), TypeError);
+
+let anotherObject = { };
+derivedInstance.test.call(anotherObject, anotherObject);
+
+let strThis = "this is not an object!";
+derivedInstance.test.call(strThis, strThis);
+
+// You can take the arrow function out of the super, ... or something like that
+let arrowTest = derivedInstance.testArrow();
+arrowTest();
+
+// There's no magic "super script index" per code location.
+class base1 {
+ constructor() { }
+ test() { return "llama"; }
+}
+class base2 {
+ constructor() { }
+ test() { return "alpaca"; }
+}
+
+let animals = [];
+for (let exprBase of [base1, base2])
+ new class extends exprBase {
+ constructor() { super(); }
+ test() { animals.push(super["test"]()); }
+ }().test();
+assertDeepEq(animals, ["llama", "alpaca"]);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropIncDecElem.js b/js/src/tests/ecma_6/Class/superPropIncDecElem.js
new file mode 100644
index 000000000..a7b93eb37
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropIncDecElem.js
@@ -0,0 +1,24 @@
+// #1
+function base() { }
+
+base.prototype = {
+ test() {
+ --super[1];
+ }
+}
+
+var d = new base();
+d.test();
+
+// #2
+class test2 {
+ test() {
+ super[1]++;
+ }
+}
+
+var d = new test2();
+d.test()
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropLazyInnerFunction.js b/js/src/tests/ecma_6/Class/superPropLazyInnerFunction.js
new file mode 100644
index 000000000..d7a441f93
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropLazyInnerFunction.js
@@ -0,0 +1,19 @@
+testcase();
+function testcase() {
+ var tokenCodes = {
+ get try() {
+ try {
+ super.actual();
+ } catch (e) {}
+ }
+ };
+ var arr = [
+ 'try',
+ ];
+ for (var i = 0; i < arr.length; i++) {
+ if (tokenCodes[arr[i]] !== i) {};
+ }
+}
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropNoOverwriting.js b/js/src/tests/ecma_6/Class/superPropNoOverwriting.js
new file mode 100644
index 000000000..db44b509c
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropNoOverwriting.js
@@ -0,0 +1,58 @@
+class X {
+ constructor() {
+ Object.defineProperty(this, "prop1", {
+ configurable: true,
+ writable: false,
+ value: 1
+ });
+
+ Object.defineProperty(this, "prop2", {
+ configurable: true,
+ get: function() { return 15; }
+ });
+
+ Object.defineProperty(this, "prop3", {
+ configurable: true,
+ set: function(a) { }
+ });
+
+ Object.defineProperty(this, "prop4", {
+ configurable: true,
+ get: function() { return 20; },
+ set: function(a) { }
+ });
+ }
+
+ f1() {
+ super.prop1 = 2;
+ }
+
+ f2() {
+ super.prop2 = 3;
+ }
+
+ f3() {
+ super.prop3 = 4;
+ }
+
+ f4() {
+ super.prop4 = 5;
+ }
+}
+
+var x = new X();
+
+assertThrowsInstanceOf(() => x.f1(), TypeError);
+assertEq(x.prop1, 1);
+
+assertThrowsInstanceOf(() => x.f2(), TypeError);
+assertEq(x.prop2, 15);
+
+assertThrowsInstanceOf(() => x.f3(), TypeError);
+assertEq(x.prop3, undefined);
+
+assertThrowsInstanceOf(() => x.f4(), TypeError);
+assertEq(x.prop4, 20);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropOrdering.js b/js/src/tests/ecma_6/Class/superPropOrdering.js
new file mode 100644
index 000000000..1374d52c1
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropOrdering.js
@@ -0,0 +1,93 @@
+class base {
+ constructor() { }
+ method() { this.methodCalled++; }
+}
+
+class derived extends base {
+ constructor() { super(); this.methodCalled = 0; }
+
+ // Test orderings of various evaluations relative to the superbase
+
+ // Unlike in regular element evaluation, the propVal is evaluated before
+ // checking the starting object ([[HomeObject]].[[Prototype]])
+ testElem() { super[ruin()]; }
+
+ // The starting object for looking up super.method is determined before
+ // ruin() is called.
+ testProp() { super.method(ruin()); }
+
+ // The entire super.method property lookup has concluded before the args
+ // are evaluated
+ testPropCallDeleted() { super.method(()=>delete base.prototype.method); }
+
+ // The starting object for looking up super["prop"] is determined before
+ // ruin() is called.
+ testElemAssign() { super["prop"] = ruin(); }
+
+ // Test the normal assignment gotchas
+ testAssignElemPropValChange() {
+ let x = "prop1";
+ super[x] = (()=>(x = "prop2", 0))();
+ assertEq(this.prop1, 0);
+ assertEq(this.prop2, undefined);
+ }
+
+ testAssignProp() {
+ Object.defineProperty(base.prototype, "piggy",
+ {
+ configurable: true,
+ set() { throw "WEE WEE WEE WEE"; }
+ });
+
+ // The property lookup is noted, but not actually evaluated, until the
+ // right hand side is. Please don't make the piggy cry.
+ super.piggy = (() => delete base.prototype.piggy)();
+ }
+ testCompoundAssignProp() {
+ let getterCalled = false;
+ Object.defineProperty(base.prototype, "horse",
+ {
+ configurable: true,
+ get() { getterCalled = true; return "Of course"; },
+ set() { throw "NO!"; }
+ });
+ super.horse += (()=>(delete base.prototype.horse, ", of course!"))();
+ assertEq(getterCalled, true);
+
+ // So, is a horse a horse?
+ assertEq(this.horse, "Of course, of course!");
+ }
+}
+
+function ruin() {
+ Object.setPrototypeOf(derived.prototype, null);
+ return 5;
+}
+
+function reset() {
+ Object.setPrototypeOf(derived.prototype, base.prototype);
+}
+
+let instance = new derived();
+assertThrowsInstanceOf(() => instance.testElem(), TypeError);
+reset();
+
+instance.testProp();
+assertEq(instance.methodCalled, 1);
+reset();
+
+instance.testPropCallDeleted();
+assertEq(instance.methodCalled, 2);
+
+instance.testElemAssign();
+assertEq(instance.prop, 5);
+reset();
+
+instance.testAssignElemPropValChange();
+
+instance.testAssignProp();
+
+instance.testCompoundAssignProp();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropProtoChanges.js b/js/src/tests/ecma_6/Class/superPropProtoChanges.js
new file mode 100644
index 000000000..d16ca1665
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropProtoChanges.js
@@ -0,0 +1,22 @@
+class base {
+ constructor() { }
+ test() {
+ return false;
+ }
+}
+
+let standin = { test() { return true; } };
+
+class derived extends base {
+ constructor() { super(); }
+ test() {
+ assertEq(super.test(), false);
+ Object.setPrototypeOf(derived.prototype, standin);
+ assertEq(super["test"](), true);
+ }
+}
+
+new derived().test();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropProxies.js b/js/src/tests/ecma_6/Class/superPropProxies.js
new file mode 100644
index 000000000..3ec43b279
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropProxies.js
@@ -0,0 +1,83 @@
+class base {
+ constructor() { }
+}
+
+let midStaticHandler = { };
+
+// We shouldn't use the |this.called| strategy here, since we have proxies
+// snooping property accesses.
+let getterCalled, setterCalled;
+
+class mid extends new Proxy(base, midStaticHandler) {
+ constructor() { super(); }
+ testSuperInProxy() {
+ super.prop = "looking";
+ assertEq(setterCalled, true);
+ assertEq(super.prop, "found");
+ assertEq(getterCalled, true);
+ }
+}
+
+class child extends mid {
+ constructor() { super(); }
+ static testStaticLookups() {
+ // This funtion is called more than once.
+ this.called = false;
+ super.prop;
+ assertEq(this.called, true);
+ }
+}
+
+let midInstance = new mid();
+
+// Make sure proxies are searched properly on the prototype chain
+let baseHandler = {
+ get(target, p, receiver) {
+ assertEq(receiver, midInstance);
+ getterCalled = true;
+ return "found";
+ },
+
+ set(t,p,val,receiver) {
+ assertEq(receiver, midInstance);
+ assertEq(val, "looking");
+ setterCalled = true;
+ return true;
+ }
+}
+Object.setPrototypeOf(base.prototype, new Proxy(Object.prototype, baseHandler));
+
+// make sure subclasses are not searched on static or super lookups.
+let childHandler = {
+ get() { throw "NO!"; },
+ set() { throw "NO!"; }
+}
+Object.setPrototypeOf(child.prototype, new Proxy(mid.prototype, childHandler));
+
+midInstance.testSuperInProxy();
+
+// Don't do this earlier to avoid the lookup of .prototype during class creation
+function midGet(target, p, receiver) {
+ assertEq(receiver, child);
+ receiver.called = true;
+}
+midStaticHandler.get = midGet;
+
+child.testStaticLookups();
+
+// Hey does super work in a proxy?
+assertEq(new Proxy(({ method() { return super.hasOwnProperty("method"); } }), {}).method(), true);
+
+// What about a CCW?
+var g = newGlobal();
+var wrappedSuper = g.eval("({ method() { return super.hasOwnProperty('method'); } })");
+assertEq(wrappedSuper.method(), true);
+
+// With a CCW on the proto chain?
+var wrappedBase = g.eval("({ method() { return this.__secretProp__; } })");
+var unwrappedDerived = { __secretProp__: 42, method() { return super.method(); } }
+Object.setPrototypeOf(unwrappedDerived, wrappedBase);
+assertEq(unwrappedDerived.method(), 42);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropSkips.js b/js/src/tests/ecma_6/Class/superPropSkips.js
new file mode 100644
index 000000000..c9587c72f
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropSkips.js
@@ -0,0 +1,45 @@
+// Ensure that super lookups and sets skip over properties on the |this| object.
+// That is, super lookups start with the superclass, not the current class.
+
+// The whole point: an empty superclass
+class base {
+ constructor() { }
+}
+
+class derived extends base {
+ constructor() { super(); this.prop = "flamingo"; }
+
+ toString() { throw "No!"; }
+
+ testSkipGet() {
+ assertEq(super.prop, undefined);
+ }
+
+ testSkipDerivedOverrides() {
+ assertEq(super["toString"](), Object.prototype.toString.call(this));
+ }
+
+ testSkipSet() {
+ // since there's no prop on the chain, we should set the data property
+ // on the receiver, |this|
+ super.prop = "rat";
+ assertEq(this.prop, "rat");
+
+ // Since the receiver is the instance, we can overwrite inherited
+ // properties of the instance, even non-writable ones, as they could be
+ // skipped in the super lookup.
+ assertEq(this.nonWritableProp, "pony");
+ super.nonWritableProp = "bear";
+ assertEq(this.nonWritableProp, "bear");
+ }
+}
+
+Object.defineProperty(derived.prototype, "nonWritableProp", { writable: false, value: "pony" });
+
+let instance = new derived();
+instance.testSkipGet();
+instance.testSkipDerivedOverrides();
+instance.testSkipSet();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropStatics.js b/js/src/tests/ecma_6/Class/superPropStatics.js
new file mode 100644
index 000000000..32624b5d2
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropStatics.js
@@ -0,0 +1,34 @@
+class base {
+ constructor() { }
+ static found() {
+ this.foundCalled = true;
+ }
+ static get accessor() {
+ assertEq(this, derived);
+ return 45;
+ }
+ notFound() { }
+}
+
+class derived extends base {
+ constructor() { }
+
+ static found() { throw "NO!"; }
+ static get accessor() { throw "NO!"; }
+
+ static test() {
+ assertEq(super["notFound"], undefined);
+ super.found();
+
+ // foundCalled is set on |derived| specifically.
+ let calledDesc = Object.getOwnPropertyDescriptor(derived, "foundCalled");
+ assertEq(calledDesc.value, true);
+
+ assertEq(super.accessor, 45);
+ }
+}
+
+derived.test();
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/superPropStrictAssign.js b/js/src/tests/ecma_6/Class/superPropStrictAssign.js
new file mode 100644
index 000000000..4b5444a3c
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/superPropStrictAssign.js
@@ -0,0 +1,23 @@
+// While |super| is common in classes, it also works in object litterals,
+// where there is no guarantee of strict mode. Check that we do not somehow
+// get strict mode semantics when they were not called for
+
+// |undefined|, writable: false
+Object.defineProperty(Object.prototype, "prop", { writable: false });
+
+class strictAssignmentTest {
+ constructor() {
+ // Strict mode. Throws.
+ super.prop = 14;
+ }
+}
+
+assertThrowsInstanceOf(()=>new strictAssignmentTest(), TypeError);
+
+// Non-strict. Silent failure.
+({ test() { super.prop = 14; } }).test();
+
+assertEq(Object.prototype.prop, undefined);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Class/uninitializedThisError.js b/js/src/tests/ecma_6/Class/uninitializedThisError.js
new file mode 100644
index 000000000..cbc557285
--- /dev/null
+++ b/js/src/tests/ecma_6/Class/uninitializedThisError.js
@@ -0,0 +1,57 @@
+function checkErr(f, className) {
+ var expected;
+ if (className !== "")
+ expected = "|this| used uninitialized in " + className + " class constructor";
+ else
+ expected = "|this| used uninitialized in arrow function in class constructor";
+ try {
+ f();
+ assertEq(0, 1);
+ } catch (e) {
+ assertEq(e.name, "ReferenceError");
+ assertEq(e.message, expected);
+ }
+}
+class TestNormal extends class {} {
+ constructor() { this; }
+}
+checkErr(() => new TestNormal(), "TestNormal");
+
+class TestEval extends class {} {
+ constructor() { eval("this") }
+}
+checkErr(() => new TestEval(), "TestEval");
+
+class TestNestedEval extends class {} {
+ constructor() { eval("eval('this')") }
+}
+checkErr(() => new TestNestedEval(), "TestNestedEval");
+
+checkErr(() => {
+ new class extends class {} {
+ constructor() { eval("this") }
+ }
+}, "anonymous");
+
+class TestArrow extends class {} {
+ constructor() { (() => this)(); }
+}
+checkErr(() => new TestArrow(), "");
+
+class TestArrowEval extends class {} {
+ constructor() { (() => eval("this"))(); }
+}
+checkErr(() => new TestArrowEval(), "");
+
+class TestEvalArrow extends class {} {
+ constructor() { eval("(() => this)()"); }
+}
+checkErr(() => new TestEvalArrow(), "");
+
+class TestTypeOf extends class {} {
+ constructor() { eval("typeof this"); }
+}
+checkErr(() => new TestTypeOf(), "TestTypeOf");
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Comprehensions/arguments.js b/js/src/tests/ecma_6/Comprehensions/arguments.js
new file mode 100644
index 000000000..082374778
--- /dev/null
+++ b/js/src/tests/ecma_6/Comprehensions/arguments.js
@@ -0,0 +1,14 @@
+
+
+function values(g) {
+ return [for (x of g) x];
+}
+
+function argumentsTest() {
+ return values((for (i of [0,1,2]) arguments[i]));
+}
+
+assertDeepEq(argumentsTest('a', 'b', 'c'), ['a', 'b', 'c']);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Comprehensions/array-yield.js b/js/src/tests/ecma_6/Comprehensions/array-yield.js
new file mode 100644
index 000000000..69e699522
--- /dev/null
+++ b/js/src/tests/ecma_6/Comprehensions/array-yield.js
@@ -0,0 +1,23 @@
+// Interactions between yield and array comprehensions.
+
+
+function assertIteratorResult(result, value, done) {
+ assertDeepEq(result.value, value);
+ assertEq(result.done, done);
+}
+
+function* t1() { return [for (x of yield 0) x*2] }
+
+var o = t1();
+assertIteratorResult(o.next(), 0, false);
+assertIteratorResult(o.next([0, 1, 2]), [0, 2, 4], true);
+
+function* t2() { return [for (x of [1,2,3]) yield x] }
+
+o = t2();
+assertIteratorResult(o.next(), 1, false);
+assertIteratorResult(o.next(5), 2, false);
+assertIteratorResult(o.next(6), 3, false);
+assertIteratorResult(o.next(7), [5, 6, 7], true);
+
+reportCompare(null, null, "test");
diff --git a/js/src/tests/ecma_6/Comprehensions/error-messages.js b/js/src/tests/ecma_6/Comprehensions/error-messages.js
new file mode 100644
index 000000000..aeacfde27
--- /dev/null
+++ b/js/src/tests/ecma_6/Comprehensions/error-messages.js
@@ -0,0 +1,172 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+// This file tests contextual restrictions for yield and arguments, and is
+// derived from js1_8/genexps/regress-634472.js.
+
+function error(str) {
+ var base;
+ try {
+ // the following line must not be broken up into multiple lines
+ base = (function(){try{eval('throw new Error()')}catch(e){return e.lineNumber}})(); eval(str);
+ return null;
+ } catch (e) {
+ e.lineNumber = e.lineNumber - base + 1;
+ return e;
+ }
+}
+
+const YIELD_PAREN = error("(function*(){(for (y of (yield 1, 2)) y)})").message;
+const GENEXP_YIELD = error("(function*(){(for (x of yield 1) x)})").message;
+const TOP_YIELD = error("yield").message;
+const GENERIC = error("(for)").message;
+const BAD_GENERATOR_SYNTAX = error("(for (x of []) x, 1)").message;
+const MISSING_SEMI = error("yield 1").message;
+const PAREN_PAREN = error("(foo").message;
+const FOR_OF_PAREN = error("(for (x of y, z) w)").message;
+
+const cases = [
+// Expressions involving yield without a value, not currently implemented. Many
+// of these errors would need to be updated. (Note: line numbers below might be
+// mere placeholders, not actually the expected correct behavior -- check before
+// blindly uncommenting.)
+//{ expr: "yield", top: [TOP_YIELD, 777], fun: null, gen: [GENEXP_YIELD, 2], desc: "simple yield" },
+//{ expr: "1, yield", top: [TOP_YIELD, 777], fun: null, gen: [GENEXP_YIELD, 2], desc: "simple yield at end of list" },
+//{ expr: "yield, 1", top: [TOP_YIELD, 777], fun: [YIELD_PAREN, 2], gen: [YIELD_PAREN, 2], desc: "simple yield in list" },
+//{ expr: "(yield)", top: [TOP_YIELD, 777], fun: null, gen: [GENEXP_YIELD, 2], desc: "simple yield, parenthesized" },
+//{ expr: "(1, yield)", top: [TOP_YIELD, 777], fun: null, gen: [GENEXP_YIELD, 2], desc: "simple yield at end of list, parenthesized" },
+//{ expr: "(yield, 1)", top: [TOP_YIELD, 777], fun: [YIELD_PAREN, 2], gen: [YIELD_PAREN, 2], desc: "simple yield in list, parenthesized" },
+//{ expr: "((((yield))))", top: [TOP_YIELD, 777], fun: null, gen: [GENEXP_YIELD, 2], desc: "deeply nested yield" },
+//{ expr: "(for (x of []) yield)", top: [TOP_YIELD, 777], fun: [GENERIC, 777], gen: [GENERIC, 777], desc: "simple yield in genexp" },
+//{ expr: "(for (x of []) yield, 1)", top: [TOP_YIELD, 777], fun: [YIELD_PAREN, 2], gen: [YIELD_PAREN, 2], desc: "simple yield in list in genexp" },
+//{ expr: "(for (x of []) 1, yield)", top: [TOP_YIELD, 777], fun: [GENERIC, 777], gen: [GENERIC, 777], desc: "simple yield at end of list in genexp" },
+//{ expr: "(for (x of []) (yield))", top: [TOP_YIELD, 777], fun: [GENEXP_YIELD, 2], gen: [GENEXP_YIELD, 2], desc: "simple yield, parenthesized in genexp" },
+//{ expr: "(for (x of []) 1, (yield))", top: [TOP_YIELD, 777], fun: [GENEXP_YIELD, 2], gen: [GENEXP_YIELD, 2], desc: "simple yield, parenthesized in list in genexp" },
+//{ expr: "(for (x of []) (1, yield))", top: [TOP_YIELD, 777], fun: [GENEXP_YIELD, 2], gen: [GENEXP_YIELD, 2], desc: "simple yield at end of list, parenthesized in genexp" },
+//{ expr: "(for (x of []) 1, (2, yield))", top: [TOP_YIELD, 777], fun: [GENEXP_YIELD, 2], gen: [GENEXP_YIELD, 2], desc: "simple yield at end of list, parenthesized in list in genexp" },
+//{ expr: "(for (x of []) (yield, 1))", top: [TOP_YIELD, 777], fun: [YIELD_PAREN, 2], gen: [YIELD_PAREN, 2], desc: "simple yield in list, parenthesized in genexp" },
+//{ expr: "(for (x of []) 1, (yield, 2))", top: [TOP_YIELD, 777], fun: [YIELD_PAREN, 2], gen: [YIELD_PAREN, 2], desc: "simple yield in list, parenthesized in list in genexp" },
+//{ expr: "(for (x of []) (function*() { yield }))", top: null, fun: null, gen: null, desc: "legal yield in nested function" },
+
+ // yield expressions
+ { expr: "yield 1", top: [MISSING_SEMI, 2], fun: [MISSING_SEMI, 2], gen: null, genexp: [GENEXP_YIELD, 2], desc: "yield w/ arg" },
+ { expr: "1, yield 2", top: [MISSING_SEMI, 2], fun: [MISSING_SEMI, 2], gen: null, genexp: [FOR_OF_PAREN, 1], desc: "yield w/ arg at end of list" },
+ { expr: "yield 1, 2", top: [MISSING_SEMI, 2], fun: [MISSING_SEMI, 2], gen: null, genexp: [FOR_OF_PAREN, 3], desc: "yield w/ arg in list" },
+ { expr: "(yield 1)", top: [PAREN_PAREN, 2], fun: [PAREN_PAREN, 2], gen: null, genexp: [GENEXP_YIELD, 2], desc: "yield w/ arg, parenthesized" },
+ { expr: "(1, yield 2)", top: [PAREN_PAREN, 2], fun: [PAREN_PAREN, 2], gen: null, genexp: [GENEXP_YIELD, 2], desc: "yield w/ arg at end of list, parenthesized" },
+ { expr: "(yield 1, 2)", top: [PAREN_PAREN, 2], fun: [PAREN_PAREN, 2], gen: null, genexp: [YIELD_PAREN, 2], desc: "yield w/ arg in list, parenthesized" },
+
+ // deeply nested yield expressions
+ { expr: "((((yield 1))))", top: [PAREN_PAREN, 2], fun: [PAREN_PAREN, 2], gen: null, genexp: [GENEXP_YIELD, 2], desc: "deeply nested yield w/ arg" },
+
+ // arguments
+ { expr: "arguments", top: null, fun: null, gen: null, genexp: null, desc: "arguments in list" },
+ { expr: "1, arguments", top: null, fun: null, gen: null, genexp: [FOR_OF_PAREN, 1], desc: "arguments in list" },
+
+ // yield in generator expressions
+ { expr: "(for (x of []) yield 1)", top: [GENEXP_YIELD, 2], fun: [GENEXP_YIELD, 2], gen: [GENEXP_YIELD, 2], genexp: [GENEXP_YIELD, 2], desc: "yield w/ arg in genexp" },
+ { expr: "(for (x of []) yield 1, 2)", top: [GENEXP_YIELD, 2], fun: [GENEXP_YIELD, 2], gen: [GENEXP_YIELD, 2], genexp: [GENEXP_YIELD, 2], desc: "yield w/ arg in list in genexp" },
+ { expr: "(for (x of []) 1, yield 2)", top: [PAREN_PAREN, 1], fun: [PAREN_PAREN, 1], gen: [PAREN_PAREN, 1], genexp: [PAREN_PAREN, 1], desc: "yield w/ arg at end of list in genexp" },
+ { expr: "(for (x of []) (yield 1))", top: [GENEXP_YIELD, 2], fun: [GENEXP_YIELD, 2], gen: [GENEXP_YIELD, 2], genexp: [GENEXP_YIELD, 2], desc: "yield w/ arg, parenthesized in genexp" },
+ { expr: "(for (x of []) 1, (yield 2))", top: [PAREN_PAREN, 1], fun: [PAREN_PAREN, 1], gen: [PAREN_PAREN, 1], genexp: [PAREN_PAREN, 1], desc: "yield w/ arg, parenthesized in list in genexp" },
+ { expr: "(for (x of []) (1, yield 2))", top: [GENEXP_YIELD, 2], fun: [GENEXP_YIELD, 2], gen: [GENEXP_YIELD, 2], genexp: [GENEXP_YIELD, 2], desc: "yield w/ arg at end of list, parenthesized in genexp" },
+ { expr: "(for (x of []) 1, (2, yield 3))", top: [PAREN_PAREN, 1], fun: [PAREN_PAREN, 1], gen: [PAREN_PAREN, 1], genexp: [PAREN_PAREN, 1], desc: "yield w/ arg at end of list, parenthesized in list in genexp" },
+ { expr: "(for (x of []) (yield 1, 2))", top: [YIELD_PAREN, 2], fun: [YIELD_PAREN, 2], gen: [YIELD_PAREN, 2], genexp: [YIELD_PAREN, 2], desc: "yield w/ arg in list, parenthesized in genexp" },
+ { expr: "(for (x of []) 1, (yield 2, 3))", top: [PAREN_PAREN, 1], fun: [PAREN_PAREN, 1], gen: [PAREN_PAREN, 1], genexp: [PAREN_PAREN, 1], desc: "yield w/ arg in list, parenthesized in list in genexp" },
+
+ // deeply nested yield in generator expressions
+ { expr: "(for (x of []) (((1, yield 2))))", top: [GENEXP_YIELD, 2], fun: [GENEXP_YIELD, 2], gen: [GENEXP_YIELD, 2], genexp: [GENEXP_YIELD, 2], desc: "deeply nested yield in genexp" },
+ { expr: "(for (y of []) (for (x of []) ((1, yield 2))))", top: [GENEXP_YIELD, 2], fun: [GENEXP_YIELD, 2], gen: [GENEXP_YIELD, 2], genexp: [GENEXP_YIELD, 2], desc: "deeply nested yield in multiple genexps" },
+
+ // arguments in generator expressions
+ { expr: "(for (x of []) arguments)", top: null, fun: null, gen: null, genexp: null, desc: "simple arguments in genexp" },
+ { expr: "(for (x of []) 1, arguments)", top: [BAD_GENERATOR_SYNTAX, 1], fun: [BAD_GENERATOR_SYNTAX, 1], gen: [BAD_GENERATOR_SYNTAX, 1], genexp: [BAD_GENERATOR_SYNTAX, 1], desc: "arguments in list in genexp" },
+ { expr: "(for (x of []) (arguments))", top: null, fun: null, gen: null, genexp: null, desc: "arguments, parenthesized in genexp" },
+ { expr: "(for (x of []) 1, (arguments))", top: [BAD_GENERATOR_SYNTAX, 1], fun: [BAD_GENERATOR_SYNTAX, 1], gen: [BAD_GENERATOR_SYNTAX, 1], genexp: [BAD_GENERATOR_SYNTAX, 1], desc: "arguments, parenthesized in list in genexp" },
+ { expr: "(for (x of []) (1, arguments))", top: null, fun: null, gen: null, genexp: null, desc: "arguments in list, parenthesized in genexp" },
+ { expr: "(for (x of []) 1, (2, arguments))", top: [BAD_GENERATOR_SYNTAX, 1], fun: [BAD_GENERATOR_SYNTAX, 1], gen: [BAD_GENERATOR_SYNTAX, 1], genexp: [BAD_GENERATOR_SYNTAX, 1], desc: "arguments in list, parenthesized in list in genexp" },
+
+ // deeply nested arguments in generator expressions
+ { expr: "(for (x of []) (((1, arguments))))", top: null, fun: null, gen: null, genexp: null, desc: "deeply nested arguments in genexp" },
+ { expr: "(for (y of []) (for (x of []) ((1, arguments))))", top: null, fun: null, gen: null, genexp: null, desc: "deeply nested arguments in multiple genexps" },
+
+ // legal yield/arguments in nested function
+ { expr: "(for (x of []) (function*() { yield 1 }))", top: null, fun: null, gen: null, genexp: null, desc: "legal yield in nested function" },
+ { expr: "(for (x of []) (function() { arguments }))", top: null, fun: null, gen: null, genexp: null, desc: "legal arguments in nested function" },
+ { expr: "(for (x of []) (function() arguments))", top: null, fun: null, gen: null, genexp: null, desc: "legal arguments in nested expression-closure" }
+];
+
+//-----------------------------------------------------------------------------
+test();
+//-----------------------------------------------------------------------------
+
+function splitKeyword(str) {
+ return str.
+// replace(/[)] yield/, ')\nyield\n').
+ replace(/yield ([0-9])/, '\nyield $1\n').
+ replace(/yield([^ ]|$)/, '\nyield\n$1').
+ replace(/arguments/, '\narguments\n');
+}
+
+function expectError1(err, ctx, msg, lineNumber) {
+ reportCompare('object', typeof err, 'exn for: ' + msg);
+ reportCompare(ctx, err.message, 'exn message for: ' + msg);
+ reportCompare(lineNumber, err.lineNumber, 'exn token for: ' + msg);
+}
+
+function expectError(expr, wrapCtx, [expect, lineNumber], msg) {
+ expectError1(error(wrapCtx(expr)), expect, msg, lineNumber);
+}
+
+function expectSuccess(err, msg) {
+ reportCompare(null, err, 'parse: ' + msg);
+}
+
+function atTop(str) { return str }
+function inFun(str) { return '(function(){' + str + '})' }
+function inGen(str) { return '(function*(){' + str + '})' }
+function inGenExp(str) { return '(for (y of ' + str + ') y)' }
+
+function test()
+{
+ enterFunc ('test');
+ printBugNumber(BUGNUMBER);
+ printStatus (summary);
+
+ for (var i = 0, len = cases.length; i < len; i++) {
+ var expr, top, fun, gen, genexp, desc;
+ expr = cases[i].expr;
+ top = cases[i].top;
+ fun = cases[i].fun;
+ gen = cases[i].gen;
+ genexp = cases[i].genexp;
+ desc = cases[i].desc;
+
+ expr = splitKeyword(expr);
+
+ if (top)
+ expectError(expr, atTop, top, 'top-level context, ' + desc);
+ else
+ expectSuccess(error(expr), 'top-level context, ' + desc);
+
+ if (fun)
+ expectError(expr, inFun, fun, 'function context, ' + desc);
+ else
+ expectSuccess(error(inFun(expr)), 'function context, ' + desc);
+
+ if (gen)
+ expectError(expr, inGen, gen, 'generator context, ' + desc);
+ else
+ expectSuccess(error(inGen(expr)), 'generator context, ' + desc);
+
+ if (genexp)
+ expectError(expr, inGenExp, genexp, 'genexp context, ' + desc);
+ else
+ expectSuccess(error(inGenExp(expr)), 'genexp context, ' + desc);
+ }
+
+ exitFunc ('test');
+}
diff --git a/js/src/tests/ecma_6/Comprehensions/generator-semantics.js b/js/src/tests/ecma_6/Comprehensions/generator-semantics.js
new file mode 100644
index 000000000..52426115f
--- /dev/null
+++ b/js/src/tests/ecma_6/Comprehensions/generator-semantics.js
@@ -0,0 +1,52 @@
+// Interaction of eval with generator expressions.
+function a1() {
+ var a = 10;
+ var g = (for (y of [0]) eval('var a=42;'));
+ g.next();
+ return a;
+}
+assertEq(a1(), 10);
+
+function a2() {
+ var a = 10;
+ (for (y of [0]) eval('a=42')).next();
+ return a;
+}
+assertEq(a2(), 42)
+
+// Arguments and this.
+function b1() {
+ return [for (arg of (for (i of [0, 1, 2]) arguments[i])) arg];
+}
+assertDeepEq(b1('a', 'b', 'c'), ['a', 'b', 'c']);
+
+function b2() {
+ return [for (x of (for (i of [0]) this)) x];
+}
+var b2o = { b2: b2 }
+assertDeepEq(b2o.b2(), [b2o])
+
+// Assignment to eval or arguments.
+function c1() {
+ return [for (arg of (for (i of [0, 1, 2]) arguments = i)) arg];
+}
+assertDeepEq(c1(), [0, 1, 2]);
+
+function c2() {
+ "use strict";
+ return eval('[for (arg of (for (i of [0, 1, 2]) arguments = i)) arg]');
+}
+assertThrows(c2, SyntaxError);
+
+function c3() {
+ return [for (arg of (for (i of [0, 1, 2]) eval = i)) arg];
+}
+assertDeepEq(c3(), [0, 1, 2]);
+
+function c4() {
+ "use strict";
+ return eval('[for (arg of (for (i of [0, 1, 2]) eval = i)) arg]');
+}
+assertThrows(c4, SyntaxError);
+
+reportCompare(null, null, "test");
diff --git a/js/src/tests/ecma_6/Comprehensions/nested-for-if.js b/js/src/tests/ecma_6/Comprehensions/nested-for-if.js
new file mode 100644
index 000000000..4e3291182
--- /dev/null
+++ b/js/src/tests/ecma_6/Comprehensions/nested-for-if.js
@@ -0,0 +1,20 @@
+// For and if clauses can nest without limit in comprehensions. This is
+// unlike JS 1.8 comprehensions, which can only have one trailing "if"
+// clause.
+
+function* range(start, end) {
+ for (var n = start; n < end; n++)
+ yield n;
+}
+
+function primesBetween6And25() {
+ return [for (n of range(6, 25)) if (n % 2) if (n % 3) if (n % 5) n];
+}
+assertDeepEq(primesBetween6And25(), [7,11,13,17,19,23]);
+
+function countUpToEvens(limit) {
+ return [for (n of range(0, limit)) if (!(n % 2)) for (m of range(0, n)) m]
+}
+assertDeepEq(countUpToEvens(7), [0,1,0,1,2,3,0,1,2,3,4,5]);
+
+reportCompare(null, null, "test");
diff --git a/js/src/tests/ecma_6/Comprehensions/scope.js b/js/src/tests/ecma_6/Comprehensions/scope.js
new file mode 100644
index 000000000..e9083d552
--- /dev/null
+++ b/js/src/tests/ecma_6/Comprehensions/scope.js
@@ -0,0 +1,18 @@
+// The identifier of a ComprehensionFor is only bound within its tail.
+
+function t() {
+ var x = [0, 1, 2];
+ return [for (x of x) x*2]
+}
+assertDeepEq(t(), [0, 2, 4]);
+
+// Each iteration should create a fresh binding. Unfortunately this is
+// not currently the case, but bug 449811 will fix this.
+function t2() {
+ var x = [0, 1, 2];
+ return [for (x of x) ()=>x]
+}
+// FIXME: Should be [0, 1, 2].
+assertDeepEq([for (x of t2()) x()], [2, 2, 2]);
+
+reportCompare(null, null, "test");
diff --git a/js/src/tests/ecma_6/Comprehensions/shell.js b/js/src/tests/ecma_6/Comprehensions/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Comprehensions/shell.js
diff --git a/js/src/tests/ecma_6/Comprehensions/sudoku.js b/js/src/tests/ecma_6/Comprehensions/sudoku.js
new file mode 100644
index 000000000..680f55f64
--- /dev/null
+++ b/js/src/tests/ecma_6/Comprehensions/sudoku.js
@@ -0,0 +1,168 @@
+/* -*- tab-width: 2; indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+function copy(obj) {
+ var o = {};
+ for (var i in obj)
+ o[i] = obj[i];
+ return o;
+}
+
+Array.prototype.repeat = function (n) {
+ var s = this.constructor();
+ for (var i = 0; i < n; i++)
+ s = s.concat(this);
+ return s;
+}
+
+String.prototype.center = function (w) {
+ var n = this.length;
+ if (w <= n)
+ return this;
+ var m = Math.floor((w - n) / 2);
+ return ' '.repeat(m) + this + ' '.repeat(w - n - m);
+}
+
+Array.prototype.toString = Array.prototype.toSource
+Object.prototype.toString = Object.prototype.toSource
+
+function all(seq) {
+ for (var e of seq)
+ if (!e)
+ return false;
+ return true;
+}
+
+function some(seq) {
+ for (var e of seq)
+ if (e)
+ return e;
+ return false;
+}
+
+function cross(A, B) {
+ return [for (a of A) for (b of B) a+b];
+}
+
+function dict(A) {
+ var d = {};
+ for (var e of A)
+ d[e[0]] = e[1];
+ return d;
+}
+
+function set(A) {
+ var s = [];
+ for (var e of A)
+ if (!s.includes(e))
+ s.push(e);
+ return s;
+}
+
+function zip(A, B) {
+ var z = [];
+ var n = Math.min(A.length, B.length);
+ for (var i = 0; i < n; i++)
+ z.push([A[i], B[i]]);
+ return z;
+}
+
+rows = 'ABCDEFGHI';
+cols = '123456789';
+digits = '123456789';
+squares = cross(rows, cols);
+unitlist = [for (c of cols) cross(rows, c)]
+ .concat([for (r of rows) cross(r, cols)])
+ .concat([for (rs of ['ABC','DEF','GHI']) for (cs of ['123','456','789']) cross(rs, cs)]);
+units = dict((for (s of squares)
+ [s, [for (u of unitlist) if (u.includes(s)) u]]));
+
+peers = dict((for (s of squares)
+ [s, set([for (u of units[s]) for (s2 of u) if (s2 != s) s2])]));
+
+// Given a string of 81 digits (or . or 0 or -), return a dict of {cell:values}.
+function parse_grid(grid) {
+ grid = [for (c of grid) if ('0.-123456789'.includes(c)) c];
+ var values = dict((for (s of squares) [s, digits]));
+
+ for (var pair of zip(squares, grid)) {
+ var s = pair[0], d = pair[1];
+ if (digits.includes(d) && !assign(values, s, d))
+ return false;
+ }
+ return values;
+}
+
+// Eliminate all the other values (except d) from values[s] and propagate.
+function assign(values, s, d) {
+ if (all((for (d2 of values[s]) if (d2 != d) eliminate(values, s, d2))))
+ return values;
+ return false;
+}
+
+// Eliminate d from values[s]; propagate when values or places <= 2.
+function eliminate(values, s, d) {
+ if (!values[s].includes(d))
+ return values; // Already eliminated
+ values[s] = values[s].replace(d, '');
+ if (values[s].length == 0)
+ return false; // Contradiction: removed last value
+ if (values[s].length == 1) {
+ // If there is only one value (d2) left in square, remove it from peers
+ var d2 = values[s][0];
+ if (!all((for (s2 of peers[s]) eliminate(values, s2, d2))))
+ return false;
+ }
+ // Now check the places where d appears in the units of s
+ for (var u of units[s]) {
+ var dplaces = [for (s of u) if (values[s].includes(d)) s];
+ if (dplaces.length == 0)
+ return false;
+ if (dplaces.length == 1)
+ // d can only be in one place in unit; assign it there
+ if (!assign(values, dplaces[0], d))
+ return false;
+ }
+ return values;
+}
+
+// Used for debugging.
+function print_board(values) {
+ var width = 1 + Math.max.apply(Math, [for (s of squares) values[s].length]);
+ var line = '\n' + ['-'.repeat(width*3)].repeat(3).join('+');
+ for (var r of rows)
+ print([for (c of cols)
+ values[r+c].center(width) + ('36'.includes(c) && '|' || '')]
+ .join('') + ('CF'.includes(r) && line || ''));
+ print('\n');
+}
+
+easy = "..3.2.6..9..3.5..1..18.64....81.29..7.......8..67.82....26.95..8..2.3..9..5.1.3..";
+
+print_board(parse_grid(easy));
+
+// Using depth-first search and constraint propagation, try all possible values.
+function search(values) {
+ if (!values)
+ return false; // Failed earlier
+ if (all((for (s of squares) values[s].length == 1)))
+ return values; // Solved!
+
+ // Choose the unfilled square s with the fewest possibilities
+ // XXX Math.min etc. should work with generator expressions and other iterators
+ // XXX Math.min etc. should work on arrays (lists or tuples in Python) as well as numbers
+ var a = [for (s of squares) if (values[s].length > 1) values[s].length + s].sort();
+ var s = a[0].slice(-2);
+
+ return some((for (d of values[s]) search(assign(copy(values), s, d))));
+}
+
+hard = '4.....8.5.3..........7......2.....6.....8.4......1.......6.3.7.5..2.....1.4......';
+
+print_board(search(parse_grid(hard)))
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Comprehensions/syntax.js b/js/src/tests/ecma_6/Comprehensions/syntax.js
new file mode 100644
index 000000000..a57b1e6dd
--- /dev/null
+++ b/js/src/tests/ecma_6/Comprehensions/syntax.js
@@ -0,0 +1,6 @@
+// "let" is not allowed as an identifier.
+
+assertThrowsInstanceOf(function () { eval('[for (let of y) foo]') }, SyntaxError);
+assertThrowsInstanceOf(function () { eval('(for (let of y) foo)') }, SyntaxError);
+
+reportCompare(null, null, "test");
diff --git a/js/src/tests/ecma_6/Comprehensions/toSource.js b/js/src/tests/ecma_6/Comprehensions/toSource.js
new file mode 100644
index 000000000..5ce1db172
--- /dev/null
+++ b/js/src/tests/ecma_6/Comprehensions/toSource.js
@@ -0,0 +1,14 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+assertEq( function () { g = (for (d of [0]) d); g.next(); }.toSource(),
+ '(function () { g = (for (d of [0]) d); g.next(); })');
+
+
+assertEq( function () { return [for (d of [0]) d]; }.toSource(),
+ '(function () { return [for (d of [0]) d]; })');
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/DataView/browser.js b/js/src/tests/ecma_6/DataView/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/DataView/browser.js
diff --git a/js/src/tests/ecma_6/DataView/detach-after-construction.js b/js/src/tests/ecma_6/DataView/detach-after-construction.js
new file mode 100644
index 000000000..7e9924778
--- /dev/null
+++ b/js/src/tests/ecma_6/DataView/detach-after-construction.js
@@ -0,0 +1,11 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs detachArrayBuffer
+
+var buf = new ArrayBuffer([1,2]);
+var bufView = new DataView(buf);
+
+detachArrayBuffer(buf);
+
+assertThrowsInstanceOf(() => bufView.getInt8(0), TypeError);
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0, "OK");
diff --git a/js/src/tests/ecma_6/DataView/get-set-index-range.js b/js/src/tests/ecma_6/DataView/get-set-index-range.js
new file mode 100644
index 000000000..4391591b6
--- /dev/null
+++ b/js/src/tests/ecma_6/DataView/get-set-index-range.js
@@ -0,0 +1,36 @@
+var buffer = new ArrayBuffer(2);
+var view = new DataView(buffer);
+
+function check(view) {
+ for (let fun of ['getInt8', 'setInt8', 'getInt16', 'setInt16']) {
+ assertThrowsInstanceOf(() => view[fun](-10), RangeError);
+ assertThrowsInstanceOf(() => view[fun](-Infinity), RangeError);
+ assertThrowsInstanceOf(() => view[fun](Infinity), RangeError);
+
+ assertThrowsInstanceOf(() => view[fun](Math.pow(2, 53)), RangeError);
+ assertThrowsInstanceOf(() => view[fun](Math.pow(2, 54)), RangeError);
+ }
+}
+
+check(view);
+
+for (let fun of ['getInt8', 'getInt16']) {
+ assertEq(view[fun](0), 0);
+ assertEq(view[fun](undefined), 0);
+ assertEq(view[fun](NaN), 0);
+}
+
+if ('detachArrayBuffer' in this) {
+ // ToIndex is called before detachment check, so we can tell the difference
+ // between a ToIndex failure and a real out of bounds failure.
+ detachArrayBuffer(buffer);
+
+ check(view);
+
+ assertThrowsInstanceOf(() => view.getInt8(0), TypeError);
+ assertThrowsInstanceOf(() => view.setInt8(0, 0), TypeError);
+ assertThrowsInstanceOf(() => view.getInt8(Math.pow(2, 53) - 1), TypeError);
+ assertThrowsInstanceOf(() => view.setInt8(Math.pow(2, 53) - 1, 0), TypeError);
+}
+
+reportCompare(0, 0, 'OK');
diff --git a/js/src/tests/ecma_6/DataView/getter-name.js b/js/src/tests/ecma_6/DataView/getter-name.js
new file mode 100644
index 000000000..600b7da8b
--- /dev/null
+++ b/js/src/tests/ecma_6/DataView/getter-name.js
@@ -0,0 +1,11 @@
+var BUGNUMBER = 1180290;
+var summary = 'DataView getters should have get prefix';
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(Object.getOwnPropertyDescriptor(DataView.prototype, "buffer").get.name, "get buffer");
+assertEq(Object.getOwnPropertyDescriptor(DataView.prototype, "byteLength").get.name, "get byteLength");
+assertEq(Object.getOwnPropertyDescriptor(DataView.prototype, "byteOffset").get.name, "get byteOffset");
+
+if (typeof reportCompare === 'function')
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/DataView/shell.js b/js/src/tests/ecma_6/DataView/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/DataView/shell.js
diff --git a/js/src/tests/ecma_6/Date/browser.js b/js/src/tests/ecma_6/Date/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Date/browser.js
diff --git a/js/src/tests/ecma_6/Date/constructor-one-Date-argument.js b/js/src/tests/ecma_6/Date/constructor-one-Date-argument.js
new file mode 100644
index 000000000..718c41373
--- /dev/null
+++ b/js/src/tests/ecma_6/Date/constructor-one-Date-argument.js
@@ -0,0 +1,40 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommonn.org/licenses/publicdomain/
+ */
+
+var BUGNUMBER = 1187233;
+var summary =
+ "Passing a Date object to |new Date()| should copy it, not convert it to " +
+ "a primitive and create it from that.";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+Date.prototype.toString = Date.prototype.valueOf = null;
+var d = new Date(new Date(8675309));
+assertEq(d.getTime(), 8675309);
+
+Date.prototype.valueOf = () => 42;
+d = new Date(new Date(8675309));
+assertEq(d.getTime(), 8675309);
+
+var D = newGlobal().Date;
+
+D.prototype.toString = D.prototype.valueOf = null;
+var d = new Date(new D(3141592654));
+assertEq(d.getTime(), 3141592654);
+
+D.prototype.valueOf = () => 525600;
+d = new Date(new D(3141592654));
+assertEq(d.getTime(), 3141592654);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Date/non-iso.js b/js/src/tests/ecma_6/Date/non-iso.js
new file mode 100644
index 000000000..9c352ee74
--- /dev/null
+++ b/js/src/tests/ecma_6/Date/non-iso.js
@@ -0,0 +1,63 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommonn.org/licenses/publicdomain/
+ */
+
+/*
+ * For the sake of cross compatibility with other implementations we
+ * follow the W3C "NOTE-datetime" specification when parsing dates of
+ * the form YYYY-MM-DDTHH:MM:SS save for a few exceptions: months, days, hours
+ * minutes, and seconds may be either one _or_ two digits long, and the 'T'
+ * preceding the time part may be replaced with a space. So, a string like
+ * "1997-3-8 1:1:1" will parse successfully. See bug: 1203298
+ */
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+assertEq(new Date("1997-03-08 1:1:1.01").getTime(),
+ new Date("1997-03-08T01:01:01.01").getTime());
+assertEq(new Date("1997-03-08 11:19:20").getTime(),
+ new Date("1997-03-08T11:19:20").getTime());
+assertEq(new Date("1997-3-08 11:19:20").getTime(),
+ new Date("1997-03-08T11:19:20").getTime());
+assertEq(new Date("1997-3-8 11:19:20").getTime(),
+ new Date("1997-03-08T11:19:20").getTime());
+assertEq(new Date("1997-3-8T11:19:20").getTime(),
+ new Date("1997-03-08T11:19:20").getTime());
+assertEq(new Date("1997-03-8T11:19:20").getTime(),
+ new Date("1997-03-08T11:19:20").getTime());
+assertEq(new Date("1997-03-08 11:19").getTime(),
+ new Date("1997-03-08T11:19").getTime());
+assertEq(new Date("1997-03-08 1:19").getTime(),
+ new Date("1997-03-08T1:19").getTime());
+assertEq(new Date("1997-03-08 1:1").getTime(),
+ new Date("1997-03-08T1:1").getTime());
+assertEq(new Date("1997-03-08 1:1:01").getTime(),
+ new Date("1997-03-08T1:1:01").getTime());
+assertEq(new Date("1997-03-08 1:1:1").getTime(),
+ new Date("1997-03-08T1:1:1").getTime());
+assertEq(new Date("1997-03-08 11").getTime(),
+ new Date("1997-03-08T11").getTime());
+assertEq(new Date("1997-03-08").getTime(),
+ new Date("1997-03-08").getTime());
+assertEq(new Date("1997-03-8").getTime(),
+ new Date("1997-03-08").getTime());
+assertEq(new Date("1997-3-8").getTime(),
+ new Date("1997-03-08").getTime());
+assertEq(new Date("1997-3-8 ").getTime(),
+ new Date("1997-03-08T").getTime()); // Date(NaN)
+assertEq(new Date("1997-3-8 :00:01").getTime(),
+ new Date(NaN).getTime());
+assertEq(new Date("1997-3-8 :00:01").getTime(),
+ new Date(NaN).getTime());
+assertEq(new Date("1997-3-8 01::01").getTime(),
+ new Date(NaN).getTime());
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Date/prototype-is-not-a-date.js b/js/src/tests/ecma_6/Date/prototype-is-not-a-date.js
new file mode 100644
index 000000000..26f0c3e85
--- /dev/null
+++ b/js/src/tests/ecma_6/Date/prototype-is-not-a-date.js
@@ -0,0 +1,15 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var BUGNUMBER = 861219;
+var summary = "Date.prototype isn't an instance of Date";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(Date.prototype instanceof Date, false);
+assertEq(Date.prototype.__proto__, Object.prototype);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Date/shell.js b/js/src/tests/ecma_6/Date/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Date/shell.js
diff --git a/js/src/tests/ecma_6/Date/toISOString.js b/js/src/tests/ecma_6/Date/toISOString.js
new file mode 100644
index 000000000..cc300a660
--- /dev/null
+++ b/js/src/tests/ecma_6/Date/toISOString.js
@@ -0,0 +1,53 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 730831;
+var summary = 'Date.prototype.toISOString returns an invalid ISO-8601 string';
+
+print(BUGNUMBER + ": " + summary);
+
+function iso(t) {
+ return new Date(t).toISOString();
+}
+
+function utc(year, month, day, hour, minute, second, millis) {
+ var date = new Date(0);
+ date.setUTCFullYear(year, month - 1, day);
+ date.setUTCHours(hour, minute, second, millis);
+ return date.getTime();
+}
+
+
+// Values around maximum date for simple iso format.
+var maxDateSimple = utc(9999, 12, 31, 23, 59, 59, 999);
+assertEq(iso(maxDateSimple - 1), "9999-12-31T23:59:59.998Z");
+assertEq(iso(maxDateSimple ), "9999-12-31T23:59:59.999Z");
+assertEq(iso(maxDateSimple + 1), "+010000-01-01T00:00:00.000Z");
+
+
+// Values around minimum date for simple iso format.
+var minDateSimple = utc(0, 1, 1, 0, 0, 0, 0);
+assertEq(iso(minDateSimple - 1), "-000001-12-31T23:59:59.999Z");
+assertEq(iso(minDateSimple ), "0000-01-01T00:00:00.000Z");
+assertEq(iso(minDateSimple + 1), "0000-01-01T00:00:00.001Z");
+
+
+// Values around maximum date for extended iso format.
+var maxDateExtended = utc(+275760, 9, 13, 0, 0, 0, 0);
+assertEq(maxDateExtended, +8.64e15);
+assertEq(iso(maxDateExtended - 1), "+275760-09-12T23:59:59.999Z");
+assertEq(iso(maxDateExtended ), "+275760-09-13T00:00:00.000Z");
+assertThrowsInstanceOf(() => iso(maxDateExtended + 1), RangeError);
+
+
+// Values around minimum date for extended iso format.
+var minDateExtended = utc(-271821, 4, 20, 0, 0, 0, 0);
+assertEq(minDateExtended, -8.64e15);
+assertThrowsInstanceOf(() => iso(minDateExtended - 1), RangeError);
+assertEq(iso(minDateExtended ), "-271821-04-20T00:00:00.000Z");
+assertEq(iso(minDateExtended + 1), "-271821-04-20T00:00:00.001Z");
+
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Date/toPrimitive.js b/js/src/tests/ecma_6/Date/toPrimitive.js
new file mode 100644
index 000000000..11346b1ae
--- /dev/null
+++ b/js/src/tests/ecma_6/Date/toPrimitive.js
@@ -0,0 +1,62 @@
+// ES6 20.3.4.45 Date.prototype[@@toPrimitive](hint)
+
+// The toPrimitive method throws if the this value isn't an object.
+var toPrimitive = Date.prototype[Symbol.toPrimitive];
+assertThrowsInstanceOf(() => toPrimitive.call(undefined, "default"), TypeError);
+assertThrowsInstanceOf(() => toPrimitive.call(3, "default"), TypeError);
+
+// It doesn't have to be a Date object, though.
+var obj = {
+ toString() { return "str"; },
+ valueOf() { return "val"; }
+};
+assertEq(toPrimitive.call(obj, "number"), "val");
+assertEq(toPrimitive.call(obj, "string"), "str");
+assertEq(toPrimitive.call(obj, "default"), "str");
+
+// It throws if the hint argument is missing or not one of the three allowed values.
+assertThrowsInstanceOf(() => toPrimitive.call(obj), TypeError);
+assertThrowsInstanceOf(() => toPrimitive.call(obj, undefined), TypeError);
+assertThrowsInstanceOf(() => toPrimitive.call(obj, "boolean"), TypeError);
+assertThrowsInstanceOf(() => toPrimitive.call(obj, ["number"]), TypeError);
+assertThrowsInstanceOf(() => toPrimitive.call(obj, {toString() { throw "FAIL"; }}), TypeError);
+
+// The next few tests cover the OrdinaryToPrimitive algorithm, specified in
+// ES6 7.1.1 ToPrimitive(input [, PreferredType]).
+
+// Date.prototype.toString or .valueOf can be overridden.
+var dateobj = new Date();
+Date.prototype.toString = function () {
+ assertEq(this, dateobj);
+ return 14;
+};
+Date.prototype.valueOf = function () {
+ return "92";
+};
+assertEq(dateobj[Symbol.toPrimitive]("number"), "92");
+assertEq(dateobj[Symbol.toPrimitive]("string"), 14);
+assertEq(dateobj[Symbol.toPrimitive]("default"), 14);
+assertEq(dateobj == 14, true); // equality comparison: passes "default"
+
+// If this.toString is a non-callable value, this.valueOf is called instead.
+Date.prototype.toString = {};
+assertEq(dateobj[Symbol.toPrimitive]("string"), "92");
+assertEq(dateobj[Symbol.toPrimitive]("default"), "92");
+
+// And vice versa.
+Date.prototype.toString = function () { return 15; };
+Date.prototype.valueOf = "ponies";
+assertEq(dateobj[Symbol.toPrimitive]("number"), 15);
+
+// If neither is callable, it throws a TypeError.
+Date.prototype.toString = "ponies";
+assertThrowsInstanceOf(() => dateobj[Symbol.toPrimitive]("default"), TypeError);
+
+// Surface features.
+assertEq(toPrimitive.name, "[Symbol.toPrimitive]");
+var desc = Object.getOwnPropertyDescriptor(Date.prototype, Symbol.toPrimitive);
+assertEq(desc.configurable, true);
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, false);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Date/toString-generic.js b/js/src/tests/ecma_6/Date/toString-generic.js
new file mode 100644
index 000000000..caee47d7b
--- /dev/null
+++ b/js/src/tests/ecma_6/Date/toString-generic.js
@@ -0,0 +1,13 @@
+var BUGNUMBER = 861219;
+var summary = 'Date.prototype.toString is a generic function';
+
+print(BUGNUMBER + ": " + summary);
+
+for (var thisValue of [{}, [], /foo/, Date.prototype, new Proxy(new Date(), {})])
+ assertEq(Date.prototype.toString.call(thisValue), "Invalid Date");
+
+for (var prim of [null, undefined, 0, 1.2, true, false, "foo", Symbol.iterator])
+ assertThrowsInstanceOf(() => Date.prototype.toString.call(prim), TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Date/two-digit-years.js b/js/src/tests/ecma_6/Date/two-digit-years.js
new file mode 100644
index 000000000..5b8ad3d7b
--- /dev/null
+++ b/js/src/tests/ecma_6/Date/two-digit-years.js
@@ -0,0 +1,69 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommonn.org/licenses/publicdomain/
+ */
+
+/*
+ * For the sake of cross compatibility with other implementations we
+ * implement date parsing heuristics which support single and double
+ * digit years. See bug: 1265136
+ */
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+for (let year of Array(100).keys()) {
+ for (let month of Array(12).keys()) {
+ for (let day of Array(31).keys()) {
+ let fullYear = year >= 50 ? year + 1900 : year + 2000;
+ let fullDate = new Date(`${month + 1}/${day + 1}/${fullYear}`);
+
+ // mm/dd/yy
+ let d1 = new Date(`${month + 1}/${day + 1}/${year}`);
+ assertEq(d1.getTime(), fullDate.getTime())
+
+ // yy/mm/dd
+ let d2 = new Date(`${year}/${month + 1}/${day + 1}`);
+ if (year > 31) {
+ assertEq(d2.getTime(), fullDate.getTime())
+ } else if (year > 12) {
+ assertEq(d2.getTime(), new Date(NaN).getTime())
+ }
+ }
+ }
+}
+
+assertEq(new Date("99/1/99").getTime(), new Date(NaN).getTime());
+assertEq(new Date("13/13/13").getTime(), new Date(NaN).getTime());
+assertEq(new Date("0/10/0").getTime(), new Date(NaN).getTime());
+
+// Written months.
+for (let year of Array(1000).keys()) {
+ let fullDate = new Date(`5/1/${year}`);
+ let d1 = new Date(`may ${year} 1`);
+ let d2 = new Date(`may 1 ${year}`);
+
+ let d3 = new Date(`1 may ${year}`);
+ let d4 = new Date(`${year} may 1`);
+
+ let d5 = new Date(`1 ${year} may`);
+ let d6 = new Date(`${year} 1 may`);
+
+ assertEq(d1.getTime(), fullDate.getTime())
+ assertEq(d2.getTime(), fullDate.getTime())
+ assertEq(d3.getTime(), fullDate.getTime())
+ assertEq(d4.getTime(), fullDate.getTime())
+ assertEq(d5.getTime(), fullDate.getTime())
+ assertEq(d6.getTime(), fullDate.getTime())
+}
+
+assertEq(new Date("may 1999 1999").getTime(), new Date(NaN).getTime());
+assertEq(new Date("may 0 0").getTime(), new Date(NaN).getTime());
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Destructuring/browser.js b/js/src/tests/ecma_6/Destructuring/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Destructuring/browser.js
diff --git a/js/src/tests/ecma_6/Destructuring/cover-init-name-syntax.js b/js/src/tests/ecma_6/Destructuring/cover-init-name-syntax.js
new file mode 100644
index 000000000..b37d8c290
--- /dev/null
+++ b/js/src/tests/ecma_6/Destructuring/cover-init-name-syntax.js
@@ -0,0 +1,72 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+// CoverInitName in arrow parameters.
+({a = 1}, {b = 2}, {c = 3}) => {};
+({a = 1} = {}, {b = 2}, {c = 3}) => {};
+({a = 1} = {}, {b = 2} = {}, {c = 3}) => {};
+({a = 1} = {}, {b = 2} = {}, {c = 3} = {}) => {};
+
+
+// CoverInitName in CoverParenthesizedExpressionAndArrowParameterList,
+// but not ArrowParameters.
+assertThrowsInstanceOf(() => eval(`
+ ({a = 1}, {b = 2}, {c = 3});
+`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`
+ ({a = 1}, {b = 2}, {c = 3} = {});
+`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`
+ ({a = 1}, {b = 2} = {}, {c = 3} = {});
+`), SyntaxError);
+
+
+// CoverInitName nested in array destructuring.
+[{a = 0}] = [{}];
+var [{a = 0}] = [{}];
+{ let [{a = 0}] = [{}]; }
+{ const [{a = 0}] = [{}]; }
+
+for ([{a = 0}] of []);
+for (var [{a = 0}] of []);
+for (let [{a = 0}] of []);
+for (const [{a = 0}] of []);
+
+function f([{a = 0}]) {}
+var h = ([{a = 0}]) => {};
+
+
+// CoverInitName nested in rest pattern.
+[...[{a = 0}]] = [{}];
+var [...[{a = 0}]] = [{}];
+{ let [...[{a = 0}]] = [{}]; }
+{ const [...[{a = 0}]] = [{}]; }
+
+for ([...[{a = 0}]] of []);
+for (var [...[{a = 0}]] of []);
+for (let [...[{a = 0}]] of []);
+for (const [...[{a = 0}]] of []);
+
+function f([...[{a = 0}]]) {}
+var h = ([...[{a = 0}]]) => {};
+
+
+// CoverInitName nested in object destructuring.
+({p: {a = 0}} = {p: {}});
+var {p: {a = 0}} = {p: {}};
+{ let {p: {a = 0}} = {p: {}}; }
+{ const {p: {a = 0}} = {p: {}}; }
+
+for ({p: {a = 0}} of []);
+for (var {p: {a = 0}} of []);
+for (let {p: {a = 0}} of []);
+for (const {p: {a = 0}} of []);
+
+function f({p: {a = 0}}) {}
+var h = ({p: {a = 0}}) => {};
+
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Destructuring/iterator-primitive.js b/js/src/tests/ecma_6/Destructuring/iterator-primitive.js
new file mode 100644
index 000000000..17d100367
--- /dev/null
+++ b/js/src/tests/ecma_6/Destructuring/iterator-primitive.js
@@ -0,0 +1,36 @@
+var BUGNUMBER = 1021835;
+var summary = "Returning non-object from @@iterator should throw";
+
+print(BUGNUMBER + ": " + summary);
+
+let primitives = [
+ 1,
+ true,
+ undefined,
+ null,
+ "foo",
+ Symbol.iterator
+];
+
+function f([]) {
+}
+
+for (let primitive of primitives) {
+ let obj = {
+ [Symbol.iterator]() {
+ return primitive;
+ }
+ };
+ assertThrowsInstanceOf(() => {
+ let [] = obj;
+ }, TypeError);
+ assertThrowsInstanceOf(() => {
+ [] = obj;
+ }, TypeError);
+ assertThrowsInstanceOf(() => {
+ f(obj);
+ }, TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Destructuring/rest-with-trailing-comma.js b/js/src/tests/ecma_6/Destructuring/rest-with-trailing-comma.js
new file mode 100644
index 000000000..310180e14
--- /dev/null
+++ b/js/src/tests/ecma_6/Destructuring/rest-with-trailing-comma.js
@@ -0,0 +1,45 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const invalidSyntax = [
+ "[...r, ]",
+ "[a, ...r, ]",
+ "[a = 0, ...r, ]",
+ "[[], ...r, ]",
+ "[[...r,]]",
+ "[[...r,], ]",
+ "[[...r,], a]",
+];
+
+const validSyntax = [
+ "[, ]",
+ "[a, ]",
+ "[[], ]",
+];
+
+const destructuringForms = [
+ a => `${a} = [];`,
+ a => `var ${a} = [];`,
+ a => `let ${a} = [];`,
+ a => `const ${a} = [];`,
+ a => `(${a}) => {};`,
+ a => `(${a} = []) => {};`,
+ a => `function f(${a}) {}`,
+];
+
+for (let invalid of invalidSyntax) {
+ for (let fn of destructuringForms) {
+ assertThrowsInstanceOf(() => Function(fn(invalid)), SyntaxError);
+ }
+}
+
+for (let invalid of validSyntax) {
+ for (let fn of destructuringForms) {
+ Function(fn(invalid));
+ }
+}
+
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Destructuring/shell.js b/js/src/tests/ecma_6/Destructuring/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Destructuring/shell.js
diff --git a/js/src/tests/ecma_6/Destructuring/yield-in-object-destr-function.js b/js/src/tests/ecma_6/Destructuring/yield-in-object-destr-function.js
new file mode 100644
index 000000000..9f5eed834
--- /dev/null
+++ b/js/src/tests/ecma_6/Destructuring/yield-in-object-destr-function.js
@@ -0,0 +1,182 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+// Destructuring binding patterns with var.
+(function() {
+ var {a: yield} = {a: "yield-with-name"};
+ assertEq(yield, "yield-with-name");
+
+ var {yield} = {yield: "yield-with-shorthand"};
+ assertEq(yield, "yield-with-shorthand");
+
+ var {yield = 0} = {yield: "yield-with-coverinitname"};
+ assertEq(yield, "yield-with-coverinitname");
+})();
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f() {
+ var {a: yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f() {
+ var {yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f() {
+ var {yield = 0} = {};
+ }
+`), SyntaxError);
+
+
+// Destructuring binding patterns with let.
+(function(){
+ let {a: yield} = {a: "yield-with-name"};
+ assertEq(yield, "yield-with-name");
+})();
+
+(function() {
+ let {yield} = {yield: "yield-with-shorthand"};
+ assertEq(yield, "yield-with-shorthand");
+})();
+
+(function() {
+ let {yield = 0} = {yield: "yield-with-coverinitname"};
+ assertEq(yield, "yield-with-coverinitname");
+})();
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f() {
+ let {a: yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f() {
+ let {yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f() {
+ let {yield = 0} = {};
+ }
+`), SyntaxError);
+
+
+// Destructuring binding patterns with const.
+(function() {
+ const {a: yield} = {a: "yield-with-name"};
+ assertEq(yield, "yield-with-name");
+})();
+
+(function() {
+ const {yield} = {yield: "yield-with-shorthand"};
+ assertEq(yield, "yield-with-shorthand");
+})();
+
+(function() {
+ const {yield = 0} = {yield: "yield-with-coverinitname"};
+ assertEq(yield, "yield-with-coverinitname");
+})();
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f() {
+ const {a: yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f() {
+ const {yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f() {
+ const {yield = 0} = {};
+ }
+`), SyntaxError);
+
+
+// Destructuring binding patterns in parameters.
+(function({a: yield} = {a: "yield-with-name"}) {
+ assertEq(yield, "yield-with-name");
+})();
+
+(function({yield} = {yield: "yield-with-shorthand"}) {
+ assertEq(yield, "yield-with-shorthand");
+})();
+
+(function({yield = 0} = {yield: "yield-with-coverinitname"}) {
+ assertEq(yield, "yield-with-coverinitname");
+})();
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f({a: yield} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f({yield} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f({yield = 0} = {}) { }
+`), SyntaxError);
+
+
+// Destructuring assignment pattern.
+(function() {
+ var a, yield;
+
+ ({a: yield} = {a: "yield-with-name"});
+ assertEq(yield, "yield-with-name");
+
+ ({yield} = {yield: "yield-with-shorthand"});
+ assertEq(yield, "yield-with-shorthand");
+
+ ({yield = 0} = {yield: "yield-with-coverinitname"});
+ assertEq(yield, "yield-with-coverinitname");
+})();
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f() {
+ ({a: yield} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f() {
+ ({yield} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function f() {
+ ({yield = 0} = {});
+ }
+`), SyntaxError);
+
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Destructuring/yield-in-object-destr-generator.js b/js/src/tests/ecma_6/Destructuring/yield-in-object-destr-generator.js
new file mode 100644
index 000000000..4423f8190
--- /dev/null
+++ b/js/src/tests/ecma_6/Destructuring/yield-in-object-destr-generator.js
@@ -0,0 +1,200 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+// Destructuring binding patterns with var.
+assertThrowsInstanceOf(() => eval(`
+ function* g() {
+ var {a: yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ function* g() {
+ var {yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ function* g() {
+ var {yield = 0} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g() {
+ var {a: yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g() {
+ var {yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g() {
+ var {yield = 0} = {};
+ }
+`), SyntaxError);
+
+
+// Destructuring binding patterns with let.
+assertThrowsInstanceOf(() => eval(`
+ function* g() {
+ let {a: yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ function* g() {
+ let {yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ function* g() {
+ let {yield = 0} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g() {
+ let {a: yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g() {
+ let {yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g() {
+ let {yield = 0} = {};
+ }
+`), SyntaxError);
+
+
+// Destructuring binding patterns with const.
+assertThrowsInstanceOf(() => eval(`
+ function* g() {
+ const {a: yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ function* g() {
+ const {yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ function* g() {
+ const {yield = 0} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g() {
+ const {a: yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g() {
+ const {yield} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g() {
+ const {yield = 0} = {};
+ }
+`), SyntaxError);
+
+
+// Destructuring binding patterns in parameters.
+assertThrowsInstanceOf(() => eval(`
+ function* g({a: yield} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ function* g({yield} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ function* g({yield = 0} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g({a: yield} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g({yield} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g({yield = 0} = {}) { }
+`), SyntaxError);
+
+
+// Destructuring assignment pattern.
+assertThrowsInstanceOf(() => eval(`
+ function* g() {
+ ({a: yield} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ function* g() {
+ ({yield} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ function* g() {
+ ({yield = 0} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g() {
+ ({a: yield} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g() {
+ ({yield} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ function* g() {
+ ({yield = 0} = {});
+ }
+`), SyntaxError);
+
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Destructuring/yield-in-object-destr-script.js b/js/src/tests/ecma_6/Destructuring/yield-in-object-destr-script.js
new file mode 100644
index 000000000..99b48dd41
--- /dev/null
+++ b/js/src/tests/ecma_6/Destructuring/yield-in-object-destr-script.js
@@ -0,0 +1,123 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+// Destructuring binding patterns with var.
+var {a: yield} = {a: "yield-with-name"};
+assertEq(yield, "yield-with-name");
+
+var {yield} = {yield: "yield-with-shorthand"};
+assertEq(yield, "yield-with-shorthand");
+
+var {yield = 0} = {yield: "yield-with-coverinitname"};
+assertEq(yield, "yield-with-coverinitname");
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ var {a: yield} = {};
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ var {yield} = {};
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ var {yield = 0} = {};
+`), SyntaxError);
+
+
+// Destructuring binding patterns with let.
+{
+ let {a: yield} = {a: "yield-with-name"};
+ assertEq(yield, "yield-with-name");
+}
+
+{
+ let {yield} = {yield: "yield-with-shorthand"};
+ assertEq(yield, "yield-with-shorthand");
+}
+
+{
+ let {yield = 0} = {yield: "yield-with-coverinitname"};
+ assertEq(yield, "yield-with-coverinitname");
+}
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ let {a: yield} = {};
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ let {yield} = {};
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ let {yield = 0} = {};
+`), SyntaxError);
+
+
+// Destructuring binding patterns with const.
+{
+ const {a: yield} = {a: "yield-with-name"};
+ assertEq(yield, "yield-with-name");
+}
+
+{
+ const {yield} = {yield: "yield-with-shorthand"};
+ assertEq(yield, "yield-with-shorthand");
+}
+
+{
+ const {yield = 0} = {yield: "yield-with-coverinitname"};
+ assertEq(yield, "yield-with-coverinitname");
+}
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ const {a: yield} = {};
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ const {yield} = {};
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ const {yield = 0} = {};
+`), SyntaxError);
+
+
+// Destructuring assignment pattern.
+({a: yield} = {a: "yield-with-name"});
+assertEq(yield, "yield-with-name");
+
+({yield} = {yield: "yield-with-shorthand"});
+assertEq(yield, "yield-with-shorthand");
+
+({yield = 0} = {yield: "yield-with-coverinitname"});
+assertEq(yield, "yield-with-coverinitname");
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ ({a: yield} = {});
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ ({yield} = {});
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`
+ "use strict";
+ ({yield = 0} = {});
+`), SyntaxError);
+
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Destructuring/yield-with-escape-in-object-destr-function.js b/js/src/tests/ecma_6/Destructuring/yield-with-escape-in-object-destr-function.js
new file mode 100644
index 000000000..349badeaf
--- /dev/null
+++ b/js/src/tests/ecma_6/Destructuring/yield-with-escape-in-object-destr-function.js
@@ -0,0 +1,182 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+// Destructuring binding patterns with var.
+(function() {
+ var {a: yi\u0065ld} = {a: "yield-with-name"};
+ assertEq(yield, "yield-with-name");
+
+ var {yi\u0065ld} = {yield: "yield-with-shorthand"};
+ assertEq(yield, "yield-with-shorthand");
+
+ var {yi\u0065ld = 0} = {yield: "yield-with-coverinitname"};
+ assertEq(yield, "yield-with-coverinitname");
+})();
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f() {
+ var {a: yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f() {
+ var {yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f() {
+ var {yi\u0065ld = 0} = {};
+ }
+`), SyntaxError);
+
+
+// Destructuring binding patterns with let.
+(function(){
+ let {a: yi\u0065ld} = {a: "yield-with-name"};
+ assertEq(yield, "yield-with-name");
+})();
+
+(function() {
+ let {yi\u0065ld} = {yield: "yield-with-shorthand"};
+ assertEq(yield, "yield-with-shorthand");
+})();
+
+(function() {
+ let {yi\u0065ld = 0} = {yield: "yield-with-coverinitname"};
+ assertEq(yield, "yield-with-coverinitname");
+})();
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f() {
+ let {a: yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f() {
+ let {yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f() {
+ let {yi\u0065ld = 0} = {};
+ }
+`), SyntaxError);
+
+
+// Destructuring binding patterns with const.
+(function() {
+ const {a: yi\u0065ld} = {a: "yield-with-name"};
+ assertEq(yield, "yield-with-name");
+})();
+
+(function() {
+ const {yi\u0065ld} = {yield: "yield-with-shorthand"};
+ assertEq(yield, "yield-with-shorthand");
+})();
+
+(function() {
+ const {yi\u0065ld = 0} = {yield: "yield-with-coverinitname"};
+ assertEq(yield, "yield-with-coverinitname");
+})();
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f() {
+ const {a: yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f() {
+ const {yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f() {
+ const {yi\u0065ld = 0} = {};
+ }
+`), SyntaxError);
+
+
+// Destructuring binding patterns in parameters.
+(function({a: yi\u0065ld} = {a: "yield-with-name"}) {
+ assertEq(yield, "yield-with-name");
+})();
+
+(function({yi\u0065ld} = {yield: "yield-with-shorthand"}) {
+ assertEq(yield, "yield-with-shorthand");
+})();
+
+(function({yi\u0065ld = 0} = {yield: "yield-with-coverinitname"}) {
+ assertEq(yield, "yield-with-coverinitname");
+})();
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f({a: yi\u0065ld} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f({yi\u0065ld} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f({yi\u0065ld = 0} = {}) { }
+`), SyntaxError);
+
+
+// Destructuring assignment pattern.
+(function() {
+ var a, yield;
+
+ ({a: yi\u0065ld} = {a: "yield-with-name"});
+ assertEq(yield, "yield-with-name");
+
+ ({yi\u0065ld} = {yield: "yield-with-shorthand"});
+ assertEq(yield, "yield-with-shorthand");
+
+ ({yi\u0065ld = 0} = {yield: "yield-with-coverinitname"});
+ assertEq(yield, "yield-with-coverinitname");
+})();
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f() {
+ ({a: yi\u0065ld} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f() {
+ ({yi\u0065ld} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function f() {
+ ({yi\u0065ld = 0} = {});
+ }
+`), SyntaxError);
+
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Destructuring/yield-with-escape-in-object-destr-generator.js b/js/src/tests/ecma_6/Destructuring/yield-with-escape-in-object-destr-generator.js
new file mode 100644
index 000000000..faa356391
--- /dev/null
+++ b/js/src/tests/ecma_6/Destructuring/yield-with-escape-in-object-destr-generator.js
@@ -0,0 +1,200 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+// Destructuring binding patterns with var.
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ var {a: yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ var {yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ var {yi\u0065ld = 0} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ var {a: yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ var {yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ var {yi\u0065ld = 0} = {};
+ }
+`), SyntaxError);
+
+
+// Destructuring binding patterns with let.
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ let {a: yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ let {yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ let {yi\u0065ld = 0} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ let {a: yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ let {yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ let {yi\u0065ld = 0} = {};
+ }
+`), SyntaxError);
+
+
+// Destructuring binding patterns with const.
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ const {a: yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ const {yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ const {yi\u0065ld = 0} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ const {a: yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ const {yi\u0065ld} = {};
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ const {yi\u0065ld = 0} = {};
+ }
+`), SyntaxError);
+
+
+// Destructuring binding patterns in parameters.
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g({a: yi\u0065ld} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g({yi\u0065ld} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g({yi\u0065ld = 0} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g({a: yi\u0065ld} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g({yi\u0065ld} = {}) { }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g({yi\u0065ld = 0} = {}) { }
+`), SyntaxError);
+
+
+// Destructuring assignment pattern.
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ ({a: yi\u0065ld} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ ({yi\u0065ld} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ ({yi\u0065ld = 0} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ ({a: yi\u0065ld} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ ({yi\u0065ld} = {});
+ }
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ ({yi\u0065ld = 0} = {});
+ }
+`), SyntaxError);
+
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Destructuring/yield-with-escape-in-object-destr-script.js b/js/src/tests/ecma_6/Destructuring/yield-with-escape-in-object-destr-script.js
new file mode 100644
index 000000000..65352a66c
--- /dev/null
+++ b/js/src/tests/ecma_6/Destructuring/yield-with-escape-in-object-destr-script.js
@@ -0,0 +1,123 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+// Destructuring binding patterns with var.
+var {a: yi\u0065ld} = {a: "yield-with-name"};
+assertEq(yield, "yield-with-name");
+
+var {yi\u0065ld} = {yield: "yield-with-shorthand"};
+assertEq(yield, "yield-with-shorthand");
+
+var {yi\u0065ld = 0} = {yield: "yield-with-coverinitname"};
+assertEq(yield, "yield-with-coverinitname");
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ var {a: yi\u0065ld} = {};
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ var {yi\u0065ld} = {};
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ var {yi\u0065ld = 0} = {};
+`), SyntaxError);
+
+
+// Destructuring binding patterns with let.
+{
+ let {a: yi\u0065ld} = {a: "yield-with-name"};
+ assertEq(yield, "yield-with-name");
+}
+
+{
+ let {yi\u0065ld} = {yield: "yield-with-shorthand"};
+ assertEq(yield, "yield-with-shorthand");
+}
+
+{
+ let {yi\u0065ld = 0} = {yield: "yield-with-coverinitname"};
+ assertEq(yield, "yield-with-coverinitname");
+}
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ let {a: yi\u0065ld} = {};
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ let {yi\u0065ld} = {};
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ let {yi\u0065ld = 0} = {};
+`), SyntaxError);
+
+
+// Destructuring binding patterns with const.
+{
+ const {a: yi\u0065ld} = {a: "yield-with-name"};
+ assertEq(yield, "yield-with-name");
+}
+
+{
+ const {yi\u0065ld} = {yield: "yield-with-shorthand"};
+ assertEq(yield, "yield-with-shorthand");
+}
+
+{
+ const {yi\u0065ld = 0} = {yield: "yield-with-coverinitname"};
+ assertEq(yield, "yield-with-coverinitname");
+}
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ const {a: yi\u0065ld} = {};
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ const {yi\u0065ld} = {};
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ const {yi\u0065ld = 0} = {};
+`), SyntaxError);
+
+
+// Destructuring assignment pattern.
+({a: yi\u0065ld} = {a: "yield-with-name"});
+assertEq(yield, "yield-with-name");
+
+({yi\u0065ld} = {yield: "yield-with-shorthand"});
+assertEq(yield, "yield-with-shorthand");
+
+({yi\u0065ld = 0} = {yield: "yield-with-coverinitname"});
+assertEq(yield, "yield-with-coverinitname");
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ ({a: yi\u0065ld} = {});
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ ({yi\u0065ld} = {});
+`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ ({yi\u0065ld = 0} = {});
+`), SyntaxError);
+
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Expressions/ToPropertyKey-symbols.js b/js/src/tests/ecma_6/Expressions/ToPropertyKey-symbols.js
new file mode 100644
index 000000000..32b3994b3
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/ToPropertyKey-symbols.js
@@ -0,0 +1,90 @@
+var symbols = [
+ Symbol(), Symbol("iterator"), Symbol.for("iterator"), Symbol.iterator
+];
+
+for (var sym of symbols) {
+ var key = {
+ toString() { return sym; }
+ };
+
+ // Test that ToPropertyKey can return a symbol in each of the following
+ // contexts.
+
+ // Computed property names.
+ var obj = {[key]: 13};
+ var found = Reflect.ownKeys(obj);
+ assertEq(found.length, 1);
+ assertEq(found[0], sym);
+
+ // Computed accessor property names.
+ var obj2 = {
+ get [key]() { return "got"; },
+ set [key](v) { this.v = v; }
+ };
+ assertEq(obj2[sym], "got");
+ obj2[sym] = 33;
+ assertEq(obj2.v, 33);
+
+ // Getting and setting properties.
+ assertEq(obj[key], 13);
+ obj[key] = 19;
+ assertEq(obj[sym], 19);
+ (function () { "use strict"; obj[key] = 20; })();
+ assertEq(obj[sym], 20);
+ obj[key]++;
+ assertEq(obj[sym], 21);
+
+ // Getting properties of primitive values.
+ Number.prototype[sym] = "success";
+ assertEq(Math.PI[key], "success");
+ delete Number.prototype[sym];
+
+ // Getting a super property.
+ class X {
+ [sym]() { return "X"; }
+ }
+ class Y extends X {
+ [sym]() { return super[key]() + "Y"; }
+ }
+ var y = new Y();
+ assertEq(y[sym](), "XY");
+
+ // Setting a super property.
+ class Z {
+ set [sym](v) {
+ this.self = this;
+ this.value = v;
+ }
+ }
+ class W extends Z {
+ set [sym](v) {
+ this.isW = true;
+ super[key] = v;
+ }
+ }
+ var w = new W();
+ w[key] = "ok";
+ assertEq(w.self, w);
+ assertEq(w.value, "ok");
+ assertEq(w.isW, true);
+
+ // Deleting properties.
+ obj = {[sym]: 1};
+ assertEq(delete obj[key], true);
+ assertEq(sym in obj, false);
+
+ // LHS of `in` expressions.
+ assertEq(key in {iterator: 0}, false);
+ assertEq(key in {[sym]: 0}, true);
+
+ // Methods of Object and Object.prototype
+ obj = {};
+ Object.defineProperty(obj, key, {value: "ok", enumerable: true});
+ assertEq(obj[sym], "ok");
+ assertEq(obj.hasOwnProperty(key), true);
+ assertEq(obj.propertyIsEnumerable(key), true);
+ var desc = Object.getOwnPropertyDescriptor(obj, key);
+ assertEq(desc.value, "ok");
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Expressions/binary-literals.js b/js/src/tests/ecma_6/Expressions/binary-literals.js
new file mode 100644
index 000000000..df1f2ed6f
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/binary-literals.js
@@ -0,0 +1,115 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 894026;
+var summary = "Implement ES6 binary literals";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var chars = ['b', 'B'];
+
+for (var i = 0; i < 2; i++)
+{
+ if (i === 2)
+ {
+ chars.forEach(function(v)
+ {
+ try
+ {
+ eval('0' + v + i);
+ throw "didn't throw";
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "no syntax error evaluating 0" + v + i + ", " +
+ "got " + e);
+ }
+ });
+ continue;
+ }
+
+ for (var j = 0; j < 2; j++)
+ {
+ if (j === 2)
+ {
+ chars.forEach(function(v)
+ {
+ try
+ {
+ eval('0' + v + i + j);
+ throw "didn't throw";
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "no syntax error evaluating 0" + v + i + j + ", " +
+ "got " + e);
+ }
+ });
+ continue;
+ }
+
+ for (var k = 0; k < 2; k++)
+ {
+ if (k === 2)
+ {
+ chars.forEach(function(v)
+ {
+ try
+ {
+ eval('0' + v + i + j + k);
+ throw "didn't throw";
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "no syntax error evaluating 0" + v + i + j + k + ", " +
+ "got " + e);
+ }
+ });
+ continue;
+ }
+
+ chars.forEach(function(v)
+ {
+ assertEq(eval('0' + v + i + j + k), i * 4 + j * 2 + k);
+ });
+ }
+ }
+}
+
+chars.forEach(function(v)
+{
+ try
+ {
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "no syntax error evaluating 0" + v + ", got " + e);
+ }
+});
+
+// Off-by-one check: '/' immediately precedes '0'.
+assertEq(0b110/1, 6);
+assertEq(0B10110/1, 22);
+
+function strict()
+{
+ "use strict";
+ return 0b11010101;
+}
+assertEq(strict(), 128 + 64 + 16 + 4 + 1);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Expressions/browser.js b/js/src/tests/ecma_6/Expressions/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/browser.js
diff --git a/js/src/tests/ecma_6/Expressions/computed-property-side-effects.js b/js/src/tests/ecma_6/Expressions/computed-property-side-effects.js
new file mode 100644
index 000000000..54dec7416
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/computed-property-side-effects.js
@@ -0,0 +1,35 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1199695;
+var summary =
+ "Computed property names must be considered as always effectful even when " +
+ "the name expression isn't effectful, because calling ToPropertyKey on " +
+ "some non-effectful expressions has user-modifiable behavior";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+RegExp.prototype.toString = () => { throw 42; };
+assertThrowsValue(function() {
+ ({ [/regex/]: 0 }); // ToPropertyKey(/regex/) throws 42
+}, 42);
+
+function Q() {
+ ({ [new.target]: 0 }); // new.target will be Q, ToPropertyKey(Q) throws 17
+}
+Q.toString = () => { throw 17; };
+assertThrowsValue(function() {
+ new Q;
+}, 17);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Expressions/delete-constant-folded-and-or.js b/js/src/tests/ecma_6/Expressions/delete-constant-folded-and-or.js
new file mode 100644
index 000000000..9576413a6
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/delete-constant-folded-and-or.js
@@ -0,0 +1,41 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1183400;
+var summary =
+ "Deletion of a && or || expression that constant-folds to a name must not " +
+ "attempt to delete the name";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+Object.defineProperty(this, "nonconfigurable", { value: 42 });
+assertEq(nonconfigurable, 42);
+
+assertEq(delete nonconfigurable, false);
+assertEq(delete (true && nonconfigurable), true);
+
+function nested()
+{
+ assertEq(delete nonconfigurable, false);
+ assertEq(delete (true && nonconfigurable), true);
+}
+nested();
+
+function nestedStrict()
+{
+ "use strict";
+ assertEq(delete (true && nonconfigurable), true);
+}
+nestedStrict();
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Expressions/delete-name-parenthesized-early-error-strict-mode.js b/js/src/tests/ecma_6/Expressions/delete-name-parenthesized-early-error-strict-mode.js
new file mode 100644
index 000000000..d28afb665
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/delete-name-parenthesized-early-error-strict-mode.js
@@ -0,0 +1,76 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1111101;
+var summary =
+ "delete (foo), delete ((foo)), and so on are strict mode early errors";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function checkSyntaxError(code)
+{
+ function helper(maker)
+ {
+ var earlyError = false;
+ try
+ {
+ var f = maker(code);
+
+ var error = "no early error, created a function with code <" + code + ">";
+ try
+ {
+ f();
+ error += ", and the function can be called without error";
+ }
+ catch (e)
+ {
+ error +=", and calling the function throws " + e;
+ }
+
+ throw new Error(error);
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "expected syntax error, got " + e);
+ }
+ }
+
+ helper(Function);
+ helper(eval);
+}
+
+checkSyntaxError("function f() { 'use strict'; delete escape; } f();");
+checkSyntaxError("function f() { 'use strict'; delete escape; }");
+checkSyntaxError("function f() { 'use strict'; delete (escape); } f();");
+checkSyntaxError("function f() { 'use strict'; delete (escape); }");
+checkSyntaxError("function f() { 'use strict'; delete ((escape)); } f();");
+checkSyntaxError("function f() { 'use strict'; delete ((escape)); }");
+
+// Meanwhile, non-strict all of these should work
+
+function checkFine(code)
+{
+ Function(code);
+ (1, eval)(code); // indirect, to be consistent w/above
+}
+
+checkFine("function f() { delete escape; } f();");
+checkFine("function f() { delete escape; }");
+checkFine("function f() { delete (escape); } f();");
+checkFine("function f() { delete (escape); }");
+checkFine("function f() { delete ((escape)); } f();");
+checkFine("function f() { delete ((escape)); }");
+
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Expressions/destructuring-array-default-call.js b/js/src/tests/ecma_6/Expressions/destructuring-array-default-call.js
new file mode 100644
index 000000000..a3a362205
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/destructuring-array-default-call.js
@@ -0,0 +1,10 @@
+var BUGNUMBER = 1184922;
+var summary = "Array destructuring with various default values in various context - call/new expression";
+
+print(BUGNUMBER + ": " + summary);
+
+testDestructuringArrayDefault("func()");
+testDestructuringArrayDefault("new func()");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Expressions/destructuring-array-default-class.js b/js/src/tests/ecma_6/Expressions/destructuring-array-default-class.js
new file mode 100644
index 000000000..808308928
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/destructuring-array-default-class.js
@@ -0,0 +1,72 @@
+var BUGNUMBER = 1184922;
+var summary = "Array destructuring with various default values in various context - class expression and super/new.target";
+
+print(BUGNUMBER + ": " + summary);
+
+testDestructuringArrayDefault(`class E {
+ constructor() {}
+ method() {}
+ get v() {}
+ set v(_) {}
+ static method() {}
+ static get v() {}
+ static set v(_) {}
+}`);
+
+testDestructuringArrayDefault(`class E extends C {
+ constructor() {}
+ method() {}
+ get v() {}
+ set v(_) {}
+ static method() {}
+ static get v() {}
+ static set v(_) {}
+}`);
+
+var opt = {
+ no_plain: true,
+ no_func: true,
+ no_func_arg: true,
+ no_gen: true,
+ no_gen_arg: true,
+ no_ctor: true,
+ no_method: true,
+ no_pre_super: true,
+ no_comp: true,
+
+ no_derived_ctor: false,
+};
+testDestructuringArrayDefault("super()", opt);
+
+opt = {
+ no_plain: true,
+ no_func: true,
+ no_func_arg: true,
+ no_gen: true,
+ no_gen_arg: true,
+ no_ctor: true,
+ no_comp: true,
+
+ no_derived_ctor: false,
+ no_method: false,
+ no_pre_super: false,
+};
+testDestructuringArrayDefault("super.foo()", opt);
+
+opt = {
+ no_plain: true,
+
+ no_func: false,
+ no_func_arg: false,
+ no_gen: false,
+ no_gen_arg: false,
+ no_ctor: false,
+ no_derived_ctor: false,
+ no_method: false,
+ no_pre_super: false,
+ no_comp: false,
+};
+testDestructuringArrayDefault("new.target", opt);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Expressions/destructuring-array-default-function-nested.js b/js/src/tests/ecma_6/Expressions/destructuring-array-default-function-nested.js
new file mode 100644
index 000000000..99260b989
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/destructuring-array-default-function-nested.js
@@ -0,0 +1,11 @@
+var BUGNUMBER = 1184922;
+var summary = "Array destructuring with various default values in various context - function expression with nested objects";
+
+print(BUGNUMBER + ": " + summary);
+
+testDestructuringArrayDefault("function f() { return { f() {}, *g() {}, r: /a/ }; }");
+testDestructuringArrayDefault("function* g() { return { f() {}, *g() {}, r: /b/ }; }");
+testDestructuringArrayDefault("() => { return { f() {}, *g() {}, r: /c/ }; }");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Expressions/destructuring-array-default-function.js b/js/src/tests/ecma_6/Expressions/destructuring-array-default-function.js
new file mode 100644
index 000000000..5d2ffef18
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/destructuring-array-default-function.js
@@ -0,0 +1,11 @@
+var BUGNUMBER = 1184922;
+var summary = "Array destructuring with various default values in various context - function expression";
+
+print(BUGNUMBER + ": " + summary);
+
+testDestructuringArrayDefault("function f() {}");
+testDestructuringArrayDefault("function* g() {}");
+testDestructuringArrayDefault("() => {}");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Expressions/destructuring-array-default-simple.js b/js/src/tests/ecma_6/Expressions/destructuring-array-default-simple.js
new file mode 100644
index 000000000..50c6c37f3
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/destructuring-array-default-simple.js
@@ -0,0 +1,16 @@
+var BUGNUMBER = 1184922;
+var summary = "Array destructuring with various default values in various context - simple literal";
+
+print(BUGNUMBER + ": " + summary);
+
+testDestructuringArrayDefault("'foo'");
+testDestructuringArrayDefault("`foo`");
+testDestructuringArrayDefault("func`foo`");
+
+testDestructuringArrayDefault("/foo/");
+
+testDestructuringArrayDefault("{}");
+testDestructuringArrayDefault("[]");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Expressions/destructuring-array-default-yield.js b/js/src/tests/ecma_6/Expressions/destructuring-array-default-yield.js
new file mode 100644
index 000000000..57ff9e947
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/destructuring-array-default-yield.js
@@ -0,0 +1,22 @@
+var BUGNUMBER = 1184922;
+var summary = "Array destructuring with various default values in various context - yield expression";
+
+print(BUGNUMBER + ": " + summary);
+
+var opt = {
+ no_plain: true,
+ no_func: true,
+ no_func_arg: true,
+ no_gen_arg: true,
+ no_ctor: true,
+ no_derived_ctor: true,
+ no_method: true,
+ no_pre_super: true,
+ no_comp: true,
+
+ no_gen: false,
+};
+testDestructuringArrayDefault("yield 1", opt);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Expressions/destructuring-array-done.js b/js/src/tests/ecma_6/Expressions/destructuring-array-done.js
new file mode 100644
index 000000000..f2c7e9410
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/destructuring-array-done.js
@@ -0,0 +1,319 @@
+var BUGNUMBER = 1184922;
+var summary = "iterator.next() should not be called when after iterator completes";
+
+print(BUGNUMBER + ": " + summary);
+
+var log;
+function reset() {
+ log = "";
+}
+var obj = new Proxy({}, {
+ set(that, name, value) {
+ var v;
+ if (value instanceof Function || value instanceof RegExp)
+ v = value.toString();
+ else
+ v = JSON.stringify(value);
+ log += "set:" + name + "=" + v + ",";
+ }
+});
+function createIterable(n) {
+ return {
+ i: 0,
+ [Symbol.iterator]() {
+ return this;
+ },
+ next() {
+ log += "next,";
+ this.i++;
+ if (this.i <= n)
+ return {value: this.i, done: false};
+ return {value: 0, done: true};
+ }
+ };
+}
+
+// Simple pattern.
+
+reset();
+[obj.a, obj.b, obj.c] = createIterable(0);
+assertEq(log,
+ "next," +
+ "set:a=undefined," +
+ "set:b=undefined," +
+ "set:c=undefined,");
+
+reset();
+[obj.a, obj.b, obj.c] = createIterable(1);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "set:b=undefined," +
+ "set:c=undefined,");
+
+reset();
+[obj.a, obj.b, obj.c] = createIterable(2);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "set:b=2," +
+ "next," +
+ "set:c=undefined,");
+
+reset();
+[obj.a, obj.b, obj.c] = createIterable(3);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "set:b=2," +
+ "next," +
+ "set:c=3,");
+
+// Elision.
+
+reset();
+[obj.a, , obj.b, , , obj.c, ,] = createIterable(0);
+assertEq(log,
+ "next," +
+ "set:a=undefined," +
+ "set:b=undefined," +
+ "set:c=undefined,");
+
+reset();
+[obj.a, , obj.b, , , obj.c, ,] = createIterable(1);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "set:b=undefined," +
+ "set:c=undefined,");
+
+reset();
+[obj.a, , obj.b, , , obj.c, ,] = createIterable(2);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "next," +
+ "set:b=undefined," +
+ "set:c=undefined,");
+
+reset();
+[obj.a, , obj.b, , , obj.c, ,] = createIterable(3);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "next," +
+ "set:b=3," +
+ "next," +
+ "set:c=undefined,");
+
+reset();
+[obj.a, , obj.b, , , obj.c, ,] = createIterable(4);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "next," +
+ "set:b=3," +
+ "next," +
+ "next," +
+ "set:c=undefined,");
+
+reset();
+[obj.a, , obj.b, , , obj.c, ,] = createIterable(5);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "next," +
+ "set:b=3," +
+ "next," +
+ "next," +
+ "next," +
+ "set:c=undefined,");
+
+reset();
+[obj.a, , obj.b, , , obj.c, ,] = createIterable(6);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "next," +
+ "set:b=3," +
+ "next," +
+ "next," +
+ "next," +
+ "set:c=6," +
+ "next,");
+
+reset();
+[obj.a, , obj.b, , , obj.c, ,] = createIterable(7);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "next," +
+ "set:b=3," +
+ "next," +
+ "next," +
+ "next," +
+ "set:c=6," +
+ "next,");
+
+// Rest.
+
+reset();
+[...obj.r] = createIterable(0);
+assertEq(log,
+ "next," +
+ "set:r=[],");
+
+reset();
+[...obj.r] = createIterable(1);
+assertEq(log,
+ "next," +
+ "next," +
+ "set:r=[1],");
+
+reset();
+[obj.a, ...obj.r] = createIterable(0);
+assertEq(log,
+ "next," +
+ "set:a=undefined," +
+ "set:r=[],");
+
+reset();
+[obj.a, ...obj.r] = createIterable(1);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "set:r=[],");
+
+reset();
+[obj.a, ...obj.r] = createIterable(2);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "next," +
+ "set:r=[2],");
+
+reset();
+[obj.a, obj.b, ...obj.r] = createIterable(0);
+assertEq(log,
+ "next," +
+ "set:a=undefined," +
+ "set:b=undefined," +
+ "set:r=[],");
+
+reset();
+[obj.a, obj.b, ...obj.r] = createIterable(1);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "set:b=undefined," +
+ "set:r=[],");
+
+reset();
+[obj.a, obj.b, ...obj.r] = createIterable(2);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "set:b=2," +
+ "next," +
+ "set:r=[],");
+
+reset();
+[obj.a, obj.b, ...obj.r] = createIterable(3);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "set:b=2," +
+ "next," +
+ "next," +
+ "set:r=[3],");
+
+// Rest and elision.
+
+reset();
+[, ...obj.r] = createIterable(0);
+assertEq(log,
+ "next," +
+ "set:r=[],");
+
+reset();
+[, ...obj.r] = createIterable(1);
+assertEq(log,
+ "next," +
+ "next," +
+ "set:r=[],");
+
+reset();
+[, ...obj.r] = createIterable(2);
+assertEq(log,
+ "next," +
+ "next," +
+ "next," +
+ "set:r=[2],");
+
+reset();
+[obj.a, obj.b, , ...obj.r] = createIterable(0);
+assertEq(log,
+ "next," +
+ "set:a=undefined," +
+ "set:b=undefined," +
+ "set:r=[],");
+
+reset();
+[obj.a, obj.b, , ...obj.r] = createIterable(1);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "set:b=undefined," +
+ "set:r=[],");
+
+reset();
+[obj.a, obj.b, , ...obj.r] = createIterable(2);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "set:b=2," +
+ "next," +
+ "set:r=[],");
+
+reset();
+[obj.a, obj.b, , ...obj.r] = createIterable(3);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "set:b=2," +
+ "next," +
+ "next," +
+ "set:r=[],");
+
+reset();
+[obj.a, obj.b, , ...obj.r] = createIterable(4);
+assertEq(log,
+ "next," +
+ "set:a=1," +
+ "next," +
+ "set:b=2," +
+ "next," +
+ "next," +
+ "next," +
+ "set:r=[4],");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Expressions/destructuring-array-lexical.js b/js/src/tests/ecma_6/Expressions/destructuring-array-lexical.js
new file mode 100644
index 000000000..133858a09
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/destructuring-array-lexical.js
@@ -0,0 +1,12 @@
+var BUGNUMBER = 1184922;
+var summary = "Array destructuring with accessing uninitialized lexical binding.";
+
+print(BUGNUMBER + ": " + summary);
+
+assertThrowsInstanceOf(() => { let y = [y] = []; },
+ ReferenceError);
+assertThrowsInstanceOf(() => { let y = [y] = [,]; },
+ ReferenceError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Expressions/destructuring-pattern-parenthesized.js b/js/src/tests/ecma_6/Expressions/destructuring-pattern-parenthesized.js
new file mode 100644
index 000000000..ca495c886
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/destructuring-pattern-parenthesized.js
@@ -0,0 +1,140 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1146136;
+var summary =
+ 'Parenthesized "destructuring patterns" are not usable as destructuring ' +
+ 'patterns';
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// Don't pollute the top-level script with eval references.
+var savedEval = this[String.fromCharCode(101, 118, 97, 108)];
+
+function checkError(code, nonstrictErr, strictErr)
+{
+ function helper(exec, prefix, err)
+ {
+ var fullCode = prefix + code;
+ try
+ {
+ var f = exec(fullCode);
+
+ var error =
+ "no early error, parsed code <" + fullCode + "> using " + exec.name;
+ if (typeof f === "function")
+ {
+ try
+ {
+ f();
+ error += ", and the function can be called without error";
+ }
+ catch (e)
+ {
+ error +=", and calling the function throws " + e;
+ }
+ }
+
+ throw new Error(error);
+ }
+ catch (e)
+ {
+ assertEq(e instanceof err, true,
+ "expected " + err.name + ", got " + e + " " +
+ "for code <" + fullCode + "> when parsed using " + exec.name);
+ }
+ }
+
+ helper(Function, "", nonstrictErr);
+ helper(Function, "'use strict'; ", strictErr);
+ helper(savedEval, "", nonstrictErr);
+ helper(savedEval, "'use strict'; ", strictErr);
+}
+
+// Parenthesized destructuring patterns don't trigger grammar refinement, so we
+// get the currently-usual ReferenceError for an invalid assignment target, per
+// 12.14.1 second bullet.
+checkError("var a, b; ([a, b]) = [1, 2];", ReferenceError, ReferenceError);
+checkError("var a, b; ({a, b}) = { a: 1, b: 2 };", ReferenceError, ReferenceError);
+
+// *Nested* parenthesized destructuring patterns, on the other hand, do trigger
+// grammar refinement. But subtargets in a destructuring pattern must be
+// either object/array literals that match the destructuring pattern refinement
+// *or* valid simple assignment targets (or such things with a default, with the
+// entire subtarget unparenthesized: |a = 3| is fine, |(a) = 3| is fine for
+// destructuring in an expression, |(a = 3)| is forbidden). Parenthesized
+// object/array patterns are neither. And so 12.14.5.1 third bullet requires an
+// early SyntaxError.
+checkError("var a, b; ({ a: ({ b: b }) } = { a: { b: 42 } });", SyntaxError, SyntaxError);
+checkError("var a, b; ({ a: { b: (b = 7) } } = { a: {} });", SyntaxError, SyntaxError);
+checkError("var a, b; ({ a: ([b]) } = { a: [42] });", SyntaxError, SyntaxError);
+checkError("var a, b; [(a = 5)] = [1];", SyntaxError, SyntaxError);
+checkError("var a, b; ({ a: (b = 7)} = { b: 1 });", SyntaxError, SyntaxError);
+
+Function("var a, b; [(a), b] = [1, 2];")();
+Function("var a, b; [(a) = 5, b] = [1, 2];")();
+Function("var a, b; [(arguments), b] = [1, 2];")();
+Function("var a, b; [(arguments) = 5, b] = [1, 2];")();
+Function("var a, b; [(eval), b] = [1, 2];")();
+Function("var a, b; [(eval) = 5, b] = [1, 2];")();
+
+var repair = {}, demolition = {};
+
+Function("var a, b; [(repair.man), b] = [1, 2];")();
+Function("var a, b; [(demolition['man']) = 'motel', b] = [1, 2];")();
+Function("var a, b; [(demolition['man' + {}]) = 'motel', b] = [1, 2];")(); // evade constant-folding
+
+function classesEnabled()
+{
+ try
+ {
+ new Function("class B { constructor() { } }; class D extends B { constructor() { super(); } }");
+ return true;
+ }
+ catch (e if e instanceof SyntaxError)
+ {
+ return false;
+ }
+}
+
+if (classesEnabled())
+{
+ Function("var a, b; var obj = { x() { [(super.man), b] = [1, 2]; } };")();
+ Function("var a, b; var obj = { x() { [(super[8]) = 'motel', b] = [1, 2]; } };")();
+ Function("var a, b; var obj = { x() { [(super[8 + {}]) = 'motel', b] = [1, 2]; } };")(); // evade constant-folding
+}
+
+// As noted above, when the assignment element has an initializer, the
+// assignment element must not be parenthesized.
+checkError("var a, b; [(repair.man = 17)] = [1];", SyntaxError, SyntaxError);
+checkError("var a, b; [(demolition['man'] = 'motel')] = [1, 2];", SyntaxError, SyntaxError);
+checkError("var a, b; [(demolition['man' + {}] = 'motel')] = [1];", SyntaxError, SyntaxError); // evade constant-folding
+if (classesEnabled())
+{
+ checkError("var a, b; var obj = { x() { [(super.man = 5)] = [1]; } };", SyntaxError, SyntaxError);
+ checkError("var a, b; var obj = { x() { [(super[8] = 'motel')] = [1]; } };", SyntaxError, SyntaxError);
+ checkError("var a, b; var obj = { x() { [(super[8 + {}] = 'motel')] = [1]; } };", SyntaxError, SyntaxError); // evade constant-folding
+}
+
+// In strict mode, assignment to funcall *immediately* triggers ReferenceError
+// before we can recognize this doesn't even match the destructuring grammar to
+// begin with. Bleh. :-( Probably they should all be made SyntaxError in the
+// specs; see <https://bugs.ecmascript.org/show_bug.cgi?id=4375>.
+checkError("var a, b; [f() = 'ohai', b] = [1, 2];", SyntaxError, ReferenceError);
+checkError("var a, b; [(f()) = 'kthxbai', b] = [1, 2];", SyntaxError, ReferenceError);
+
+Function("var a, b; ({ a: (a), b} = { a: 1, b: 2 });")();
+Function("var a, b; ({ a: (a) = 5, b} = { a: 1, b: 2 });")();
+
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Expressions/object-literal-__proto__.js b/js/src/tests/ecma_6/Expressions/object-literal-__proto__.js
new file mode 100644
index 000000000..531ef7fc5
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/object-literal-__proto__.js
@@ -0,0 +1,267 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1061853;
+var summary =
+ "__proto__ in object literals in non-__proto__:v contexts doesn't modify " +
+ "[[Prototype]]";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function hasOwn(obj, prop)
+{
+ return Object.getOwnPropertyDescriptor(obj, prop) !== undefined;
+}
+
+var objectStart = "{ ";
+var objectEnd = " }";
+
+var members =
+ {
+ nullProto: "__proto__: null",
+ functionProtoProto: "__proto__: Function.prototype",
+ computedNull: "['__proto__']: null",
+ method: "__proto__() {}",
+ computedMethod: "['__proto__']() {}",
+ generatorMethod: "*__proto__() {}",
+ computedGenerator: "*['__proto__']() {}",
+ shorthand: "__proto__",
+ getter: "get __proto__() { return 42; }",
+ getterComputed: "get ['__proto__']() { return 42; }",
+ setter: "set __proto__(v) { }",
+ setterComputed: "set ['__proto__'](v) { }",
+ };
+
+function isProtoMutation(key)
+{
+ return key === "nullProto" || key === "functionProtoProto";
+}
+
+function isGetter(key)
+{
+ return key === "getter" || key === "getterComputed";
+}
+
+function isSetter(key)
+{
+ return key === "setter" || key === "setterComputed";
+}
+
+function isData(key)
+{
+ return !isProtoMutation(key) && !isGetter(key) && !isSetter(key);
+}
+
+var __proto__ = "string value";
+
+function typeOfProto(key)
+{
+ if (key === "computedNull")
+ return "object";
+ if (key === "method" || key === "computedMethod" ||
+ key === "computedGenerator" || key === "generatorMethod")
+ {
+ return "function";
+ }
+ if (key === "getter" || key === "getterComputed")
+ return "number";
+ assertEq(key, "shorthand", "bug in test!");
+ return "string";
+}
+
+for (var first in members)
+{
+ var fcode = "return " + objectStart + members[first] + objectEnd;
+ var f = Function(fcode);
+ var oneProp = f();
+
+ if (first === "nullProto")
+ {
+ assertEq(Object.getPrototypeOf(oneProp), null);
+ assertEq(hasOwn(oneProp, "__proto__"), false);
+ }
+ else if (first === "functionProtoProto")
+ {
+ assertEq(Object.getPrototypeOf(oneProp), Function.prototype);
+ assertEq(hasOwn(oneProp, "__proto__"), false);
+ }
+ else if (isSetter(first))
+ {
+ assertEq(Object.getPrototypeOf(oneProp), Object.prototype);
+ assertEq(hasOwn(oneProp, "__proto__"), true);
+ assertEq(typeof Object.getOwnPropertyDescriptor(oneProp, "__proto__").set,
+ "function");
+ }
+ else
+ {
+ assertEq(Object.getPrototypeOf(oneProp), Object.prototype);
+ assertEq(hasOwn(oneProp, "__proto__"), true);
+ assertEq(typeof oneProp.__proto__, typeOfProto(first));
+ }
+
+ for (var second in members)
+ {
+ try
+ {
+ var gcode = "return " + objectStart + members[first] + ", " +
+ members[second] + objectEnd;
+ var g = Function(gcode);
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "__proto__ member conflicts should be syntax errors, got " + e);
+ assertEq(+(first === "nullProto" || first === "functionProtoProto") +
+ +(second === "nullProto" || second === "functionProtoProto") > 1,
+ true,
+ "unexpected conflict between members: " + first + ", " + second);
+ continue;
+ }
+
+ var twoProps = g();
+
+ if (first === "nullProto" || second === "nullProto")
+ assertEq(Object.getPrototypeOf(twoProps), null);
+ else if (first === "functionProtoProto" || second === "functionProtoProto")
+ assertEq(Object.getPrototypeOf(twoProps), Function.prototype);
+ else
+ assertEq(Object.getPrototypeOf(twoProps), Object.prototype);
+
+ if (isSetter(second))
+ {
+ assertEq(hasOwn(twoProps, "__proto__"), true);
+ assertEq(typeof Object.getOwnPropertyDescriptor(twoProps, "__proto__").get,
+ isGetter(first) ? "function" : "undefined");
+ }
+ else if (!isProtoMutation(second))
+ {
+ assertEq(hasOwn(twoProps, "__proto__"), true);
+ assertEq(typeof twoProps.__proto__, typeOfProto(second));
+ if (isGetter(second))
+ {
+ assertEq(typeof Object.getOwnPropertyDescriptor(twoProps, "__proto__").get,
+ "function");
+ assertEq(typeof Object.getOwnPropertyDescriptor(twoProps, "__proto__").set,
+ isSetter(first) ? "function" : "undefined");
+ }
+ }
+ else if (isSetter(first))
+ {
+ assertEq(hasOwn(twoProps, "__proto__"), true);
+ assertEq(typeof Object.getOwnPropertyDescriptor(twoProps, "__proto__").set,
+ "function");
+ assertEq(typeof Object.getOwnPropertyDescriptor(twoProps, "__proto__").get,
+ "undefined");
+ }
+ else if (!isProtoMutation(first))
+ {
+ assertEq(hasOwn(twoProps, "__proto__"), true);
+ assertEq(typeof twoProps.__proto__, typeOfProto(first));
+ }
+ else
+ {
+ assertEq(true, false, "should be unreachable: " + first + ", " + second);
+ }
+
+ for (var third in members)
+ {
+ try
+ {
+ var hcode = "return " + objectStart + members[first] + ", " +
+ members[second] + ", " +
+ members[third] + objectEnd;
+ var h = Function(hcode);
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "__proto__ member conflicts should be syntax errors, got " + e);
+ assertEq(+(first === "nullProto" || first === "functionProtoProto") +
+ +(second === "nullProto" || second === "functionProtoProto") +
+ +(third === "nullProto" || third === "functionProtoProto") > 1,
+ true,
+ "unexpected conflict among members: " +
+ first + ", " + second + ", " + third);
+ continue;
+ }
+
+ var threeProps = h();
+
+ if (first === "nullProto" || second === "nullProto" ||
+ third === "nullProto")
+ {
+ assertEq(Object.getPrototypeOf(threeProps), null);
+ }
+ else if (first === "functionProtoProto" ||
+ second === "functionProtoProto" ||
+ third === "functionProtoProto")
+ {
+ assertEq(Object.getPrototypeOf(threeProps), Function.prototype);
+ }
+ else
+ {
+ assertEq(Object.getPrototypeOf(threeProps), Object.prototype);
+ }
+
+ if (isSetter(third))
+ {
+ assertEq(hasOwn(threeProps, "__proto__"), true);
+ assertEq(typeof Object.getOwnPropertyDescriptor(threeProps, "__proto__").get,
+ isGetter(second) || (!isData(second) && isGetter(first))
+ ? "function"
+ : "undefined",
+ "\n" + hcode);
+ }
+ else if (!isProtoMutation(third))
+ {
+ assertEq(hasOwn(threeProps, "__proto__"), true);
+ assertEq(typeof threeProps.__proto__, typeOfProto(third), first + ", " + second + ", " + third);
+ if (isGetter(third))
+ {
+ var desc = Object.getOwnPropertyDescriptor(threeProps, "__proto__");
+ assertEq(typeof desc.get, "function");
+ assertEq(typeof desc.set,
+ isSetter(second) || (!isData(second) && isSetter(first))
+ ? "function"
+ : "undefined");
+ }
+ }
+ else if (isSetter(second))
+ {
+ assertEq(hasOwn(threeProps, "__proto__"), true);
+ assertEq(typeof Object.getOwnPropertyDescriptor(threeProps, "__proto__").get,
+ isGetter(first) ? "function" : "undefined");
+ }
+ else if (!isProtoMutation(second))
+ {
+ assertEq(hasOwn(threeProps, "__proto__"), true);
+ assertEq(typeof threeProps.__proto__, typeOfProto(second));
+ if (isGetter(second))
+ {
+ var desc = Object.getOwnPropertyDescriptor(threeProps, "__proto__");
+ assertEq(typeof desc.get, "function");
+ assertEq(typeof desc.set,
+ isSetter(first) ? "function" : "undefined");
+ }
+ }
+ else
+ {
+ assertEq(true, false,
+ "should be unreachable: " +
+ first + ", " + second + ", " + third);
+ }
+ }
+ }
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Expressions/object-literal-computed-property-evaluation.js b/js/src/tests/ecma_6/Expressions/object-literal-computed-property-evaluation.js
new file mode 100644
index 000000000..d26783d35
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/object-literal-computed-property-evaluation.js
@@ -0,0 +1,38 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1199546;
+var summary =
+ "Convert computed property name expressions to property key before " +
+ "evaluating the property's value";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var s = "foo";
+var convertsToS = { toString() { return s; } };
+
+var o = {
+ [convertsToS]: // after ToPropertyKey becomes "foo"
+ (function() {
+ s = 'bar';
+ return 'abc'; // so we have "foo": "bar" for the first property
+ })(),
+
+ [convertsToS]: // |s| was set above to "bar", so after ToPropertyKey, "bar"
+ 'efg' // so we have "bar": "efg" for the second property
+};
+
+assertEq(o.foo, "abc");
+assertEq(o.bar, "efg");
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Expressions/octal-literals.js b/js/src/tests/ecma_6/Expressions/octal-literals.js
new file mode 100644
index 000000000..abeef8736
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/octal-literals.js
@@ -0,0 +1,103 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 894026;
+var summary = "Implement ES6 octal literals";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var chars = ['o', 'O'];
+
+for (var i = 0; i < 8; i++)
+{
+ if (i === 8)
+ {
+ chars.forEach(function(v)
+ {
+ try
+ {
+ eval('0' + v + i);
+ throw "didn't throw";
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "no syntax error evaluating 0" + v + i + ", " +
+ "got " + e);
+ }
+ });
+ continue;
+ }
+
+ for (var j = 0; j < 8; j++)
+ {
+ if (j === 8)
+ {
+ chars.forEach(function(v)
+ {
+ try
+ {
+ eval('0' + v + i + j);
+ throw "didn't throw";
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "no syntax error evaluating 0" + v + i + j + ", " +
+ "got " + e);
+ }
+ });
+ continue;
+ }
+
+ for (var k = 0; k < 8; k++)
+ {
+ if (k === 8)
+ {
+ chars.forEach(function(v)
+ {
+ try
+ {
+ eval('0' + v + i + j + k);
+ throw "didn't throw";
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "no syntax error evaluating 0" + v + i + j + k + ", " +
+ "got " + e);
+ }
+ });
+ continue;
+ }
+
+ chars.forEach(function(v)
+ {
+ assertEq(eval('0' + v + i + j + k), i * 64 + j * 8 + k);
+ });
+ }
+ }
+}
+
+// Off-by-one check: '/' immediately precedes '0'.
+assertEq(0o110/2, 36);
+assertEq(0O644/2, 210);
+
+function strict()
+{
+ "use strict";
+ return 0o755;
+}
+assertEq(strict(), 7 * 64 + 5 * 8 + 5);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Expressions/shell.js b/js/src/tests/ecma_6/Expressions/shell.js
new file mode 100644
index 000000000..0a0a24656
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/shell.js
@@ -0,0 +1,186 @@
+(function(global) {
+ function func() {
+ }
+ class C {
+ foo() {
+ }
+ static foo() {
+ }
+ }
+
+ function test_one(pattern, val, opt) {
+ var stmts = [];
+ var i = 0;
+ var c;
+
+ stmts.push(`var ${pattern} = ${val};`);
+ if (!opt.no_comp) {
+ stmts.push(`[for (x of [1]) ${pattern} = ${val}];`);
+ stmts.push(`[...(for (x of [1]) ${pattern} = ${val})];`);
+ }
+
+ for (var stmt of stmts) {
+ if (!opt.no_plain) {
+ eval(`
+${stmt}
+`);
+ }
+
+ if (!opt.no_func) {
+ eval(`
+function f${i}() {
+ ${stmt}
+}
+f${i}();
+`);
+ i++;
+
+ eval(`
+var f${i} = function foo() {
+ ${stmt}
+};
+f${i}();
+`);
+ i++;
+
+ eval(`
+var f${i} = () => {
+ ${stmt}
+};
+f${i}();
+`);
+ i++;
+ }
+
+ if (!opt.no_gen) {
+ eval(`
+function* g${i}() {
+ ${stmt}
+}
+[...g${i}()];
+`);
+ i++;
+
+ eval(`
+var g${i} = function* foo() {
+ ${stmt}
+};
+[...g${i}()];
+`);
+ i++;
+ }
+
+ if (!opt.no_ctor) {
+ eval(`
+class D${i} {
+ constructor() {
+ ${stmt}
+ }
+}
+new D${i}();
+`);
+ i++;
+ }
+
+ if (!opt.no_derived_ctor) {
+ if (opt.no_pre_super) {
+ eval(`
+class D${i} extends C {
+ constructor() {
+ ${stmt}
+ try { super(); } catch (e) {}
+ }
+}
+new D${i}();
+`);
+ i++;
+ } else {
+ eval(`
+class D${i} extends C {
+ constructor() {
+ super();
+ ${stmt}
+ }
+}
+new D${i}();
+`);
+ i++;
+ }
+ }
+
+ if (!opt.no_method) {
+ eval(`
+class D${i} extends C {
+ method() {
+ ${stmt}
+ }
+ static staticMethod() {
+ ${stmt}
+ }
+}
+new D${i}().method();
+D${i}.staticMethod();
+`);
+ i++;
+ }
+ }
+
+ if (!opt.no_func_arg) {
+ eval(`
+function f${i}(${pattern}) {}
+f${i}(${val});
+`);
+ i++;
+
+ eval(`
+var f${i} = function foo(${pattern}) {};
+f${i}(${val});
+`);
+ i++;
+
+ eval(`
+var f${i} = (${pattern}) => {};
+f${i}(${val});
+`);
+ i++;
+ }
+
+ if (!opt.no_gen_arg) {
+ eval(`
+function* g${i}(${pattern}) {}
+[...g${i}(${val})];
+`);
+ i++;
+
+ eval(`
+var g${i} = function* foo(${pattern}) {};
+[...g${i}(${val})];
+`);
+ i++;
+ }
+ }
+
+ function test(expr, opt={}) {
+ var pattern = `[a=${expr}, ...c]`;
+ test_one(pattern, "[]", opt);
+ test_one(pattern, "[1]", opt);
+
+ pattern = `[,a=${expr}]`;
+ test_one(pattern, "[]", opt);
+ test_one(pattern, "[1]", opt);
+ test_one(pattern, "[1, 2]", opt);
+
+ pattern = `[{x: [a=${expr}]}]`;
+ test_one(pattern, "[{x: [1]}]", opt);
+
+ pattern = `[x=[a=${expr}]=[]]`;
+ test_one(pattern, "[]", opt);
+ test_one(pattern, "[1]", opt);
+
+ pattern = `[x=[a=${expr}]=[1]]`;
+ test_one(pattern, "[]", opt);
+ test_one(pattern, "[1]", opt);
+ }
+
+ global.testDestructuringArrayDefault = test;
+})(this);
diff --git a/js/src/tests/ecma_6/Expressions/tagged-template-constant-folding.js b/js/src/tests/ecma_6/Expressions/tagged-template-constant-folding.js
new file mode 100644
index 000000000..6041cbc16
--- /dev/null
+++ b/js/src/tests/ecma_6/Expressions/tagged-template-constant-folding.js
@@ -0,0 +1,28 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1182373;
+var summary =
+ "Don't let constant-folding in the MemberExpression part of a tagged " +
+ "template cause an incorrect |this| be passed to the callee";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var prop = "global";
+
+var obj = { prop: "obj", f: function() { return this.prop; } };
+
+assertEq(obj.f``, "obj");
+assertEq((true ? obj.f : null)``, "global");
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Function/arguments-extra-property.js b/js/src/tests/ecma_6/Function/arguments-extra-property.js
new file mode 100644
index 000000000..017734382
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/arguments-extra-property.js
@@ -0,0 +1,33 @@
+var BUGNUMBER = 1263811;
+var summary = "GetElem for modified arguments shouldn't be optimized to get original argument.";
+
+print(BUGNUMBER + ": " + summary);
+
+function testModifyFirst() {
+ function f() {
+ Object.defineProperty(arguments, 1, { value: 30 });
+ assertEq(arguments[1], 30);
+ }
+ for (let i = 0; i < 10; i++)
+ f(10, 20);
+}
+testModifyFirst();
+
+function testModifyLater() {
+ function f() {
+ var ans = 20;
+ for (let i = 0; i < 10; i++) {
+ if (i == 5) {
+ Object.defineProperty(arguments, 1, { value: 30 });
+ ans = 30;
+ }
+ assertEq(arguments[1], ans);
+ }
+ }
+ for (let i = 0; i < 10; i++)
+ f(10, 20);
+}
+testModifyLater();
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Function/arguments-iterator.js b/js/src/tests/ecma_6/Function/arguments-iterator.js
new file mode 100644
index 000000000..5610b8a24
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/arguments-iterator.js
@@ -0,0 +1,167 @@
+var BUGNUMBER = 992617;
+var summary = "Implement arguments[@@iterator].";
+
+print(BUGNUMBER + ": " + summary);
+
+// MappedArgumentsObject
+let mapped = [
+ function(a, b, c) {
+ assertEq(Symbol.iterator in arguments, true);
+ delete arguments[Symbol.iterator];
+ assertEq(Symbol.iterator in arguments, false);
+ },
+ function(a, b, c) {
+ delete arguments[Symbol.iterator];
+ assertEq(Symbol.iterator in arguments, false);
+ },
+ function(a, b, c) {
+ arguments[Symbol.iterator] = 10;
+ delete arguments[Symbol.iterator];
+ assertEq(Symbol.iterator in arguments, false);
+ },
+ function(a, b, c) {
+ Object.defineProperty(arguments, Symbol.iterator, {
+ value: 10, writable: true, enumerable: true, configurable: true
+ });
+ delete arguments[Symbol.iterator];
+ assertEq(Symbol.iterator in arguments, false);
+ },
+ function(a, b, c) {
+ assertEq(arguments[Symbol.iterator], Array.prototype[Symbol.iterator]);
+ },
+ function(a, b, c) {
+ assertEq(arguments[Symbol.iterator].name, "values");
+ },
+ function(a, b, c) {
+ var desc = Object.getOwnPropertyDescriptor(arguments, Symbol.iterator);
+ assertEq("value" in desc, true);
+ assertEq(desc.value, Array.prototype[Symbol.iterator]);
+ assertEq(desc.writable, true);
+ assertEq(desc.enumerable, false);
+ assertEq(desc.configurable, true);
+ },
+ function(a, b, c) {
+ var iter = arguments[Symbol.iterator]();
+ assertDeepEq(iter.next(), { value: 10, done: false });
+ assertDeepEq(iter.next(), { value: 20, done: false });
+ assertDeepEq(iter.next(), { value: 30, done: false });
+ assertDeepEq(iter.next(), { value: undefined, done: true });
+ },
+ function(a, b, c) {
+ assertDeepEq([...arguments], [10, 20, 30]);
+ },
+ function(a, b, c) {
+ b = 40;
+ assertDeepEq([...arguments], [10, 40, 30]);
+ },
+ function(a, b, c) {
+ arguments.length = 4;
+ assertDeepEq([...arguments], [10, 20, 30, undefined]);
+ },
+ function(a, b, c) {
+ arguments[5] = 50;
+ assertDeepEq([...arguments], [10, 20, 30]);
+ },
+ function(a, b, c) {
+ arguments[Symbol.iterator] = function*() {
+ yield 40;
+ yield 50;
+ yield 60;
+ };
+ assertDeepEq([...arguments], [40, 50, 60]);
+ },
+];
+for (let f of mapped) {
+ f(10, 20, 30);
+}
+
+var g1 = newGlobal();
+assertEq(g1.eval(`
+function f(a, b, c) {
+ return arguments[Symbol.iterator].name;
+}
+f(1, 2, 3);
+`), "values");
+
+// UnmappedArgumentsObject
+let unmapped = [
+ function([a], b, c) {
+ assertEq(Symbol.iterator in arguments, true);
+ delete arguments[Symbol.iterator];
+ assertEq(Symbol.iterator in arguments, false);
+ },
+ function([a], b, c) {
+ delete arguments[Symbol.iterator];
+ assertEq(Symbol.iterator in arguments, false);
+ },
+ function([a], b, c) {
+ arguments[Symbol.iterator] = 10;
+ delete arguments[Symbol.iterator];
+ assertEq(Symbol.iterator in arguments, false);
+ },
+ function([a], b, c) {
+ Object.defineProperty(arguments, Symbol.iterator, {
+ value: 10, writable: true, enumerable: true, configurable: true
+ });
+ delete arguments[Symbol.iterator];
+ assertEq(Symbol.iterator in arguments, false);
+ },
+ function([a], b, c) {
+ assertEq(arguments[Symbol.iterator], Array.prototype[Symbol.iterator]);
+ },
+ function([a], b, c) {
+ assertEq(arguments[Symbol.iterator].name, "values");
+ },
+ function([a], b, c) {
+ var desc = Object.getOwnPropertyDescriptor(arguments, Symbol.iterator);
+ assertEq("value" in desc, true);
+ assertEq(desc.value, Array.prototype[Symbol.iterator]);
+ assertEq(desc.writable, true);
+ assertEq(desc.enumerable, false);
+ assertEq(desc.configurable, true);
+ },
+ function([a], b, c) {
+ var iter = arguments[Symbol.iterator]();
+ assertDeepEq(iter.next(), { value: [10], done: false });
+ assertDeepEq(iter.next(), { value: 20, done: false });
+ assertDeepEq(iter.next(), { value: 30, done: false });
+ assertDeepEq(iter.next(), { value: undefined, done: true });
+ },
+ function([a], b, c) {
+ assertDeepEq([...arguments], [[10], 20, 30]);
+ },
+ function([a], b, c) {
+ b = 40;
+ assertDeepEq([...arguments], [[10], 20, 30]);
+ },
+ function([a], b, c) {
+ arguments.length = 4;
+ assertDeepEq([...arguments], [[10], 20, 30, undefined]);
+ },
+ function([a], b, c) {
+ arguments[5] = 50;
+ assertDeepEq([...arguments], [[10], 20, 30]);
+ },
+ function([a], b, c) {
+ arguments[Symbol.iterator] = function*() {
+ yield 40;
+ yield 50;
+ yield 60;
+ };
+ assertDeepEq([...arguments], [40, 50, 60]);
+ },
+];
+for (let f of unmapped) {
+ f([10], 20, 30);
+}
+
+var g2 = newGlobal();
+assertEq(g2.eval(`
+function f([a], b, c) {
+ return arguments[Symbol.iterator].name;
+}
+f([1], 2, 3);
+`), "values");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Function/arguments-parameter-shadowing.js b/js/src/tests/ecma_6/Function/arguments-parameter-shadowing.js
new file mode 100644
index 000000000..bc2b43011
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/arguments-parameter-shadowing.js
@@ -0,0 +1,22 @@
+// Test that var declarations of arguments "shadows" the arguments binding
+// used in parameter expressions.
+
+function g8(h = () => arguments) {
+ var arguments = 0;
+ assertEq(arguments, 0);
+ assertEq(arguments === h(), false);
+}
+g8();
+
+function g9(h = () => arguments) {
+ var arguments;
+ assertEq(void 0 === arguments, false);
+ assertEq(h(), arguments);
+ arguments = 0;
+ assertEq(arguments, 0);
+ assertEq(arguments === h(), false);
+}
+g9();
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Function/arrow-has-duplicated.js b/js/src/tests/ecma_6/Function/arrow-has-duplicated.js
new file mode 100644
index 000000000..19096ebf8
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/arrow-has-duplicated.js
@@ -0,0 +1,15 @@
+// Make sure duplicated name is allowed in non-strict.
+function f0(a, a) {
+}
+
+// SyntaxError should be thrown if arrow function has duplicated name.
+assertThrowsInstanceOf(() => eval(`
+(a, a) => {
+};
+`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`
+(a, ...a) => {
+};
+`), SyntaxError);
+
+reportCompare(0, 0, 'ok');
diff --git a/js/src/tests/ecma_6/Function/bound-length-and-name.js b/js/src/tests/ecma_6/Function/bound-length-and-name.js
new file mode 100644
index 000000000..ef2f1ffbc
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/bound-length-and-name.js
@@ -0,0 +1,40 @@
+var proxy = new Proxy(function() {}, {
+ getOwnPropertyDescriptor(target, name) {
+ assertEq(name, "length");
+ return {value: 3, configurable: true};
+ },
+
+ get(target, name) {
+ if (name == "length")
+ return 3;
+ if (name == "name")
+ return "hello world";
+ assertEq(false, true);
+ }
+})
+
+var bound = Function.prototype.bind.call(proxy);
+assertEq(bound.name, "bound hello world");
+assertEq(bound.length, 3);
+
+var fun = function() {};
+Object.defineProperty(fun, "name", {value: 1337});
+Object.defineProperty(fun, "length", {value: "15"});
+bound = fun.bind();
+assertEq(bound.name, "bound ");
+assertEq(bound.length, 0);
+
+Object.defineProperty(fun, "length", {value: Number.MAX_SAFE_INTEGER});
+bound = fun.bind();
+assertEq(bound.length, Number.MAX_SAFE_INTEGER);
+
+Object.defineProperty(fun, "length", {value: -100});
+bound = fun.bind();
+assertEq(bound.length, 0);
+
+fun = function f(a, ...b) { };
+assertEq(fun.length, 1);
+bound = fun.bind();
+assertEq(bound.length, 1);
+
+reportCompare(0, 0, 'ok');
diff --git a/js/src/tests/ecma_6/Function/bound-non-constructable.js b/js/src/tests/ecma_6/Function/bound-non-constructable.js
new file mode 100644
index 000000000..cee1dd580
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/bound-non-constructable.js
@@ -0,0 +1,17 @@
+var objects = [
+ Math.sin.bind(null),
+ new Proxy(Math.sin.bind(null), {}),
+ Function.prototype.bind.call(new Proxy(Math.sin, {}))
+]
+
+for (var obj of objects) {
+ // Target is not constructable, so a new array should be created internally.
+ assertDeepEq(Array.from.call(obj, [1, 2, 3]), [1, 2, 3]);
+ assertDeepEq(Array.of.call(obj, 1, 2, 3), [1, 2, 3]);
+
+ // Make sure they are callable, but not constructable.
+ obj();
+ assertThrowsInstanceOf(() => new obj, TypeError);
+}
+
+reportCompare(0, 0, 'ok');
diff --git a/js/src/tests/ecma_6/Function/bound-prototype.js b/js/src/tests/ecma_6/Function/bound-prototype.js
new file mode 100644
index 000000000..8b0f295a5
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/bound-prototype.js
@@ -0,0 +1,37 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+function Bound(fn) {
+ return Function.prototype.bind.call(fn);
+}
+
+var fnDefaultPrototype = function(){};
+assertEq(Object.getPrototypeOf(Bound(fnDefaultPrototype)), Function.prototype);
+
+var fnGeneratorPrototype = function*(){};
+assertEq(Object.getPrototypeOf(Bound(fnGeneratorPrototype)), function*(){}.constructor.prototype);
+
+var fnCustomPrototype = Object.setPrototypeOf(function(){}, Array.prototype);
+assertEq(Object.getPrototypeOf(Bound(fnCustomPrototype)), Array.prototype);
+
+var fnNullPrototype = Object.setPrototypeOf(function(){}, null);
+assertEq(Object.getPrototypeOf(Bound(fnNullPrototype)), null);
+
+
+function LoggingProxy(target) {
+ var log = [];
+ var proxy = new Proxy(target, new Proxy({}, {
+ get(target, propertyKey, receiver) {
+ log.push(propertyKey);
+ }
+ }));
+ return {proxy, log};
+}
+
+var {proxy, log} = LoggingProxy(function(){});
+Bound(proxy);
+assertEqArray(log, ["getPrototypeOf", "getOwnPropertyDescriptor", "get", "get"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Function/browser.js b/js/src/tests/ecma_6/Function/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/browser.js
diff --git a/js/src/tests/ecma_6/Function/configurable-length-builtins.js b/js/src/tests/ecma_6/Function/configurable-length-builtins.js
new file mode 100644
index 000000000..f28eaae15
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/configurable-length-builtins.js
@@ -0,0 +1,21 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Deleting .length from a variety of builtin functions works as expected.
+for (var fun of [Math.sin, Array.prototype.map, eval]) {
+ assertEq(delete fun.length, true);
+ assertEq(fun.hasOwnProperty("length"), false);
+ assertEq("length" in fun, true); // still inheriting Function.prototype.length
+ assertEq(fun.length, 0);
+
+ // The inherited property is nonwritable, so assigning still fails
+ // (silently, in sloppy mode).
+ fun.length = Math.hypot;
+ assertEq(fun.length, 0);
+
+ // It can be shadowed via defineProperty.
+ Object.defineProperty(fun, "length", {value: Math.hypot});
+ assertEq(fun.length, Math.hypot);
+}
+
+reportCompare(0, 0, 'ok');
diff --git a/js/src/tests/ecma_6/Function/configurable-length.js b/js/src/tests/ecma_6/Function/configurable-length.js
new file mode 100644
index 000000000..127038fb5
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/configurable-length.js
@@ -0,0 +1,86 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Very simple initial test that the "length" property of a function is
+// configurable. More thorough tests follow.
+var f = function (a1, a2, a3, a4) {};
+assertEq(delete f.length, true);
+assertEq(f.hasOwnProperty("length"), false);
+assertEq(f.length, 0); // inherited from Function.prototype.length
+assertEq(delete Function.prototype.length, true);
+assertEq(f.length, undefined);
+
+
+// Now for the details.
+//
+// Many of these tests are poking at the "resolve hook" mechanism SM uses to
+// lazily create this property, which is wonky and deserving of some extra
+// skepticism.
+
+// We've deleted Function.prototype.length. Check that the resolve hook does
+// not resurrect it.
+assertEq("length" in Function.prototype, false);
+Function.prototype.length = 7;
+assertEq(Function.prototype.length, 7);
+delete Function.prototype.length;
+assertEq(Function.prototype.length, undefined);
+
+// OK, define Function.prototype.length back to its original state per spec, so
+// the remaining tests can run in a more typical environment.
+Object.defineProperty(Function.prototype, "length", {value: 0, configurable: true});
+
+// Check the property descriptor of a function length property.
+var g = function f(a1, a2, a3, a4, a5) {};
+var desc = Object.getOwnPropertyDescriptor(g, "length");
+assertEq(desc.configurable, true);
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, false);
+assertEq(desc.value, 5);
+
+// After deleting the length property, assigning to f.length fails because
+// Function.prototype.length is non-writable. In strict mode it would throw.
+delete g.length;
+g.length = 12;
+assertEq(g.hasOwnProperty("length"), false);
+assertEq(g.length, 0);
+
+// After deleting both the length property and Function.prototype.length,
+// assigning to f.length creates a new plain old data property.
+delete Function.prototype.length;
+g.length = 13;
+var desc = Object.getOwnPropertyDescriptor(g, "length");
+assertEq(desc.configurable, true);
+assertEq(desc.enumerable, true);
+assertEq(desc.writable, true);
+assertEq(desc.value, 13);
+
+// Deleting the .length of one instance of a FunctionDeclaration does not
+// affect other instances.
+function mkfun() {
+ function fun(a1, a2, a3, a4, a5) {}
+ return fun;
+}
+g = mkfun();
+var h = mkfun();
+delete h.length;
+assertEq(g.length, 5);
+assertEq(mkfun().length, 5);
+
+// Object.defineProperty on a brand-new function is sufficient to cause the
+// LENGTH_RESOLVED flag to be set.
+g = mkfun();
+Object.defineProperty(g, "length", {value: 0});
+assertEq(delete g.length, true);
+assertEq(g.hasOwnProperty("length"), false);
+
+// Object.defineProperty on a brand-new function correctly merges new
+// attributes with the builtin ones.
+g = mkfun();
+Object.defineProperty(g, "length", { value: 42 });
+desc = Object.getOwnPropertyDescriptor(g, "length");
+assertEq(desc.configurable, true);
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, false);
+assertEq(desc.value, 42);
+
+reportCompare(0, 0, 'ok');
diff --git a/js/src/tests/ecma_6/Function/construct-bound-proxy-with-many-arguments.js b/js/src/tests/ecma_6/Function/construct-bound-proxy-with-many-arguments.js
new file mode 100644
index 000000000..6c9bb41a3
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/construct-bound-proxy-with-many-arguments.js
@@ -0,0 +1,13 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+var proxy = Function.prototype.bind.call(new Proxy(Array, {}));
+for (var i = 10; i < 50; ++i) {
+ var args = Array(i).fill(i);
+ var array = new proxy(...args);
+ assertEqArray(array, args);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Function/function-constructor-toString-arguments-before-parsing-params.js b/js/src/tests/ecma_6/Function/function-constructor-toString-arguments-before-parsing-params.js
new file mode 100644
index 000000000..4e88a0096
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/function-constructor-toString-arguments-before-parsing-params.js
@@ -0,0 +1,23 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 920479;
+var summary =
+ "Convert all arguments passed to Function() to string before doing any " +
+ "parsing of the to-be-created Function's parameters or body text";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+assertThrowsValue(() => Function("@", { toString() { throw 42; } }), 42);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Function/function-name.js b/js/src/tests/ecma_6/Function/function-name.js
new file mode 100644
index 000000000..7beca56df
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/function-name.js
@@ -0,0 +1,64 @@
+function testFunctionName(f) {
+ var name = f.name;
+ f.name = 'g';
+ assertEq(f.name, name);
+ assertEq(delete f.name, true);
+ assertEq(f.name, '');
+ assertEq(f.hasOwnProperty('name'), false);
+ f.name = 'g';
+ assertEq(f.name, '');
+ Object.defineProperty(f, 'name', {value: 'g'});
+ assertEq(f.name, 'g');
+}
+function testFunctionNameStrict(f) {
+ "use strict";
+ var name = f.name;
+ var error;
+ try {
+ f.name = 'g';
+ } catch (e) {
+ error = e;
+ }
+ assertEq(f.name, name);
+ assertEq(error instanceof TypeError, true);
+ assertEq(delete f.name, true);
+ assertEq(f.name, '');
+ assertEq(f.hasOwnProperty('name'), false);
+ error = null;
+ try {
+ f.name = 'g';
+ } catch (e) {
+ error = e;
+ }
+ assertEq(f.name, '');
+ assertEq(error instanceof TypeError, true);
+ Object.defineProperty(f, 'name', {value: 'g'});
+ assertEq(f.name, 'g');
+}
+
+assertEq(Object.getOwnPropertyDescriptor(Object, "name").writable, false);
+assertEq(Object.getOwnPropertyDescriptor(Object, "name").enumerable, false);
+assertEq(Object.getOwnPropertyDescriptor(Object, "name").configurable, true);
+assertEq(Object.getOwnPropertyDescriptor(Object, "name").value, 'Object');
+assertEq(Object.getOwnPropertyDescriptor(function f(){}, "name").writable, false);
+assertEq(Object.getOwnPropertyDescriptor(function f(){}, "name").enumerable, false);
+assertEq(Object.getOwnPropertyDescriptor(function f(){}, "name").configurable, true);
+assertEq(Object.getOwnPropertyDescriptor(function f(){}, "name").value, 'f');
+
+// Basic test ensuring that Object.defineProperty works on pristine function.
+function f() {};
+Object.defineProperty(f, 'name', {value: 'g'});
+assertEq(f.name, 'g');
+
+// .name behaves as expected on scripted function.
+testFunctionName(function f(){});
+testFunctionNameStrict(function f(){});
+// .name behaves as expected on builtin function.
+testFunctionName(Function.prototype.apply);
+testFunctionNameStrict(Function.prototype.call);
+// .name behaves as expected on self-hosted builtin function.
+testFunctionName(Array.prototype.forEach);
+testFunctionNameStrict(Array.prototype.some);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Function/has-instance-jitted.js b/js/src/tests/ecma_6/Function/has-instance-jitted.js
new file mode 100644
index 000000000..a2d33abc7
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/has-instance-jitted.js
@@ -0,0 +1,96 @@
+const OriginalHasInstance = Function.prototype[Symbol.hasInstance];
+
+// Ensure that folding doesn't impact user defined @@hasInstance methods.
+{
+ function Test() {
+ this.x = 1;
+ }
+
+ Object.defineProperty(Test, Symbol.hasInstance,
+ {writable: true, value: () => false});
+
+ function x(t) {
+ return t instanceof Test;
+ }
+
+ function y() {
+ let t = new Test;
+ let b = true;
+ for (let i = 0; i < 10; i++) {
+ b = b && x(t);
+ }
+ return b;
+ }
+
+
+ function z() {
+ let f = 0;
+ let t = 0;
+ for (let i = 0; i < 100; i++)
+ assertEq(y(), false);
+ }
+
+ z();
+}
+
+// Ensure that the jitting does not clobber user defined @@hasInstance methods.
+{
+ function a() {
+ function b() {};
+ b.__proto__ = a.prototype;
+ return b;
+ };
+ let c = new a();
+
+ let t = 0;
+ let f = 0;
+ let e = 0;
+ for (let i = 0; i < 40000; i++) {
+ if (i == 20000)
+ Object.defineProperty(a.prototype, Symbol.hasInstance,
+ {writable: true, value: () => true});
+ if (i == 30000)
+ Object.setPrototypeOf(c, Function.prototype);
+
+ if (1 instanceof c) {
+ t++;
+ } else {
+ f++;
+ }
+ }
+
+ assertEq(t, 10000);
+ assertEq(f, 30000);
+}
+
+{
+ function a() {};
+ function b() {};
+ Object.defineProperty(a, Symbol.hasInstance, {writable: true, value: () => true});
+ assertEq(b instanceof a, true);
+ for (let _ of Array(10000))
+ assertEq(b instanceof a, true);
+}
+
+{
+ function a(){};
+ function b(){};
+ function c(){};
+ function d(){};
+ function e(){};
+ Object.defineProperty(a, Symbol.hasInstance, {value: () => true });
+ Object.defineProperty(b, Symbol.hasInstance, {value: () => true });
+ Object.defineProperty(c, Symbol.hasInstance, {value: () => true });
+ Object.defineProperty(d, Symbol.hasInstance, {value: () => true });
+ let funcs = [a, b, c, d];
+ for (let f of funcs)
+ assertEq(e instanceof f, true);
+
+ for (let _ of Array(10001)) {
+ for (let f of funcs)
+ assertEq(e instanceof f, true);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Function/has-instance.js b/js/src/tests/ecma_6/Function/has-instance.js
new file mode 100644
index 000000000..f0c7bf28e
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/has-instance.js
@@ -0,0 +1,101 @@
+// It is possible to override Function.prototype[@@hasInstance].
+let passed = false;
+let obj = { foo: true };
+let C = function(){};
+
+Object.defineProperty(C, Symbol.hasInstance, {
+ value: function(inst) { passed = inst.foo; return false; }
+});
+
+assertEq(obj instanceof C, false);
+assertEq(passed, true);
+
+{
+ let obj = {
+ [Symbol.hasInstance](v) { return true; },
+ };
+ let whatevs = {};
+ assertEq(whatevs instanceof obj, true);
+}
+
+{
+
+ function zzzz() {};
+ let xxxx = new zzzz();
+ assertEq(xxxx instanceof zzzz, true);
+ assertEq(zzzz[Symbol.hasInstance](xxxx), true);
+
+}
+
+// Non-callable objects should return false.
+const nonCallables = [
+ 1,
+ undefined,
+ null,
+ "nope",
+]
+
+for (let nonCallable of nonCallables) {
+ assertEq(nonCallable instanceof Function, false);
+ assertEq(nonCallable instanceof Object, false);
+}
+
+// Non-callables should throw when used on the right hand side
+// of `instanceof`.
+assertThrowsInstanceOf(() => {
+ function foo() {};
+ let obj = {};
+ foo instanceof obj;
+}, TypeError);
+
+// Non-callables do not throw for overridden methods
+let o = {[Symbol.hasInstance](v) { return true; }}
+assertEq(1 instanceof o, true);
+
+// Non-callables return false instead of an exception when
+// Function.prototype[Symbol.hasInstance] is called directly.
+for (let nonCallable of nonCallables) {
+ assertEq(Function.prototype[Symbol.hasInstance].call(nonCallable, Object), false);
+}
+
+// It should be possible to call the Symbol.hasInstance method directly.
+assertEq(Function.prototype[Symbol.hasInstance].call(Function, () => 1), true);
+assertEq(Function.prototype[Symbol.hasInstance].call(Function, Object), true);
+assertEq(Function.prototype[Symbol.hasInstance].call(Function, null), false);
+assertEq(Function.prototype[Symbol.hasInstance].call(Function, Array), true);
+assertEq(Function.prototype[Symbol.hasInstance].call(Object, Array), true);
+assertEq(Function.prototype[Symbol.hasInstance].call(Array, Function), false);
+assertEq(Function.prototype[Symbol.hasInstance].call(({}), Function), false);
+assertEq(Function.prototype[Symbol.hasInstance].call(), false)
+assertEq(Function.prototype[Symbol.hasInstance].call(({})), false)
+
+// Ensure that bound functions are unwrapped properly
+let bindme = {x: function() {}};
+let instance = new bindme.x();
+let xOuter = bindme.x;
+let bound = xOuter.bind(bindme);
+let doubleBound = bound.bind(bindme);
+let tripleBound = bound.bind(doubleBound);
+assertEq(Function.prototype[Symbol.hasInstance].call(bound, instance), true);
+assertEq(Function.prototype[Symbol.hasInstance].call(doubleBound, instance), true);
+assertEq(Function.prototype[Symbol.hasInstance].call(tripleBound, instance), true);
+
+// Function.prototype[Symbol.hasInstance] is not configurable
+let desc = Object.getOwnPropertyDescriptor(Function.prototype, Symbol.hasInstance);
+assertEq(desc.configurable, false);
+
+// Attempting to use a non-callable @@hasInstance triggers a type error
+// Bug 1280892
+assertThrowsInstanceOf(() => {
+ var fun = function() {}
+ var p = new Proxy(fun, {
+ get(target, key) {
+ return /not-callable/;
+ }
+ });
+ fun instanceof p;
+}, TypeError);
+
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Function/length-with-destructuring-and-parameter-expression.js b/js/src/tests/ecma_6/Function/length-with-destructuring-and-parameter-expression.js
new file mode 100644
index 000000000..a3f00ac1f
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/length-with-destructuring-and-parameter-expression.js
@@ -0,0 +1,31 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+assertEq(function([a = 0]){}.length, 1);
+assertEq(function({p: a = 0}){}.length, 1);
+assertEq(function({a = 0}){}.length, 1);
+assertEq(function({[0]: a}){}.length, 1);
+
+assertEq(function([a = 0], [b = 0]){}.length, 2);
+assertEq(function({p: a = 0}, [b = 0]){}.length, 2);
+assertEq(function({a = 0}, [b = 0]){}.length, 2);
+assertEq(function({[0]: a}, [b = 0]){}.length, 2);
+
+assertEq(function(x, [a = 0]){}.length, 2);
+assertEq(function(x, {p: a = 0}){}.length, 2);
+assertEq(function(x, {a = 0}){}.length, 2);
+assertEq(function(x, {[0]: a}){}.length, 2);
+
+assertEq(function(x = 0, [a = 0]){}.length, 0);
+assertEq(function(x = 0, {p: a = 0}){}.length, 0);
+assertEq(function(x = 0, {a = 0}){}.length, 0);
+assertEq(function(x = 0, {[0]: a}){}.length, 0);
+
+assertEq(function([a = 0], ...r){}.length, 1);
+assertEq(function({p: a = 0}, ...r){}.length, 1);
+assertEq(function({a = 0}, ...r){}.length, 1);
+assertEq(function({[0]: a}, ...r){}.length, 1);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Function/line-terminator-before-arrow.js b/js/src/tests/ecma_6/Function/line-terminator-before-arrow.js
new file mode 100644
index 000000000..52bdce7f3
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/line-terminator-before-arrow.js
@@ -0,0 +1,9 @@
+assertThrowsInstanceOf(() => eval("() \n => {}"), SyntaxError);
+assertThrowsInstanceOf(() => eval("a \n => {}"), SyntaxError);
+assertThrowsInstanceOf(() => eval("(a) /*\n*/ => {}"), SyntaxError);
+assertThrowsInstanceOf(() => eval("(a, b) \n => {}"), SyntaxError);
+assertThrowsInstanceOf(() => eval("(a, b = 1) \n => {}"), SyntaxError);
+assertThrowsInstanceOf(() => eval("(a, ...b) \n => {}"), SyntaxError);
+assertThrowsInstanceOf(() => eval("(a, b = 1, ...c) \n => {}"), SyntaxError);
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Function/method-has-duplicated.js b/js/src/tests/ecma_6/Function/method-has-duplicated.js
new file mode 100644
index 000000000..dc0a9dfb4
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/method-has-duplicated.js
@@ -0,0 +1,19 @@
+// Make sure duplicated name is allowed in non-strict.
+function f0(a) {
+}
+
+// SyntaxError should be thrown if method definition has duplicated name.
+assertThrowsInstanceOf(() => eval(`
+({
+ m1(a, a) {
+ }
+});
+`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`
+({
+ m2(a, ...a) {
+ }
+});
+`), SyntaxError);
+
+reportCompare(0, 0, 'ok');
diff --git a/js/src/tests/ecma_6/Function/parameter-redeclaration.js b/js/src/tests/ecma_6/Function/parameter-redeclaration.js
new file mode 100644
index 000000000..74e55e3aa
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/parameter-redeclaration.js
@@ -0,0 +1,19 @@
+// 'var' is allowed to redeclare parameters.
+function f1(a = 0) {
+ var a;
+}
+
+// 'let' and 'const' at body-level are not allowed to redeclare parameters.
+assertThrowsInstanceOf(() => {
+ eval(`function f2(a = 0) {
+ let a;
+ }`);
+}, SyntaxError);
+assertThrowsInstanceOf(() => {
+ eval(`function f3(a = 0) {
+ const a;
+ }`);
+}, SyntaxError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Function/rest-has-duplicated.js b/js/src/tests/ecma_6/Function/rest-has-duplicated.js
new file mode 100644
index 000000000..67577ab4e
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/rest-has-duplicated.js
@@ -0,0 +1,17 @@
+// Make sure duplicated name is allowed in non-strict.
+function f0(a, a) {
+}
+
+// SyntaxError should be thrown if rest parameter name is duplicated.
+assertThrowsInstanceOf(() => eval(`
+function f1(a, ...a) {
+}
+`), SyntaxError);
+
+// SyntaxError should be thrown if there is a duplicated parameter.
+assertThrowsInstanceOf(() => eval(`
+function f2(a, a, ...b) {
+}
+`), SyntaxError);
+
+reportCompare(0, 0, 'ok');
diff --git a/js/src/tests/ecma_6/Function/rest-parameter-names.js b/js/src/tests/ecma_6/Function/rest-parameter-names.js
new file mode 100644
index 000000000..6cfa01dcf
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/rest-parameter-names.js
@@ -0,0 +1,68 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1288460;
+var summary =
+ "Rest parameters to functions can be named |yield| or |eval| or |let| in "
+ "non-strict code";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var f1 = (...yield) => yield + 42;
+assertEq(f1(), "42");
+assertEq(f1(1), "142");
+
+var f2 = (...eval) => eval + 42;
+assertEq(f2(), "42");
+assertEq(f2(1), "142");
+
+var f3 = (...let) => let + 42;
+assertEq(f3(), "42");
+assertEq(f3(1), "142");
+
+function g1(x, ...yield)
+{
+ return yield + x;
+}
+assertEq(g1(0, 42), "420");
+
+function g2(x, ...eval)
+{
+ return eval + x;
+}
+assertEq(g2(0, 42), "420");
+
+function g3(x, ...let)
+{
+ return let + x;
+}
+assertEq(g3(0, 42), "420");
+
+function h()
+{
+ "use strict";
+
+ var badNames = ["yield", "eval", "let"];
+
+ for (var badName of ["yield", "eval", "let"])
+ {
+ assertThrowsInstanceOf(() => eval(`var q = (...${badName}) => ${badName} + 42;`),
+ SyntaxError);
+
+ assertThrowsInstanceOf(() => eval(`function r(x, ...${badName}) { return x + ${badName}; }`),
+ SyntaxError);
+ }
+}
+h();
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Function/return-finally.js b/js/src/tests/ecma_6/Function/return-finally.js
new file mode 100644
index 000000000..fe075d457
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/return-finally.js
@@ -0,0 +1,172 @@
+var BUGNUMBER = 1202134;
+var summary = "Return value should not be overwritten by finally block with normal execution.";
+
+print(BUGNUMBER + ": " + summary);
+
+// ==== single ====
+
+var f;
+f = function() {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ }
+};
+assertEq(f(), 42);
+
+f = function() {
+ // F.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ return 43;
+ }
+};
+assertEq(f(), 43);
+
+f = function() {
+ // F.[[type]] is throw
+ try {
+ return 42;
+ } finally {
+ throw 43;
+ }
+};
+var caught = false;
+try {
+ f();
+} catch (e) {
+ assertEq(e, 43);
+ caught = true;
+}
+assertEq(caught, true);
+
+f = function() {
+ // F.[[type]] is break
+ do try {
+ return 42;
+ } finally {
+ break;
+ } while (false);
+ return 43;
+};
+assertEq(f(), 43);
+
+f = function() {
+ // F.[[type]] is break
+ L: try {
+ return 42;
+ } finally {
+ break L;
+ }
+ return 43;
+};
+assertEq(f(), 43);
+
+f = function() {
+ // F.[[type]] is continue
+ do try {
+ return 42;
+ } finally {
+ continue;
+ } while (false);
+ return 43;
+};
+assertEq(f(), 43);
+
+// ==== nested ====
+
+f = function() {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ // F.[[type]] is break
+ do try {
+ return 43;
+ } finally {
+ break;
+ } while (0);
+ }
+};
+assertEq(f(), 42);
+
+f = function() {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ // F.[[type]] is break
+ L: try {
+ return 43;
+ } finally {
+ break L;
+ }
+ }
+}
+assertEq(f(), 42);
+
+f = function() {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ // F.[[type]] is continue
+ do try {
+ return 43;
+ } finally {
+ continue;
+ } while (0);
+ }
+};
+assertEq(f(), 42);
+
+f = function() {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ // F.[[type]] is normal
+ // B.[[type]] is normal
+ try {
+ // F.[[type]] is throw
+ try {
+ return 43;
+ } finally {
+ throw 9;
+ }
+ } catch (e) {
+ }
+ }
+};
+assertEq(f(), 42);
+
+f = function() {
+ // F.[[type]] is return
+ try {
+ return 41;
+ } finally {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ // F.[[type]] is break
+ do try {
+ return 43;
+ } finally {
+ break;
+ } while (0);
+ }
+ }
+};
+assertEq(f(), 42);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Function/shell.js b/js/src/tests/ecma_6/Function/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/shell.js
diff --git a/js/src/tests/ecma_6/Function/spread-iterator-primitive.js b/js/src/tests/ecma_6/Function/spread-iterator-primitive.js
new file mode 100644
index 000000000..79320ad7f
--- /dev/null
+++ b/js/src/tests/ecma_6/Function/spread-iterator-primitive.js
@@ -0,0 +1,28 @@
+var BUGNUMBER = 1021835;
+var summary = "Returning non-object from @@iterator should throw";
+
+print(BUGNUMBER + ": " + summary);
+
+let primitives = [
+ 1,
+ true,
+ undefined,
+ null,
+ "foo",
+ Symbol.iterator
+];
+
+function f() {
+}
+
+for (let primitive of primitives) {
+ let arg = {
+ [Symbol.iterator]() {
+ return primitive;
+ }
+ };
+ assertThrowsInstanceOf(() => f(...arg), TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Generators/delegating-yield-1.js b/js/src/tests/ecma_6/Generators/delegating-yield-1.js
new file mode 100644
index 000000000..f9df1d7f8
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/delegating-yield-1.js
@@ -0,0 +1,42 @@
+// This file was written by Andy Wingo <wingo@igalia.com> and originally
+// contributed to V8 as generators-objects.js, available here:
+//
+// http://code.google.com/p/v8/source/browse/branches/bleeding_edge/test/mjsunit/harmony/generators-objects.js
+
+// Test that yield* re-yields received results without re-boxing.
+
+function results(results) {
+ var i = 0;
+ function next() {
+ return results[i++];
+ }
+ var iter = { next: next }
+ var ret = {};
+ ret[Symbol.iterator] = function () { return iter; }
+ return ret;
+}
+
+function* yield_results(expected) {
+ return yield* results(expected);
+}
+
+function collect_results(iterable) {
+ var ret = [];
+ var result;
+ var iter = iterable[Symbol.iterator]();
+ do {
+ result = iter.next();
+ ret.push(result);
+ } while (!result.done);
+ return ret;
+}
+
+// We have to put a full result for the end, because the return will re-box.
+var expected = [{value: 1}, {value: 34, done: true}];
+
+// Sanity check.
+assertDeepEq(expected, collect_results(results(expected)));
+assertDeepEq(expected, collect_results(yield_results(expected)));
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/delegating-yield-10.js b/js/src/tests/ecma_6/Generators/delegating-yield-10.js
new file mode 100644
index 000000000..1f317023e
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/delegating-yield-10.js
@@ -0,0 +1,49 @@
+// Errors accessing next, done, or value don't cause an exception to be
+// thrown into the iterator of a yield*.
+
+function* g(n) { for (var i=0; i<n; i++) yield i; }
+function* delegate(iter) { return yield* iter; }
+
+var log = "", inner, outer;
+
+// That var is poisoooooon, p-poison poison...
+var Poison = new Error;
+
+function log_calls(method) {
+ return function () {
+ log += "x"
+ return method.call(this);
+ }
+}
+
+function poison(receiver, prop) {
+ Object.defineProperty(receiver, prop, { get: function () { throw Poison } });
+}
+
+// Poison inner.next.
+inner = g(10);
+outer = delegate(inner);
+inner.throw = log_calls(inner.throw);
+poison(inner, 'next')
+assertThrowsValue(outer.next.bind(outer), Poison);
+assertEq(log, "");
+
+// Poison result value from inner.
+inner = g(10);
+outer = delegate(inner);
+inner.next = function () { return { done: true, get value() { throw Poison} } };
+inner.throw = log_calls(inner.throw);
+assertThrowsValue(outer.next.bind(outer), Poison);
+assertEq(log, "");
+
+// Poison result done from inner.
+inner = g(10);
+outer = delegate(inner);
+inner.next = function () { return { get done() { throw Poison }, value: 42 } };
+inner.throw = log_calls(inner.throw);
+assertThrowsValue(outer.next.bind(outer), Poison);
+assertEq(log, "");
+
+// mischief managed.
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/delegating-yield-11.js b/js/src/tests/ecma_6/Generators/delegating-yield-11.js
new file mode 100644
index 000000000..f7e6650fb
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/delegating-yield-11.js
@@ -0,0 +1,20 @@
+// The first call to yield* passes one arg to "next".
+
+function Iter() {
+ function next() {
+ if (arguments.length != 1)
+ throw Error;
+ return { value: 42, done: true }
+ }
+
+ this.next = next;
+ this[Symbol.iterator] = function () { return this; }
+}
+
+function* delegate(iter) { return yield* iter; }
+
+var iter = delegate(new Iter());
+assertDeepEq(iter.next(), {value:42, done:true});
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/delegating-yield-12.js b/js/src/tests/ecma_6/Generators/delegating-yield-12.js
new file mode 100644
index 000000000..9ed7666e1
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/delegating-yield-12.js
@@ -0,0 +1,49 @@
+// yield* calls @@iterator on the iterable to produce the iterator.
+
+var log = '';
+
+function IteratorWrapper(iterator) {
+ return {
+ next: function (val) {
+ log += 'n';
+ return iterator.next(val);
+ },
+
+ throw: function (exn) {
+ log += 't';
+ return iterator.throw(exn);
+ }
+ };
+}
+
+function IterableWrapper(iterable) {
+ var ret = {};
+
+ ret[Symbol.iterator] = function () {
+ log += 'i';
+ return IteratorWrapper(iterable[Symbol.iterator]());
+ }
+
+ return ret;
+}
+
+function* delegate(iter) { return yield* iter; }
+
+var iter = delegate(IterableWrapper([1, 2, 3]));
+assertIteratorNext(iter, 1);
+assertIteratorNext(iter, 2);
+assertIteratorNext(iter, 3);
+assertIteratorDone(iter, undefined);
+
+assertEq(log, 'innnn');
+
+iter = delegate([1, 2, 3]);
+assertIteratorNext(iter, 1);
+assertIteratorNext(iter, 2);
+assertIteratorNext(iter, 3);
+assertIteratorDone(iter, undefined);
+
+assertEq(log, 'innnn');
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/delegating-yield-2.js b/js/src/tests/ecma_6/Generators/delegating-yield-2.js
new file mode 100644
index 000000000..918fb33e1
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/delegating-yield-2.js
@@ -0,0 +1,71 @@
+// Test yield* with iter.throw and monkeypatching.
+
+function* g1() { return (yield 1); }
+function* g2() { try { yield 1; } catch (e) { yield e; } }
+function* delegate(iter) { return yield* iter; }
+var GeneratorObjectPrototype = Object.getPrototypeOf(g1).prototype;
+var GeneratorObjectPrototype_throw = GeneratorObjectPrototype.throw;
+
+// An uncaught delegated throw.
+var inner = g1();
+var outer = delegate(inner);
+assertIteratorNext(outer, 1);
+assertThrowsValue(function () { outer.throw(42) }, 42);
+assertThrowsValue(function () { outer.throw(42) }, 42);
+
+// A caught delegated throw.
+inner = g2();
+outer = delegate(inner);
+assertIteratorNext(outer, 1);
+assertIteratorResult(outer.throw(42), 42, false);
+assertThrowsValue(function () { outer.throw(42) }, 42);
+assertThrowsValue(function () { outer.throw(42) }, 42);
+
+// What would be an uncaught delegated throw, but with a monkeypatched iterator.
+inner = g1();
+outer = delegate(inner);
+assertIteratorNext(outer, 1);
+inner.throw = function(e) { return e*2; };
+assertEq(84, outer.throw(42));
+assertIteratorDone(outer, undefined);
+
+// Monkeypatching inner.next.
+inner = g1();
+outer = delegate(inner);
+inner.next = function() { return { value: 13, done: true } };
+assertIteratorDone(outer, 13);
+
+// What would be a caught delegated throw, but with a monkeypunched prototype.
+inner = g2();
+outer = delegate(inner);
+assertIteratorNext(outer, 1);
+delete GeneratorObjectPrototype.throw;
+var outer_throw_42 = GeneratorObjectPrototype_throw.bind(outer, 42);
+assertThrowsValue(outer_throw_42, 42);
+assertThrowsValue(outer_throw_42, 42);
+
+// Monkeypunch a different throw handler.
+inner = g2();
+outer = delegate(inner);
+outer_throw_42 = GeneratorObjectPrototype_throw.bind(outer, 42);
+assertIteratorNext(outer, 1);
+GeneratorObjectPrototype.throw = function(e) { return e*2; }
+assertEq(84, outer_throw_42());
+assertEq(84, outer_throw_42());
+// This continues indefinitely.
+assertEq(84, outer_throw_42());
+assertIteratorDone(outer, undefined);
+
+// The same, but restoring the original pre-monkey throw.
+inner = g2();
+outer = delegate(inner);
+outer_throw_42 = GeneratorObjectPrototype_throw.bind(outer, 42);
+assertIteratorNext(outer, 1);
+assertEq(84, outer_throw_42());
+assertEq(84, outer_throw_42());
+GeneratorObjectPrototype.throw = GeneratorObjectPrototype_throw;
+assertIteratorResult(outer_throw_42(), 42, false);
+assertIteratorDone(outer, undefined);
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/delegating-yield-3.js b/js/src/tests/ecma_6/Generators/delegating-yield-3.js
new file mode 100644
index 000000000..34800f1b0
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/delegating-yield-3.js
@@ -0,0 +1,40 @@
+// Test yield* with iter.next and monkeypatching.
+
+function* g(n) { for (var i=0; i<n; i++) yield i; }
+function* delegate(iter) { return yield* iter; }
+var GeneratorObjectPrototype = Object.getPrototypeOf(g).prototype;
+var GeneratorObjectPrototype_next = GeneratorObjectPrototype.next;
+
+// Monkeypatch next on an iterator.
+var inner = g(20);
+var outer = delegate(inner);
+assertIteratorNext(outer, 0);
+assertIteratorNext(outer, 1);
+inner.next = function() { return { patched: true }; };
+// 42 yielded directly without re-boxing.
+assertEq(true, outer.next().patched);
+// Outer generator not terminated.
+assertEq(true, outer.next().patched);
+// Restore.
+inner.next = GeneratorObjectPrototype_next;
+assertIteratorNext(outer, 2);
+// Repatch.
+inner.next = function() { return { value: 42, done: true }; };
+assertIteratorDone(outer, 42);
+
+// Monkeypunch next on the prototype.
+var inner = g(20);
+var outer = delegate(inner);
+assertIteratorNext(outer, 0);
+assertIteratorNext(outer, 1);
+GeneratorObjectPrototype.next = function() { return { patched: true }; };
+// 42 yielded directly without re-boxing.
+assertEq(true, GeneratorObjectPrototype_next.call(outer).patched);
+// Outer generator not terminated.
+assertEq(true, GeneratorObjectPrototype_next.call(outer).patched);
+// Restore.
+GeneratorObjectPrototype.next = GeneratorObjectPrototype_next;
+assertIteratorNext(outer, 2);
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/delegating-yield-4.js b/js/src/tests/ecma_6/Generators/delegating-yield-4.js
new file mode 100644
index 000000000..c07673172
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/delegating-yield-4.js
@@ -0,0 +1,18 @@
+// With yield*, inner and outer iterators can be invoked separately.
+
+function* g(n) { for (var i=0; i<n; i++) yield i; }
+function* delegate(iter) { return yield* iter; }
+
+var inner = g(20);
+var outer1 = delegate(inner);
+var outer2 = delegate(inner);
+
+assertIteratorNext(outer1, 0);
+assertIteratorNext(outer2, 1);
+assertIteratorNext(inner, 2);
+assertIteratorNext(outer1, 3);
+assertIteratorNext(outer2, 4);
+assertIteratorNext(inner, 5);
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/delegating-yield-5.js b/js/src/tests/ecma_6/Generators/delegating-yield-5.js
new file mode 100644
index 000000000..f4376743b
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/delegating-yield-5.js
@@ -0,0 +1,37 @@
+// Test that a deep yield* chain re-yields received results without
+// re-boxing.
+
+function results(results) {
+ var i = 0;
+ function next() {
+ return results[i++];
+ }
+ var iter = { next: next };
+ var ret = {};
+ ret[Symbol.iterator] = function () { return iter; }
+ return ret;
+}
+
+function* yield_results(expected, n) {
+ return yield* n ? yield_results(expected, n - 1) : results(expected);
+}
+
+function collect_results(iterable) {
+ var ret = [];
+ var result;
+ var iter = iterable[Symbol.iterator]();
+ do {
+ result = iter.next();
+ ret.push(result);
+ } while (!result.done);
+ return ret;
+}
+
+// We have to put a full result for the end, because the return will re-box.
+var expected = [{value: 1}, {value: 34, done: true}];
+
+assertDeepEq(expected, collect_results(results(expected)));
+assertDeepEq(expected, collect_results(yield_results(expected, 20)));
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/delegating-yield-6.js b/js/src/tests/ecma_6/Generators/delegating-yield-6.js
new file mode 100644
index 000000000..8b358525c
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/delegating-yield-6.js
@@ -0,0 +1,56 @@
+// Test that each yield* loop just checks "done", and "value" is only
+// fetched once at the end.
+
+var log = "";
+
+function collect_results(iter) {
+ var ret = [];
+ var result;
+ do {
+ result = iter.next();
+ ret.push(result);
+ } while (!result.done);
+ return ret;
+}
+
+function Iter(val, count) {
+ function next() {
+ log += 'n';
+ return {
+ get done() { log += "d"; return count-- == 0; },
+ get value() { log += "v"; return val; }
+ }
+ }
+
+ function iterator() {
+ log += 'i';
+ return this;
+ }
+
+ this.next = next;
+ this[Symbol.iterator] = iterator;
+}
+
+function* delegate(iter) { return yield* iter; }
+
+var inner = new Iter(42, 5);
+var outer = delegate(inner);
+
+// Five values, and one terminal value.
+outer.next();
+outer.next();
+outer.next();
+outer.next();
+outer.next();
+outer.next();
+
+assertEq(log, "indndndndndndv");
+
+// Outer's dead, man. Outer's dead.
+assertDeepEq(outer.next(), {value: undefined, done: true});
+
+// No more checking the iterator.
+assertEq(log, "indndndndndndv");
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/delegating-yield-7.js b/js/src/tests/ecma_6/Generators/delegating-yield-7.js
new file mode 100644
index 000000000..f7c9e86cc
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/delegating-yield-7.js
@@ -0,0 +1,38 @@
+// The iteratee of yield* can be a proxy.
+
+function results(results) {
+ var i = 0;
+ function iterator() {
+ return this;
+ }
+ function next() {
+ return results[i++];
+ }
+ var ret = { next: next }
+ ret[Symbol.iterator] = iterator;
+ return ret;
+}
+
+function* yield_results(expected) {
+ return yield* new Proxy(results(expected), {});
+}
+
+function collect_results(iter) {
+ var ret = [];
+ var result;
+ do {
+ result = iter.next();
+ ret.push(result);
+ } while (!result.done);
+ return ret;
+}
+
+// We have to put a full result for the end, because the return will re-box.
+var expected = [{value: 1}, {value: 34, done: true}];
+
+// Sanity check.
+assertDeepEq(expected, collect_results(results(expected)));
+assertDeepEq(expected, collect_results(yield_results(expected)));
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/delegating-yield-8.js b/js/src/tests/ecma_6/Generators/delegating-yield-8.js
new file mode 100644
index 000000000..c17d6ea26
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/delegating-yield-8.js
@@ -0,0 +1,44 @@
+// Test that yield* can appear in a loop, and alongside yield.
+
+function* countdown(n) {
+ while (n > 0) {
+ yield n;
+ yield* countdown(--n);
+ }
+ return 34;
+}
+
+function collect_results(iter) {
+ var ret = [];
+ var result;
+ do {
+ result = iter.next();
+ ret.push(result);
+ } while (!result.done);
+ return ret;
+}
+
+var expected = [
+ // yield in countdown(3), n == 3
+ {value: 3, done: false},
+ // yield in yield* countdown(2), n == 2
+ {value: 2, done: false},
+ // yield in nested yield* countdown(1), n == 1
+ {value: 1, done: false},
+ // countdown(0) yields no values
+ // second go-through of countdown(2) loop, n == 1
+ {value: 1, done: false},
+ // second go-through of countdown(3) loop, n == 2
+ {value: 2, done: false},
+ // yield in yield* countdown(1), n == 1
+ {value: 1, done: false},
+ // third go-through of countdown(3) loop, n == 1
+ {value: 1, done: false},
+ // done
+ {value: 34, done: true}
+];
+
+assertDeepEq(expected, collect_results(countdown(3)));
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/delegating-yield-9.js b/js/src/tests/ecma_6/Generators/delegating-yield-9.js
new file mode 100644
index 000000000..60c35b94d
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/delegating-yield-9.js
@@ -0,0 +1,37 @@
+// Test that yield* can appear in a loop, and inside yield.
+
+function* countdown(n) {
+ while (n > 0) {
+ yield (yield* countdown(--n));
+ }
+ return 34;
+}
+
+function collect_results(iter) {
+ var ret = [];
+ var result;
+ do {
+ result = iter.next();
+ ret.push(result);
+ } while (!result.done);
+ return ret;
+}
+
+var expected = [
+ // Only 34 yielded from the "yield" and the last return make it out.
+ // Three yields in countdown(3), two in countdown(2), and one in
+ // countdown(1) (called twice).
+ {value: 34, done: false},
+ {value: 34, done: false},
+ {value: 34, done: false},
+ {value: 34, done: false},
+ {value: 34, done: false},
+ {value: 34, done: false},
+ {value: 34, done: false},
+ {value: 34, done: true}, // final
+];
+
+assertDeepEq(collect_results(countdown(3)), expected);
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/iteration.js b/js/src/tests/ecma_6/Generators/iteration.js
new file mode 100644
index 000000000..6eb6a51aa
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/iteration.js
@@ -0,0 +1,574 @@
+// This file was written by Andy Wingo <wingo@igalia.com> and originally
+// contributed to V8 as generators-objects.js, available here:
+//
+// http://code.google.com/p/v8/source/browse/branches/bleeding_edge/test/mjsunit/harmony/generators-objects.js
+
+// Test aspects of the generator runtime.
+
+
+var GeneratorFunction = (function*(){yield 1;}).constructor;
+
+
+function TestGeneratorResultPrototype() {
+ function* g() { yield 1; }
+ var iter = g();
+ assertIteratorNext(iter, 1);
+ assertIteratorDone(iter, undefined);
+ assertIteratorDone(iter, undefined);
+}
+TestGeneratorResultPrototype();
+
+function TestGenerator(g, expected_values_for_next,
+ send_val, expected_values_for_send) {
+ function testNext(thunk) {
+ var iter = thunk();
+ for (var i = 0; i < expected_values_for_next.length; i++) {
+ assertIteratorResult(iter.next(), expected_values_for_next[i],
+ i == expected_values_for_next.length - 1);
+ }
+ assertIteratorDone(iter, undefined);
+ }
+ function testSend(thunk) {
+ var iter = thunk();
+ for (var i = 0; i < expected_values_for_send.length; i++) {
+ assertIteratorResult(iter.next(send_val),
+ expected_values_for_send[i],
+ i == expected_values_for_send.length - 1);
+ }
+ assertIteratorDone(iter, undefined);
+ }
+ function testThrow(thunk) {
+ for (var i = 0; i < expected_values_for_next.length; i++) {
+ var iter = thunk();
+ for (var j = 0; j < i; j++) {
+ assertIteratorResult(iter.next(),
+ expected_values_for_next[j],
+ j == expected_values_for_next.length - 1);
+ }
+ var Sentinel = function () {}
+ assertThrowsInstanceOf(function () { iter.throw(new Sentinel); }, Sentinel);
+ assertIteratorDone(iter, undefined);
+ }
+ }
+
+ testNext(g);
+ testSend(g);
+ testThrow(g);
+
+ testNext(function*() { return yield* g(); });
+ testSend(function*() { return yield* g(); });
+ testThrow(function*() { return yield* g(); });
+
+ if (g instanceof GeneratorFunction) {
+ testNext(function() { return g(); });
+ testSend(function() { return g(); });
+ testThrow(function() { return g(); });
+ }
+}
+
+TestGenerator(function* g1() { },
+ [undefined],
+ "foo",
+ [undefined]);
+
+TestGenerator(function* g2() { yield 1; },
+ [1, undefined],
+ "foo",
+ [1, undefined]);
+
+TestGenerator(function* g3() { yield 1; yield 2; },
+ [1, 2, undefined],
+ "foo",
+ [1, 2, undefined]);
+
+TestGenerator(function* g4() { yield 1; yield 2; return 3; },
+ [1, 2, 3],
+ "foo",
+ [1, 2, 3]);
+
+TestGenerator(function* g5() { return 1; },
+ [1],
+ "foo",
+ [1]);
+
+TestGenerator(function* g6() { var x = yield 1; return x; },
+ [1, undefined],
+ "foo",
+ [1, "foo"]);
+
+TestGenerator(function* g7() { var x = yield 1; yield 2; return x; },
+ [1, 2, undefined],
+ "foo",
+ [1, 2, "foo"]);
+
+TestGenerator(function* g8() { for (var x = 0; x < 4; x++) { yield x; } },
+ [0, 1, 2, 3, undefined],
+ "foo",
+ [0, 1, 2, 3, undefined]);
+
+// Generator with arguments.
+TestGenerator(
+ function g9() {
+ return (function*(a, b, c, d) {
+ yield a; yield b; yield c; yield d;
+ })("fee", "fi", "fo", "fum");
+ },
+ ["fee", "fi", "fo", "fum", undefined],
+ "foo",
+ ["fee", "fi", "fo", "fum", undefined]);
+
+// Too few arguments.
+TestGenerator(
+ function g10() {
+ return (function*(a, b, c, d) {
+ yield a; yield b; yield c; yield d;
+ })("fee", "fi");
+ },
+ ["fee", "fi", undefined, undefined, undefined],
+ "foo",
+ ["fee", "fi", undefined, undefined, undefined]);
+
+// Too many arguments.
+TestGenerator(
+ function g11() {
+ return (function*(a, b, c, d) {
+ yield a; yield b; yield c; yield d;
+ })("fee", "fi", "fo", "fum", "I smell the blood of an Englishman");
+ },
+ ["fee", "fi", "fo", "fum", undefined],
+ "foo",
+ ["fee", "fi", "fo", "fum", undefined]);
+
+// The arguments object.
+TestGenerator(
+ function g12() {
+ return (function*(a, b, c, d) {
+ for (var i = 0; i < arguments.length; i++) {
+ yield arguments[i];
+ }
+ })("fee", "fi", "fo", "fum", "I smell the blood of an Englishman");
+ },
+ ["fee", "fi", "fo", "fum", "I smell the blood of an Englishman",
+ undefined],
+ "foo",
+ ["fee", "fi", "fo", "fum", "I smell the blood of an Englishman",
+ undefined]);
+
+// Access to captured free variables.
+TestGenerator(
+ function g13() {
+ return (function(a, b, c, d) {
+ return (function*() {
+ yield a; yield b; yield c; yield d;
+ })();
+ })("fee", "fi", "fo", "fum");
+ },
+ ["fee", "fi", "fo", "fum", undefined],
+ "foo",
+ ["fee", "fi", "fo", "fum", undefined]);
+
+// Abusing the arguments object.
+TestGenerator(
+ function g14() {
+ return (function*(a, b, c, d) {
+ arguments[0] = "Be he live";
+ arguments[1] = "or be he dead";
+ arguments[2] = "I'll grind his bones";
+ arguments[3] = "to make my bread";
+ yield a; yield b; yield c; yield d;
+ })("fee", "fi", "fo", "fum");
+ },
+ ["Be he live", "or be he dead", "I'll grind his bones", "to make my bread",
+ undefined],
+ "foo",
+ ["Be he live", "or be he dead", "I'll grind his bones", "to make my bread",
+ undefined]);
+
+// Abusing the arguments object: strict mode.
+TestGenerator(
+ function g15() {
+ return (function*(a, b, c, d) {
+ "use strict";
+ arguments[0] = "Be he live";
+ arguments[1] = "or be he dead";
+ arguments[2] = "I'll grind his bones";
+ arguments[3] = "to make my bread";
+ yield a; yield b; yield c; yield d;
+ })("fee", "fi", "fo", "fum");
+ },
+ ["fee", "fi", "fo", "fum", undefined],
+ "foo",
+ ["fee", "fi", "fo", "fum", undefined]);
+
+// GC.
+if (typeof gc == 'function') {
+ TestGenerator(function* g16() { yield "baz"; gc(); yield "qux"; },
+ ["baz", "qux", undefined],
+ "foo",
+ ["baz", "qux", undefined]);
+}
+
+// Receivers.
+TestGenerator(
+ function g17() {
+ function* g() { yield this.x; yield this.y; }
+ var o = { start: g, x: 1, y: 2 };
+ return o.start();
+ },
+ [1, 2, undefined],
+ "foo",
+ [1, 2, undefined]);
+
+// FIXME: Capture the generator object as "this" in new g(). Bug 907742.
+// TestGenerator(
+// function g18() {
+// function* g() { yield this.x; yield this.y; }
+// var iter = new g;
+// iter.x = 1;
+// iter.y = 2;
+// return iter;
+// },
+// [1, 2, undefined],
+// "foo",
+// [1, 2, undefined]);
+
+TestGenerator(
+ function* g19() {
+ var x = 1;
+ yield x;
+ with({x:2}) { yield x; }
+ yield x;
+ },
+ [1, 2, 1, undefined],
+ "foo",
+ [1, 2, 1, undefined]);
+
+TestGenerator(
+ function* g20() { yield (1 + (yield 2) + 3); },
+ [2, NaN, undefined],
+ "foo",
+ [2, "1foo3", undefined]);
+
+TestGenerator(
+ function* g21() { return (1 + (yield 2) + 3); },
+ [2, NaN],
+ "foo",
+ [2, "1foo3"]);
+
+TestGenerator(
+ function* g22() { yield (1 + (yield 2) + 3); yield (4 + (yield 5) + 6); },
+ [2, NaN, 5, NaN, undefined],
+ "foo",
+ [2, "1foo3", 5, "4foo6", undefined]);
+
+TestGenerator(
+ function* g23() {
+ return (yield (1 + (yield 2) + 3)) + (yield (4 + (yield 5) + 6));
+ },
+ [2, NaN, 5, NaN, NaN],
+ "foo",
+ [2, "1foo3", 5, "4foo6", "foofoo"]);
+
+// Rewind a try context with and without operands on the stack.
+TestGenerator(
+ function* g24() {
+ try {
+ return (yield (1 + (yield 2) + 3)) + (yield (4 + (yield 5) + 6));
+ } catch (e) {
+ throw e;
+ }
+ },
+ [2, NaN, 5, NaN, NaN],
+ "foo",
+ [2, "1foo3", 5, "4foo6", "foofoo"]);
+
+// Yielding in a catch context, with and without operands on the stack.
+TestGenerator(
+ function* g25() {
+ try {
+ throw (yield (1 + (yield 2) + 3))
+ } catch (e) {
+ if (typeof e == 'object') throw e;
+ return e + (yield (4 + (yield 5) + 6));
+ }
+ },
+ [2, NaN, 5, NaN, NaN],
+ "foo",
+ [2, "1foo3", 5, "4foo6", "foofoo"]);
+
+// Generator function instances.
+TestGenerator(GeneratorFunction(),
+ [undefined],
+ "foo",
+ [undefined]);
+
+TestGenerator(new GeneratorFunction(),
+ [undefined],
+ "foo",
+ [undefined]);
+
+TestGenerator(GeneratorFunction('yield 1;'),
+ [1, undefined],
+ "foo",
+ [1, undefined]);
+
+TestGenerator(
+ function() { return GeneratorFunction('x', 'y', 'yield x + y;')(1, 2) },
+ [3, undefined],
+ "foo",
+ [3, undefined]);
+
+// Access to this with formal arguments.
+TestGenerator(
+ function () {
+ return ({ x: 42, g: function* (a) { yield this.x } }).g(0);
+ },
+ [42, undefined],
+ "foo",
+ [42, undefined]);
+
+function TestTryCatch(instantiate) {
+ function* g() { yield 1; try { yield 2; } catch (e) { yield e; } yield 3; }
+ function Sentinel() {}
+
+ function Test1(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorNext(iter, 2);
+ assertIteratorNext(iter, 3);
+ assertIteratorDone(iter, undefined);
+ assertIteratorDone(iter, undefined);
+ }
+ Test1(instantiate(g));
+
+ function Test2(iter) {
+ assertThrowsInstanceOf(function() { iter.throw(new Sentinel); }, Sentinel);
+ assertIteratorDone(iter, undefined);
+ }
+ Test2(instantiate(g));
+
+ function Test3(iter) {
+ assertIteratorNext(iter, 1);
+ assertThrowsInstanceOf(function() { iter.throw(new Sentinel); }, Sentinel);
+ assertIteratorDone(iter, undefined);
+ }
+ Test3(instantiate(g));
+
+ function Test4(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorNext(iter, 2);
+ var exn = new Sentinel;
+ assertIteratorResult(iter.throw(exn), exn, false);
+ assertIteratorNext(iter, 3);
+ assertIteratorDone(iter, undefined);
+ assertIteratorDone(iter, undefined);
+ }
+ Test4(instantiate(g));
+
+ function Test5(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorNext(iter, 2);
+ var exn = new Sentinel;
+ assertIteratorResult(iter.throw(exn), exn, false);
+ assertIteratorNext(iter, 3);
+ assertThrowsInstanceOf(function() { iter.throw(new Sentinel); }, Sentinel);
+ assertIteratorDone(iter, undefined);
+
+ }
+ Test5(instantiate(g));
+
+ function Test6(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorNext(iter, 2);
+ var exn = new Sentinel;
+ assertIteratorResult(iter.throw(exn), exn, false);
+ assertThrowsInstanceOf(function() { iter.throw(new Sentinel); }, Sentinel);
+ assertIteratorDone(iter, undefined);
+ }
+ Test6(instantiate(g));
+}
+TestTryCatch(function (g) { return g(); });
+TestTryCatch(function* (g) { return yield* g(); });
+
+function TestTryFinally(instantiate) {
+ function* g() { yield 1; try { yield 2; } finally { yield 3; } yield 4; }
+ function Sentinel() {}
+ function Sentinel2() {}
+
+ function Test1(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorNext(iter, 2);
+ assertIteratorNext(iter, 3);
+ assertIteratorNext(iter, 4);
+ assertIteratorDone(iter, undefined);
+ assertIteratorDone(iter, undefined);
+ }
+ Test1(instantiate(g));
+
+ function Test2(iter) {
+ assertThrowsInstanceOf(function() { iter.throw(new Sentinel); }, Sentinel);
+ assertIteratorDone(iter, undefined);
+ }
+ Test2(instantiate(g));
+
+ function Test3(iter) {
+ assertIteratorNext(iter, 1);
+ assertThrowsInstanceOf(function() { iter.throw(new Sentinel); }, Sentinel);
+ assertIteratorDone(iter, undefined);
+ }
+ Test3(instantiate(g));
+
+ function Test4(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorNext(iter, 2);
+ assertIteratorResult(iter.throw(new Sentinel), 3, false);
+ assertThrowsInstanceOf(function() { iter.next(); }, Sentinel);
+ assertIteratorDone(iter, undefined);
+
+ }
+ Test4(instantiate(g));
+
+ function Test5(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorNext(iter, 2);
+ assertIteratorResult(iter.throw(new Sentinel), 3, false);
+ assertThrowsInstanceOf(function() { iter.throw(new Sentinel2); }, Sentinel2);
+ assertIteratorDone(iter, undefined);
+ }
+ Test5(instantiate(g));
+
+ function Test6(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorNext(iter, 2);
+ assertIteratorNext(iter, 3);
+ assertThrowsInstanceOf(function() { iter.throw(new Sentinel); }, Sentinel);
+ assertIteratorDone(iter, undefined);
+ }
+ Test6(instantiate(g));
+
+ function Test7(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorNext(iter, 2);
+ assertIteratorNext(iter, 3);
+ assertIteratorNext(iter, 4);
+ assertThrowsInstanceOf(function() { iter.throw(new Sentinel); }, Sentinel);
+ assertIteratorDone(iter, undefined);
+ }
+ Test7(instantiate(g));
+}
+TestTryFinally(function (g) { return g(); });
+TestTryFinally(function* (g) { return yield* g(); });
+
+function TestNestedTry(instantiate) {
+ function* g() {
+ try {
+ yield 1;
+ try { yield 2; } catch (e) { yield e; }
+ yield 3;
+ } finally {
+ yield 4;
+ }
+ yield 5;
+ }
+ function Sentinel() {}
+ function Sentinel2() {}
+
+ function Test1(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorNext(iter, 2);
+ assertIteratorNext(iter, 3);
+ assertIteratorNext(iter, 4);
+ assertIteratorNext(iter, 5);
+ assertIteratorDone(iter, undefined);
+ assertIteratorDone(iter, undefined);
+ }
+ Test1(instantiate(g));
+
+ function Test2(iter) {
+ assertThrowsInstanceOf(function() { iter.throw(new Sentinel); }, Sentinel);
+ assertIteratorDone(iter, undefined);
+ }
+ Test2(instantiate(g));
+
+ function Test3(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorResult(iter.throw(new Sentinel), 4, false);
+ assertThrowsInstanceOf(function() { iter.next(); }, Sentinel);
+ assertIteratorDone(iter, undefined);
+ }
+ Test3(instantiate(g));
+
+ function Test4(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorResult(iter.throw(new Sentinel), 4, false);
+ assertThrowsInstanceOf(function() { iter.throw(new Sentinel2); }, Sentinel2);
+ assertIteratorDone(iter, undefined);
+ }
+ Test4(instantiate(g));
+
+ function Test5(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorNext(iter, 2);
+ var exn = new Sentinel;
+ assertIteratorResult(iter.throw(exn), exn, false);
+ assertIteratorNext(iter, 3);
+ assertIteratorNext(iter, 4);
+ assertIteratorNext(iter, 5);
+ assertIteratorDone(iter, undefined);
+ assertIteratorDone(iter, undefined);
+
+ }
+ Test5(instantiate(g));
+
+ function Test6(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorNext(iter, 2);
+ var exn = new Sentinel;
+ assertIteratorResult(iter.throw(exn), exn, false);
+ assertIteratorResult(iter.throw(new Sentinel2), 4, false);
+ assertThrowsInstanceOf(function() { iter.next(); }, Sentinel2);
+ assertIteratorDone(iter, undefined);
+ }
+ Test6(instantiate(g));
+
+ function Test7(iter) {
+ assertIteratorNext(iter, 1);
+ assertIteratorNext(iter, 2);
+ var exn = new Sentinel;
+ assertIteratorResult(iter.throw(exn), exn, false);
+ assertIteratorNext(iter, 3);
+ assertIteratorResult(iter.throw(new Sentinel2), 4, false);
+ assertThrowsInstanceOf(function() { iter.next(); }, Sentinel2);
+ assertIteratorDone(iter, undefined);
+
+ }
+ Test7(instantiate(g));
+
+ // That's probably enough.
+}
+TestNestedTry(function (g) { return g(); });
+TestNestedTry(function* (g) { return yield* g(); });
+
+function TestRecursion() {
+ function TestNextRecursion() {
+ function* g() { yield iter.next(); }
+ var iter = g();
+ return iter.next();
+ }
+ function TestSendRecursion() {
+ function* g() { yield iter.next(42); }
+ var iter = g();
+ return iter.next();
+ }
+ function TestThrowRecursion() {
+ function* g() { yield iter.throw(1); }
+ var iter = g();
+ return iter.next();
+ }
+ assertThrowsInstanceOf(TestNextRecursion, TypeError);
+ assertThrowsInstanceOf(TestSendRecursion, TypeError);
+ assertThrowsInstanceOf(TestThrowRecursion, TypeError);
+}
+TestRecursion();
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/iterator-next-non-object.js b/js/src/tests/ecma_6/Generators/iterator-next-non-object.js
new file mode 100644
index 000000000..453f4cd87
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/iterator-next-non-object.js
@@ -0,0 +1,64 @@
+var BUGNUMBER = 1016936;
+var summary = "IteratorNext should throw if the value returned by iterator.next() is not an object.";
+
+print(BUGNUMBER + ": " + summary);
+
+var nonobjs = [
+ null,
+ undefined,
+ 1,
+ true,
+ "a",
+ Symbol.iterator,
+];
+
+function createIterable(v) {
+ var iterable = {};
+ iterable[Symbol.iterator] = function () {
+ return {
+ next: function () {
+ return v;
+ }
+ };
+ };
+ return iterable;
+}
+
+function f() {
+}
+
+for (var nonobj of nonobjs) {
+ var iterable = createIterable(nonobj);
+
+ assertThrowsInstanceOf(() => [...iterable], TypeError);
+ assertThrowsInstanceOf(() => f(...iterable), TypeError);
+
+ assertThrowsInstanceOf(() => { for (var x of iterable) {} }, TypeError);
+
+ assertThrowsInstanceOf(() => {
+ var [a] = iterable;
+ }, TypeError);
+ assertThrowsInstanceOf(() => {
+ var [...a] = iterable;
+ }, TypeError);
+
+ assertThrowsInstanceOf(() => Array.from(iterable), TypeError);
+ assertThrowsInstanceOf(() => new Map(iterable), TypeError);
+ assertThrowsInstanceOf(() => new Set(iterable), TypeError);
+ assertThrowsInstanceOf(() => new WeakMap(iterable), TypeError);
+ assertThrowsInstanceOf(() => new WeakSet(iterable), TypeError);
+ // FIXME: bug 1232266
+ // assertThrowsInstanceOf(() => new Int8Array(iterable), TypeError);
+ assertThrowsInstanceOf(() => Int8Array.from(iterable), TypeError);
+
+ assertThrowsInstanceOf(() => {
+ var g = function*() {
+ yield* iterable;
+ };
+ var v = g();
+ v.next();
+ }, TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/objects.js b/js/src/tests/ecma_6/Generators/objects.js
new file mode 100644
index 000000000..1ffdf48fa
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/objects.js
@@ -0,0 +1,49 @@
+// This file was written by Andy Wingo <wingo@igalia.com> and originally
+// contributed to V8 as generators-objects.js, available here:
+//
+// http://code.google.com/p/v8/source/browse/branches/bleeding_edge/test/mjsunit/harmony/generators-objects.js
+
+// Test aspects of the generator runtime.
+
+// Test the properties and prototype of a generator object.
+function TestGeneratorObject() {
+ function* g() { yield 1; }
+
+ var iter = g();
+ assertEq(Object.getPrototypeOf(iter), g.prototype);
+ assertTrue(iter instanceof g);
+ assertEq(String(iter), "[object Generator]");
+ assertDeepEq(Object.getOwnPropertyNames(iter), []);
+ assertNotEq(g(), iter);
+}
+TestGeneratorObject();
+
+
+// Test the methods of generator objects.
+function TestGeneratorObjectMethods() {
+ function* g() { yield 1; }
+ var iter = g();
+
+ assertEq(iter.next.length, 1);
+ assertEq(iter.return.length, 1);
+ assertEq(iter.throw.length, 1);
+
+ function TestNonGenerator(non_generator) {
+ assertThrowsInstanceOf(function() { iter.next.call(non_generator); }, TypeError);
+ assertThrowsInstanceOf(function() { iter.next.call(non_generator, 1); }, TypeError);
+ assertThrowsInstanceOf(function() { iter.return.call(non_generator, 1); }, TypeError);
+ assertThrowsInstanceOf(function() { iter.throw.call(non_generator, 1); }, TypeError);
+ assertThrowsInstanceOf(function() { iter.close.call(non_generator); }, TypeError);
+ }
+
+ TestNonGenerator(1);
+ TestNonGenerator({});
+ TestNonGenerator(function(){});
+ TestNonGenerator(g);
+ TestNonGenerator(g.prototype);
+}
+TestGeneratorObjectMethods();
+
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/return-finally.js b/js/src/tests/ecma_6/Generators/return-finally.js
new file mode 100644
index 000000000..9e4c6c8f3
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/return-finally.js
@@ -0,0 +1,309 @@
+var BUGNUMBER = 1202134;
+var summary = "Return value should not be overwritten by finally block with normal execution.";
+
+print(BUGNUMBER + ": " + summary);
+
+// ==== single ====
+
+var f, g, v;
+f = function*() {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ }
+};
+g = f();
+v = g.next();
+assertEq(v.value, 42);
+assertEq(v.done, true);
+
+f = function*() {
+ // F.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ return 43;
+ }
+};
+g = f();
+v = g.next();
+assertEq(v.value, 43);
+assertEq(v.done, true);
+
+f = function*() {
+ // F.[[type]] is throw
+ try {
+ return 42;
+ } finally {
+ throw 43;
+ }
+};
+var caught = false;
+g = f();
+try {
+ v = g.next();
+} catch (e) {
+ assertEq(e, 43);
+ caught = true;
+}
+assertEq(caught, true);
+
+f = function*() {
+ // F.[[type]] is break
+ do try {
+ return 42;
+ } finally {
+ break;
+ } while (false);
+ return 43;
+};
+g = f();
+v = g.next();
+assertEq(v.value, 43);
+assertEq(v.done, true);
+
+f = function*() {
+ // F.[[type]] is break
+ L: try {
+ return 42;
+ } finally {
+ break L;
+ }
+ return 43;
+};
+g = f();
+v = g.next();
+assertEq(v.value, 43);
+assertEq(v.done, true);
+
+f = function*() {
+ // F.[[type]] is continue
+ do try {
+ return 42;
+ } finally {
+ continue;
+ } while (false);
+ return 43;
+};
+g = f();
+v = g.next();
+assertEq(v.value, 43);
+assertEq(v.done, true);
+
+// ==== nested ====
+
+f = function*() {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ // F.[[type]] is break
+ do try {
+ return 43;
+ } finally {
+ break;
+ } while (0);
+ }
+};
+g = f();
+v = g.next();
+assertEq(v.value, 42);
+assertEq(v.done, true);
+
+f = function*() {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ // F.[[type]] is break
+ L: try {
+ return 43;
+ } finally {
+ break L;
+ }
+ }
+}
+g = f();
+v = g.next();
+assertEq(v.value, 42);
+assertEq(v.done, true);
+
+f = function*() {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ // F.[[type]] is continue
+ do try {
+ return 43;
+ } finally {
+ continue;
+ } while (0);
+ }
+};
+g = f();
+v = g.next();
+assertEq(v.value, 42);
+assertEq(v.done, true);
+
+f = function*() {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ // F.[[type]] is normal
+ // B.[[type]] is normal
+ try {
+ // F.[[type]] is throw
+ try {
+ return 43;
+ } finally {
+ throw 9;
+ }
+ } catch (e) {
+ }
+ }
+};
+g = f();
+v = g.next();
+assertEq(v.value, 42);
+assertEq(v.done, true);
+
+f = function*() {
+ // F.[[type]] is return
+ try {
+ return 41;
+ } finally {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ // F.[[type]] is break
+ do try {
+ return 43;
+ } finally {
+ break;
+ } while (0);
+ }
+ }
+};
+g = f();
+v = g.next();
+assertEq(v.value, 42);
+assertEq(v.done, true);
+
+// ==== with yield ====
+
+f = function*() {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ yield 43;
+ }
+};
+g = f();
+v = g.next();
+assertEq(v.value, 43);
+assertEq(v.done, false);
+v = g.next();
+assertEq(v.value, 42);
+assertEq(v.done, true);
+
+// ==== throw() ====
+
+f = function*() {
+ // F.[[type]] is throw
+ try {
+ return 42;
+ } finally {
+ yield 43;
+ }
+};
+caught = false;
+g = f();
+v = g.next();
+assertEq(v.value, 43);
+assertEq(v.done, false);
+try {
+ v = g.throw(44);
+} catch (e) {
+ assertEq(e, 44);
+ caught = true;
+}
+assertEq(caught, true);
+
+f = function*() {
+ // F.[[type]] is normal
+ try {
+ return 42;
+ } finally {
+ // F.[[type]] is normal
+ // B.[[type]] is throw
+ try {
+ yield 43;
+ } catch (e) {
+ }
+ }
+};
+caught = false;
+g = f();
+v = g.next();
+assertEq(v.value, 43);
+assertEq(v.done, false);
+v = g.throw(44);
+assertEq(v.value, 42);
+assertEq(v.done, true);
+
+// ==== return() ====
+
+f = function*() {
+ // F.[[type]] is return
+ try {
+ return 42;
+ } finally {
+ yield 43;
+ }
+};
+caught = false;
+g = f();
+v = g.next();
+assertEq(v.value, 43);
+assertEq(v.done, false);
+v = g.return(44);
+assertEq(v.value, 44);
+assertEq(v.done, true);
+
+f = function*() {
+ // F.[[type]] is normal
+ // B.[[type]] is return
+ try {
+ yield 42;
+ } finally {
+ // F.[[type]] is continue
+ do try {
+ return 43;
+ } finally {
+ continue;
+ } while (0);
+ }
+};
+caught = false;
+g = f();
+v = g.next();
+assertEq(v.value, 42);
+assertEq(v.done, false);
+v = g.return(44);
+assertEq(v.value, 44);
+assertEq(v.done, true);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/runtime.js b/js/src/tests/ecma_6/Generators/runtime.js
new file mode 100644
index 000000000..c4d3bb6a6
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/runtime.js
@@ -0,0 +1,132 @@
+// This file was written by Andy Wingo <wingo@igalia.com> and originally
+// contributed to V8 as generators-runtime.js, available here:
+//
+// http://code.google.com/p/v8/source/browse/branches/bleeding_edge/test/mjsunit/harmony/generators-runtime.js
+
+// Test aspects of the generator runtime.
+
+// See http://people.mozilla.org/~jorendorff/es6-draft.html#sec-15.19.3.
+
+function assertSyntaxError(str) {
+ assertThrowsInstanceOf(Function(str), SyntaxError);
+}
+
+
+function f() { }
+function* g() { yield 1; }
+var GeneratorFunctionPrototype = Object.getPrototypeOf(g);
+var GeneratorFunction = GeneratorFunctionPrototype.constructor;
+var GeneratorObjectPrototype = GeneratorFunctionPrototype.prototype;
+
+
+// A generator function should have the same set of properties as any
+// other function.
+function TestGeneratorFunctionInstance() {
+ var f_own_property_names = Object.getOwnPropertyNames(f);
+ var g_own_property_names = Object.getOwnPropertyNames(g);
+
+ f_own_property_names.sort();
+ g_own_property_names.sort();
+
+ assertDeepEq(f_own_property_names, g_own_property_names);
+ var i;
+ for (i = 0; i < f_own_property_names.length; i++) {
+ var prop = f_own_property_names[i];
+ var f_desc = Object.getOwnPropertyDescriptor(f, prop);
+ var g_desc = Object.getOwnPropertyDescriptor(g, prop);
+ assertEq(f_desc.configurable, g_desc.configurable, prop);
+ assertEq(f_desc.writable, g_desc.writable, prop);
+ assertEq(f_desc.enumerable, g_desc.enumerable, prop);
+ }
+}
+TestGeneratorFunctionInstance();
+
+
+// Generators have an additional object interposed in the chain between
+// themselves and Function.prototype.
+function TestGeneratorFunctionPrototype() {
+ // Sanity check.
+ assertEq(Object.getPrototypeOf(f), Function.prototype);
+ assertNotEq(GeneratorFunctionPrototype, Function.prototype);
+ assertEq(Object.getPrototypeOf(GeneratorFunctionPrototype),
+ Function.prototype);
+ assertEq(Object.getPrototypeOf(function* () {}),
+ GeneratorFunctionPrototype);
+}
+TestGeneratorFunctionPrototype();
+
+
+// Functions that we associate with generator objects are actually defined by
+// a common prototype.
+function TestGeneratorObjectPrototype() {
+ // %GeneratorPrototype% must inherit from %IteratorPrototype%.
+ var iterProto = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));
+ assertEq(Object.getPrototypeOf(GeneratorObjectPrototype),
+ iterProto);
+ assertEq(Object.getPrototypeOf((function*(){yield 1}).prototype),
+ GeneratorObjectPrototype);
+
+ var expected_property_names = ["next", "return", "throw", "constructor"];
+ var found_property_names =
+ Object.getOwnPropertyNames(GeneratorObjectPrototype);
+
+ expected_property_names.sort();
+ found_property_names.sort();
+
+ assertDeepEq(found_property_names, expected_property_names);
+ assertDeepEq(Object.getOwnPropertySymbols(GeneratorObjectPrototype), [Symbol.toStringTag]);
+}
+TestGeneratorObjectPrototype();
+
+
+// This tests the object that would be called "GeneratorFunction", if it were
+// like "Function".
+function TestGeneratorFunction() {
+ assertEq(GeneratorFunctionPrototype, GeneratorFunction.prototype);
+ assertTrue(g instanceof GeneratorFunction);
+
+ assertEq(Function, Object.getPrototypeOf(GeneratorFunction));
+ assertTrue(g instanceof Function);
+
+ assertEq("function* g() { yield 1; }", g.toString());
+
+ // Not all functions are generators.
+ assertTrue(f instanceof Function); // Sanity check.
+ assertFalse(f instanceof GeneratorFunction);
+
+ assertTrue((new GeneratorFunction()) instanceof GeneratorFunction);
+ assertTrue(GeneratorFunction() instanceof GeneratorFunction);
+
+ assertTrue(GeneratorFunction('yield 1') instanceof GeneratorFunction);
+ assertTrue(GeneratorFunction('return 1') instanceof GeneratorFunction);
+ assertTrue(GeneratorFunction('a', 'yield a') instanceof GeneratorFunction);
+ assertTrue(GeneratorFunction('a', 'return a') instanceof GeneratorFunction);
+ assertTrue(GeneratorFunction('a', 'return a') instanceof GeneratorFunction);
+ assertSyntaxError("GeneratorFunction('yield', 'return yield')");
+ assertTrue(GeneratorFunction('with (x) return foo;') instanceof GeneratorFunction);
+ assertSyntaxError("GeneratorFunction('\"use strict\"; with (x) return foo;')");
+
+ // Doesn't matter particularly what string gets serialized, as long
+ // as it contains "function*" and "yield 10".
+ assertEq(GeneratorFunction('yield 10').toString(),
+ "function* anonymous() {\nyield 10\n}");
+}
+TestGeneratorFunction();
+
+
+function TestPerGeneratorPrototype() {
+ assertNotEq((function*(){}).prototype, (function*(){}).prototype);
+ assertNotEq((function*(){}).prototype, g.prototype);
+ assertEq(typeof GeneratorFunctionPrototype, "object");
+ assertEq(g.prototype.__proto__.constructor, GeneratorFunctionPrototype, "object");
+ assertEq(Object.getPrototypeOf(g.prototype), GeneratorObjectPrototype);
+ assertFalse(g.prototype instanceof Function);
+ assertEq(typeof (g.prototype), "object");
+
+ assertDeepEq(Object.getOwnPropertyNames(g.prototype), []);
+}
+TestPerGeneratorPrototype();
+
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/shell.js b/js/src/tests/ecma_6/Generators/shell.js
new file mode 100644
index 000000000..db15c606c
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/shell.js
@@ -0,0 +1,17 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+function assertFalse(a) { assertEq(a, false) }
+function assertTrue(a) { assertEq(a, true) }
+function assertNotEq(found, not_expected) { assertFalse(found === expected) }
+function assertIteratorResult(result, value, done) {
+ assertDeepEq(result.value, value);
+ assertEq(result.done, done);
+}
+function assertIteratorNext(iter, value) {
+ assertIteratorResult(iter.next(), value, false);
+}
+function assertIteratorDone(iter, value) {
+ assertIteratorResult(iter.next(), value, true);
+}
diff --git a/js/src/tests/ecma_6/Generators/syntax.js b/js/src/tests/ecma_6/Generators/syntax.js
new file mode 100644
index 000000000..b2fec3bcc
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/syntax.js
@@ -0,0 +1,140 @@
+// This file was written by Andy Wingo <wingo@igalia.com> and originally
+// contributed to V8 as generators-parsing.js, available here:
+//
+// http://code.google.com/p/v8/source/browse/branches/bleeding_edge/test/mjsunit/harmony/generators-parsing.js
+
+function assertSyntaxError(str) {
+ var msg;
+ var evil = eval;
+ try {
+ // Non-direct eval.
+ evil(str);
+ } catch (exc) {
+ if (exc instanceof SyntaxError)
+ return;
+ msg = "Assertion failed: expected SyntaxError, got " + exc;
+ }
+ if (msg === undefined)
+ msg = "Assertion failed: expected SyntaxError, but no exception thrown";
+ throw new Error(msg + " - " + str);
+}
+
+// Yield statements.
+function* g() { yield 3; yield 4; }
+
+// Yield expressions.
+function* g() { (yield 3) + (yield 4); }
+
+// Yield without a RHS.
+function* g() { yield; }
+function* g() { yield }
+function* g() {
+ yield
+}
+function* g() { (yield) }
+function* g() { [yield] }
+function* g() { {yield} }
+function* g() { (yield), (yield) }
+function* g() { yield; yield }
+function* g() { (yield) ? yield : yield }
+function* g() {
+ (yield)
+ ? yield
+ : yield
+}
+
+// If yield has a RHS, it needs to start on the same line. The * in a
+// yield* counts as starting the RHS.
+function* g() {
+ yield *
+ foo
+}
+assertThrows("function* g() { yield\n* foo }", SyntaxError);
+assertIteratorNext(function*(){
+ yield
+ 3
+ }(), undefined)
+
+// A YieldExpression is not a LogicalORExpression.
+assertThrows("function* g() { yield ? yield : yield }", SyntaxError);
+
+// You can have a generator in strict mode.
+function* g() { "use strict"; yield 3; yield 4; }
+
+// Generators can have return statements also, which internally parse to a kind
+// of yield expression.
+function* g() { yield 1; return; }
+function* g() { yield 1; return 2; }
+function* g() { yield 1; return 2; yield "dead"; }
+
+// Generator expression.
+(function* () { yield 3; });
+
+// Named generator expression.
+(function* g() { yield 3; });
+
+// Generators do not have to contain yield expressions.
+function* g() { }
+
+// YieldExpressions can occur in the RHS of a YieldExpression.
+function* g() { yield yield 1; }
+function* g() { yield 3 + (yield 4); }
+
+// Generator definitions with a name of "yield" are not specifically ruled out
+// by the spec, as the `yield' name is outside the generator itself. However,
+// in strict-mode, "yield" is an invalid identifier.
+function* yield() { (yield 3) + (yield 4); }
+assertSyntaxError("function* yield() { 'use strict'; (yield 3) + (yield 4); }");
+
+// In classic mode, yield is a normal identifier, outside of generators.
+function yield(yield) { yield: yield (yield + yield (0)); }
+
+// Yield is always valid as a key in an object literal.
+({ yield: 1 });
+function* g() { yield ({ yield: 1 }) }
+function* g() { yield ({ get yield() { return 1; }}) }
+
+// Yield is a valid property name.
+function* g(obj) { yield obj.yield; }
+
+// Checks that yield is a valid label in classic mode, but not valid in a strict
+// mode or in generators.
+function f() { yield: 1 }
+assertSyntaxError("function f() { 'use strict'; yield: 1 }")
+assertSyntaxError("function* g() { yield: 1 }")
+
+// Yield is only a keyword in the body of the generator, not in nested
+// functions.
+function* g() { function f(yield) { yield (yield + yield (0)); } }
+
+// Yield in a generator is not an identifier.
+assertSyntaxError("function* g() { yield = 10; }");
+
+// Yield binds very loosely, so this parses as "yield (3 + yield 4)", which is
+// invalid.
+assertSyntaxError("function* g() { yield 3 + yield 4; }");
+
+// Yield is still a future-reserved-word in strict mode
+assertSyntaxError("function f() { 'use strict'; var yield = 13; }");
+
+// The name of the NFE isn't let-bound in F/G, so this is valid.
+function f() { (function yield() {}); }
+function* g() { (function yield() {}); }
+
+// The name of the NFE is let-bound in the function/generator expression, so this is invalid.
+assertSyntaxError("function f() { (function* yield() {}); }");
+assertSyntaxError("function* g() { (function* yield() {}); }");
+
+// The name of the declaration is let-bound in F, so this is valid.
+function f() { function yield() {} }
+function f() { function* yield() {} }
+
+// The name of the declaration is let-bound in G, so this is invalid.
+assertSyntaxError("function* g() { function yield() {} }");
+assertSyntaxError("function* g() { function* yield() {} }");
+
+// In generators, yield is invalid as a formal argument name.
+assertSyntaxError("function* g(yield) { yield (10); }");
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/yield-non-regexp.js b/js/src/tests/ecma_6/Generators/yield-non-regexp.js
new file mode 100644
index 000000000..d9fbcd359
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/yield-non-regexp.js
@@ -0,0 +1,16 @@
+var BUGNUMBER = 1099956;
+var summary =
+ "The token next to yield should be tokenized as non-operand if yield is " +
+ "a valid name";
+
+printBugNumber(BUGNUMBER);
+printStatus(summary);
+
+var yield = 12, a = 3, b = 6, g = 2;
+var yieldParsedAsIdentifier = false;
+
+yield /a; yieldParsedAsIdentifier = true; b/g;
+
+assertEq(yieldParsedAsIdentifier, true);
+
+reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Generators/yield-star-iterator-primitive.js b/js/src/tests/ecma_6/Generators/yield-star-iterator-primitive.js
new file mode 100644
index 000000000..90d9e7578
--- /dev/null
+++ b/js/src/tests/ecma_6/Generators/yield-star-iterator-primitive.js
@@ -0,0 +1,31 @@
+var BUGNUMBER = 1021835;
+var summary = "Returning non-object from @@iterator should throw";
+
+print(BUGNUMBER + ": " + summary);
+
+let primitives = [
+ 1,
+ true,
+ undefined,
+ null,
+ "foo",
+ Symbol.iterator
+];
+
+for (let primitive of primitives) {
+ let obj = {
+ [Symbol.iterator]() {
+ return primitive;
+ }
+ };
+ assertThrowsInstanceOf(() => {
+ function* g() {
+ yield* obj;
+ }
+ for (let x of g()) {
+ }
+ }, TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-eval.js b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-eval.js
new file mode 100644
index 000000000..9f4e4d7fe
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-eval.js
@@ -0,0 +1,51 @@
+var log = "";
+
+function f() {
+ log += g();
+ function g() { return "outer-g"; }
+
+ var o = { g: function () { return "with-g"; } };
+ with (o) {
+ // Annex B.3.3.3 says g should be set on the nearest VariableEnvironment,
+ // and so should not change o.g.
+ eval(`{
+ function g() { return "eval-g"; }
+ }`);
+ }
+
+ log += g();
+ log += o.g();
+}
+
+f();
+
+function h() {
+ eval(`
+ // Should return true, as var bindings introduced by eval are configurable.
+ log += (delete q);
+ {
+ function q() { log += "q"; }
+ // Should return false, as lexical bindings introduced by eval are not
+ // configurable.
+ log += (delete q);
+ }
+ `);
+ return q;
+}
+
+h()();
+
+function f2() {
+ // Should not throw, just simply not synthesize an Annex B var in the eval
+ // because there's an outer const.
+ eval("{ function a() {} }");
+ const a = 1;
+}
+
+function f3() {
+ // As above, but for let.
+ eval("{ function a() {} }");
+ let a;
+}
+
+reportCompare(log, "outer-geval-gwith-gtruefalseq");
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-generators.js b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-generators.js
new file mode 100644
index 000000000..dbef82bcf
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-generators.js
@@ -0,0 +1,26 @@
+// Tests by André Bargull <andrebargull@googlemail.com>
+
+// Annex B.3.3.1
+function f1() {
+ { function* g() {} }
+ assertEq(typeof g, "undefined");
+}
+f1();
+
+// Annex B.3.3.2
+{ function* g() {} }
+assertEq(typeof g, "undefined");
+
+// Annex B.3.3.3
+function f2() {
+ eval("{ function* g() {} }");
+ assertEq(typeof g, "undefined");
+}
+f2();
+
+// Annex B.3.3.3
+eval("{ function* g() {} }");
+assertEq(typeof g, "undefined");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-if.js b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-if.js
new file mode 100644
index 000000000..ce63aeeea
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-if.js
@@ -0,0 +1,42 @@
+var log = "";
+
+function f(x) {
+ if (x)
+ function g() { return "g0"; }
+ else
+ function g() { return "g1"; }
+
+ log += g();
+
+ if (x)
+ function g() { return "g2"; }
+ else {
+ }
+
+ log += g();
+
+ if (x) {
+ } else
+ function g() { return "g3"; }
+
+ log += g();
+
+ if (x)
+ function g() { return "g4"; }
+
+ log += g();
+}
+
+f(true);
+f(false);
+
+try {
+ eval(`
+ if (1)
+ l: function foo() {}
+ `);
+} catch (e) {
+ log += "e";
+}
+
+reportCompare(log, "g0g2g2g4g1g1g3g3e");
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-label.js b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-label.js
new file mode 100644
index 000000000..0fe9f45fc
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-label.js
@@ -0,0 +1,43 @@
+function expectSyntaxError(str) {
+ var threwSyntaxError;
+ try {
+ eval(str);
+ } catch (e) {
+ threwSyntaxError = e instanceof SyntaxError;
+ }
+ assertEq(threwSyntaxError, true);
+
+ try {
+ eval('"use strict";' + str);
+ } catch (e) {
+ threwSyntaxError = e instanceof SyntaxError;
+ }
+ assertEq(threwSyntaxError, true);
+}
+
+function expectSloppyPass(str) {
+ eval(str);
+
+ try {
+ eval('"use strict";' + str);
+ } catch (e) {
+ threwSyntaxError = e instanceof SyntaxError;
+ }
+ assertEq(threwSyntaxError, true);
+}
+
+expectSloppyPass(`l: function f1() {}`);
+expectSloppyPass(`l0: l: function f1() {}`);
+expectSloppyPass(`{ f1(); l: function f1() {} }`);
+expectSloppyPass(`{ f1(); l0: l: function f1() {} }`);
+expectSloppyPass(`{ f1(); l: function f1() { return 42; } } assertEq(f1(), 42);`);
+expectSloppyPass(`eval("fe(); l: function fe() {}")`);
+expectSyntaxError(`if (1) l: function f2() {}`);
+expectSyntaxError(`if (1) {} else l: function f3() {}`);
+expectSyntaxError(`do l: function f4() {} while (0)`);
+expectSyntaxError(`while (0) l: function f5() {}`);
+expectSyntaxError(`for (;;) l: function f6() {}`);
+expectSloppyPass(`switch (1) { case 1: l: function f7() {} }`);
+expectSloppyPass(`switch (1) { case 1: assertEq(f8(), 'f8'); case 2: l: function f8() { return 'f8'; } } assertEq(f8(), 'f8');`);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-property.js b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-property.js
new file mode 100644
index 000000000..a295de508
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-property.js
@@ -0,0 +1,18 @@
+// |reftest| skip-if(!xulRuntime.shell)
+
+// Define a global getter without a setter.
+Object.defineProperty(this, "x", {
+ get: function () { return "get-x"; },
+ configurable: true
+});
+
+// Simulate loading a 2nd script with evaluate, else we would DEFVAR the x and
+// the above defineProperty would fail in trying to redefine a non-configurable
+// property on the global.
+evaluate(`{
+ function x() { return "fun-x"; }
+}`);
+
+// Annex B is supposed to be like an assignment. Should not blow away the
+// existing setter-less getter.
+reportCompare(x, "get-x");
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-same-name.js b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-same-name.js
new file mode 100644
index 000000000..b89f91c59
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-same-name.js
@@ -0,0 +1,7 @@
+{
+ function f() { return "inner"; }
+}
+
+function f() { return "outer"; }
+
+reportCompare(f(), "inner");
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-with.js b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-with.js
new file mode 100644
index 000000000..d9bdd98dc
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b-with.js
@@ -0,0 +1,18 @@
+var o = { f: "string-f" };
+with (o) {
+ var desc = Object.getOwnPropertyDescriptor(this, "f");
+ assertEq(desc.value, undefined);
+ assertEq(desc.writable, true);
+ assertEq(desc.enumerable, true);
+ assertEq(desc.configurable, false);
+ function f() {
+ return "fun-f";
+ }
+}
+
+// Annex B explicitly assigns to the nearest VariableEnvironment, so the
+// with-object "o" should have its property unchanged.
+assertEq(o.f, "string-f");
+assertEq(f(), "fun-f");
+
+reportCompare(true, true)
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b.js b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b.js
new file mode 100644
index 000000000..16c40774c
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-annex-b.js
@@ -0,0 +1,31 @@
+var log = "";
+
+log += typeof f;
+
+{
+ log += f();
+
+ function f() {
+ return "f1";
+ }
+}
+
+log += f();
+
+function g() {
+ log += typeof h;
+
+ {
+ log += h();
+
+ function h() {
+ return "h1";
+ }
+ }
+
+ log += h();
+}
+
+g();
+
+reportCompare(log, "undefinedf1f1undefinedh1h1");
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-deprecated-redecl.js b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-deprecated-redecl.js
new file mode 100644
index 000000000..af32be5d3
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-deprecated-redecl.js
@@ -0,0 +1,78 @@
+{
+ assertEq(f(), 4);
+ function f() { return 3; }
+ assertEq(f(), 4);
+ function f() { return 4; }
+ assertEq(f(), 4);
+}
+
+// Annex B still works.
+assertEq(f(), 4);
+
+// The same thing with labels.
+{
+ assertEq(f(), 4);
+ function f() { return 3; }
+ assertEq(f(), 4);
+ l: function f() { return 4; }
+ assertEq(f(), 4);
+}
+
+// Annex B still works.
+assertEq(f(), 4);
+
+function test() {
+ {
+ assertEq(f(), 2);
+ function f() { return 1; }
+ assertEq(f(), 2);
+ function f() { return 2; }
+ assertEq(f(), 2);
+ }
+
+ // Annex B still works.
+ assertEq(f(), 2);
+}
+
+test();
+
+var log = '';
+
+try {
+ // Strict mode still cannot redeclare.
+ eval(`"use strict";
+ {
+ function f() { }
+ function f() { }
+ }`);
+} catch (e) {
+ assertEq(e instanceof SyntaxError, true);
+ log += 'e';
+}
+
+try {
+ // Redeclaring an explicitly 'let'-declared binding doesn't work.
+ eval(`{
+ let x = 42;
+ function x() {}
+ }`);
+} catch (e) {
+ assertEq(e instanceof SyntaxError, true);
+ log += 'e';
+}
+
+try {
+ // Redeclaring an explicitly 'const'-declared binding doesn't work.
+ eval(`{
+ const x = 42;
+ function x() {}
+ }`);
+} catch (e) {
+ assertEq(e instanceof SyntaxError, true);
+ log += 'e';
+}
+
+assertEq(log, 'eee');
+
+if ('reportCompare' in this)
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-hoisted-tdz.js b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-hoisted-tdz.js
new file mode 100644
index 000000000..e5f9baf44
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-hoisted-tdz.js
@@ -0,0 +1,30 @@
+var log = "";
+try {
+ (function() {
+ {
+ let y = f();
+ function f() { y; }
+ }
+ })()
+} catch (e) {
+ log += e instanceof ReferenceError;
+}
+
+try {
+ function f() {
+ switch (1) {
+ case 0:
+ let x;
+ case 1:
+ (function() { x; })();
+ }
+ }
+ f();
+} catch (e) {
+ log += e instanceof ReferenceError;
+}
+
+assertEq(log, "truetrue");
+
+if ("reportCompare" in this)
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-strict.js b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-strict.js
new file mode 100644
index 000000000..2b780d7dd
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/block-scoped-functions-strict.js
@@ -0,0 +1,45 @@
+"use strict"
+
+var log = "";
+
+function f() {
+ return "f0";
+}
+
+log += f();
+
+{
+ log += f();
+
+ function f() {
+ return "f1";
+ }
+
+ log += f();
+}
+
+log += f();
+
+function g() {
+ function h() {
+ return "h0";
+ }
+
+ log += h();
+
+ {
+ log += h();
+
+ function h() {
+ return "h1";
+ }
+
+ log += h();
+ }
+
+ log += h();
+}
+
+g();
+
+reportCompare(log, "f0f1f1f0h0h1h1h0");
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/browser.js b/js/src/tests/ecma_6/LexicalEnvironment/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/browser.js
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/bug-1216623.js b/js/src/tests/ecma_6/LexicalEnvironment/bug-1216623.js
new file mode 100644
index 000000000..cbdbe9722
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/bug-1216623.js
@@ -0,0 +1,19 @@
+// Scoping in the head of for(let;;) statements.
+
+let x = 0;
+for (let i = 0, a = () => i; i < 4; i++) {
+ assertEq(i, x++);
+ assertEq(a(), 0);
+}
+assertEq(x, 4);
+
+x = 11;
+let q = 0;
+for (let {[++q]: r} = [0, 11, 22], s = () => r; r < 13; r++) {
+ assertEq(r, x++);
+ assertEq(s(), 11);
+}
+assertEq(x, 13);
+assertEq(q, 1);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/catch-body.js b/js/src/tests/ecma_6/LexicalEnvironment/catch-body.js
new file mode 100644
index 000000000..43b9d2bfe
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/catch-body.js
@@ -0,0 +1,19 @@
+function f() {
+ var probeParam, probeBlock;
+ let x = 'outside';
+
+ try {
+ throw [];
+ } catch ([_ = probeParam = function() { return x; }]) {
+ probeBlock = function() { return x; };
+ let x = 'inside';
+ }
+
+ assertEq(probeBlock(), 'inside');
+ assertEq(probeParam(), 'outside');
+}
+
+f();
+
+if (typeof reportCompare === 'function')
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/const-declaration-in-for-loop.js b/js/src/tests/ecma_6/LexicalEnvironment/const-declaration-in-for-loop.js
new file mode 100644
index 000000000..4001220ba
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/const-declaration-in-for-loop.js
@@ -0,0 +1,88 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "const-declaration-in-for-loop.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1146644;
+var summary =
+ "Don't crash compiling a non-body-level for-loop whose loop declaration is " +
+ "a const";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// Don't attempt execution as a script if we can't properly emulate it. We
+// could perhaps use eval, but eval, while also doing global execution, is its
+// own can of messiness. Ongoing work on for-loop scoping for lexical
+// declarations will likely make these tests redundant with other tests to be
+// added, anyway, in the very short term.
+var executeGlobalScript = typeof evaluate === "function"
+ ? evaluate
+ : function(s) {};
+
+for (const a1 = 3; false; )
+ continue;
+
+Function(`for (const a2 = 3; false; )
+ continue;
+ `)();
+
+if (true)
+{
+ for (const a3 = 3; false; )
+ continue;
+}
+
+Function(`if (true)
+ {
+ for (const a4 = 3; false; )
+ continue;
+ }`)();
+
+executeGlobalScript(`for (const a5 of [])
+ continue;`);
+
+Function(`for (const a6 of [])
+ continue;`)();
+
+executeGlobalScript(`if (true)
+ {
+ for (const a7 of [])
+ continue;
+ }`);
+
+Function(`if (true)
+ {
+ for (const a8 of [])
+ continue;
+ }`)();
+
+executeGlobalScript(`for (const a9 in {})
+ continue;`);
+
+Function(`for (const a10 in {})
+ continue;`)();
+
+executeGlobalScript(`if (true)
+ {
+ for (const a11 in {})
+ continue;
+ }`);
+
+Function(`if (true)
+ {
+ for (const a12 in {})
+ continue;
+ }`)();
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/eval-has-lexical-environment.js b/js/src/tests/ecma_6/LexicalEnvironment/eval-has-lexical-environment.js
new file mode 100644
index 000000000..16ffb06d1
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/eval-has-lexical-environment.js
@@ -0,0 +1,45 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "eval-has-lexical-environment.js"
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1193583;
+var summary =
+ "Eval always has a lexical environment";
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+eval(`
+let foo = 42;
+const kay = foo;
+var bar = 84;
+function f() {
+ return foo + kay;
+}
+ `);
+
+(1, eval)(`
+let foo2 = 42;
+const kay2 = foo2;
+`);
+
+// Lexical declarations should not have escaped eval.
+assertEq(typeof foo, "undefined");
+assertEq(typeof kay, "undefined");
+assertEq(typeof foo2, "undefined");
+assertEq(typeof kay2, "undefined");
+
+// Eval'd functions can close over lexical bindings.
+assertEq(f(), 84);
+
+// Var can escape direct eval.
+assertEq(bar, 84);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/eval-nondefinable-function.js b/js/src/tests/ecma_6/LexicalEnvironment/eval-nondefinable-function.js
new file mode 100644
index 000000000..bd5dcf797
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/eval-nondefinable-function.js
@@ -0,0 +1,10 @@
+try {
+ eval("var shouldNotBeDefined1; function NaN(){}; var shouldNotBeDefined2;");
+} catch (e) {
+}
+
+assertEq(Object.getOwnPropertyDescriptor(this, 'shouldNotBeDefined2'), undefined);
+assertEq(Object.getOwnPropertyDescriptor(this, 'shouldNotBeDefined1'), undefined);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/for-loop-with-bindings-added-at-runtime.js b/js/src/tests/ecma_6/LexicalEnvironment/for-loop-with-bindings-added-at-runtime.js
new file mode 100644
index 000000000..f6abf3d0c
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/for-loop-with-bindings-added-at-runtime.js
@@ -0,0 +1,125 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "for-loop-with-bindings-added-at-runtime.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1149797;
+var summary =
+ "Don't assert when freshening the scope chain for a for-loop whose head " +
+ "contains a lexical declaration, where the loop body might add more " +
+ "bindings at runtime";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+for (let x = 0; x < 9; ++x)
+ eval("var y");
+
+{
+ for (let x = 0; x < 9; ++x)
+ eval("var y");
+}
+
+function f1()
+{
+ for (let x = 0; x < 9; ++x)
+ eval("var y");
+}
+f1();
+
+function f2()
+{
+ {
+ for (let x = 0; x < 9; ++x)
+ eval("var y");
+ }
+}
+f2();
+
+for (let x = 0; x < 9; ++x)
+{
+ // deliberately inside a block statement
+ eval("var y");
+}
+
+{
+ for (let x = 0; x < 9; ++x)
+ {
+ // deliberately inside a block statement
+ eval("var y");
+ }
+}
+
+function g1()
+{
+ for (let x = 0; x < 9; ++x)
+ {
+ // deliberately inside a block statement
+ eval("var y");
+ }
+}
+g1();
+
+function g2()
+{
+ {
+ for (let x = 0; x < 9; ++x)
+ {
+ // deliberately inside a block statement
+ eval("var y");
+ }
+ }
+}
+g2();
+
+for (let x = 0; x < 9; ++x) {
+ (function() {
+ eval("var y");
+ })();
+}
+
+{
+ for (let x = 0; x < 9; ++x)
+ {
+ // deliberately inside a block statement
+ (function() {
+ eval("var y");
+ })();
+ }
+}
+
+function h1()
+{
+ for (let x = 0; x < 9; ++x)
+ {
+ // deliberately inside a block statement
+ (function() {
+ eval("var y");
+ })();
+ }
+}
+h1();
+
+function h2()
+{
+ {
+ for (let x = 0; x < 9; ++x)
+ {
+ // deliberately inside a block statement
+ (function() { eval("var y"); })();
+ }
+ }
+}
+h2();
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/for-loop.js b/js/src/tests/ecma_6/LexicalEnvironment/for-loop.js
new file mode 100644
index 000000000..60e3799d6
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/for-loop.js
@@ -0,0 +1,121 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "for-loop.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 985733;
+var summary =
+ "ES6 for-loop semantics for for(;;) loops whose heads contain lexical "
+ "declarations";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function isError(code, type)
+{
+ try
+ {
+ Function(code);
+ throw new Error("didn't throw");
+ }
+ catch (e)
+ {
+ assertEq(e instanceof type, true,
+ "unexpected error for `" + code + "`: got " + e);
+ }
+}
+
+function isOK(code)
+{
+ Function(code);
+}
+
+isError("for (const x; ; ) ;", SyntaxError);
+isError("for (const x = 5, y; ; ) ;", SyntaxError);
+isError("for (const [z]; ; ) ;", SyntaxError);
+//isError("for (const [z, z]; ; ) ;", SyntaxError);
+//isError("for (const [z, z] = [0, 1]; ; ) ;", SyntaxError);
+
+isOK("for (let x; ; ) ;");
+isOK("for (let x = 5, y; ; ) ;");
+
+// I'm fairly sure this is supposed to work: the negative-lookahead rules in
+// IterationStatement ensure that |for (let| *always* is a loop header starting
+// with a lexical declaration. But I'm not 100% certain, so these tests might
+// need to be fixed when we implement the negative-lookahead restrictions.
+isOK("for (let [z] = [3]; ; ) ;");
+isError("for (let [z, z]; ; ) ;", SyntaxError); // because missing initializer
+
+isError("for (let [z, z] = [0, 1]; ; ) ;", SyntaxError);
+
+// A for-loop with lexical declarations, with a mixture of bindings that are and
+// aren't aliased. (The mixture stress-tests any code that incorrectly assumes
+// all bindings are aliased.)
+var funcs = [];
+for (let [i, j, k] = [0, 1, 2]; i < 10; i++)
+ funcs.push(() => i);
+
+assertEq(funcs[0](), 0);
+assertEq(funcs[1](), 1);
+assertEq(funcs[2](), 2);
+assertEq(funcs[3](), 3);
+assertEq(funcs[4](), 4);
+assertEq(funcs[5](), 5);
+assertEq(funcs[6](), 6);
+assertEq(funcs[7](), 7);
+assertEq(funcs[8](), 8);
+assertEq(funcs[9](), 9);
+
+var outer = "OUTER V IGNORE";
+var save;
+for (let outer = (save = function() { return outer; }); ; )
+ break;
+assertEq(save(), save);
+
+var funcs = [];
+function t(i, name, expect)
+{
+ assertEq(funcs[i].name, name);
+ assertEq(funcs[i](), expect);
+}
+
+if (save() !== "OUTER V IGNORE")
+{
+ var v = "OUTER V IGNORE";
+ var i = 0;
+ for (let v = (funcs.push(function init() { return v; }),
+ 0);
+ v = (funcs.push(function test() { return v; }),
+ v + 1);
+ v = (funcs.push(function incr() { return v; }),
+ v + 1))
+ {
+ v = (funcs.push(function body() { return v; }),
+ v + 1);
+ i++;
+ if (i >= 3)
+ break;
+ }
+ t(0, "init", 0);
+ t(1, "test", 2);
+ t(2, "body", 2);
+ t(3, "incr", 5);
+ t(4, "test", 5);
+ t(5, "body", 5);
+ t(6, "incr", 8);
+ t(7, "test", 8);
+ t(8, "body", 8);
+ assertEq(funcs.length, 9);
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/implicit-this-in-with.js b/js/src/tests/ecma_6/LexicalEnvironment/implicit-this-in-with.js
new file mode 100644
index 000000000..7c112e244
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/implicit-this-in-with.js
@@ -0,0 +1,18 @@
+// Test that callees that resolve to bindings on the global object or the
+// global lexical environment get an 'undefined' this inside with scopes.
+
+let g = function () { "use strict"; assertEq(this, undefined); }
+function f() { "use strict"; assertEq(this, undefined); }
+
+with ({}) {
+ // f is resolved on the global object
+ f();
+ // g is resolved on the global lexical environment
+ g();
+}
+
+f();
+g();
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/nondefinable-function-same-script.js b/js/src/tests/ecma_6/LexicalEnvironment/nondefinable-function-same-script.js
new file mode 100644
index 000000000..5d569fe4a
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/nondefinable-function-same-script.js
@@ -0,0 +1,24 @@
+// |reftest| skip-if(!xulRuntime.shell)
+
+function assertEvaluateAndIndirectEvalThrows(str) {
+ assertThrowsInstanceOf(() => evaluate(str), TypeError);
+ assertThrowsInstanceOf(() => (1,eval)(str), TypeError);
+}
+
+// Regular vars
+assertEvaluateAndIndirectEvalThrows(`var NaN; function NaN() {}`);
+
+// for-of vars
+assertEvaluateAndIndirectEvalThrows(`for (var NaN of []); function NaN() {}`);
+
+// Annex B.3.3 synthesized vars
+assertEvaluateAndIndirectEvalThrows(`{ function NaN() {} } function NaN() {}`);
+
+// Non-data properties
+Object.defineProperty(this, 'foo', { set: function() {} });
+assertEvaluateAndIndirectEvalThrows(`var foo; function foo() {}`);
+assertEvaluateAndIndirectEvalThrows(`for (var foo of []); function foo() {}`);
+assertEvaluateAndIndirectEvalThrows(`{ function foo() {} } function foo() {}`);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/redeclaring-global-properties.js b/js/src/tests/ecma_6/LexicalEnvironment/redeclaring-global-properties.js
new file mode 100644
index 000000000..7fb2f82db
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/redeclaring-global-properties.js
@@ -0,0 +1,64 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs evaluate
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+// Attempting to lexically redefine a var is a syntax error.
+evaluate("var a;");
+assertThrowsInstanceOf(() => evaluate("let a;"), SyntaxError);
+
+// Attempting to lexically redefine a configurable global property that's not a
+// var is okay.
+this.b = 42;
+assertEq(b, 42);
+evaluate("let b = 17;");
+assertEq(b, 17);
+
+// Attempting to lexically redefine a configurable global property that wasn't
+// a var initially but was later declared as one, isn't okay.
+this.c = 8675309;
+assertEq(c, 8675309);
+evaluate("var c;");
+assertThrowsInstanceOf(() => evaluate("let c;"), SyntaxError);
+
+// Attempting to lexically redefine a var added by eval code isn't okay.
+assertEq(typeof d, "undefined");
+eval("var d = 33;");
+assertEq(d, 33);
+assertThrowsInstanceOf(() => evaluate("let d;"), SyntaxError);
+
+// Attempting to lexically redefine a var added by eval code, then deleted *as a
+// name*, is okay. (The |var| will add the name to the global environment
+// record's [[VarNames]], but deletion will go through the global environment
+// record's DeleteBinding and so will remove it.)
+assertEq(typeof e, "undefined");
+eval("var e = 'ohia';");
+assertEq(e, "ohia");
+delete e;
+assertEq(this.hasOwnProperty("e"), false);
+evaluate("let e = 3.141592654;");
+assertEq(e, 3.141592654);
+
+// Attempting to lexically redefine a var added by eval code, then deleted *as a
+// property*, isn't okay. (Deletion by property doesn't go through the global
+// environment record's DeleteBinding algorithm, and so the name isn't removed
+// from [[VarNames]].) And it remains non-okay even if the var is subsequently
+// deleted as a name, because if the property doesn't exist, it's not removed
+// from [[VarNames]]. But if we add the global property again and then delete
+// by name, it *will* get removed from [[VarNames]].
+assertEq(typeof f, "undefined");
+eval("var f = 8675309;");
+assertEq(f, 8675309);
+delete this.f;
+assertEq(this.hasOwnProperty("f"), false);
+assertThrowsInstanceOf(() => evaluate("let f;"), SyntaxError);
+delete f;
+assertThrowsInstanceOf(() => evaluate("let f;"), SyntaxError);
+this.f = 999;
+assertThrowsInstanceOf(() => evaluate("let f;"), SyntaxError);
+delete f;
+evaluate("let f;");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/shell.js b/js/src/tests/ecma_6/LexicalEnvironment/shell.js
new file mode 100644
index 000000000..4d731295d
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/shell.js
@@ -0,0 +1,5 @@
+// NOTE: This only turns on 1.8.5 in shell builds. The browser requires the
+// futzing in js/src/tests/browser.js (which only turns on 1.8, the most
+// the browser supports).
+if (typeof version != 'undefined')
+ version(185);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-basics.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-basics.js
new file mode 100644
index 000000000..4032b2774
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-basics.js
@@ -0,0 +1,22 @@
+// Basics of @@unscopables support.
+
+// In with(obj), if obj[@@unscopables][id] is truthy, then the identifier id
+// is not present as a binding in the with-block's scope.
+var x = "global";
+with ({x: "with", [Symbol.unscopables]: {x: true}})
+ assertEq(x, "global");
+
+// But if obj[@@unscopables][id] is false or not present, there is a binding.
+with ({y: "with", z: "with", [Symbol.unscopables]: {y: false}}) {
+ assertEq(y, "with");
+ assertEq(z, "with");
+}
+
+// ToBoolean(obj[@@unscopables][id]) determines whether there's a binding.
+let someValues = [0, -0, NaN, "", undefined, null, "x", {}, []];
+for (let v of someValues) {
+ with ({x: "with", [Symbol.unscopables]: {x: v}})
+ assertEq(x, v ? "global" : "with");
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-closures.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-closures.js
new file mode 100644
index 000000000..bdade1f11
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-closures.js
@@ -0,0 +1,23 @@
+// @@unscopables continues to work after exiting the relevant `with` block,
+// if the environment is captured by a closure.
+
+let env = {
+ x: 9000,
+ [Symbol.unscopables]: {x: true}
+};
+
+function make_adder(x) {
+ with (env)
+ return function (y) { return x + y; };
+}
+assertEq(make_adder(3)(10), 13);
+
+// Same test, but with a bunch of different parts for bad luck
+let x = 500;
+function make_adder_with_eval() {
+ with (env)
+ return eval('y => eval("x + y")');
+}
+assertEq(make_adder_with_eval()(10), 510);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-const.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-const.js
new file mode 100644
index 000000000..7e1d0e07c
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-const.js
@@ -0,0 +1,8 @@
+// @@unscopables prevents a property from having any effect on assigning to a
+// const binding (which is an error).
+
+const x = 1;
+with ({x: 1, [Symbol.unscopables]: {x: true}})
+ assertThrowsInstanceOf(() => {x = 2;}, TypeError);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-delete.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-delete.js
new file mode 100644
index 000000000..3cd296f4b
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-delete.js
@@ -0,0 +1,27 @@
+// If obj[@@unscopables][id], then `delete id` works across `with (obj)` scope.
+
+this.niche = 7;
+let obj = { niche: 8, [Symbol.unscopables]: { niche: true } };
+with (obj) {
+ delete niche;
+}
+
+assertEq(obj.niche, 8);
+assertEq("niche" in this, false);
+
+// Same thing, but delete a variable introduced by sloppy direct eval.
+this.niche = 9;
+function f() {
+ eval("var niche = 10;");
+ with (obj) {
+ assertEq(niche, 10);
+ delete niche;
+ }
+ assertEq(niche, 9);
+}
+
+// Of course none of this affects a qualified delete.
+assertEq(delete this.niche, true);
+assertEq("niche" in this, false);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-getters.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-getters.js
new file mode 100644
index 000000000..136078798
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-getters.js
@@ -0,0 +1,41 @@
+// @@unscopables checks can call getters.
+
+// The @@unscopables property itself can be a getter.
+let hit1 = 0;
+let x = "global x";
+let env1 = {
+ x: "env1.x",
+ get [Symbol.unscopables]() {
+ hit1++;
+ return {x: true};
+ }
+};
+with (env1)
+ assertEq(x, "global x");
+assertEq(hit1, 1);
+
+// It can throw; the exception is propagated out.
+function Fit() {}
+with ({x: 0, get [Symbol.unscopables]() { throw new Fit; }})
+ assertThrowsInstanceOf(() => x, Fit);
+
+// Individual properties on the @@unscopables object can have getters.
+let hit2 = 0;
+let env2 = {
+ x: "env2.x",
+ [Symbol.unscopables]: {
+ get x() {
+ hit2++;
+ return true;
+ }
+ }
+};
+with (env2)
+ assertEq(x, "global x");
+assertEq(hit2, 1);
+
+// And they can throw.
+with ({x: 0, [Symbol.unscopables]: {get x() { throw new Fit; }}})
+ assertThrowsInstanceOf(() => x, Fit);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-global.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-global.js
new file mode 100644
index 000000000..1aa4a52bd
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-global.js
@@ -0,0 +1,18 @@
+// @@unscopables does not affect the global environment.
+
+this.x = "global property x";
+let y = "global lexical y";
+this[Symbol.unscopables] = {x: true, y: true};
+assertEq(x, "global property x");
+assertEq(y, "global lexical y");
+assertEq(eval("x"), "global property x");
+assertEq(eval("y"), "global lexical y");
+
+// But it does affect `with` statements targeting the global object.
+{
+ let x = "local x";
+ with (this)
+ assertEq(x, "local x");
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-ignored.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-ignored.js
new file mode 100644
index 000000000..08b042a3b
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-ignored.js
@@ -0,0 +1,22 @@
+// In these cases, @@unscopables should not be consulted.
+
+// Because obj has no properties `assertEq` or `x`,
+// obj[@@unscopables] is not checked here:
+var obj = {
+ get [Symbol.unscopables]() {
+ throw "tried to read @@unscopables";
+ }
+};
+var x = 3;
+with (obj)
+ assertEq(x, 3);
+
+// If @@unscopables is present but not an object, it is ignored:
+for (let nonObject of [undefined, null, "nothing", Symbol.for("moon")]) {
+ let y = 4;
+ let obj2 = {[Symbol.unscopables]: nonObject, y: 5};
+ with (obj2)
+ assertEq(y, 5);
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-miss.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-miss.js
new file mode 100644
index 000000000..b86d51078
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-miss.js
@@ -0,0 +1,7 @@
+// Trying to access a binding that doesn't exist due to @@unscopables
+// is a ReferenceError.
+
+with ({x: 1, [Symbol.unscopables]: {x: true}})
+ assertThrowsInstanceOf(() => x, ReferenceError);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-mutation-frozen.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-mutation-frozen.js
new file mode 100644
index 000000000..632785c05
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-mutation-frozen.js
@@ -0,0 +1,18 @@
+// When env[@@unscopables].x changes, bindings can appear even if env is inextensible.
+
+let x = "global";
+let unscopables = {x: true};
+let env = Object.create(null);
+env[Symbol.unscopables] = unscopables;
+env.x = "object";
+Object.freeze(env);
+
+for (let i = 0; i < 1004; i++) {
+ if (i === 1000)
+ unscopables.x = false;
+ with (env) {
+ assertEq(x, i < 1000 ? "global" : "object");
+ }
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-mutation.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-mutation.js
new file mode 100644
index 000000000..2f35e1dd3
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-mutation.js
@@ -0,0 +1,44 @@
+// When obj[@@unscopables].x changes, bindings appear and disappear accordingly.
+
+let x = "global";
+function getX() { return x; }
+
+let unscopables = {x: true};
+let obj = {x: "obj", [Symbol.unscopables]: unscopables};
+
+with (obj) {
+ assertEq(x, "global");
+ x = "global-1";
+ assertEq(x, "global-1");
+ assertEq(obj.x, "obj");
+
+ unscopables.x = false; // suddenly x appears in the with-environment
+
+ assertEq(x, "obj");
+ x = "obj-1";
+ assertEq(getX(), "global-1"); // unchanged
+ assertEq(obj.x, "obj-1");
+
+ unscopables.x = true; // *poof*
+
+ assertEq(x, "global-1");
+ x = "global-2";
+ assertEq(getX(), "global-2");
+ assertEq(obj.x, "obj-1"); // unchanged
+
+ // The determination of which binding is assigned happens when the LHS of
+ // assignment is evaluated, before the RHS. This is observable if we make
+ // the binding appear or disappear during evaluation of the RHS, before
+ // assigning.
+ x = (unscopables.x = false, "global-3");
+ assertEq(getX(), "global-3");
+ assertEq(obj.x, "obj-1");
+
+ x = (unscopables.x = true, "obj-2");
+ assertEq(getX(), "global-3");
+ assertEq(obj.x, "obj-2");
+}
+
+assertEq(x, "global-3");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-proto.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-proto.js
new file mode 100644
index 000000000..dbbfb712d
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-proto.js
@@ -0,0 +1,39 @@
+// @@unscopables treats properties found on prototype chains the same as other
+// properties.
+
+const x = "global x";
+const y = "global y";
+
+// obj[@@unscopables].x works when obj.x is inherited via the prototype chain.
+let proto = {x: "object x", y: "object y"};
+let env = Object.create(proto);
+env[Symbol.unscopables] = {x: true, y: false};
+with (env) {
+ assertEq(x, "global x");
+ assertEq(delete x, false);
+ assertEq(y, "object y");
+}
+assertEq(env.x, "object x");
+
+// @@unscopables works if is inherited via the prototype chain.
+env = {
+ x: "object",
+ [Symbol.unscopables]: {x: true, y: true}
+};
+for (let i = 0; i < 50; i++)
+ env = Object.create(env);
+env.y = 1;
+with (env) {
+ assertEq(x, "global x");
+ assertEq(y, "global y");
+}
+
+// @@unscopables works if the obj[@@unscopables][id] property is inherited.
+env = {
+ x: "object",
+ [Symbol.unscopables]: Object.create({x: true})
+};
+with (env)
+ assertEq(x, "global x");
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-proxy.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-proxy.js
new file mode 100644
index 000000000..fcf241ee4
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-proxy.js
@@ -0,0 +1,46 @@
+// Object operations are performed in the right order, as observed by proxies.
+
+let log = [];
+function LoggingProxyHandlerWrapper(name, handler={}) {
+ return new Proxy(handler, {
+ get(t, id) {
+ let method = handler[id];
+ return function (...args) {
+ log.push([name + "." + id, ...args.filter(v => typeof v !== "object")]);
+ if (method === undefined)
+ return Reflect[id].apply(null, args);
+ return method.apply(this, args);
+ };
+ }
+ });
+}
+
+function LoggingProxy(name, target) {
+ return new Proxy(target, new LoggingProxyHandlerWrapper(name));
+}
+
+let proto = {x: 44};
+let proto_proxy = new LoggingProxy("proto", proto);
+let unscopables = {x: true};
+let unscopables_proxy = new LoggingProxy("unscopables", {x: true});
+let env = Object.create(proto_proxy, {
+ [Symbol.unscopables]: { value: unscopables_proxy }
+});
+let env_proxy = new LoggingProxy("env", env);
+
+let x = 11;
+function f() {
+ with (env_proxy)
+ return x;
+}
+
+assertEq(f(), 11);
+
+assertDeepEq(log, [
+ ["env.has", "x"],
+ ["proto.has", "x"],
+ ["env.get", Symbol.unscopables],
+ ["unscopables.get", "x"]
+]);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-strict.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-strict.js
new file mode 100644
index 000000000..fd0413ed7
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-strict.js
@@ -0,0 +1,32 @@
+// Strict assignment to the name of a property that's masked by @@unscopables
+// throws a ReferenceError.
+
+let env = {k: 1};
+let f;
+with (env) {
+ f = function () {
+ "use strict";
+ k = 2;
+ };
+}
+
+f();
+assertEq(env.k, 2);
+
+env[Symbol.unscopables] = {k: true};
+assertThrowsInstanceOf(f, ReferenceError);
+
+// @@unscopables is tested when the LHS of assignment is evaluated, so there is
+// no effect on the assignment if it is changed while evaluating the RHS.
+let g;
+with (env) {
+ g = function () {
+ "use strict";
+ k = (env[Symbol.unscopables].k = true, 3);
+ }
+}
+env[Symbol.unscopables].k = false;
+g();
+assertEq(env.k, 3);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/unscopables-tdz.js b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-tdz.js
new file mode 100644
index 000000000..ce6b1df92
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/unscopables-tdz.js
@@ -0,0 +1,9 @@
+// Accessing an uninitialized variable due to @@unscopables is still a ReferenceError.
+
+with ({x: 1, [Symbol.unscopables]: {x: true}})
+ assertThrowsInstanceOf(() => x, ReferenceError);
+
+let x;
+
+reportCompare(0, 0);
+
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b-eval-destructuring.js b/js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b-eval-destructuring.js
new file mode 100644
index 000000000..06174013e
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b-eval-destructuring.js
@@ -0,0 +1,10 @@
+// |reftest| skip-if(!xulRuntime.shell)
+
+assertThrowsInstanceOf(() => evaluate(`try { throw {} } catch ({e}) { var e; }`), SyntaxError);
+assertThrowsInstanceOf(() => evaluate(`try { throw {} } catch ({e}) { eval('var e'); }`), SyntaxError);
+
+assertThrowsInstanceOf(() => new Function(`try { throw {} } catch ({e}) { var e; }`), SyntaxError);
+assertThrowsInstanceOf(new Function(`try { throw {} } catch ({e}) { eval('var e'); }`), SyntaxError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b-eval-for-of.js b/js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b-eval-for-of.js
new file mode 100644
index 000000000..901f5c0f7
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b-eval-for-of.js
@@ -0,0 +1,12 @@
+// |reftest| skip-if(!xulRuntime.shell)
+
+assertThrowsInstanceOf(() => evaluate(`
+ try { throw null; } catch (e) { eval("for (var e of []) {}") }
+`), SyntaxError);
+
+assertThrowsInstanceOf(new Function(`
+ try { throw null; } catch (e) { eval("for (var e of []) {}") }
+`), SyntaxError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b-eval.js b/js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b-eval.js
new file mode 100644
index 000000000..e380846e2
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b-eval.js
@@ -0,0 +1,21 @@
+// Tests annex B.3.5 that introduces a var via direct eval.
+
+var x = "global-x";
+var log = "";
+
+// Tests that direct eval works.
+function g() {
+ try { throw 8; } catch (x) {
+ eval("var x = 42;");
+ log += x;
+ }
+ x = "g";
+ log += x;
+}
+g();
+
+assertEq(x, "global-x");
+assertEq(log, "42g");
+
+if ("reportCompare" in this)
+ reportCompare(true, true)
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b.js b/js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b.js
new file mode 100644
index 000000000..fd8ca41de
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/var-in-catch-body-annex-b.js
@@ -0,0 +1,116 @@
+// Tests annex B.3.5.
+
+assertThrowsInstanceOf(function () {
+ eval(`
+ function f() {
+ let x;
+ try {} catch (x) {
+ var x;
+ }
+ }
+ `);
+}, SyntaxError);
+
+assertThrowsInstanceOf(function () {
+ eval(`
+ function f() {
+ try {} catch (x) {
+ let y;
+ var y;
+ }
+ }
+ `);
+}, SyntaxError);
+
+assertThrowsInstanceOf(function () {
+ eval(`
+ function f() {
+ try {} catch (x) {
+ let x;
+ }
+ }
+ `);
+}, SyntaxError);
+
+assertThrowsInstanceOf(function () {
+ eval(`
+ function f() {
+ try {} catch (x) {
+ const x;
+ }
+ }
+ `);
+}, SyntaxError);
+
+// Tests that redeclaring a var inside the catch is not allowed if there's a
+// body-level lexical.
+assertThrowsInstanceOf(function () {
+ eval(`
+ let x;
+ try {} catch (x) {
+ var x;
+ }
+ `);
+}, SyntaxError);
+
+var log = '';
+var x = 'global-x';
+
+function g() {
+ x = 'g';
+ try { throw 8; } catch (x) {
+ var x = 42;
+ log += x;
+ }
+ log += x;
+}
+g();
+
+// Tests that var declaration is allowed in for-in head.
+function h0() {
+ try {} catch (e) {
+ for (var e in {});
+ }
+}
+h0();
+
+// Tests that var declaration is allowed in C-for head.
+function h1() {
+ try {} catch (e) {
+ for (var e;;);
+ }
+}
+h1();
+
+// Tests that redeclaring a var inside the catch is allowed.
+function h3() {
+ var e;
+ try {} catch (e) {
+ var e;
+ }
+}
+h3();
+
+// Tests that var declaration is not allowed in for-of head.
+assertThrowsInstanceOf(function () {
+ eval(`
+ function h2() {
+ try {} catch (e) { for (var e of {}); }
+ }
+ log += 'unreached';
+ `);
+}, SyntaxError);
+
+if (typeof evaluate === "function") {
+ assertThrowsInstanceOf(function () {
+ evaluate(`
+ let y;
+ try {} catch (y) { var y; }
+ `);
+ }, SyntaxError);
+}
+
+assertEq(log, "42g");
+
+if ("reportCompare" in this)
+ reportCompare(true, true)
diff --git a/js/src/tests/ecma_6/LexicalEnvironment/with-global-ignores-global-let-variables.js b/js/src/tests/ecma_6/LexicalEnvironment/with-global-ignores-global-let-variables.js
new file mode 100644
index 000000000..cce12ef5f
--- /dev/null
+++ b/js/src/tests/ecma_6/LexicalEnvironment/with-global-ignores-global-let-variables.js
@@ -0,0 +1,24 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+let v = "global-v";
+
+function f(v, global)
+{
+ with (global)
+ return v;
+}
+
+// Don't use assertEq because it triggers tbpl error-highlighting false
+// positives. When this test isn't fails-if, just use assertEq directly.
+var AssertEq = typeof reportCompare === "function"
+ ? (act, exp, msg) => reportCompare(exp, act, msg)
+ : assertEq;
+
+AssertEq(f("argument-v", this), "argument-v",
+ "let-var shouldn't appear in global for |with| purposes");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Map/NaN-as-key.js b/js/src/tests/ecma_6/Map/NaN-as-key.js
new file mode 100644
index 000000000..6fa5ee67e
--- /dev/null
+++ b/js/src/tests/ecma_6/Map/NaN-as-key.js
@@ -0,0 +1,55 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 722260;
+var summary = 'All NaNs must be treated as identical keys for Map';
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+/* Avoid constant-folding that would happen were |undefined| to be used. */
+var key = -/a/g.missingProperty;
+
+var m = new Map();
+m.set(key, 17);
+assertEq(m.get(key), 17);
+assertEq(m.get(-key), 17);
+assertEq(m.get(NaN), 17);
+
+m.delete(-key);
+assertEq(m.has(key), false);
+assertEq(m.has(-key), false);
+assertEq(m.has(NaN), false);
+
+m.set(-key, 17);
+assertEq(m.get(key), 17);
+assertEq(m.get(-key), 17);
+assertEq(m.get(NaN), 17);
+
+m.delete(NaN);
+assertEq(m.has(key), false);
+assertEq(m.has(-key), false);
+assertEq(m.has(NaN), false);
+
+m.set(NaN, 17);
+assertEq(m.get(key), 17);
+assertEq(m.get(-key), 17);
+assertEq(m.get(NaN), 17);
+
+m.delete(key);
+assertEq(m.has(key), false);
+assertEq(m.has(-key), false);
+assertEq(m.has(NaN), false);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Map/browser.js b/js/src/tests/ecma_6/Map/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Map/browser.js
diff --git a/js/src/tests/ecma_6/Map/constructor-iterator-primitive.js b/js/src/tests/ecma_6/Map/constructor-iterator-primitive.js
new file mode 100644
index 000000000..e1fff5c3c
--- /dev/null
+++ b/js/src/tests/ecma_6/Map/constructor-iterator-primitive.js
@@ -0,0 +1,34 @@
+var BUGNUMBER = 1021835;
+var summary = "Returning non-object from @@iterator should throw";
+
+print(BUGNUMBER + ": " + summary);
+
+let ctors = [
+ Map,
+ Set,
+ WeakMap,
+ WeakSet
+];
+
+let primitives = [
+ 1,
+ true,
+ undefined,
+ null,
+ "foo",
+ Symbol.iterator
+];
+
+for (let ctor of ctors) {
+ for (let primitive of primitives) {
+ let arg = {
+ [Symbol.iterator]() {
+ return primitive;
+ }
+ };
+ assertThrowsInstanceOf(() => new ctor(arg), TypeError);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Map/forEach-selfhosted-behavior.js b/js/src/tests/ecma_6/Map/forEach-selfhosted-behavior.js
new file mode 100644
index 000000000..ed4d8b57f
--- /dev/null
+++ b/js/src/tests/ecma_6/Map/forEach-selfhosted-behavior.js
@@ -0,0 +1,51 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 987243;
+var summary = "Don't use .call(...) in the self-hosted Map.prototype.forEach";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var functionCall = Function.prototype.call;
+
+function throwSyntaxError()
+{
+ throw new SyntaxError("Function.prototype.call incorrectly called");
+}
+
+function lalala() {}
+
+Function.prototype.call = throwSyntaxError;
+
+new Map().forEach(throwSyntaxError);
+new Map([[1, 2]]).forEach(lalala);
+new Map([[1, 2], [3, 4]]).forEach(lalala);
+
+Function.prototype.call = function() { this.set(42, "fnord"); };
+
+new Map().forEach(throwSyntaxError);
+new Map([[1, 2]]).forEach(lalala);
+new Map([[1, 2], [3, 4]]).forEach(lalala);
+
+var callCount = 0;
+Function.prototype.call = function() { callCount++; };
+
+new Map().forEach(throwSyntaxError);
+new Map([[1, 2]]).forEach(lalala);
+new Map([[1, 2], [3, 4]]).forEach(lalala);
+
+assertEq(callCount, 0);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Map/getter-name.js b/js/src/tests/ecma_6/Map/getter-name.js
new file mode 100644
index 000000000..08f7890c7
--- /dev/null
+++ b/js/src/tests/ecma_6/Map/getter-name.js
@@ -0,0 +1,10 @@
+var BUGNUMBER = 1180290;
+var summary = 'Map getters should have get prefix';
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(Object.getOwnPropertyDescriptor(Map, Symbol.species).get.name, "get [Symbol.species]");
+assertEq(Object.getOwnPropertyDescriptor(Map.prototype, "size").get.name, "get size");
+
+if (typeof reportCompare === 'function')
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Map/iterable.js b/js/src/tests/ecma_6/Map/iterable.js
new file mode 100644
index 000000000..cf6b7228a
--- /dev/null
+++ b/js/src/tests/ecma_6/Map/iterable.js
@@ -0,0 +1,28 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+let length;
+let iterable = {
+ [Symbol.iterator]() { return this; },
+ next() { length = arguments.length; return {done: true}; }
+};
+
+new Map(iterable);
+// ensure no arguments are passed to next() during construction (Bug 1197095)
+assertEq(length, 0);
+
+let typeofThis;
+Object.defineProperty(Number.prototype, Symbol.iterator, {
+ value() {
+ "use strict";
+ typeofThis = typeof this;
+ return { next() { return {done: true}; } };
+ }
+});
+
+new Map(0);
+// ensure that iterable objects retain their type (Bug 1197094)
+assertEq(typeofThis, "number");
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Map/shell.js b/js/src/tests/ecma_6/Map/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Map/shell.js
diff --git a/js/src/tests/ecma_6/Map/symbols.js b/js/src/tests/ecma_6/Map/symbols.js
new file mode 100644
index 000000000..30589a973
--- /dev/null
+++ b/js/src/tests/ecma_6/Map/symbols.js
@@ -0,0 +1,33 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+var m = new Map;
+
+// Symbols can be Map keys.
+var sym = Symbol();
+m.set(sym, "zero");
+assertEq(m.has(sym), true);
+assertEq(m.get(sym), "zero");
+assertEq(m.has(Symbol()), false);
+assertEq(m.get(Symbol()), undefined);
+assertEq([...m][0][0], sym);
+m.set(sym, "replaced");
+assertEq(m.get(sym), "replaced");
+m.delete(sym);
+assertEq(m.has(sym), false);
+assertEq(m.size, 0);
+
+// Symbols returned by Symbol.for() can be Map keys.
+for (var word of "that that is is that that is not is not is that not it".split(' ')) {
+ sym = Symbol.for(word);
+ m.set(sym, (m.get(sym) || 0) + 1);
+}
+assertDeepEq([...m], [
+ [Symbol.for("that"), 5],
+ [Symbol.for("is"), 5],
+ [Symbol.for("not"), 3],
+ [Symbol.for("it"), 1]
+]);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Math/20.2.2.ToNumber.js b/js/src/tests/ecma_6/Math/20.2.2.ToNumber.js
new file mode 100644
index 000000000..de1f4e612
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/20.2.2.ToNumber.js
@@ -0,0 +1,112 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+/*
+ * ECMA-262 6th Edition / Draft November 8, 2013
+ *
+ * 20.2.2 Function Properties of the Math Object
+ */
+
+/*
+ * This custom object will allow us to check if valueOf() is called
+ */
+
+TestNumber.prototype = new Number();
+
+function TestNumber(value) {
+ this.value = value;
+ this.valueOfCalled = false;
+}
+
+TestNumber.prototype = {
+ valueOf: function() {
+ this.valueOfCalled = true;
+ return this.value;
+ }
+}
+
+// Verify that each TestNumber's flag is set after calling Math func
+function test(func /*, args */) {
+ var args = Array.prototype.slice.call(arguments, 1);
+ func.apply(null, args);
+
+ for (var i = 0; i < args.length; ++i)
+ assertEq(args[i].valueOfCalled, true);
+}
+
+// Note that we are not testing these functions' return values
+// We only test whether valueOf() is called for each argument
+
+// 1. Test Math.atan2()
+var x = new TestNumber(1);
+test(Math.atan2, x);
+
+var x = new TestNumber(1);
+var y = new TestNumber(2);
+test(Math.atan2, y, x);
+
+// Remove comment block once patch for bug 896264 is approved
+/*
+// 2. Test Math.hypot()
+var x = new TestNumber(1);
+test(Math.hypot, x);
+
+var x = new TestNumber(1);
+var y = new TestNumber(2);
+test(Math.hypot, x, y);
+
+var x = new TestNumber(1);
+var y = new TestNumber(2);
+var z = new TestNumber(3);
+test(Math.hypot, x, y, z);
+*/
+
+// Remove comment block once patch for bug 808148 is approved
+/*
+// 3. Test Math.imul()
+var x = new TestNumber(1);
+test(Math.imul, x);
+
+var x = new TestNumber(1);
+var y = new TestNumber(2);
+test(Math.imul, x, y);
+*/
+
+// 4. Test Math.max()
+var x = new TestNumber(1);
+test(Math.max, x);
+
+var x = new TestNumber(1);
+var y = new TestNumber(2);
+test(Math.max, x, y);
+
+var x = new TestNumber(1);
+var y = new TestNumber(2);
+var z = new TestNumber(3);
+test(Math.max, x, y, z);
+
+// 5. Test Math.min()
+var x = new TestNumber(1);
+test(Math.min, x);
+
+var x = new TestNumber(1);
+var y = new TestNumber(2);
+test(Math.min, x, y);
+
+var x = new TestNumber(1);
+var y = new TestNumber(2);
+var z = new TestNumber(3);
+test(Math.min, x, y, z);
+
+// 6. Test Math.pow()
+var x = new TestNumber(1);
+test(Math.pow, x);
+
+var x = new TestNumber(1);
+var y = new TestNumber(2);
+test(Math.pow, x, y);
+
+reportCompare(0, 0, "ok");
+
diff --git a/js/src/tests/ecma_6/Math/acosh-approx.js b/js/src/tests/ecma_6/Math/acosh-approx.js
new file mode 100644
index 000000000..3854a5909
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/acosh-approx.js
@@ -0,0 +1,283 @@
+var cosh_data = [
+ [1.0000014305114746, 0.0016914556651292944],
+ [1.0000019073486328, 0.001953124689559275],
+ [1.000007152557373, 0.003782208044661295],
+ [1.000013828277588, 0.005258943946801101],
+ [1.0000171661376953, 0.005859366618129203],
+ [1.0000600814819336, 0.010961831992188852],
+ [1.0001168251037598, 0.015285472131830425],
+ [1.0001487731933594, 0.017249319093529877],
+ [1.0003981590270996, 0.028218171738655373],
+ [1.000638484954834, 0.03573281468231457],
+ [1.0010714530944824, 0.046287402472878776],
+ [1.0030217170715332, 0.07771996527168971],
+ [1.0049939155578613, 0.0998975930860278],
+ [1.0092840194702148, 0.13615938768032465],
+ [1.024169921875, 0.21942279004958354],
+ [1.0622773170471191, 0.3511165938166055],
+ [1.1223440170288086, 0.48975026711288183],
+ [1.2495574951171875, 0.692556883708491],
+ [1.4912219047546387, 0.954530572221414],
+ [1.9838471412658691, 1.307581416910453],
+ [2.1576128005981445, 1.4035188779741334],
+ [2.406397819519043, 1.5250070845427517],
+ [3.386958122253418, 1.8905372013072799],
+ [4.451677322387695, 2.1735673399948254],
+ [6.9391326904296875, 2.625091127868242],
+ [7.756023406982422, 2.737434918695162],
+ [8.882369995117188, 2.8740317167801948],
+ [9.869171142578125, 2.97998639328949],
+ [16.848876953125, 3.516549380542481],
+ [16.88458251953125, 3.51867003468025],
+ [18.18859100341797, 3.593185165198829],
+ [18.82012176513672, 3.6273672142963385],
+ [19.184181213378906, 3.646553244410946],
+ [24.039520263671875, 3.872413451393967],
+ [26.556991577148438, 3.972085568933329],
+ [27.921104431152344, 4.022209178119238],
+ [32.314666748046875, 4.168428891496629],
+ [34.73008728027344, 4.240546229861005],
+ [36.51556396484375, 4.290698214968891],
+ [38.851287841796875, 4.352722738491574],
+ [49.46875, 4.594386162629449],
+ [49.67265319824219, 4.598500387004538],
+ [55.821014404296875, 4.7152173401856095],
+ [57.119781494140625, 4.73822104001982],
+ [60.37983703613281, 4.793733825338029],
+ [63.4661865234375, 4.8435923769530165],
+ [63.822418212890625, 4.849190310904695],
+ [64.36642456054688, 4.85767897228448],
+ [65.82318115234375, 4.880061548144127],
+ [68.60302734375, 4.921430721025434],
+ [70.173583984375, 4.94406835208057],
+ [71.80126953125, 4.967000841791218],
+ [75.40786743164062, 5.016014824864732],
+ [75.49771118164062, 5.017205657609766],
+ [78.06475830078125, 5.0506448716550825],
+ [79.64892578125, 5.0707363201405276],
+ [79.8707275390625, 5.073517411135063],
+ [82.14324951171875, 5.101574796209937],
+ [86.42214965820312, 5.152357710985635],
+ [87.75869750976562, 5.167705692500117],
+ [94.24942016601562, 5.2390637098028074],
+ [95.00259399414062, 5.247023676519904],
+ [96.06402587890625, 5.258134994273664],
+ [99.10101318359375, 5.289261389093961],
+ [104.82595825195312, 5.345425863147171],
+ [105.89431762695312, 5.3555664787245885],
+ [106.750244140625, 5.363617180711895],
+ [109.40167236328125, 5.388152468690488],
+ [111.29598999023438, 5.405320225963013],
+ [112.68215942382812, 5.417698597745429],
+ [115.84786987304688, 5.445406415908933],
+ [122.51895141601562, 5.501396249028249],
+ [126.29083251953125, 5.531718947357248],
+ [127.88677978515625, 5.544277233951787],
+ [128.29241943359375, 5.547444176085567],
+ [129.49658203125, 5.556786759298988],
+ [138.73651123046875, 5.625710723366437],
+ [139.18450927734375, 5.628934733085022],
+ [139.9705810546875, 5.634566685055491],
+ [143.6336669921875, 5.660401141376928],
+ [149.2176513671875, 5.698541939965668],
+ [150.61602783203125, 5.7078698961812995],
+ [151.65460205078125, 5.714741890601693],
+ [154.77532958984375, 5.735111323217677],
+ [158.9586181640625, 5.761781191641161],
+ [159.23260498046875, 5.763503378028959],
+ [166.89166259765625, 5.810483079631769],
+ [169.22418212890625, 5.824362807770767],
+ [170.85247802734375, 5.833939098607025],
+ [175.641845703125, 5.861586030831371],
+ [176.47808837890625, 5.866335876872544],
+ [177.0284423828125, 5.869449614294116],
+ [178.81622314453125, 5.879497954012966],
+ [181.28570556640625, 5.893213844044451],
+ [190.84246826171875, 5.944588630523773],
+ [191.39764404296875, 5.947493525920713],
+ [194.2606201171875, 5.962341215900494],
+ [194.89630126953125, 5.9656082276276],
+ [196.72125244140625, 5.9749284849312865],
+ [196.76788330078125, 5.975165500176202],
+ [198.0592041015625, 5.981706804024238],
+ [199.97052001953125, 5.991310884439669],
+ [202.70001220703125, 6.004868209578554],
+ [204.95684814453125, 6.0159406892865155],
+ [206.92059326171875, 6.025476453825986],
+ [211.4588623046875, 6.047172064627678],
+ [211.6217041015625, 6.0479418642231595],
+ [212.15936279296875, 6.050479329955437],
+ [219.93341064453125, 6.086466833749719],
+ [223.34747314453125, 6.101870903204913],
+ [228.56036376953125, 6.1249427443985525],
+ [229.53656005859375, 6.129204755426344],
+ [231.15753173828125, 6.136241935513706],
+ [235.22589111328125, 6.153688953514383],
+ [237.17108154296875, 6.1619244798633215],
+ [237.904541015625, 6.165012268502458],
+ [243.202392578125, 6.187036941752032],
+ [244.296875, 6.191527178125454],
+ [245.39239501953125, 6.196001570568187],
+ [245.80389404296875, 6.197677082130341],
+ [249.68365478515625, 6.2133379061260285],
+ [252.32763671875, 6.223871642756905],
+ [253.4725341796875, 6.228398760115369],
+ [264.1583251953125, 6.269692237869835],
+ [265.867919921875, 6.276143287577458],
+ [273.893798828125, 6.305884283737176],
+ [274.060546875, 6.306492908028797],
+ [274.06298828125, 6.3065018163217115],
+ [275.31201171875, 6.31104892482331],
+ [281.2171630859375, 6.3322712125431915],
+ [284.3428955078125, 6.343324976847916],
+ [284.8428955078125, 6.345081883725142],
+ [287.3035888671875, 6.353683609448096],
+ [290.8973388671875, 6.366114643735997],
+ [293.0467529296875, 6.373476431987165],
+ [293.048583984375, 6.3734826803404045],
+ [296.819091796875, 6.3862671775996915],
+ [297.6572265625, 6.389086936901673],
+ [308.40625, 6.424562459508495],
+ [316.5472412109375, 6.4506171773701535],
+ [320.2418212890625, 6.462221144761522],
+ [322.33642578125, 6.468740575092418],
+ [323.5101318359375, 6.472375224718483],
+ [327.8939208984375, 6.485834999462654],
+ [328.0833740234375, 6.486412623146554],
+ [328.214599609375, 6.486812521370483],
+ [332.13916015625, 6.498698952535687],
+ [339.6888427734375, 6.521175044233963],
+ [340.171630859375, 6.522595306993373],
+ [340.22998046875, 6.522766822935215],
+ [340.9984130859375, 6.52502285413445],
+ [347.719482421875, 6.5445411825986985],
+ [347.921142578125, 6.5451209675856825],
+ [349.8392333984375, 6.55061885367159],
+ [353.1812744140625, 6.560126626713879],
+ [353.3170166015625, 6.560510895819139],
+ [354.9730224609375, 6.565186990039135],
+ [355.6412353515625, 6.567067660815945],
+ [363.193603515625, 6.588081320423386],
+ [363.7503662109375, 6.5896131163651415],
+ [366.66650390625, 6.597598047275183],
+ [370.5828857421875, 6.608222493065004],
+ [371.822998046875, 6.611563301604297],
+ [375.8822021484375, 6.622421213257873],
+ [377.1107177734375, 6.625684248051368],
+ [377.588623046875, 6.626950731244344],
+ [378.8428955078125, 6.630267034079059],
+ [379.1123046875, 6.630977920761718],
+ [381.1038818359375, 6.636217452968849],
+ [382.1112060546875, 6.638857149899159],
+ [382.9927978515625, 6.641161660644278],
+ [387.1845703125, 6.652047018118426],
+ [389.669921875, 6.658445560711748],
+ [389.804443359375, 6.658790721334144],
+ [396.3114013671875, 6.675345858154136],
+ [397.005126953125, 6.677094789236718],
+ [397.1934814453125, 6.6775691166680895],
+ [397.8046875, 6.679106750673113],
+ [398.8426513671875, 6.681712590609845],
+ [399.1663818359375, 6.682523938576487],
+ [399.2547607421875, 6.68274532345516],
+ [400.33984375, 6.685459416477178],
+ [403.9578857421875, 6.694456277839498],
+ [404.279541015625, 6.6952522228540765],
+ [405.0574951171875, 6.6971746771142415],
+ [407.328125, 6.702764738337774],
+ [407.547119140625, 6.7033022311799595],
+ [410.5994873046875, 6.710763953621196],
+ [410.8016357421875, 6.711256159037373],
+ [411.129638671875, 6.712054288828399],
+ [411.9053955078125, 6.713939407502346],
+ [415.5833740234375, 6.722828986708716],
+ [417.669189453125, 6.727835453862132],
+ [420.517822265625, 6.734632628835641],
+ [424.3853759765625, 6.743787740494532],
+ [424.7154541015625, 6.744565219553757],
+ [436.3419189453125, 6.7715720212680655],
+ [438.501953125, 6.776510146304201],
+ [439.3369140625, 6.778412462065226],
+ [445.5606689453125, 6.79247934060035],
+ [452.9901123046875, 6.809016260337229],
+ [453.77490234375, 6.810747231716348],
+ [456.7745361328125, 6.817335895109251],
+ [457.9520263671875, 6.819910421197311],
+ [458.6795654296875, 6.821497844004013],
+ [460.5164794921875, 6.8254946428721475],
+ [461.8717041015625, 6.828433164406687],
+ [464.7025146484375, 6.834543470287694],
+ [467.0626220703125, 6.839609377592375],
+ [467.0712890625, 6.839627933844213],
+ [470.096923828125, 6.846084943645239],
+ [475.1607666015625, 6.856799276049143],
+ [477.5537109375, 6.861822721577315],
+ [478.626220703125, 6.864066049482581],
+ [478.7958984375, 6.864420497333681],
+ [479.6864013671875, 6.866278653973069],
+ [479.7867431640625, 6.866487814627139],
+ [479.9122314453125, 6.8667493311188395],
+ [482.4793701171875, 6.872084270243208],
+ [482.5181884765625, 6.872164723177875],
+ [483.8797607421875, 6.874982560453874],
+ [484.4649658203125, 6.876191234145179],
+ [485.3258056640625, 6.877966548833207],
+ [490.57373046875, 6.888721726428236],
+ [493.7423095703125, 6.89515989558997],
+ [494.272216796875, 6.896232568812718],
+ [496.44775390625, 6.900624415355815],
+ [497.0401611328125, 6.901816998553275],
+ [498.234130859375, 6.9042162822876465],
+ [665.0791015625, 7.193052598670793],
+ [1170.29150390625, 7.758155143419732],
+ [2058.7958984375, 8.323023697145112],
+ [5824.533203125, 9.36298131161099],
+ [9114.30859375, 9.810748008110926],
+ [31388.40625, 11.047341056314202],
+ [53732.765625, 11.584925435512535],
+ [117455.09375, 12.366958539207397],
+ [246210.625, 13.107089828327874],
+ [513670.125, 13.84248373881162],
+ [788353.25, 14.27084873575108],
+ [1736171, 15.060339852215408],
+ [3770530, 15.835873313657556],
+ [4344090, 15.977474039173265],
+ [11419360, 16.943967899150145],
+ [31023240, 17.943394339560967],
+ [40665424, 18.214035936745432],
+ [129788064, 19.374560581709215],
+ [225668224, 19.927723623778547],
+ [450631936, 20.619308638400597],
+ [750941952, 21.129986093026698],
+ [1887358976, 22.05159150215413],
+ [3738011648, 22.734966842639743],
+ [7486695424, 23.42954051928097],
+ [12668080128, 23.955498471391667],
+ [23918272512, 24.591055724582848],
+ [48862560256, 25.305424481799395],
+ [113763549184, 26.150535181949436],
+ [161334755328, 26.499894449532565],
+ [321933279232, 27.19075733422632],
+ [715734122496, 27.989721778208146],
+ [1875817529344, 28.953212876533797]
+];
+
+var sloppy_tolerance = 8; // FIXME
+
+for (var [x, y] of cosh_data)
+ assertNear(Math.acosh(x), y, sloppy_tolerance);
+
+assertNear(Math.acosh(1e300), 691.4686750787737, sloppy_tolerance);
+assertNear(Math.acosh(1.0000000001), 0.000014142136208675862, sloppy_tolerance);
+
+for (var i = 0; i <= 100; i++) {
+ var x = (i - 50) / 5;
+ var y = Math.cosh(x);
+ var z = Math.acosh(y);
+ assertNear(z, Math.abs(x), sloppy_tolerance);
+}
+
+for (var i = 1; i < 20; i++)
+ assertNear(Math.acosh(Math.cosh(i)), i, sloppy_tolerance);
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/acosh-exact.js b/js/src/tests/ecma_6/Math/acosh-exact.js
new file mode 100644
index 000000000..ededaa48e
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/acosh-exact.js
@@ -0,0 +1,26 @@
+// Properties of Math.acosh that are guaranteed by the spec.
+
+// If x is NaN, the result is NaN.
+assertEq(Math.acosh(NaN), NaN);
+
+// If x is less than 1, the result is NaN.
+assertEq(Math.acosh(ONE_MINUS_EPSILON), NaN);
+assertEq(Math.acosh(Number.MIN_VALUE), NaN);
+assertEq(Math.acosh(+0), NaN);
+assertEq(Math.acosh(-0), NaN);
+assertEq(Math.acosh(-Number.MIN_VALUE), NaN);
+assertEq(Math.acosh(-1), NaN);
+assertEq(Math.acosh(-Number.MAX_VALUE), NaN);
+assertEq(Math.acosh(-Infinity), NaN);
+
+for (var i = -20; i < 1; i++)
+ assertEq(Math.acosh(i), NaN);
+
+// If x is 1, the result is +0.
+assertEq(Math.acosh(1), +0);
+
+// If x is +∞, the result is +∞.
+assertEq(Math.acosh(Number.POSITIVE_INFINITY), Number.POSITIVE_INFINITY);
+
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/asinh-approx.js b/js/src/tests/ecma_6/Math/asinh-approx.js
new file mode 100644
index 000000000..354454fb4
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/asinh-approx.js
@@ -0,0 +1,303 @@
+var sinh_data = [
+ [-497.181640625, -6.902103625349695],
+ [-495.216552734375, -6.898143347143859],
+ [-488.0980224609375, -6.883664481302669],
+ [-486.4609375, -6.880304842490273],
+ [-482.2261962890625, -6.871561546509046],
+ [-468.167236328125, -6.841973895837549],
+ [-465.553955078125, -6.836376331805493],
+ [-464.288330078125, -6.833654100575195],
+ [-463.558837890625, -6.8320816635009045],
+ [-453.82861328125, -6.8108680173663085],
+ [-448.7835693359375, -6.799689165151487],
+ [-446.0499267578125, -6.793579326246197],
+ [-432.4046630859375, -6.762510387544996],
+ [-424.145751953125, -6.743225720989222],
+ [-402.8682861328125, -6.691758395994307],
+ [-402.4595947265625, -6.690743430063694],
+ [-390.1383056640625, -6.6596501292114505],
+ [-387.5355224609375, -6.652956360641761],
+ [-381.0023193359375, -6.635954365364267],
+ [-374.8172607421875, -6.619587562578274],
+ [-374.1033935546875, -6.617681179427804],
+ [-373.01318359375, -6.614762741096185],
+ [-370.0938720703125, -6.60690568753706],
+ [-364.5230712890625, -6.591738907156094],
+ [-361.3756103515625, -6.583066984213974],
+ [-358.1136474609375, -6.573999516974134],
+ [-350.8861083984375, -6.553610904389896],
+ [-350.7060546875, -6.553097634736138],
+ [-345.5616455078125, -6.538320325468202],
+ [-342.386962890625, -6.529090881007076],
+ [-341.9425048828125, -6.527791927233787],
+ [-337.3883056640625, -6.514383886150781],
+ [-328.8133544921875, -6.488639771044976],
+ [-326.1348876953125, -6.480460592697477],
+ [-313.12744140625, -6.439759999015992],
+ [-311.6180419921875, -6.434927968512049],
+ [-303.40478515625, -6.4082177348965725],
+ [-291.9320068359375, -6.369671035834965],
+ [-289.791015625, -6.362310184909175],
+ [-288.07568359375, -6.356373428913315],
+ [-282.76220703125, -6.337756593913614],
+ [-278.9659423828125, -6.32424009706147],
+ [-276.1881103515625, -6.314232650754295],
+ [-269.843994140625, -6.290994606392703],
+ [-256.47509765625, -6.240182555852785],
+ [-248.91619873046875, -6.2102675039793604],
+ [-245.71783447265625, -6.197335184435549],
+ [-244.9049072265625, -6.194021350132335],
+ [-242.49176025390625, -6.184119163536406],
+ [-223.97491455078125, -6.104686221071835],
+ [-223.0770263671875, -6.100669325836893],
+ [-221.50177001953125, -6.093582856519022],
+ [-214.1610107421875, -6.0598807500687935],
+ [-202.9705810546875, -6.0062142965262515],
+ [-200.1683349609375, -5.9923121073369945],
+ [-198.0869140625, -5.981859446096083],
+ [-191.8330078125, -5.9497792165852905],
+ [-183.4495849609375, -5.90509449745879],
+ [-182.9005126953125, -5.902097012275789],
+ [-167.5517578125, -5.8144483910067954],
+ [-162.87738037109375, -5.786154254111214],
+ [-159.6142578125, -5.765917008989405],
+ [-150.01629638671875, -5.703902219845274],
+ [-148.34051513671875, -5.6926689504460395],
+ [-147.23760986328125, -5.685206387751923],
+ [-143.65484619140625, -5.660572815631807],
+ [-138.70599365234375, -5.625516713960633],
+ [-119.55416870117188, -5.476934234171879],
+ [-118.44155883789062, -5.467584665632571],
+ [-112.7041015625, -5.417932675603434],
+ [-111.43020629882812, -5.406565756574079],
+ [-107.77297973632812, -5.373195678988387],
+ [-107.6795654296875, -5.3723285712183735],
+ [-105.091796875, -5.348004040102253],
+ [-101.261474609375, -5.31087758970896],
+ [-95.79150390625, -5.255348419702703],
+ [-91.26885986328125, -5.206986845736275],
+ [-87.33349609375, -5.162914035396619],
+ [-78.23873901367188, -5.052952927749896],
+ [-77.912353515625, -5.048772883924985],
+ [-76.83489990234375, -5.034848487644809],
+ [-61.255645751953125, -4.808269821238499],
+ [-54.41380310058594, -4.689849459883311],
+ [-43.967193603515625, -4.476720236388958],
+ [-42.01084899902344, -4.431216695067421],
+ [-30.609375, -4.114720236218123],
+ [-26.711166381835938, -3.9785790831656023],
+ [-25.241317749023438, -3.9220215830953484],
+ [-14.624359130859375, -3.3770026324620295],
+ [-12.431087493896484, -3.214961448471211],
+ [-10.235607147216797, -3.021397455139021],
+ [-9.41094970703125, -2.937831931335705],
+ [-1.635939121246338, -1.267878515574959],
+ [1.6504814008555524e-12, 1.6504814008555524e-12],
+ [2.0654207510961697e-12, 2.0654207510961697e-12],
+ [6.933230031758164e-12, 6.933230031758164e-12],
+ [1.3351444949627478e-11, 1.3351444949627478e-11],
+ [1.6399812063916386e-11, 1.6399812063916386e-11],
+ [5.730159402528301e-11, 5.730159402528301e-11],
+ [1.113731329382972e-10, 1.113731329382972e-10],
+ [1.4214707189097453e-10, 1.4214707189097453e-10],
+ [3.8006320313144215e-10, 3.8006320313144215e-10],
+ [6.09162720266454e-10, 6.09162720266454e-10],
+ [1.0221641311147778e-9, 1.0221641311147778e-9],
+ [2.8819222563924995e-9, 2.8819222563924995e-9],
+ [4.7627768395841485e-9, 4.7627768395841485e-9],
+ [8.854133426439148e-9, 8.854133426439148e-9],
+ [2.3050326092288742e-8, 2.305032609228874e-8],
+ [5.9392490925347374e-8, 5.939249092534734e-8],
+ [1.166764889148908e-7, 1.1667648891489053e-7],
+ [2.3799674409019644e-7, 2.379967440901942e-7],
+ [4.684659415943315e-7, 4.6846594159431437e-7],
+ [9.382699772686465e-7, 9.382699772685088e-7],
+ [0.00000110398559627356, 0.0000011039855962733358],
+ [0.0000032917760108830407, 0.000003291776010877096],
+ [0.00000751721381675452, 0.000007517213816683722],
+ [0.000015114666894078255, 0.000015114666893502755],
+ [0.00002986399340443313, 0.00002986399339999406],
+ [0.00003387028118595481, 0.000033870281179478836],
+ [0.00009066011989489198, 0.00009066011977069884],
+ [0.00021949532674625516, 0.00021949532498377364],
+ [0.00043952150736004114, 0.00043952149320897676],
+ [0.0006333151832222939, 0.0006333151408864353],
+ [0.001115123275667429, 0.0011151230445582744],
+ [0.001962467096745968, 0.0019624658370807177],
+ [0.005553754046559334, 0.005553725496786973],
+ [0.008691128343343735, 0.008691018931968294],
+ [0.02993336319923401, 0.02992889492062484],
+ [0.05124260485172272, 0.05122020579778827],
+ [0.11201295256614685, 0.1117800293787828],
+ [0.23480379581451416, 0.23269806521543376],
+ [0.4898730516433716, 0.4721357117742938],
+ [0.7518312931060791, 0.694611571189336],
+ [1.655740737915039, 1.2781607348262256],
+ [3.5958566665649414, 1.9917262343245115],
+ [3.662705421447754, 2.009484184971722],
+ [4.142845153808594, 2.128787712416205],
+ [5.957065582275391, 2.4846967934155475],
+ [10.890350341796875, 3.083125584533294],
+ [27.3714599609375, 4.002981567623351],
+ [29.58606719970703, 4.080736210902826],
+ [30.79753875732422, 4.120845430011113],
+ [38.78157043457031, 4.351258506393416],
+ [46.88148498535156, 4.540883728536112],
+ [47.21551513671875, 4.547981853382592],
+ [47.2205810546875, 4.5480891170767],
+ [49.72361755371094, 4.599728302509061],
+ [61.557464599609375, 4.8131842711857535],
+ [67.82162475585938, 4.910082619934558],
+ [68.82363891601562, 4.924747230639767],
+ [73.75466918945312, 4.993937439635391],
+ [80.95669555664062, 5.087099712053554],
+ [85.26406860351562, 5.1389346970196295],
+ [85.2677001953125, 5.138977285472121],
+ [92.8238525390625, 5.223879832616765],
+ [94.50357055664062, 5.241812789460327],
+ [116.044677734375, 5.447141014648796],
+ [123.77554321289062, 5.511633288238573],
+ [132.3592529296875, 5.578681289305598],
+ [139.7633056640625, 5.633110296634631],
+ [143.9609375, 5.662701238627725],
+ [146.31298828125, 5.678906941005323],
+ [155.0980224609375, 5.737214893086866],
+ [155.47784423828125, 5.739660763047893],
+ [155.74066162109375, 5.741349685869528],
+ [163.60546875, 5.790614371552514],
+ [178.735107421875, 5.879059869096351],
+ [179.70269775390625, 5.884458728291027],
+ [179.81976318359375, 5.885109945587401],
+ [181.3594970703125, 5.893636014368936],
+ [194.82861328125, 5.965274032538233],
+ [195.23284912109375, 5.967346683696556],
+ [199.07666015625, 5.986843466070591],
+ [205.77423095703125, 6.019932686217942],
+ [206.04608154296875, 6.021252909681261],
+ [209.36480712890625, 6.037231102920489],
+ [210.703857421875, 6.043606439928324],
+ [215.2139892578125, 6.06478541011501],
+ [225.83892822265625, 6.112974120371601],
+ [226.95465087890625, 6.117902255760311],
+ [232.79864501953125, 6.1433256889594094],
+ [240.647216796875, 6.176483527820343],
+ [243.1324462890625, 6.186757751007361],
+ [251.26702880859375, 6.219667373726848],
+ [253.72906494140625, 6.229418088083555],
+ [254.6866455078125, 6.233184983047428],
+ [257.2001953125, 6.243005711460192],
+ [257.7401123046875, 6.245102704489327],
+ [261.731201171875, 6.260468857392134],
+ [263.75, 6.268152459140511],
+ [265.5167236328125, 6.2748285545831655],
+ [273.9171142578125, 6.305976070434008],
+ [278.897705078125, 6.32399546069982],
+ [279.167236328125, 6.324961403980197],
+ [292.207275390625, 6.370613506132747],
+ [293.5975341796875, 6.375359978930309],
+ [293.9749755859375, 6.3766447200146],
+ [295.1998291015625, 6.380802563199264],
+ [297.2799072265625, 6.387824152942429],
+ [297.9285888671875, 6.390003820200831],
+ [298.1058349609375, 6.3905985680679],
+ [300.2803955078125, 6.397866642974941],
+ [307.531005859375, 6.421725738171608],
+ [308.1754150390625, 6.423818963102848],
+ [309.7344970703125, 6.428865255911759],
+ [314.2847900390625, 6.443449261058927],
+ [314.7236328125, 6.444844602076255],
+ [320.8406982421875, 6.464094341970107],
+ [321.2459716796875, 6.465356699668166],
+ [321.9031982421875, 6.467400466944125],
+ [323.457763671875, 6.472218114936839],
+ [330.82861328125, 6.4947499213823265],
+ [335.008544921875, 6.507305446835735],
+ [340.7171630859375, 6.524202033435675],
+ [348.4677734375, 6.546694993078936],
+ [349.1292724609375, 6.548591493378012],
+ [372.4288330078125, 6.613194950203132],
+ [376.7574462890625, 6.6247505436339065],
+ [378.4306640625, 6.629181796246806],
+ [390.9031982421875, 6.6616087711302185],
+ [405.7918701171875, 6.698989091751707],
+ [407.3646240234375, 6.702857353572475],
+ [413.3758544921875, 6.717505881986416],
+ [415.7354736328125, 6.723197804327891],
+ [417.193603515625, 6.726699007993023],
+ [420.874755859375, 6.735483889307782],
+ [429.2635498046875, 6.755219602793124],
+ [429.756103515625, 6.756366380816258],
+ [433.9931640625, 6.766177290841293],
+ [434.0106201171875, 6.766217511883346],
+ [440.073974609375, 6.780091308338912],
+ [450.2220458984375, 6.802889310303153],
+ [455.017578125, 6.813484439494547],
+ [457.1668701171875, 6.818196843455478],
+ [457.5068359375, 6.818940201487998],
+ [459.2913818359375, 6.822833193143805],
+ [459.492431640625, 6.82327083544577],
+ [459.743896484375, 6.823817951018],
+ [464.888427734375, 6.834945773756887],
+ [464.96630859375, 6.835113285253827],
+ [467.6949462890625, 6.840964582694129],
+ [468.86767578125, 6.84346890521034],
+ [470.5927734375, 6.847141429556457],
+ [481.109619140625, 6.869243403190376],
+ [487.4595947265625, 6.882355637062964],
+ [488.521484375, 6.884531678915821],
+ [492.8812255859375, 6.89341643293734],
+ [494.0684814453125, 6.895822338701104],
+ [496.4613037109375, 6.900653737167637],
+ [716.154052734375, 7.2670429692740965],
+ [1799.92578125, 8.188647968122073],
+ [3564.845703125, 8.872023251113289],
+ [7139.869140625, 9.566596912986167],
+ [12081.22265625, 10.092554861905608],
+ [22810.2421875, 10.728112113864427],
+ [46598.96875, 11.442480870715618],
+ [108493.375, 12.28759157077177],
+ [153860.8125, 12.636950838344218],
+ [307019.5, 13.327813723030063],
+ [682577.25, 14.126778167009777],
+ [1788919, 15.090269265334971],
+ [3769169, 15.835512291283944],
+ [4327820, 15.973721689554742],
+ [11044024, 16.910547205715446],
+ [21423208, 17.573132558903225],
+ [62828288, 18.649063156437965],
+ [70207360, 18.760110887365155],
+ [154231424, 19.547111966180875],
+ [294509056, 20.193967491567523],
+ [1070557184, 21.484592263156223],
+ [1957922816, 22.088297141021556],
+ [3912507392, 22.780591462699917],
+ [7279233024, 23.401438520318692],
+ [9665245184, 23.684949498080787],
+ [22627590144, 24.5355829820426],
+ [60601991168, 25.520740767599584],
+ [134018236416, 26.31438890085422],
+ [204864946176, 26.73876398039979],
+ [284346286080, 27.06660583008718],
+ [914576637952, 28.234874284944635],
+ [1581915832320, 28.78280496108106]
+];
+
+for (var [x, y] of sinh_data)
+ assertNear(Math.asinh(x), y);
+
+assertNear(Math.asinh(1e300), 691.4686750787737);
+assertNear(Math.asinh(1e-300), 1e-300);
+assertNear(Math.asinh(1e-5), 0.000009999999999833334);
+assertNear(Math.asinh(0.3), 0.29567304756342244);
+assertNear(Math.asinh(1), 0.881373587019543);
+
+for (var i = 0; i <= 80; i++) {
+ var x = (i - 40) / 4;
+ assertNear(Math.asinh(Math.sinh(x)), x);
+}
+
+for (var i = -20; i < 20; i++)
+ assertNear(Math.asinh(Math.sinh(i)), i);
+
+reportCompare(0, 0, "ok");
+
diff --git a/js/src/tests/ecma_6/Math/asinh-exact.js b/js/src/tests/ecma_6/Math/asinh-exact.js
new file mode 100644
index 000000000..49463d01f
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/asinh-exact.js
@@ -0,0 +1,19 @@
+// Properties of Math.asinh that are guaranteed by the spec.
+
+// If x is NaN, the result is NaN.
+assertEq(Math.asinh(NaN), NaN);
+
+// If x is +0, the result is +0.
+assertEq(Math.asinh(+0), +0);
+
+// If x is −0, the result is −0.
+assertEq(Math.asinh(-0), -0);
+
+// If x is +∞, the result is +∞.
+assertEq(Math.asinh(Infinity), Infinity);
+
+// If x is −∞, the result is −∞.
+assertEq(Math.asinh(-Infinity), -Infinity);
+
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/atanh-approx.js b/js/src/tests/ecma_6/Math/atanh-approx.js
new file mode 100644
index 000000000..fcf61892d
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/atanh-approx.js
@@ -0,0 +1,280 @@
+var tanh_data = [
+ [-0.9999983310699463, -6.998237084679027],
+ [-0.9999978542327881, -6.87257975132917],
+ [-0.999992847442627, -6.2705920974657525],
+ [-0.9999861717224121, -5.940967614084813],
+ [-0.9999828338623047, -5.832855225378502],
+ [-0.9999399185180664, -5.20646301208756],
+ [-0.9998834133148193, -4.8749821841810785],
+ [-0.9998509883880615, -4.752279497280338],
+ [-0.9996016025543213, -4.260504202858904],
+ [-0.9993612766265869, -4.0244334353203115],
+ [-0.9989283084869385, -3.7655641082999236],
+ [-0.9969782829284668, -3.246782610980921],
+ [-0.9950058460235596, -2.9950671179940938],
+ [-0.9942638874053955, -2.9256242749609536],
+ [-0.990715742111206, -2.6839646283308363],
+ [-0.9903340339660645, -2.663723350226518],
+ [-0.9760982990264893, -2.207464998348322],
+ [-0.975830078125, -2.201817459680556],
+ [-0.9728245735168457, -2.1424542308291437],
+ [-0.9643559455871582, -2.0046686756020917],
+ [-0.9377224445343018, -1.7188337346177065],
+ [-0.9362406730651855, -1.7066940482565154],
+ [-0.9310147762298584, -1.6659543005533146],
+ [-0.9284839630126953, -1.6472838718760747],
+ [-0.9270248413085938, -1.6368067340881562],
+ [-0.9075665473937988, -1.5135473477311114],
+ [-0.897477388381958, -1.4590986086331497],
+ [-0.8920106887817383, -1.431681573516303],
+ [-0.8776559829711914, -1.365471286049011],
+ [-0.864722728729248, -1.3117705583444539],
+ [-0.8482067584991455, -1.249725893334944],
+ [-0.8056559562683105, -1.1145246028592257],
+ [-0.8048388957977295, -1.112200609756455],
+ [-0.7801985740661621, -1.0458778330822556],
+ [-0.7749934196472168, -1.032711173436253],
+ [-0.7619285583496094, -1.0007967281362184],
+ [-0.7504425048828125, -0.9739672824457072],
+ [-0.7495596408843994, -0.9719492983286864],
+ [-0.7481319904327393, -0.968698942014487],
+ [-0.7459518909454346, -0.9637657636705832],
+ [-0.7401137351989746, -0.9507308314464193],
+ [-0.7289731502532959, -0.9265325319867653],
+ [-0.7226788997650146, -0.9132299082876396],
+ [-0.7161557674407959, -0.8997082193533088],
+ [-0.7017018795013428, -0.8706453720344796],
+ [-0.7013418674468994, -0.86993650130945],
+ [-0.691054105758667, -0.8499705913361888],
+ [-0.6847054958343506, -0.837919455842005],
+ [-0.6838164329528809, -0.8362476144993315],
+ [-0.6747090816497803, -0.8193374156276964],
+ [-0.6575610637664795, -0.7885046044142132],
+ [-0.6522045135498047, -0.7791255597799839],
+ [-0.6261923313140869, -0.7351275788820003],
+ [-0.623173713684082, -0.7301771459970386],
+ [-0.6067488193511963, -0.7037597526130627],
+ [-0.5838055610656738, -0.6682166303197608],
+ [-0.579524040222168, -0.6617457665293066],
+ [-0.5760939121246338, -0.656596458857398],
+ [-0.5654678344726562, -0.6408350116350283],
+ [-0.5578761100769043, -0.6297442839791668],
+ [-0.5523209571838379, -0.6217149641475687],
+ [-0.5396339893341064, -0.6036390747171698],
+ [-0.5128989219665527, -0.5666556256064771],
+ [-0.5087778568267822, -0.5610793900942042],
+ [-0.4977825880050659, -0.546353950571504],
+ [-0.4913865327835083, -0.5378865967606703],
+ [-0.48976075649261475, -0.5357455496477738],
+ [-0.48493504524230957, -0.5294166456244711],
+ [-0.4479050636291504, -0.4820764946679979],
+ [-0.4461095333099365, -0.4798325976916711],
+ [-0.4429593086242676, -0.47590653371561276],
+ [-0.42827916145324707, -0.45778739362936793],
+ [-0.40590059757232666, -0.4306933608076879],
+ [-0.40029656887054443, -0.4240020382545707],
+ [-0.3961341381072998, -0.4190551379319939],
+ [-0.3836275339126587, -0.40430627175908734],
+ [-0.36686253547668457, -0.3847928551425507],
+ [-0.3657644987106323, -0.38352464227459343],
+ [-0.33507001399993896, -0.3485286317501442],
+ [-0.32572221755981445, -0.3380352468276522],
+ [-0.3191967010498047, -0.3307524237890151],
+ [-0.3000025749206543, -0.3095224337886503],
+ [-0.29665136337280273, -0.3058438250228025],
+ [-0.2944457530975342, -0.3034271164344305],
+ [-0.2872810363769531, -0.29560018347246825],
+ [-0.27738428115844727, -0.28484608203169437],
+ [-0.2390844225883484, -0.2438028008332661],
+ [-0.23685944080352783, -0.24144425169391517],
+ [-0.2253856658935547, -0.2293228153248168],
+ [-0.22283810377120972, -0.22664053064745143],
+ [-0.21552443504333496, -0.21895773601143995],
+ [-0.2153375744819641, -0.21876178107952995],
+ [-0.21016258001327515, -0.21334143320771737],
+ [-0.20250272750854492, -0.2053409277979887],
+ [-0.19156384468078613, -0.19396008474133075],
+ [-0.18251943588256836, -0.18458771439322938],
+ [-0.17464947700500488, -0.17645844608618066],
+ [-0.15646183490753174, -0.15775766677189154],
+ [-0.15580910444259644, -0.15708862621964176],
+ [-0.15365445613861084, -0.15488112515549593],
+ [-0.122499018907547, -0.12311733609904851],
+ [-0.1088167130947113, -0.10924929296737837],
+ [-0.08792558312416077, -0.08815322150790302],
+ [-0.08401328325271606, -0.08421178632314608],
+ [-0.06121261417865753, -0.06128924075509796],
+ [-0.05341699719429016, -0.05346789060550386],
+ [-0.05047759413719177, -0.05052053189238029],
+ [-0.02924579381942749, -0.029254136237332657],
+ [-0.02485968917608261, -0.02486481220617492],
+ [-0.020469173789024353, -0.02047203328100153],
+ [-0.01882001757621765, -0.018822240021756347],
+ [-0.016152501106262207, -0.016153906073109205],
+ [-0.0032715508714318275, -0.003271562543358962],
+ [1.6504814008555524e-12, 1.6504814008555524e-12],
+ [2.0654207510961697e-12, 2.0654207510961697e-12],
+ [6.933230031758164e-12, 6.933230031758164e-12],
+ [1.3351444949627478e-11, 1.3351444949627478e-11],
+ [1.6399812063916386e-11, 1.6399812063916386e-11],
+ [5.730159402528301e-11, 5.730159402528301e-11],
+ [1.113731329382972e-10, 1.113731329382972e-10],
+ [1.4214707189097453e-10, 1.4214707189097453e-10],
+ [3.8006320313144215e-10, 3.8006320313144215e-10],
+ [6.09162720266454e-10, 6.09162720266454e-10],
+ [1.0221641311147778e-9, 1.0221641311147778e-9],
+ [2.8819222563924995e-9, 2.8819222563924995e-9],
+ [4.7627768395841485e-9, 4.7627768395841485e-9],
+ [8.854133426439148e-9, 8.854133426439148e-9],
+ [2.3050326092288742e-8, 2.3050326092288745e-8],
+ [5.9392490925347374e-8, 5.939249092534745e-8],
+ [1.166764889148908e-7, 1.1667648891489133e-7],
+ [2.3799674409019644e-7, 2.3799674409020094e-7],
+ [4.684659415943315e-7, 4.684659415943658e-7],
+ [9.382699772686465e-7, 9.382699772689218e-7],
+ [0.00000110398559627356, 0.0000011039855962740086],
+ [0.0000032917760108830407, 0.0000032917760108949305],
+ [0.00000751721381675452, 0.000007517213816896115],
+ [0.000015114666894078255, 0.000015114666895229252],
+ [0.00002986399340443313, 0.00002986399341331128],
+ [0.00003387028118595481, 0.000033870281198906756],
+ [0.00009066011989489198, 0.00009066012014327826],
+ [0.00021949532674625516, 0.0002194953302712184],
+ [0.00043952150736004114, 0.0004395215356621756],
+ [0.0006333151832222939, 0.0006333152678940465],
+ [0.001115123275667429, 0.0011151237378863419],
+ [0.001962467096745968, 0.001962469616086656],
+ [0.005553754046559334, 0.005553811147953338],
+ [0.007324676960706711, 0.0073248079567425],
+ [0.008691128343343735, 0.008691347183450786],
+ [0.011912941932678223, 0.011913505535037906],
+ [0.02993336319923401, 0.029942308168570204],
+ [0.05124260485172272, 0.05128752666822782],
+ [0.05473744869232178, 0.05479221508125444],
+ [0.06158891320228577, 0.061666963819518306],
+ [0.09375360608100891, 0.09402975380882211],
+ [0.09442159533500671, 0.09470370926367391],
+ [0.09443172812461853, 0.09471393321406026],
+ [0.09943729639053345, 0.09976699249016487],
+ [0.11201295256614685, 0.11248498303558895],
+ [0.12310260534286499, 0.12373016402339168],
+ [0.13562965393066406, 0.13647060950861248],
+ [0.13763350248336792, 0.13851257866094746],
+ [0.14749455451965332, 0.14857829980464834],
+ [0.1618971824645996, 0.16333433166790448],
+ [0.17051106691360474, 0.17219298693637355],
+ [0.17051833868026733, 0.17220047646299907],
+ [0.18562912940979004, 0.18780647318150087],
+ [0.18898820877075195, 0.1912876932893582],
+ [0.23206615447998047, 0.23637212433914523],
+ [0.23480379581451416, 0.2392675448267427],
+ [0.2646920680999756, 0.27114729033023005],
+ [0.2794986963272095, 0.2871382059344433],
+ [0.28789305686950684, 0.2962673858386819],
+ [0.292596697807312, 0.30140373665239234],
+ [0.3101649284362793, 0.320727882769785],
+ [0.3109246492385864, 0.3215686893944558],
+ [0.31145012378692627, 0.3221505056451929],
+ [0.3271782398223877, 0.3396649461699478],
+ [0.3574345111846924, 0.37394153436545424],
+ [0.3593693971633911, 0.37616159223090223],
+ [0.35960352420806885, 0.37643046596933716],
+ [0.3626827001571655, 0.3799714809649667],
+ [0.38961827754974365, 0.4113499159905353],
+ [0.3904266357421875, 0.41230330080214],
+ [0.3981136083602905, 0.4214052375603139],
+ [0.411507248878479, 0.43742438709579096],
+ [0.4120509624481201, 0.43807911823743495],
+ [0.41868770122528076, 0.4460997186945703],
+ [0.42136549949645996, 0.4493511447897729],
+ [0.4516327381134033, 0.48674948990473677],
+ [0.4538639783859253, 0.4895560176112375],
+ [0.4655507802963257, 0.5043748446613433],
+ [0.48124635219573975, 0.5246050193978663],
+ [0.48621630668640137, 0.5310932154891663],
+ [0.4898730516433716, 0.5358932909903701],
+ [0.5024838447570801, 0.5526234425942533],
+ [0.5074074268341064, 0.5592320547729962],
+ [0.5093221664428711, 0.5618140818296767],
+ [0.5143489837646484, 0.5686253097655146],
+ [0.5154285430908203, 0.5700943191671631],
+ [0.5234100818634033, 0.5810250825991418],
+ [0.5274472236633301, 0.5866018515043636],
+ [0.5309803485870361, 0.5915094458340507],
+ [0.5477793216705322, 0.6152030999229688],
+ [0.5577394962310791, 0.6295459624918965],
+ [0.5582785606384277, 0.6303287742357745],
+ [0.5843560695648193, 0.6690521906099505],
+ [0.5871362686157227, 0.6732844960442398],
+ [0.5878911018371582, 0.6744372167164567],
+ [0.5903406143188477, 0.6781887236623534],
+ [0.5945003032684326, 0.684597775489552],
+ [0.5957975387573242, 0.6866065102131665],
+ [0.5961520671844482, 0.6871563252400655],
+ [0.6005008220672607, 0.6939300827887145],
+ [0.6150004863739014, 0.7169242329194352],
+ [0.6162893772125244, 0.7189998055497108],
+ [0.6194069385528564, 0.7240422748778544],
+ [0.6285066604614258, 0.7389438896054792],
+ [0.6293842792510986, 0.7403958734869583],
+ [0.6416172981262207, 0.7609178886018204],
+ [0.6424276828765869, 0.7622965466812235],
+ [0.6437420845031738, 0.7645378650643101],
+ [0.6468508243560791, 0.769864795178161],
+ [0.6615910530090332, 0.7956379107512945],
+ [0.669950008392334, 0.8106524185805045],
+ [0.6813662052154541, 0.8316597473423232],
+ [0.6968657970428467, 0.8611812790659296],
+ [0.6981887817382812, 0.8637579113749143],
+ [0.7447831630706787, 0.9611360201710216],
+ [0.7518312931060791, 0.9771540941752986],
+ [0.7534394264221191, 0.9808634133542229],
+ [0.7567856311798096, 0.9886489208209699],
+ [0.7817282676696777, 1.0497991719828956],
+ [0.8115026950836182, 1.1314141444187586],
+ [0.814647912979126, 1.1406947755584418],
+ [0.8266689777374268, 1.1775230833699681],
+ [0.8313877582550049, 1.1926138225701433],
+ [0.8343038558959961, 1.2021323323039612],
+ [0.8416652679443359, 1.2268570644335162],
+ [0.8584413528442383, 1.2873896671573652],
+ [0.8678996562957764, 1.3245040433929398],
+ [0.8679344654083252, 1.3246451309261607],
+ [0.8800599575042725, 1.3760334877782177],
+ [0.9003539085388184, 1.4740852961194106],
+ [0.9099440574645996, 1.5271990851861994],
+ [0.9142425060272217, 1.5527768948273004],
+ [0.9149219989776611, 1.556931837197936],
+ [0.9184908866882324, 1.5792896628381612],
+ [0.9188928604125977, 1.5818663359427627],
+ [0.919395923614502, 1.5851082843320008],
+ [0.9296839237213135, 1.6560555223295368],
+ [0.9298396110534668, 1.6572041418041492],
+ [0.9352962970733643, 1.6990986433619266],
+ [0.9376416206359863, 1.718164398807965],
+ [0.9410912990570068, 1.7475084077246632],
+ [0.962122917175293, 1.9737180163455101],
+ [0.9748215675354004, 2.1811227771083783],
+ [0.9769454002380371, 2.2257214499698255],
+ [0.985663890838623, 2.4654635601650536],
+ [0.9880380630493164, 2.5565869228142004],
+ [0.9928233623504639, 2.8132383539094192],
+ [1e-300, 1e-300],
+ [0.00001, 0.000010000000000333334],
+ [0.3, 0.3095196042031117],
+ [1e-30, 1e-30],
+ [1e-10, 1e-10],
+];
+
+var sloppy_tolerance = 2; // FIXME
+
+for (var [x, y] of tanh_data)
+ assertNear(Math.atanh(x), y, sloppy_tolerance);
+
+assertNear(Math.atanh(+3 / 5), +Math.log(2), sloppy_tolerance);
+assertNear(Math.atanh(-3 / 5), -Math.log(2), sloppy_tolerance);
+
+for (var i = -1; i < 1; i += 0.05)
+ assertNear(Math.atanh(Math.tanh(i)), i, sloppy_tolerance);
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/atanh-exact.js b/js/src/tests/ecma_6/Math/atanh-exact.js
new file mode 100644
index 000000000..f49bdb1ac
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/atanh-exact.js
@@ -0,0 +1,35 @@
+// Properties of Math.atanh that are guaranteed by the spec.
+
+// If x is NaN, the result is NaN.
+assertEq(Math.atanh(NaN), NaN);
+
+// If x is less than −1, the result is NaN.
+assertEq(Math.atanh(-ONE_PLUS_EPSILON), NaN);
+assertEq(Math.atanh(-Number.MAX_VALUE), NaN);
+assertEq(Math.atanh(-Infinity), NaN);
+
+for (var i = -5; i < -1; i += 0.1)
+ assertEq(Math.atanh(i), NaN);
+
+// If x is greater than 1, the result is NaN.
+assertEq(Math.atanh(ONE_PLUS_EPSILON), NaN);
+assertEq(Math.atanh(Number.MAX_VALUE), NaN);
+assertEq(Math.atanh(Infinity), NaN);
+
+for (var i = +5; i > +1; i -= 0.1)
+ assertEq(Math.atanh(i), NaN);
+
+// If x is −1, the result is −∞.
+assertEq(Math.atanh(-1), -Infinity);
+
+// If x is +1, the result is +∞.
+assertEq(Math.atanh(+1), Infinity);
+
+// If x is +0, the result is +0.
+assertEq(Math.atanh(+0), +0);
+
+// If x is −0, the result is −0.
+assertEq(Math.atanh(-0), -0);
+
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/browser.js b/js/src/tests/ecma_6/Math/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/browser.js
diff --git a/js/src/tests/ecma_6/Math/cbrt-approx.js b/js/src/tests/ecma_6/Math/cbrt-approx.js
new file mode 100644
index 000000000..1f54bb5a6
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/cbrt-approx.js
@@ -0,0 +1,17 @@
+assertEq(Math.cbrt(1), 1);
+assertEq(Math.cbrt(-1), -1);
+
+assertNear(Math.cbrt(1e-300), 1e-100);
+assertNear(Math.cbrt(-1e-300), -1e-100);
+
+var cbrt_data = [
+ [ Math.E, 1.3956124250860895 ],
+ [ Math.PI, 1.4645918875615231 ],
+ [ Math.LN2, 0.8849970445005177 ],
+ [ Math.SQRT2, 1.1224620483093728 ]
+];
+
+for (var [x, y] of cbrt_data)
+ assertNear(Math.cbrt(x), y);
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/cbrt-exact.js b/js/src/tests/ecma_6/Math/cbrt-exact.js
new file mode 100644
index 000000000..e0b7289f0
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/cbrt-exact.js
@@ -0,0 +1,19 @@
+// Properties of Math.cbrt that are guaranteed by the spec.
+
+// If x is NaN, the result is NaN.
+assertEq(Math.cbrt(NaN), NaN);
+
+// If x is +0, the result is +0.
+assertEq(Math.cbrt(+0), +0);
+
+// If x is −0, the result is −0.
+assertEq(Math.cbrt(-0), -0);
+
+// If x is +∞, the result is +∞.
+assertEq(Math.cbrt(Infinity), Infinity);
+
+// If x is −∞, the result is −∞.
+assertEq(Math.cbrt(-Infinity), -Infinity);
+
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/clz32.js b/js/src/tests/ecma_6/Math/clz32.js
new file mode 100644
index 000000000..006267636
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/clz32.js
@@ -0,0 +1,40 @@
+// Undefined and NaN end up as zero after ToUint32
+assertEq(Math.clz32(), 32);
+assertEq(Math.clz32(NaN), 32);
+assertEq(Math.clz32.call(), 32);
+// 0
+assertEq(Math.clz32(null), 32);
+assertEq(Math.clz32(false), 32);
+// 1
+assertEq(Math.clz32(true), 31);
+// 3
+assertEq(Math.clz32(3.5), 30);
+// NaN -> 0
+assertEq(Math.clz32({}), 32);
+// 2
+assertEq(Math.clz32({valueOf: function() { return 2; }}), 30);
+// 0 -> 0
+assertEq(Math.clz32([]), 32);
+assertEq(Math.clz32(""), 32);
+// NaN -> 0
+assertEq(Math.clz32([1, 2, 3]), 32);
+assertEq(Math.clz32("bar"), 32);
+// 15
+assertEq(Math.clz32("15"), 28);
+
+
+assertEq(Math.clz32(0x80000000), 0);
+assertEq(Math.clz32(0xF0FF1000), 0);
+assertEq(Math.clz32(0x7F8F0001), 1);
+assertEq(Math.clz32(0x3FFF0100), 2);
+assertEq(Math.clz32(0x1FF50010), 3);
+assertEq(Math.clz32(0x00800000), 8);
+assertEq(Math.clz32(0x00400000), 9);
+assertEq(Math.clz32(0x00008000), 16);
+assertEq(Math.clz32(0x00004000), 17);
+assertEq(Math.clz32(0x00000080), 24);
+assertEq(Math.clz32(0x00000040), 25);
+assertEq(Math.clz32(0x00000001), 31);
+assertEq(Math.clz32(0), 32);
+
+reportCompare(0, 0, 'ok');
diff --git a/js/src/tests/ecma_6/Math/cosh-approx.js b/js/src/tests/ecma_6/Math/cosh-approx.js
new file mode 100644
index 000000000..d724aa294
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/cosh-approx.js
@@ -0,0 +1,276 @@
+assertEq(Math.cosh(1000), Infinity);
+assertEq(Math.cosh(Number.MAX_VALUE), Infinity);
+assertNear(Math.cosh(1e-30), 1);
+assertNear(Math.cosh(1e-10), 1);
+
+var cosh_data = [
+ [0.0016914556651292944, 1.0000014305114746],
+ [0.001953124689559275, 1.0000019073486328],
+ [0.003782208044661295, 1.000007152557373],
+ [0.005258943946801101, 1.000013828277588],
+ [0.005859366618129203, 1.0000171661376953],
+ [0.010961831992188852, 1.0000600814819336],
+ [0.015285472131830425, 1.0001168251037598],
+ [0.017249319093529877, 1.0001487731933594],
+ [0.028218171738655373, 1.0003981590270996],
+ [0.03573281468231457, 1.000638484954834],
+ [0.046287402472878776, 1.0010714530944824],
+ [0.07771996527168971, 1.0030217170715332],
+ [0.0998975930860278, 1.0049939155578613],
+ [0.13615938768032465, 1.0092840194702148],
+ [0.21942279004958354, 1.024169921875],
+ [0.3511165938166055, 1.0622773170471191],
+ [0.48975026711288183, 1.1223440170288086],
+ [0.692556883708491, 1.2495574951171875],
+ [0.954530572221414, 1.4912219047546387],
+ [1.307581416910453, 1.983847141265869],
+ [1.4035188779741334, 2.1576128005981445],
+ [1.5250070845427517, 2.406397819519043],
+ [1.8905372013072799, 3.386958122253418],
+ [2.1735673399948254, 4.451677322387695],
+ [2.625091127868242, 6.939132690429686],
+ [2.737434918695162, 7.756023406982421],
+ [2.8740317167801948, 8.88236999511719],
+ [2.97998639328949, 9.869171142578123],
+ [3.516549380542481, 16.848876953125],
+ [3.51867003468025, 16.884582519531254],
+ [3.593185165198829, 18.18859100341797],
+ [3.6273672142963385, 18.82012176513672],
+ [3.646553244410946, 19.184181213378906],
+ [3.872413451393967, 24.03952026367187],
+ [3.972085568933329, 26.556991577148434],
+ [4.022209178119238, 27.921104431152337],
+ [4.168428891496629, 32.31466674804686],
+ [4.240546229861005, 34.730087280273445],
+ [4.290698214968891, 36.51556396484376],
+ [4.352722738491574, 38.851287841796875],
+ [4.594386162629449, 49.46875],
+ [4.598500387004538, 49.67265319824219],
+ [4.7152173401856095, 55.821014404296896],
+ [4.73822104001982, 57.119781494140604],
+ [4.793733825338029, 60.37983703613279],
+ [4.8435923769530165, 63.46618652343747],
+ [4.849190310904695, 63.82241821289062],
+ [4.85767897228448, 64.36642456054685],
+ [4.880061548144127, 65.82318115234375],
+ [4.921430721025434, 68.60302734374997],
+ [4.94406835208057, 70.17358398437497],
+ [4.967000841791218, 71.80126953124997],
+ [5.016014824864732, 75.40786743164065],
+ [5.017205657609766, 75.49771118164062],
+ [5.0506448716550825, 78.06475830078126],
+ [5.0707363201405276, 79.64892578125],
+ [5.073517411135063, 79.87072753906253],
+ [5.101574796209937, 82.14324951171874],
+ [5.152357710985635, 86.4221496582031],
+ [5.167705692500117, 87.75869750976562],
+ [5.2390637098028074, 94.24942016601562],
+ [5.247023676519904, 95.00259399414062],
+ [5.258134994273664, 96.06402587890626],
+ [5.289261389093961, 99.10101318359374],
+ [5.345425863147171, 104.82595825195315],
+ [5.3555664787245885, 105.89431762695308],
+ [5.363617180711895, 106.750244140625],
+ [5.388152468690488, 109.40167236328122],
+ [5.405320225963013, 111.2959899902344],
+ [5.417698597745429, 112.68215942382815],
+ [5.445406415908933, 115.8478698730469],
+ [5.501396249028249, 122.51895141601562],
+ [5.531718947357248, 126.29083251953128],
+ [5.544277233951787, 127.88677978515626],
+ [5.547444176085567, 128.29241943359372],
+ [5.556786759298988, 129.49658203125006],
+ [5.625710723366437, 138.7365112304687],
+ [5.628934733085022, 139.18450927734378],
+ [5.634566685055491, 139.97058105468747],
+ [5.660401141376928, 143.63366699218747],
+ [5.698541939965668, 149.21765136718753],
+ [5.7078698961812995, 150.6160278320313],
+ [5.714741890601693, 151.6546020507813],
+ [5.735111323217677, 154.77532958984378],
+ [5.761781191641161, 158.95861816406253],
+ [5.763503378028959, 159.23260498046878],
+ [5.810483079631769, 166.89166259765622],
+ [5.824362807770767, 169.22418212890625],
+ [5.833939098607025, 170.85247802734372],
+ [5.861586030831371, 175.64184570312503],
+ [5.866335876872544, 176.47808837890625],
+ [5.869449614294116, 177.02844238281247],
+ [5.879497954012966, 178.81622314453122],
+ [5.893213844044451, 181.28570556640625],
+ [5.944588630523773, 190.84246826171866],
+ [5.947493525920713, 191.39764404296875],
+ [5.962341215900494, 194.26062011718753],
+ [5.9656082276276, 194.89630126953122],
+ [5.9749284849312865, 196.7212524414062],
+ [5.975165500176202, 196.76788330078128],
+ [5.981706804024238, 198.05920410156241],
+ [5.991310884439669, 199.9705200195312],
+ [6.004868209578554, 202.70001220703122],
+ [6.0159406892865155, 204.95684814453116],
+ [6.025476453825986, 206.92059326171866],
+ [6.047172064627678, 211.45886230468741],
+ [6.0479418642231595, 211.62170410156256],
+ [6.050479329955437, 212.1593627929687],
+ [6.086466833749719, 219.93341064453125],
+ [6.101870903204913, 223.3474731445312],
+ [6.1249427443985525, 228.56036376953128],
+ [6.129204755426344, 229.53656005859375],
+ [6.136241935513706, 231.1575317382813],
+ [6.153688953514383, 235.22589111328134],
+ [6.1619244798633215, 237.17108154296884],
+ [6.165012268502458, 237.90454101562506],
+ [6.187036941752032, 243.202392578125],
+ [6.191527178125454, 244.29687500000003],
+ [6.196001570568187, 245.3923950195312],
+ [6.197677082130341, 245.80389404296875],
+ [6.2133379061260285, 249.68365478515622],
+ [6.223871642756905, 252.3276367187501],
+ [6.228398760115369, 253.47253417968756],
+ [6.269692237869835, 264.1583251953126],
+ [6.276143287577458, 265.8679199218749],
+ [6.305884283737176, 273.89379882812494],
+ [6.306492908028797, 274.0605468750001],
+ [6.3065018163217115, 274.06298828125006],
+ [6.31104892482331, 275.3120117187501],
+ [6.3322712125431915, 281.2171630859374],
+ [6.343324976847916, 284.34289550781244],
+ [6.345081883725142, 284.84289550781256],
+ [6.353683609448096, 287.30358886718756],
+ [6.366114643735997, 290.8973388671876],
+ [6.373476431987165, 293.0467529296875],
+ [6.3734826803404045, 293.04858398437494],
+ [6.3862671775996915, 296.819091796875],
+ [6.389086936901673, 297.6572265625],
+ [6.424562459508495, 308.4062500000001],
+ [6.4506171773701535, 316.5472412109376],
+ [6.462221144761522, 320.24182128906256],
+ [6.468740575092418, 322.33642578125],
+ [6.472375224718483, 323.5101318359374],
+ [6.485834999462654, 327.8939208984375],
+ [6.486412623146554, 328.08337402343744],
+ [6.486812521370483, 328.214599609375],
+ [6.498698952535687, 332.1391601562501],
+ [6.521175044233963, 339.6888427734376],
+ [6.522595306993373, 340.171630859375],
+ [6.522766822935215, 340.2299804687499],
+ [6.52502285413445, 340.99841308593744],
+ [6.5445411825986985, 347.7194824218749],
+ [6.5451209675856825, 347.9211425781249],
+ [6.55061885367159, 349.8392333984375],
+ [6.560126626713879, 353.1812744140626],
+ [6.560510895819139, 353.31701660156244],
+ [6.565186990039135, 354.97302246093756],
+ [6.567067660815945, 355.64123535156233],
+ [6.588081320423386, 363.19360351562517],
+ [6.5896131163651415, 363.7503662109376],
+ [6.597598047275183, 366.66650390624983],
+ [6.608222493065004, 370.5828857421874],
+ [6.611563301604297, 371.822998046875],
+ [6.622421213257873, 375.88220214843756],
+ [6.625684248051368, 377.11071777343744],
+ [6.626950731244344, 377.58862304687483],
+ [6.630267034079059, 378.8428955078124],
+ [6.630977920761718, 379.11230468749994],
+ [6.636217452968849, 381.10388183593756],
+ [6.638857149899159, 382.1112060546874],
+ [6.641161660644278, 382.9927978515625],
+ [6.652047018118426, 387.1845703124999],
+ [6.658445560711748, 389.66992187499994],
+ [6.658790721334144, 389.8044433593749],
+ [6.675345858154136, 396.3114013671875],
+ [6.677094789236718, 397.00512695312494],
+ [6.6775691166680895, 397.1934814453124],
+ [6.679106750673113, 397.80468749999994],
+ [6.681712590609845, 398.84265136718744],
+ [6.682523938576487, 399.16638183593744],
+ [6.68274532345516, 399.2547607421874],
+ [6.685459416477178, 400.3398437499999],
+ [6.694456277839498, 403.9578857421875],
+ [6.6952522228540765, 404.27954101562517],
+ [6.6971746771142415, 405.05749511718744],
+ [6.702764738337774, 407.328125],
+ [6.7033022311799595, 407.54711914062506],
+ [6.710763953621196, 410.59948730468756],
+ [6.711256159037373, 410.8016357421876],
+ [6.712054288828399, 411.12963867187494],
+ [6.713939407502346, 411.9053955078124],
+ [6.722828986708716, 415.5833740234374],
+ [6.727835453862132, 417.66918945312506],
+ [6.734632628835641, 420.51782226562506],
+ [6.743787740494532, 424.38537597656233],
+ [6.744565219553757, 424.71545410156244],
+ [6.7715720212680655, 436.3419189453125],
+ [6.776510146304201, 438.50195312500017],
+ [6.778412462065226, 439.33691406250017],
+ [6.79247934060035, 445.5606689453126],
+ [6.809016260337229, 452.9901123046875],
+ [6.810747231716348, 453.7749023437499],
+ [6.817335895109251, 456.7745361328125],
+ [6.819910421197311, 457.9520263671875],
+ [6.821497844004013, 458.6795654296874],
+ [6.8254946428721475, 460.51647949218767],
+ [6.828433164406687, 461.87170410156256],
+ [6.834543470287694, 464.70251464843756],
+ [6.839609377592375, 467.06262207031267],
+ [6.839627933844213, 467.0712890625001],
+ [6.846084943645239, 470.09692382812494],
+ [6.856799276049143, 475.16076660156233],
+ [6.861822721577315, 477.5537109374998],
+ [6.864066049482581, 478.62622070312517],
+ [6.864420497333681, 478.79589843750017],
+ [6.866278653973069, 479.68640136718733],
+ [6.866487814627139, 479.7867431640625],
+ [6.8667493311188395, 479.9122314453126],
+ [6.872084270243208, 482.4793701171875],
+ [6.872164723177875, 482.5181884765627],
+ [6.874982560453874, 483.87976074218767],
+ [6.876191234145179, 484.46496582031233],
+ [6.877966548833207, 485.3258056640624],
+ [6.888721726428236, 490.57373046875006],
+ [6.89515989558997, 493.74230957031244],
+ [6.896232568812718, 494.2722167968751],
+ [6.900624415355815, 496.44775390624983],
+ [6.901816998553275, 497.0401611328125],
+ [6.9042162822876465, 498.23413085937483],
+ [7.193052598670793, 665.0791015625001],
+ [7.758155143419732, 1170.29150390625],
+ [8.323023697145112, 2058.795898437501],
+ [9.36298131161099, 5824.533203125004],
+ [9.810748008110926, 9114.308593750004],
+ [11.047341056314202, 31388.40624999998],
+ [11.584925435512535, 53732.765624999956],
+ [12.366958539207397, 117455.0937500001],
+ [13.107089828327874, 246210.62499999983],
+ [13.84248373881162, 513670.1250000003],
+ [14.27084873575108, 788353.2499999999],
+ [15.060339852215408, 1736170.999999999],
+ [15.835873313657556, 3770530.0000000005],
+ [15.977474039173265, 4344089.999999998],
+ [16.943967899150145, 11419360.000000006],
+ [17.943394339560967, 31023239.99999997],
+ [18.214035936745432, 40665424.00000006],
+ [19.374560581709215, 129788063.99999991],
+ [19.927723623778547, 225668224.00000027],
+ [20.619308638400597, 450631936.0000006],
+ [21.129986093026698, 750941952.0000008],
+ [22.05159150215413, 1887358976.0000033],
+ [22.734966842639743, 3738011648.0000052],
+ [23.42954051928097, 7486695423.99999],
+ [23.955498471391667, 12668080127.99998],
+ [24.591055724582848, 23918272512],
+ [25.305424481799395, 48862560256.00005],
+ [26.150535181949436, 113763549183.99998],
+ [26.499894449532565, 161334755328.00018],
+ [27.19075733422632, 321933279232.0004],
+ [27.989721778208146, 715734122496],
+ [28.953212876533797, 1875817529343.9976],
+];
+
+for (var [x, y] of cosh_data)
+ assertNear(Math.cosh(x), y);
+
+for (var i = -20; i < 20; i++)
+ assertNear(Math.cosh(i), (Math.exp(i) + Math.exp(-i)) / 2);
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/cosh-exact.js b/js/src/tests/ecma_6/Math/cosh-exact.js
new file mode 100644
index 000000000..a302776c4
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/cosh-exact.js
@@ -0,0 +1,19 @@
+// Properties of Math.cosh that are guaranteed by the spec.
+
+// If x is NaN, the result is NaN.
+assertEq(Math.cosh(NaN), NaN);
+
+// If x is +0, the result is 1.
+assertEq(Math.cosh(+0), 1);
+
+// If x is −0, the result is 1.
+assertEq(Math.cosh(-0), 1);
+
+// If x is +∞, the result is +∞.
+assertEq(Math.cosh(Infinity), Infinity);
+
+// If x is −∞, the result is +∞.
+assertEq(Math.cosh(-Infinity), Infinity);
+
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/expm1-approx.js b/js/src/tests/ecma_6/Math/expm1-approx.js
new file mode 100644
index 000000000..397ab97eb
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/expm1-approx.js
@@ -0,0 +1,62 @@
+assertNear(Math.expm1(1e-300), 1e-300);
+assertNear(Math.expm1(1e-100), 1e-100);
+assertNear(Math.expm1(1e-14), 1.000000000000005e-14);
+assertNear(Math.expm1(1e-6), 0.0000010000005000001665);
+
+var expm1_data = [
+ [ -1.875817529344e-70, -1.875817529344e-70 ],
+ [ -7.09962844069878e-15, -7.099628440698755e-15 ],
+ [ -2.114990849122478e-10, -2.1149908488988187e-10 ],
+ [ -0.0000031404608812881633, -0.000003140455950046052 ],
+
+ [ -0.0000011039855962733358, -0.0000011039849868814618 ],
+ [ -0.000015114666893502755, -0.0000151145526675006 ],
+ [ -0.000033870281179478836, -0.000033869707587981166 ],
+ [ -0.00043952149320897676, -0.00043942491778698985 ],
+ [ -0.005553725496786973, -0.005538332073473123 ],
+ [ -0.05122020579778827, -0.049930563302241604 ],
+ [ -0.4721357117742938, -0.3763311320344197 ],
+ [ -1.2781607348262256, -0.7214508446489242 ],
+
+ [ 1.875817529344e-70, 1.875817529344e-70 ],
+ [ 6.261923313140869e-30, 6.261923313140869e-30 ],
+ [ 7.09962844069878e-15, 7.099628440698805e-15 ],
+ [ 1.3671879628418538e-12, 1.3671879628427884e-12 ],
+ [ 2.114990849122478e-10, 2.1149908493461373e-10 ],
+ [ 1.6900931765206906e-8, 1.6900931908027652e-8 ],
+ [ 0.0000031404608812881633, 0.0000031404658125405988 ],
+
+ [ 0.0000011039855962733358, 0.0000011039862056656584 ],
+ [ 0.000015114666893502755, 0.000015114781120655907 ],
+ [ 0.000033870281179478836, 0.00003387085478392845 ],
+ [ 0.00043952149320897676, 0.0004396180969330924 ],
+ [ 0.005553725496786973, 0.005569176019645543 ],
+ [ 0.05122020579778827, 0.05255464640120383 ],
+ [ 0.4721357117742938, 0.6034149712523235 ],
+ [ 1.2781607348262256, 2.590030631181154 ],
+
+ [ 3.0693960800487883, 20.528897017773147 ],
+ [ 5.560441648750136, 258.9376120972927 ],
+ [ 7.4227656046482595, 1672.6557833191303 ],
+ [ 11.378926299184645, 87458.07941992789 ],
+];
+
+for (var [x, y] of expm1_data)
+ assertNear(Math.expm1(x), y);
+
+var sloppy_tolerance = 34;
+
+var expm1_data_sloppy = [
+ [ 20.11881628179155, 546375092.2355127 ],
+ [ 33.45034324980283, 336743709091858.2 ],
+ [ 46.43974518513109, 147409364838076710000 ],
+ [ 54.60105936314322, 5.163435870507142e+23 ],
+ [ 84.29619209850242, 4.067907545704549e+36 ],
+ [ 125.38131800315817, 2.8340959047812913e+54 ],
+ [ 216.85489905212918, 1.5096839294759775e+94 ],
+];
+
+for (var [x, y] of expm1_data_sloppy)
+ assertNear(Math.expm1(x), y, sloppy_tolerance);
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/expm1-exact.js b/js/src/tests/ecma_6/Math/expm1-exact.js
new file mode 100644
index 000000000..57b94ed22
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/expm1-exact.js
@@ -0,0 +1,20 @@
+// Properties of Math.expm1 that are guaranteed by the spec.
+
+// If x is NaN, the result is NaN.
+assertEq(Math.expm1(NaN), NaN);
+
+// If x is +0, the result is +0.
+assertEq(Math.expm1(+0), +0);
+
+// If x is −0, the result is −0.
+assertEq(Math.expm1(-0), -0);
+
+// If x is +∞, the result is +∞.
+assertEq(Math.expm1(Infinity), Infinity);
+
+// If x is −∞, the result is -1.
+assertEq(Math.expm1(-Infinity), -1);
+
+
+reportCompare(0, 0, "ok");
+
diff --git a/js/src/tests/ecma_6/Math/expm1-monotonicity.js b/js/src/tests/ecma_6/Math/expm1-monotonicity.js
new file mode 100644
index 000000000..2ae25708d
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/expm1-monotonicity.js
@@ -0,0 +1,94 @@
+var BUGNUMBER = 897634;
+var summary = "expm1 should be monotonically increasing";
+
+print(BUGNUMBER + ": " + summary);
+
+function test(x, prev, next) {
+ assertEq(Math.expm1(prev) <= Math.expm1(x), true);
+ assertEq(Math.expm1(x) <= Math.expm1(next), true);
+}
+
+// Thresholds in fdlibm expm1 implementation.
+
+// |hx| == 0x40862E42 or not
+test(-709.7822265625, -709.7822265625001, -709.7822265624999);
+test(709.7822265625, 709.7822265624999, 709.7822265625001);
+
+// |hx| == 0x4043687A or not
+test(-38.81622314453125, -38.81622314453126, -38.81622314453124);
+test(38.81622314453125, 38.81622314453124, 38.81622314453126);
+
+// |hx| == 0x7ff00000 or not
+test(-1.7976931348623157e+308, -Infinity, -1.7976931348623155e+308);
+test(1.7976931348623157e+308, 1.7976931348623155e+308, Infinity);
+
+// |hx| == 0x3fd62e42 or not
+test(-0.3465733528137207, -0.34657335281372076, -0.34657335281372065);
+test(0.3465733528137207, 0.34657335281372065, 0.34657335281372076);
+
+// |hx| == 0x3FF0A2B2 or not
+test(-1.0397205352783203, -1.0397205352783205, -1.03972053527832);
+test(1.0397205352783203, 1.03972053527832, 1.0397205352783205);
+
+// |hx| == 0x3c900000 or not
+test(-5.551115123125783e-17, -5.551115123125784e-17, -5.551115123125782e-17);
+test(5.551115123125783e-17, 5.551115123125782e-17, 5.551115123125784e-17);
+
+// x < -0.25 or not
+test(-0.25, -0.25000000000000006, -0.24999999999999997);
+
+// k == -1 or k == -2
+test(-1.0397207708399179, -1.039720770839918, -1.0397207708399177);
+
+// k == -1 or k == 0
+test(-0.3465735912322998, -0.34657359123229986, -0.34657359123229975);
+
+// k == 0 or k == 1
+test(0.3465735912322998, 0.34657359123229975, 0.34657359123229986);
+
+// k == 1 or k == 2
+test(1.039720770839918, 1.0397207708399179, 1.0397207708399183);
+
+// k == 19 or k == 20
+test(13.516370020918933, 13.51637002091893, 13.516370020918934);
+
+// k == 56 or k == 57
+test(39.16281570163691, 39.1628157016369, 39.162815701636916);
+
+// k == 1023 or k == 1024
+test(709.436139303104, 709.4361393031039, 709.4361393031041);
+
+// k == 1024 or more
+test(709.7827128933841, 709.782712893384, 709.7827128933842);
+
+// Some more random cases.
+test(-1.7976931348623157e+308, -Infinity, -1.7976931348623155e+308);
+test(-1e+223, -1.0000000000000002e+223, -9.999999999999999e+222);
+test(-1e+100, -1.0000000000000002e+100, -9.999999999999998e+99);
+test(-10000000000, -10000000000.000002, -9999999999.999998);
+test(-100000, -100000.00000000001, -99999.99999999999);
+test(-100, -100.00000000000001, -99.99999999999999);
+test(-10, -10.000000000000002, -9.999999999999998);
+test(-1, -1, -0.9999999999999999);
+test(-0.01, -0.010000000000000002, -0.009999999999999998);
+test(-0.00001, -0.000010000000000000003, -0.000009999999999999999);
+test(-1e-10, -1.0000000000000002e-10, -9.999999999999999e-11);
+test(-1e-100, -1.0000000000000001e-100, -9.999999999999999e-101);
+test(-5e-324, -1e-323, 0);
+test(0, -5e-324, 5e-324);
+test(5e-324, 0, 1e-323);
+test(1e-100, 9.999999999999999e-101, 1.0000000000000001e-100);
+test(1e-10, 9.999999999999999e-11, 1.0000000000000002e-10);
+test(0.00001, 0.000009999999999999999, 0.000010000000000000003);
+test(0.01, 0.009999999999999998, 0.010000000000000002);
+test(1, 0.9999999999999999, 1);
+test(10, 9.999999999999998, 10.000000000000002);
+test(100, 99.99999999999999, 100.00000000000001);
+test(100000, 99999.99999999999, 100000.00000000001);
+test(10000000000, 9999999999.999998, 10000000000.000002);
+test(1e+100, 9.999999999999998e+99, 1.0000000000000002e+100);
+test(1e+223, 9.999999999999999e+222, 1.0000000000000002e+223);
+test(1.7976931348623157e+308, 1.7976931348623155e+308, Infinity);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Math/fround.js b/js/src/tests/ecma_6/Math/fround.js
new file mode 100644
index 000000000..353f798d5
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/fround.js
@@ -0,0 +1,81 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+// Some tests regarding conversion to Float32
+assertEq(Math.fround(), NaN);
+
+// Special values
+assertEq(Math.fround(NaN), NaN);
+assertEq(Math.fround(-Infinity), -Infinity);
+assertEq(Math.fround(Infinity), Infinity);
+assertEq(Math.fround(-0), -0);
+assertEq(Math.fround(+0), +0);
+
+// Polyfill function for Float32 conversion
+var toFloat32 = (function() {
+ var f32 = new Float32Array(1);
+ function f(x) {
+ f32[0] = x;
+ return f32[0];
+ }
+ return f;
+})();
+
+// A test on a certain range of numbers, including big numbers, so that
+// we get a loss in precision for some of them.
+for (var i = 0; i < 64; ++i) {
+ var p = Math.pow(2, i) + 1;
+ assertEq(Math.fround(p), toFloat32(p));
+ assertEq(Math.fround(-p), toFloat32(-p));
+}
+
+/********************************************
+/* Tests on maximal Float32 / Double values *
+/*******************************************/
+function maxValue(exponentWidth, significandWidth) {
+ var n = 0;
+ var maxExp = Math.pow(2, exponentWidth - 1) - 1;
+ for (var i = significandWidth; i >= 0; i--)
+ n += Math.pow(2, maxExp - i);
+ return n;
+}
+
+var DBL_MAX = maxValue(11, 52);
+assertEq(DBL_MAX, Number.MAX_VALUE); // sanity check
+
+// Finite as a double, too big for a float
+assertEq(Math.fround(DBL_MAX), Infinity);
+
+var FLT_MAX = maxValue(8, 23);
+assertEq(Math.fround(FLT_MAX), FLT_MAX);
+assertEq(Math.fround(FLT_MAX + Math.pow(2, Math.pow(2, 8 - 1) - 1 - 23 - 2)), FLT_MAX); // round-nearest rounds down to FLT_MAX
+assertEq(Math.fround(FLT_MAX + Math.pow(2, Math.pow(2, 8 - 1) - 1 - 23 - 1)), Infinity); // no longer rounds down to FLT_MAX
+
+/*********************************************************
+/******* Tests on denormalizations and roundings *********
+/********************************************************/
+
+function minValue(exponentWidth, significandWidth) {
+ return Math.pow(2, -(Math.pow(2, exponentWidth - 1) - 2) - significandWidth);
+}
+
+var DBL_MIN = Math.pow(2, -1074);
+assertEq(DBL_MIN, Number.MIN_VALUE); // sanity check
+
+// Too small for a float
+assertEq(Math.fround(DBL_MIN), 0);
+
+var FLT_MIN = minValue(8, 23);
+assertEq(Math.fround(FLT_MIN), FLT_MIN);
+
+assertEq(Math.fround(FLT_MIN / 2), 0); // halfway, round-nearest rounds down to 0 (even)
+assertEq(Math.fround(FLT_MIN / 2 + Math.pow(2, -202)), FLT_MIN); // first double > FLT_MIN / 2, rounds up to FLT_MIN
+
+assertEq(Math.fround(-FLT_MIN), -FLT_MIN);
+
+assertEq(Math.fround(-FLT_MIN / 2), -0); // halfway, round-nearest rounds up to -0 (even)
+assertEq(Math.fround(-FLT_MIN / 2 - Math.pow(2, -202)), -FLT_MIN); // first double < -FLT_MIN / 2, rounds down to -FLT_MIN
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/log10-approx.js b/js/src/tests/ecma_6/Math/log10-approx.js
new file mode 100644
index 000000000..048944851
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/log10-approx.js
@@ -0,0 +1,9 @@
+assertNear(Math.log10(2), 0.3010299956639812);
+assertNear(Math.log10(7), 0.8450980400142568);
+assertNear(Math.log10(Math.E), Math.LOG10E);
+
+for (var i = -10; i < 10; i++)
+ assertNear(Math.log10(Math.pow(10, i)), i);
+
+reportCompare(0, 0, 'ok');
+
diff --git a/js/src/tests/ecma_6/Math/log10-exact.js b/js/src/tests/ecma_6/Math/log10-exact.js
new file mode 100644
index 000000000..0c125306b
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/log10-exact.js
@@ -0,0 +1,30 @@
+// Properties of Math.log10 that are guaranteed by the spec.
+
+// If x is NaN, the result is NaN.
+assertEq(Math.log10(NaN), NaN);
+
+// If x is less than 0, the result is NaN.
+assertEq(Math.log10(-1e-10), NaN);
+assertEq(Math.log10(-1e-5), NaN);
+assertEq(Math.log10(-1e-1), NaN);
+assertEq(Math.log10(-Number.MIN_VALUE), NaN);
+assertEq(Math.log10(-Number.MAX_VALUE), NaN);
+assertEq(Math.log10(-Infinity), NaN);
+
+for (var i = -1; i > -10; i--)
+ assertEq(Math.log10(i), NaN);
+
+// If x is +0, the result is −∞.
+assertEq(Math.log10(+0), -Infinity);
+
+// If x is −0, the result is −∞.
+assertEq(Math.log10(-0), -Infinity);
+
+// If x is 1, the result is +0.
+assertEq(Math.log10(1), +0);
+
+// If x is +∞, the result is +∞.
+assertEq(Math.log10(Infinity), Infinity);
+
+
+reportCompare(0, 0, 'ok');
diff --git a/js/src/tests/ecma_6/Math/log1p-approx.js b/js/src/tests/ecma_6/Math/log1p-approx.js
new file mode 100644
index 000000000..f1d120af6
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/log1p-approx.js
@@ -0,0 +1,20 @@
+assertNear(Math.log1p(1e-300), 1e-300);
+assertNear(Math.log1p(1e-15), 9.999999999999995e-16);
+assertNear(Math.log1p(1e-6), 9.999995000003334e-7);
+
+var log1p_data = [
+ [ 1.875817529344e-70, 1.875817529344e-70 ],
+ [ 6.261923313140869e-30, 6.261923313140869e-30 ],
+ [ 7.09962844069878e-15, 7.099628440698755e-15 ],
+ [ 1.3671879628418538e-12, 1.3671879628409192e-12 ],
+ [ 2.114990849122478e-10, 2.1149908488988187e-10 ],
+ [ 1.6900931765206906e-8, 1.690093162238616e-8 ],
+ [ 0.0000709962844069878, 0.00007099376429006658 ],
+ [ 0.0016793412882520897, 0.00167793277137076 ],
+ [ 0.011404608812881634, 0.011340066517988035 ],
+];
+
+for (var [x, y] of log1p_data)
+ assertNear(Math.log1p(x), y);
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/log1p-exact.js b/js/src/tests/ecma_6/Math/log1p-exact.js
new file mode 100644
index 000000000..bec11b659
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/log1p-exact.js
@@ -0,0 +1,29 @@
+// Properties of Math.log1p that are guaranteed by the spec.
+
+// If x is NaN, the result is NaN.
+assertEq(Math.log1p(NaN), NaN);
+
+// If x is less than -1, the result is NaN.
+assertEq(Math.log1p(-1 - 1e-10), NaN);
+assertEq(Math.log1p(-1 - 1e-5), NaN);
+assertEq(Math.log1p(-1 - 1e-1), NaN);
+assertEq(Math.log1p(-ONE_PLUS_EPSILON), NaN);
+
+for (var i = -2; i > -20; i--)
+ assertEq(Math.log1p(i), NaN);
+
+// If x is -1, the result is -∞.
+assertEq(Math.log1p(-1), -Infinity);
+
+// If x is +0, the result is +0.
+assertEq(Math.log1p(+0), +0);
+
+// If x is −0, the result is −0.
+assertEq(Math.log1p(-0), -0);
+
+// If x is +∞, the result is +∞.
+assertEq(Math.log1p(Infinity), Infinity);
+
+
+reportCompare(0, 0, "ok");
+
diff --git a/js/src/tests/ecma_6/Math/log2-approx.js b/js/src/tests/ecma_6/Math/log2-approx.js
new file mode 100644
index 000000000..954f4c1cf
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/log2-approx.js
@@ -0,0 +1,8 @@
+for (var i = -1074; i < 1023; i++)
+ assertNear(Math.log2(Math.pow(2, i)), i);
+
+assertNear(Math.log2(5), 2.321928094887362);
+assertNear(Math.log2(7), 2.807354922057604);
+assertNear(Math.log2(Math.E), Math.LOG2E);
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/log2-exact.js b/js/src/tests/ecma_6/Math/log2-exact.js
new file mode 100644
index 000000000..160034ddb
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/log2-exact.js
@@ -0,0 +1,30 @@
+// Properties of Math.log2 that are guaranteed by the spec.
+
+// If x is NaN, the result is NaN.
+assertEq(Math.log2(NaN), NaN);
+
+// If x is less than 0, the result is NaN.
+assertEq(Math.log2(-1e-10), NaN);
+assertEq(Math.log2(-1e-5), NaN);
+assertEq(Math.log2(-1e-1), NaN);
+assertEq(Math.log2(-Number.MIN_VALUE), NaN);
+assertEq(Math.log2(-Number.MAX_VALUE), NaN);
+assertEq(Math.log2(-Infinity), NaN);
+
+for (var i = -1; i > -10; i--)
+ assertEq(Math.log2(i), NaN);
+
+// If x is +0, the result is −∞.
+assertEq(Math.log2(+0), -Infinity);
+
+// If x is −0, the result is −∞.
+assertEq(Math.log2(-0), -Infinity);
+
+// If x is 1, the result is +0.
+assertEq(Math.log2(1), +0);
+
+// If x is +∞, the result is +∞.
+assertEq(Math.log2(Infinity), Infinity);
+
+
+reportCompare(0, 0, 'ok');
diff --git a/js/src/tests/ecma_6/Math/shell.js b/js/src/tests/ecma_6/Math/shell.js
new file mode 100644
index 000000000..d423c0814
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/shell.js
@@ -0,0 +1,74 @@
+// The nearest representable values to +1.0.
+const ONE_PLUS_EPSILON = 1 + Math.pow(2, -52); // 0.9999999999999999
+const ONE_MINUS_EPSILON = 1 - Math.pow(2, -53); // 1.0000000000000002
+
+{
+ var fail = function (msg) {
+ var exc = new Error(msg);
+ try {
+ // Try to improve on exc.fileName and .lineNumber; leave exc.stack
+ // alone. We skip two frames: fail() and its caller, an assertX()
+ // function.
+ var frames = exc.stack.trim().split("\n");
+ if (frames.length > 2) {
+ var m = /@([^@:]*):([0-9]+)$/.exec(frames[2]);
+ if (m) {
+ exc.fileName = m[1];
+ exc.lineNumber = +m[2];
+ }
+ }
+ } catch (ignore) { throw ignore;}
+ throw exc;
+ };
+
+ var ENDIAN; // 0 for little-endian, 1 for big-endian.
+
+ // Return the difference between the IEEE 754 bit-patterns for a and b.
+ //
+ // This is meaningful when a and b are both finite and have the same
+ // sign. Then the following hold:
+ //
+ // * If a === b, then diff(a, b) === 0.
+ //
+ // * If a !== b, then diff(a, b) === 1 + the number of representable values
+ // between a and b.
+ //
+ var f = new Float64Array([0, 0]);
+ var u = new Uint32Array(f.buffer);
+ var diff = function (a, b) {
+ f[0] = a;
+ f[1] = b;
+ //print(u[1].toString(16) + u[0].toString(16) + " " + u[3].toString(16) + u[2].toString(16));
+ return Math.abs((u[3-ENDIAN] - u[1-ENDIAN]) * 0x100000000 + u[2+ENDIAN] - u[0+ENDIAN]);
+ };
+
+ // Set ENDIAN to the platform's endianness.
+ ENDIAN = 0; // try little-endian first
+ if (diff(2, 4) === 0x100000) // exact wrong answer we'll get on a big-endian platform
+ ENDIAN = 1;
+ assertEq(diff(2,4), 0x10000000000000);
+ assertEq(diff(0, Number.MIN_VALUE), 1);
+ assertEq(diff(1, ONE_PLUS_EPSILON), 1);
+ assertEq(diff(1, ONE_MINUS_EPSILON), 1);
+
+ var assertNear = function assertNear(a, b, tolerance=1) {
+ if (!Number.isFinite(b)) {
+ fail("second argument to assertNear (expected value) must be a finite number");
+ } else if (Number.isNaN(a)) {
+ fail("got NaN, expected a number near " + b);
+ } else if (!Number.isFinite(a)) {
+ if (b * Math.sign(a) < Number.MAX_VALUE)
+ fail("got " + a + ", expected a number near " + b);
+ } else {
+ // When the two arguments do not have the same sign bit, diff()
+ // returns some huge number. So if b is positive or negative 0,
+ // make target the zero that has the same sign bit as a.
+ var target = b === 0 ? a * 0 : b;
+ var err = diff(a, target);
+ if (err > tolerance) {
+ fail("got " + a + ", expected a number near " + b +
+ " (relative error: " + err + ")");
+ }
+ }
+ };
+}
diff --git a/js/src/tests/ecma_6/Math/sign.js b/js/src/tests/ecma_6/Math/sign.js
new file mode 100644
index 000000000..5552dfc3d
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/sign.js
@@ -0,0 +1,34 @@
+// If x is NaN, the result is NaN.
+assertEq(Math.sign(NaN), NaN);
+
+// If x is −0, the result is −0.
+assertEq(Math.sign(-0), -0);
+
+// If x is +0, the result is +0.
+assertEq(Math.sign(+0), +0);
+
+// If x is negative and not −0, the result is −1.
+assertEq(Math.sign(-Number.MIN_VALUE), -1);
+assertEq(Math.sign(-Number.MAX_VALUE), -1);
+assertEq(Math.sign(-Infinity), -1);
+
+for (var i = -1; i > -20; i--)
+ assertEq(Math.sign(i), -1);
+
+assertEq(Math.sign(-1e-300), -1);
+assertEq(Math.sign(-0x80000000), -1);
+
+// If x is positive and not +0, the result is +1.
+assertEq(Math.sign(Number.MIN_VALUE), +1);
+assertEq(Math.sign(Number.MAX_VALUE), +1);
+assertEq(Math.sign(Infinity), +1);
+
+for (var i = 1; i < 20; i++)
+ assertEq(Math.sign(i), +1);
+
+assertEq(Math.sign(+1e-300), +1);
+assertEq(Math.sign(0x80000000), +1);
+assertEq(Math.sign(0xffffffff), +1);
+
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/sinh-approx.js b/js/src/tests/ecma_6/Math/sinh-approx.js
new file mode 100644
index 000000000..15170dc66
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/sinh-approx.js
@@ -0,0 +1,297 @@
+for (var i = -20; i < 20; i++)
+ assertNear(Math.sinh(i), (Math.exp(i) - Math.exp(-i)) / 2);
+
+assertEq(Math.sinh(1000), Infinity);
+assertEq(Math.sinh(Number.MAX_VALUE), Infinity);
+assertNear(Math.sinh(1e-30), 1e-30);
+assertNear(Math.sinh(1e-10), 1e-10);
+
+var sinh_data = [
+ [-6.902103625349695, -497.1816406250001],
+ [-6.898143347143859, -495.21655273437517],
+ [-6.883664481302669, -488.0980224609375],
+ [-6.880304842490273, -486.46093750000006],
+ [-6.871561546509046, -482.2261962890624],
+ [-6.841973895837549, -468.167236328125],
+ [-6.836376331805493, -465.5539550781251],
+ [-6.833654100575195, -464.2883300781251],
+ [-6.8320816635009045, -463.55883789062483],
+ [-6.8108680173663085, -453.82861328125],
+ [-6.799689165151487, -448.78356933593756],
+ [-6.793579326246197, -446.0499267578126],
+ [-6.762510387544996, -432.4046630859374],
+ [-6.743225720989222, -424.14575195312506],
+ [-6.691758395994307, -402.86828613281244],
+ [-6.690743430063694, -402.4595947265625],
+ [-6.6596501292114505, -390.1383056640624],
+ [-6.652956360641761, -387.5355224609375],
+ [-6.635954365364267, -381.00231933593767],
+ [-6.619587562578274, -374.81726074218744],
+ [-6.617681179427804, -374.10339355468744],
+ [-6.614762741096185, -373.0131835937501],
+ [-6.60690568753706, -370.0938720703124],
+ [-6.591738907156094, -364.5230712890626],
+ [-6.583066984213974, -361.3756103515625],
+ [-6.573999516974134, -358.1136474609374],
+ [-6.553610904389896, -350.8861083984376],
+ [-6.553097634736138, -350.7060546875001],
+ [-6.538320325468202, -345.56164550781267],
+ [-6.529090881007076, -342.386962890625],
+ [-6.527791927233787, -341.94250488281256],
+ [-6.514383886150781, -337.38830566406244],
+ [-6.488639771044976, -328.8133544921875],
+ [-6.480460592697477, -326.13488769531256],
+ [-6.439759999015992, -313.1274414062499],
+ [-6.434927968512049, -311.61804199218744],
+ [-6.4082177348965725, -303.4047851562501],
+ [-6.369671035834965, -291.93200683593756],
+ [-6.362310184909175, -289.79101562500006],
+ [-6.356373428913315, -288.0756835937499],
+ [-6.337756593913614, -282.76220703125006],
+ [-6.32424009706147, -278.96594238281256],
+ [-6.314232650754295, -276.18811035156256],
+ [-6.290994606392703, -269.8439941406249],
+ [-6.240182555852785, -256.4750976562499],
+ [-6.2102675039793604, -248.9161987304687],
+ [-6.197335184435549, -245.71783447265628],
+ [-6.194021350132335, -244.90490722656253],
+ [-6.184119163536406, -242.4917602539062],
+ [-6.104686221071835, -223.97491455078116],
+ [-6.100669325836893, -223.07702636718747],
+ [-6.093582856519022, -221.50177001953122],
+ [-6.0598807500687935, -214.16101074218741],
+ [-6.0062142965262515, -202.97058105468741],
+ [-5.9923121073369945, -200.1683349609375],
+ [-5.981859446096083, -198.08691406249997],
+ [-5.9497792165852905, -191.83300781250006],
+ [-5.90509449745879, -183.44958496093747],
+ [-5.902097012275789, -182.90051269531256],
+ [-5.8144483910067954, -167.55175781250006],
+ [-5.786154254111214, -162.8773803710938],
+ [-5.765917008989405, -159.61425781250006],
+ [-5.703902219845274, -150.0162963867188],
+ [-5.6926689504460395, -148.34051513671872],
+ [-5.685206387751923, -147.23760986328122],
+ [-5.660572815631807, -143.6548461914062],
+ [-5.625516713960633, -138.70599365234375],
+ [-5.476934234171879, -119.55416870117192],
+ [-5.467584665632571, -118.4415588378906],
+ [-5.417932675603434, -112.70410156250004],
+ [-5.406565756574079, -111.43020629882811],
+ [-5.373195678988387, -107.77297973632808],
+ [-5.3723285712183735, -107.67956542968749],
+ [-5.348004040102253, -105.09179687499999],
+ [-5.31087758970896, -101.261474609375],
+ [-5.255348419702703, -95.79150390624997],
+ [-5.206986845736275, -91.26885986328122],
+ [-5.162914035396619, -87.33349609375003],
+ [-5.052952927749896, -78.23873901367186],
+ [-5.048772883924985, -77.91235351562501],
+ [-5.034848487644809, -76.83489990234378],
+ [-4.808269821238499, -61.25564575195312],
+ [-4.689849459883311, -54.413803100585945],
+ [-4.476720236388958, -43.96719360351561],
+ [-4.431216695067421, -42.01084899902342],
+ [-4.114720236218123, -30.60937499999999],
+ [-3.9785790831656023, -26.711166381835938],
+ [-3.9220215830953484, -25.24131774902344],
+ [-3.3770026324620295, -14.624359130859379],
+ [-3.214961448471211, -12.431087493896483],
+ [-3.021397455139021, -10.235607147216797],
+ [-2.937831931335705, -9.41094970703125],
+ [-1.267878515574959, -1.6359391212463381],
+ [1.6504814008555524e-12, 1.6504814008555524e-12],
+ [2.0654207510961697e-12, 2.0654207510961697e-12],
+ [6.933230031758164e-12, 6.933230031758164e-12],
+ [1.3351444949627478e-11, 1.3351444949627478e-11],
+ [1.6399812063916386e-11, 1.6399812063916386e-11],
+ [5.730159402528301e-11, 5.730159402528301e-11],
+ [1.113731329382972e-10, 1.113731329382972e-10],
+ [1.4214707189097453e-10, 1.4214707189097453e-10],
+ [3.8006320313144215e-10, 3.8006320313144215e-10],
+ [6.09162720266454e-10, 6.09162720266454e-10],
+ [1.0221641311147778e-9, 1.0221641311147778e-9],
+ [2.8819222563924995e-9, 2.8819222563924995e-9],
+ [4.7627768395841485e-9, 4.7627768395841485e-9],
+ [8.854133426439148e-9, 8.854133426439148e-9],
+ [2.305032609228874e-8, 2.3050326092288742e-8],
+ [5.939249092534734e-8, 5.9392490925347374e-8],
+ [1.1667648891489053e-7, 1.166764889148908e-7],
+ [2.379967440901942e-7, 2.3799674409019644e-7],
+ [4.6846594159431437e-7, 4.684659415943315e-7],
+ [9.382699772685088e-7, 9.382699772686465e-7],
+ [0.0000011039855962733358, 0.00000110398559627356],
+ [0.000003291776010877096, 0.0000032917760108830407],
+ [0.000007517213816683722, 0.00000751721381675452],
+ [0.000015114666893502755, 0.000015114666894078255],
+ [0.00002986399339999406, 0.00002986399340443313],
+ [0.000033870281179478836, 0.00003387028118595481],
+ [0.00009066011977069884, 0.00009066011989489198],
+ [0.00021949532498377364, 0.00021949532674625516],
+ [0.00043952149320897676, 0.00043952150736004114],
+ [0.0006333151408864353, 0.0006333151832222939],
+ [0.0011151230445582744, 0.001115123275667429],
+ [0.0019624658370807177, 0.001962467096745968],
+ [0.005553725496786973, 0.005553754046559334],
+ [0.008691018931968294, 0.008691128343343735],
+ [0.02992889492062484, 0.02993336319923401],
+ [0.05122020579778827, 0.05124260485172272],
+ [0.1117800293787828, 0.11201295256614685],
+ [0.23269806521543376, 0.23480379581451416],
+ [0.4721357117742938, 0.4898730516433716],
+ [0.694611571189336, 0.7518312931060792],
+ [1.2781607348262256, 1.6557407379150393],
+ [1.9917262343245115, 3.5958566665649414],
+ [2.009484184971722, 3.6627054214477544],
+ [2.128787712416205, 4.142845153808595],
+ [2.4846967934155475, 5.95706558227539],
+ [3.083125584533294, 10.890350341796875],
+ [4.002981567623351, 27.3714599609375],
+ [4.080736210902826, 29.586067199707028],
+ [4.120845430011113, 30.79753875732421],
+ [4.351258506393416, 38.78157043457031],
+ [4.540883728536112, 46.88148498535155],
+ [4.547981853382592, 47.21551513671875],
+ [4.5480891170767, 47.220581054687514],
+ [4.599728302509061, 49.72361755371096],
+ [4.8131842711857535, 61.557464599609396],
+ [4.910082619934558, 67.82162475585939],
+ [4.924747230639767, 68.82363891601564],
+ [4.993937439635391, 73.75466918945312],
+ [5.087099712053554, 80.95669555664065],
+ [5.1389346970196295, 85.26406860351562],
+ [5.138977285472121, 85.26770019531251],
+ [5.223879832616765, 92.82385253906247],
+ [5.241812789460327, 94.50357055664062],
+ [5.447141014648796, 116.04467773437499],
+ [5.511633288238573, 123.77554321289061],
+ [5.578681289305598, 132.3592529296875],
+ [5.633110296634631, 139.76330566406253],
+ [5.662701238627725, 143.96093750000003],
+ [5.678906941005323, 146.31298828124997],
+ [5.737214893086866, 155.0980224609375],
+ [5.739660763047893, 155.4778442382812],
+ [5.741349685869528, 155.74066162109372],
+ [5.790614371552514, 163.60546874999994],
+ [5.879059869096351, 178.73510742187494],
+ [5.884458728291027, 179.70269775390622],
+ [5.885109945587401, 179.8197631835937],
+ [5.893636014368936, 181.35949707031256],
+ [5.965274032538233, 194.82861328125003],
+ [5.967346683696556, 195.23284912109375],
+ [5.986843466070591, 199.07666015624994],
+ [6.019932686217942, 205.77423095703134],
+ [6.021252909681261, 206.0460815429687],
+ [6.037231102920489, 209.36480712890634],
+ [6.043606439928324, 210.70385742187506],
+ [6.06478541011501, 215.21398925781244],
+ [6.112974120371601, 225.83892822265622],
+ [6.117902255760311, 226.95465087890622],
+ [6.1433256889594094, 232.79864501953136],
+ [6.176483527820343, 240.64721679687503],
+ [6.186757751007361, 243.13244628906241],
+ [6.219667373726848, 251.26702880859372],
+ [6.229418088083555, 253.72906494140634],
+ [6.233184983047428, 254.68664550781241],
+ [6.243005711460192, 257.20019531250006],
+ [6.245102704489327, 257.74011230468744],
+ [6.260468857392134, 261.73120117187506],
+ [6.268152459140511, 263.74999999999994],
+ [6.2748285545831655, 265.5167236328125],
+ [6.305976070434008, 273.9171142578125],
+ [6.32399546069982, 278.8977050781249],
+ [6.324961403980197, 279.16723632812506],
+ [6.370613506132747, 292.20727539062494],
+ [6.375359978930309, 293.59753417968744],
+ [6.3766447200146, 293.9749755859376],
+ [6.380802563199264, 295.19982910156244],
+ [6.387824152942429, 297.27990722656244],
+ [6.390003820200831, 297.9285888671876],
+ [6.3905985680679, 298.10583496093744],
+ [6.397866642974941, 300.2803955078125],
+ [6.421725738171608, 307.5310058593751],
+ [6.423818963102848, 308.17541503906244],
+ [6.428865255911759, 309.7344970703124],
+ [6.443449261058927, 314.28479003906244],
+ [6.444844602076255, 314.7236328125],
+ [6.464094341970107, 320.84069824218756],
+ [6.465356699668166, 321.24597167968744],
+ [6.467400466944125, 321.90319824218756],
+ [6.472218114936839, 323.457763671875],
+ [6.4947499213823265, 330.8286132812501],
+ [6.507305446835735, 335.00854492187483],
+ [6.524202033435675, 340.71716308593756],
+ [6.546694993078936, 348.46777343749994],
+ [6.548591493378012, 349.1292724609374],
+ [6.613194950203132, 372.4288330078126],
+ [6.6247505436339065, 376.7574462890626],
+ [6.629181796246806, 378.43066406249994],
+ [6.6616087711302185, 390.9031982421874],
+ [6.698989091751707, 405.79187011718744],
+ [6.702857353572475, 407.3646240234375],
+ [6.717505881986416, 413.37585449218756],
+ [6.723197804327891, 415.73547363281256],
+ [6.726699007993023, 417.1936035156251],
+ [6.735483889307782, 420.87475585937483],
+ [6.755219602793124, 429.26354980468756],
+ [6.756366380816258, 429.75610351562506],
+ [6.766177290841293, 433.99316406250006],
+ [6.766217511883346, 434.01062011718767],
+ [6.780091308338912, 440.0739746093749],
+ [6.802889310303153, 450.22204589843744],
+ [6.813484439494547, 455.017578125],
+ [6.818196843455478, 457.16687011718744],
+ [6.818940201487998, 457.50683593749994],
+ [6.822833193143805, 459.29138183593756],
+ [6.82327083544577, 459.49243164062506],
+ [6.823817951018, 459.743896484375],
+ [6.834945773756887, 464.8884277343749],
+ [6.835113285253827, 464.96630859375017],
+ [6.840964582694129, 467.6949462890624],
+ [6.84346890521034, 468.86767578125017],
+ [6.847141429556457, 470.5927734375002],
+ [6.869243403190376, 481.10961914062483],
+ [6.882355637062964, 487.4595947265624],
+ [6.884531678915821, 488.5214843750001],
+ [6.89341643293734, 492.8812255859376],
+ [6.895822338701104, 494.06848144531233],
+ [6.900653737167637, 496.46130371093733],
+ [7.2670429692740965, 716.1540527343751],
+ [8.188647968122073, 1799.925781250001],
+ [8.872023251113289, 3564.8457031250014],
+ [9.566596912986167, 7139.869140625004],
+ [10.092554861905608, 12081.222656249996],
+ [10.728112113864427, 22810.24218749999],
+ [11.442480870715618, 46598.96875000003],
+ [12.28759157077177, 108493.37500000009],
+ [12.636950838344218, 153860.81249999988],
+ [13.327813723030063, 307019.4999999998],
+ [14.126778167009777, 682577.25],
+ [15.090269265334971, 1788919.000000001],
+ [15.835512291283944, 3769169],
+ [15.973721689554742, 4327820.000000002],
+ [16.910547205715446, 11044023.999999983],
+ [17.573132558903225, 21423208.000000004],
+ [18.649063156437965, 62828288.00000006],
+ [18.760110887365155, 70207360.00000012],
+ [19.547111966180875, 154231424.00000012],
+ [20.193967491567523, 294509055.9999997],
+ [21.484592263156223, 1070557183.9999999],
+ [22.088297141021556, 1957922816.0000024],
+ [22.780591462699917, 3912507392.0000005],
+ [23.401438520318692, 7279233024.000007],
+ [23.684949498080787, 9665245184.000017],
+ [24.5355829820426, 22627590144.000004],
+ [25.520740767599584, 60601991168.00004],
+ [26.31438890085422, 134018236416.00002],
+ [26.73876398039979, 204864946175.99973],
+ [27.06660583008718, 284346286080.00024],
+ [28.234874284944635, 914576637951.9989],
+ [28.78280496108106, 1581915832319.9973]
+];
+
+for (var [x, y] of sinh_data)
+ assertNear(Math.sinh(x), y);
+
+reportCompare(0, 0, "ok");
+
diff --git a/js/src/tests/ecma_6/Math/sinh-exact.js b/js/src/tests/ecma_6/Math/sinh-exact.js
new file mode 100644
index 000000000..bfae1f752
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/sinh-exact.js
@@ -0,0 +1,19 @@
+// Properties of Math.sinh that are guaranteed by the spec.
+
+// If x is NaN, the result is NaN.
+assertEq(Math.sinh(NaN), NaN);
+
+// If x is +0, the result is +0.
+assertEq(Math.sinh(+0), +0);
+
+// If x is −0, the result is −0.
+assertEq(Math.sinh(-0), -0);
+
+// If x is +∞, the result is +∞.
+assertEq(Math.sinh(Infinity), Infinity);
+
+// If x is −∞, the result is −∞.
+assertEq(Math.sinh(-Infinity), -Infinity);
+
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/tanh-approx.js b/js/src/tests/ecma_6/Math/tanh-approx.js
new file mode 100644
index 000000000..252322a09
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/tanh-approx.js
@@ -0,0 +1,282 @@
+var sloppy_tolerance = 2;
+
+for (var i = -20; i < 20; i++) {
+ assertNear(Math.tanh(i),
+ (Math.exp(i) - Math.exp(-i)) / (Math.exp(i) + Math.exp(-i)),
+ sloppy_tolerance);
+}
+
+assertEq(Math.tanh(1e300), 1);
+
+var tanh_data = [
+ [-0.9999983310699463, -6.998237084679027],
+ [-0.9999978542327881, -6.87257975132917],
+ [-0.999992847442627, -6.2705920974657525],
+ [-0.9999861717224121, -5.940967614084813],
+ [-0.9999828338623047, -5.832855225378502],
+ [-0.9999399185180664, -5.20646301208756],
+ [-0.9998834133148193, -4.8749821841810785],
+ [-0.9998509883880615, -4.752279497280338],
+ [-0.9996016025543213, -4.260504202858904],
+ [-0.9993612766265869, -4.0244334353203115],
+ [-0.9989283084869385, -3.7655641082999236],
+ [-0.9969782829284668, -3.246782610980921],
+ [-0.9950058460235596, -2.9950671179940938],
+ [-0.9942638874053955, -2.9256242749609536],
+ [-0.990715742111206, -2.6839646283308363],
+ [-0.9903340339660645, -2.663723350226518],
+ [-0.9760982990264893, -2.207464998348322],
+ [-0.975830078125, -2.201817459680556],
+ [-0.9728245735168457, -2.1424542308291437],
+ [-0.9643559455871582, -2.0046686756020917],
+ [-0.9377224445343018, -1.7188337346177065],
+ [-0.9362406730651855, -1.7066940482565154],
+ [-0.9310147762298584, -1.6659543005533146],
+ [-0.9284839630126953, -1.6472838718760747],
+ [-0.9270248413085938, -1.6368067340881562],
+ [-0.9075665473937988, -1.5135473477311114],
+ [-0.897477388381958, -1.4590986086331497],
+ [-0.8920106887817383, -1.431681573516303],
+ [-0.8776559829711914, -1.365471286049011],
+ [-0.864722728729248, -1.3117705583444539],
+ [-0.8482067584991455, -1.249725893334944],
+ [-0.8056559562683105, -1.1145246028592257],
+ [-0.8048388957977295, -1.112200609756455],
+ [-0.7801985740661621, -1.0458778330822556],
+ [-0.7749934196472168, -1.032711173436253],
+ [-0.7619285583496094, -1.0007967281362184],
+ [-0.7504425048828125, -0.9739672824457072],
+ [-0.7495596408843994, -0.9719492983286864],
+ [-0.7481319904327393, -0.968698942014487],
+ [-0.7459518909454346, -0.9637657636705832],
+ [-0.7401137351989746, -0.9507308314464193],
+ [-0.7289731502532959, -0.9265325319867653],
+ [-0.7226788997650146, -0.9132299082876396],
+ [-0.7161557674407959, -0.8997082193533088],
+ [-0.7017018795013428, -0.8706453720344796],
+ [-0.7013418674468994, -0.86993650130945],
+ [-0.691054105758667, -0.8499705913361888],
+ [-0.6847054958343506, -0.837919455842005],
+ [-0.6838164329528809, -0.8362476144993315],
+ [-0.6747090816497803, -0.8193374156276964],
+ [-0.6575610637664795, -0.7885046044142132],
+ [-0.6522045135498047, -0.7791255597799839],
+ [-0.6261923313140869, -0.7351275788820003],
+ [-0.623173713684082, -0.7301771459970386],
+ [-0.6067488193511963, -0.7037597526130627],
+ [-0.5838055610656738, -0.6682166303197608],
+ [-0.579524040222168, -0.6617457665293066],
+ [-0.5760939121246338, -0.656596458857398],
+ [-0.5654678344726562, -0.6408350116350283],
+ [-0.5578761100769043, -0.6297442839791668],
+ [-0.5523209571838379, -0.6217149641475687],
+ [-0.5396339893341064, -0.6036390747171698],
+ [-0.5128989219665527, -0.5666556256064771],
+ [-0.5087778568267822, -0.5610793900942042],
+ [-0.4977825880050659, -0.546353950571504],
+ [-0.4913865327835083, -0.5378865967606703],
+ [-0.48976075649261475, -0.5357455496477738],
+ [-0.48493504524230957, -0.5294166456244711],
+ [-0.4479050636291504, -0.4820764946679979],
+ [-0.4461095333099365, -0.4798325976916711],
+ [-0.4429593086242676, -0.47590653371561276],
+ [-0.42827916145324707, -0.45778739362936793],
+ [-0.40590059757232666, -0.4306933608076879],
+ [-0.40029656887054443, -0.4240020382545707],
+ [-0.3961341381072998, -0.4190551379319939],
+ [-0.3836275339126587, -0.40430627175908734],
+ [-0.36686253547668457, -0.3847928551425507],
+ [-0.3657644987106323, -0.38352464227459343],
+ [-0.33507001399993896, -0.3485286317501442],
+ [-0.32572221755981445, -0.3380352468276522],
+ [-0.3191967010498047, -0.3307524237890151],
+ [-0.3000025749206543, -0.3095224337886503],
+ [-0.29665136337280273, -0.3058438250228025],
+ [-0.2944457530975342, -0.3034271164344305],
+ [-0.2872810363769531, -0.29560018347246825],
+ [-0.27738428115844727, -0.28484608203169437],
+ [-0.2390844225883484, -0.2438028008332661],
+ [-0.23685944080352783, -0.24144425169391517],
+ [-0.2253856658935547, -0.2293228153248168],
+ [-0.22283810377120972, -0.22664053064745143],
+ [-0.21552443504333496, -0.21895773601143995],
+ [-0.2153375744819641, -0.21876178107952995],
+ [-0.21016258001327515, -0.21334143320771737],
+ [-0.20250272750854492, -0.2053409277979887],
+ [-0.19156384468078613, -0.19396008474133075],
+ [-0.18251943588256836, -0.18458771439322938],
+ [-0.17464947700500488, -0.17645844608618066],
+ [-0.15646183490753174, -0.15775766677189154],
+ [-0.15580910444259644, -0.15708862621964176],
+ [-0.15365445613861084, -0.15488112515549593],
+ [-0.122499018907547, -0.12311733609904851],
+ [-0.1088167130947113, -0.10924929296737837],
+ [-0.08792558312416077, -0.08815322150790302],
+ [-0.08401328325271606, -0.08421178632314608],
+ [-0.06121261417865753, -0.06128924075509796],
+ [-0.05341699719429016, -0.05346789060550386],
+ [-0.05047759413719177, -0.05052053189238029],
+ [-0.02924579381942749, -0.029254136237332657],
+ [-0.02485968917608261, -0.02486481220617492],
+ [-0.020469173789024353, -0.02047203328100153],
+ [-0.01882001757621765, -0.018822240021756347],
+ [-0.016152501106262207, -0.016153906073109205],
+ [-0.0032715508714318275, -0.003271562543358962],
+ [1.6504814008555524e-12, 1.6504814008555524e-12],
+ [2.0654207510961697e-12, 2.0654207510961697e-12],
+ [6.933230031758164e-12, 6.933230031758164e-12],
+ [1.3351444949627478e-11, 1.3351444949627478e-11],
+ [1.6399812063916386e-11, 1.6399812063916386e-11],
+ [5.730159402528301e-11, 5.730159402528301e-11],
+ [1.113731329382972e-10, 1.113731329382972e-10],
+ [1.4214707189097453e-10, 1.4214707189097453e-10],
+ [3.8006320313144215e-10, 3.8006320313144215e-10],
+ [6.09162720266454e-10, 6.09162720266454e-10],
+ [1.0221641311147778e-9, 1.0221641311147778e-9],
+ [2.8819222563924995e-9, 2.8819222563924995e-9],
+ [4.7627768395841485e-9, 4.7627768395841485e-9],
+ [8.854133426439148e-9, 8.854133426439148e-9],
+ [2.3050326092288742e-8, 2.3050326092288745e-8],
+ [5.9392490925347374e-8, 5.939249092534745e-8],
+ [1.166764889148908e-7, 1.1667648891489133e-7],
+ [2.3799674409019644e-7, 2.3799674409020094e-7],
+ [4.684659415943315e-7, 4.684659415943658e-7],
+ [9.382699772686465e-7, 9.382699772689218e-7],
+ [0.00000110398559627356, 0.0000011039855962740086],
+ [0.0000032917760108830407, 0.0000032917760108949305],
+ [0.00000751721381675452, 0.000007517213816896115],
+ [0.000015114666894078255, 0.000015114666895229252],
+ [0.00002986399340443313, 0.00002986399341331128],
+ [0.00003387028118595481, 0.000033870281198906756],
+ [0.00009066011989489198, 0.00009066012014327826],
+ [0.00021949532674625516, 0.0002194953302712184],
+ [0.00043952150736004114, 0.0004395215356621756],
+ [0.0006333151832222939, 0.0006333152678940465],
+ [0.001115123275667429, 0.0011151237378863419],
+ [0.001962467096745968, 0.001962469616086656],
+ [0.005553754046559334, 0.005553811147953338],
+ [0.007324676960706711, 0.0073248079567425],
+ [0.008691128343343735, 0.008691347183450786],
+ [0.011912941932678223, 0.011913505535037906],
+ [0.02993336319923401, 0.029942308168570204],
+ [0.05124260485172272, 0.05128752666822782],
+ [0.05473744869232178, 0.05479221508125444],
+ [0.06158891320228577, 0.061666963819518306],
+ [0.09375360608100891, 0.09402975380882211],
+ [0.09442159533500671, 0.09470370926367391],
+ [0.09443172812461853, 0.09471393321406026],
+ [0.09943729639053345, 0.09976699249016487],
+ [0.11201295256614685, 0.11248498303558895],
+ [0.12310260534286499, 0.12373016402339168],
+ [0.13562965393066406, 0.13647060950861248],
+ [0.13763350248336792, 0.13851257866094746],
+ [0.14749455451965332, 0.14857829980464834],
+ [0.1618971824645996, 0.16333433166790448],
+ [0.17051106691360474, 0.17219298693637355],
+ [0.17051833868026733, 0.17220047646299907],
+ [0.18562912940979004, 0.18780647318150087],
+ [0.18898820877075195, 0.1912876932893582],
+ [0.23206615447998047, 0.23637212433914523],
+ [0.23480379581451416, 0.2392675448267427],
+ [0.2646920680999756, 0.27114729033023005],
+ [0.2794986963272095, 0.2871382059344433],
+ [0.28789305686950684, 0.2962673858386819],
+ [0.292596697807312, 0.30140373665239234],
+ [0.3101649284362793, 0.320727882769785],
+ [0.3109246492385864, 0.3215686893944558],
+ [0.31145012378692627, 0.3221505056451929],
+ [0.3271782398223877, 0.3396649461699478],
+ [0.3574345111846924, 0.37394153436545424],
+ [0.3593693971633911, 0.37616159223090223],
+ [0.35960352420806885, 0.37643046596933716],
+ [0.3626827001571655, 0.3799714809649667],
+ [0.38961827754974365, 0.4113499159905353],
+ [0.3904266357421875, 0.41230330080214],
+ [0.3981136083602905, 0.4214052375603139],
+ [0.411507248878479, 0.43742438709579096],
+ [0.4120509624481201, 0.43807911823743495],
+ [0.41868770122528076, 0.4460997186945703],
+ [0.42136549949645996, 0.4493511447897729],
+ [0.4516327381134033, 0.48674948990473677],
+ [0.4538639783859253, 0.4895560176112375],
+ [0.4655507802963257, 0.5043748446613433],
+ [0.48124635219573975, 0.5246050193978663],
+ [0.48621630668640137, 0.5310932154891663],
+ [0.4898730516433716, 0.5358932909903701],
+ [0.5024838447570801, 0.5526234425942533],
+ [0.5074074268341064, 0.5592320547729962],
+ [0.5093221664428711, 0.5618140818296767],
+ [0.5143489837646484, 0.5686253097655146],
+ [0.5154285430908203, 0.5700943191671631],
+ [0.5234100818634033, 0.5810250825991418],
+ [0.5274472236633301, 0.5866018515043636],
+ [0.5309803485870361, 0.5915094458340507],
+ [0.5477793216705322, 0.6152030999229688],
+ [0.5577394962310791, 0.6295459624918965],
+ [0.5582785606384277, 0.6303287742357745],
+ [0.5843560695648193, 0.6690521906099505],
+ [0.5871362686157227, 0.6732844960442398],
+ [0.5878911018371582, 0.6744372167164567],
+ [0.5903406143188477, 0.6781887236623534],
+ [0.5945003032684326, 0.684597775489552],
+ [0.5957975387573242, 0.6866065102131665],
+ [0.5961520671844482, 0.6871563252400655],
+ [0.6005008220672607, 0.6939300827887145],
+ [0.6150004863739014, 0.7169242329194352],
+ [0.6162893772125244, 0.7189998055497108],
+ [0.6194069385528564, 0.7240422748778544],
+ [0.6285066604614258, 0.7389438896054792],
+ [0.6293842792510986, 0.7403958734869583],
+ [0.6416172981262207, 0.7609178886018204],
+ [0.6424276828765869, 0.7622965466812235],
+ [0.6437420845031738, 0.7645378650643101],
+ [0.6468508243560791, 0.769864795178161],
+ [0.6615910530090332, 0.7956379107512945],
+ [0.669950008392334, 0.8106524185805045],
+ [0.6813662052154541, 0.8316597473423232],
+ [0.6968657970428467, 0.8611812790659296],
+ [0.6981887817382812, 0.8637579113749143],
+ [0.7447831630706787, 0.9611360201710216],
+ [0.7518312931060791, 0.9771540941752986],
+ [0.7534394264221191, 0.9808634133542229],
+ [0.7567856311798096, 0.9886489208209699],
+ [0.7817282676696777, 1.0497991719828956],
+ [0.8115026950836182, 1.1314141444187586],
+ [0.814647912979126, 1.1406947755584418],
+ [0.8266689777374268, 1.1775230833699681],
+ [0.8313877582550049, 1.1926138225701433],
+ [0.8343038558959961, 1.2021323323039612],
+ [0.8416652679443359, 1.2268570644335162],
+ [0.8584413528442383, 1.2873896671573652],
+ [0.8678996562957764, 1.3245040433929398],
+ [0.8679344654083252, 1.3246451309261607],
+ [0.8800599575042725, 1.3760334877782177],
+ [0.9003539085388184, 1.4740852961194106],
+ [0.9099440574645996, 1.5271990851861994],
+ [0.9142425060272217, 1.5527768948273004],
+ [0.9149219989776611, 1.556931837197936],
+ [0.9184908866882324, 1.5792896628381612],
+ [0.9188928604125977, 1.5818663359427627],
+ [0.919395923614502, 1.5851082843320008],
+ [0.9296839237213135, 1.6560555223295368],
+ [0.9298396110534668, 1.6572041418041492],
+ [0.9352962970733643, 1.6990986433619266],
+ [0.9376416206359863, 1.718164398807965],
+ [0.9410912990570068, 1.7475084077246632],
+ [0.962122917175293, 1.9737180163455101],
+ [0.9748215675354004, 2.1811227771083783],
+ [0.9769454002380371, 2.2257214499698255],
+ [0.985663890838623, 2.4654635601650536],
+ [0.9880380630493164, 2.5565869228142004],
+ [0.9928233623504639, 2.8132383539094192],
+ [1e-300, 1e-300],
+ [0.00001, 0.000010000000000333334],
+ [0.3, 0.3095196042031117],
+ [1e-30, 1e-30],
+ [1e-10, 1e-10],
+];
+
+for (var [x, y] of tanh_data)
+ assertNear(Math.tanh(y), x, sloppy_tolerance);
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/tanh-exact.js b/js/src/tests/ecma_6/Math/tanh-exact.js
new file mode 100644
index 000000000..bfd9ac4de
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/tanh-exact.js
@@ -0,0 +1,19 @@
+// Properties of Math.tanh that are guaranteed by the spec.
+
+// If x is NaN, the result is NaN.
+assertEq(Math.tanh(NaN), NaN);
+
+// If x is +0, the result is +0.
+assertEq(Math.tanh(+0), +0);
+
+// If x is −0, the result is −0.
+assertEq(Math.tanh(-0), -0);
+
+// If x is +∞, the result is +1.
+assertEq(Math.tanh(Number.POSITIVE_INFINITY), +1);
+
+// If x is −∞, the result is -1.
+assertEq(Math.tanh(Number.NEGATIVE_INFINITY), -1);
+
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Math/trunc.js b/js/src/tests/ecma_6/Math/trunc.js
new file mode 100644
index 000000000..4cadfd922
--- /dev/null
+++ b/js/src/tests/ecma_6/Math/trunc.js
@@ -0,0 +1,50 @@
+// If x is NaN, the result is NaN.
+assertEq(Math.trunc(NaN), NaN);
+
+// If x is −0, the result is −0.
+assertEq(Math.trunc(-0), -0);
+
+// If x is +0, the result is +0.
+assertEq(Math.trunc(+0), +0);
+
+// If x is +∞, the result is +∞.
+assertEq(Math.trunc(Infinity), Infinity);
+
+// If x is −∞, the result is −∞.
+assertEq(Math.trunc(-Infinity), -Infinity);
+
+// Other boundary cases.
+var MAX_NONINTEGER_VALUE = 4503599627370495.5;
+var TRUNC_MAX_NONINTEGER_VALUE = 4503599627370495;
+
+assertEq(Math.trunc(Number.MIN_VALUE), +0);
+assertEq(Math.trunc(ONE_MINUS_EPSILON), +0);
+assertEq(Math.trunc(ONE_PLUS_EPSILON), 1);
+assertEq(Math.trunc(MAX_NONINTEGER_VALUE), TRUNC_MAX_NONINTEGER_VALUE);
+assertEq(Math.trunc(Number.MAX_VALUE), Number.MAX_VALUE);
+
+assertEq(Math.trunc(-Number.MIN_VALUE), -0);
+assertEq(Math.trunc(-ONE_MINUS_EPSILON), -0);
+assertEq(Math.trunc(-ONE_PLUS_EPSILON), -1);
+assertEq(Math.trunc(-MAX_NONINTEGER_VALUE), -TRUNC_MAX_NONINTEGER_VALUE);
+assertEq(Math.trunc(-Number.MAX_VALUE), -Number.MAX_VALUE);
+
+// Other cases.
+for (var i = 1, f = 1.1; i < 20; i++, f += 1.0)
+ assertEq(Math.trunc(f), i);
+
+for (var i = -1, f = -1.1; i > -20; i--, f -= 1.0)
+ assertEq(Math.trunc(f), i);
+
+assertEq(Math.trunc(1e40 + 0.5), 1e40);
+
+assertEq(Math.trunc(1e300), 1e300);
+assertEq(Math.trunc(-1e300), -1e300);
+assertEq(Math.trunc(1e-300), 0);
+assertEq(Math.trunc(-1e-300), -0);
+
+assertEq(Math.trunc(+0.9999), +0);
+assertEq(Math.trunc(-0.9999), -0);
+
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Number/15.7.3.7-EPSILON.js b/js/src/tests/ecma_6/Number/15.7.3.7-EPSILON.js
new file mode 100644
index 000000000..55e92ef1c
--- /dev/null
+++ b/js/src/tests/ecma_6/Number/15.7.3.7-EPSILON.js
@@ -0,0 +1,24 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 885798;
+var summary = "ES6 (draft May 2013) 15.7.3.7 Number.EPSILON";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// Test value
+assertEq(Number.EPSILON, Math.pow(2, -52));
+
+// Test property attributes
+var descriptor = Object.getOwnPropertyDescriptor(Number, 'EPSILON');
+assertEq(descriptor.writable, false);
+assertEq(descriptor.configurable, false);
+assertEq(descriptor.enumerable, false);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Number/20.1.2.10-MIN_SAFE_INTEGER.js b/js/src/tests/ecma_6/Number/20.1.2.10-MIN_SAFE_INTEGER.js
new file mode 100644
index 000000000..8b96651ff
--- /dev/null
+++ b/js/src/tests/ecma_6/Number/20.1.2.10-MIN_SAFE_INTEGER.js
@@ -0,0 +1,26 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+
+var BUGNUMBER = 885798;
+var summary = "ES6 (draft April 2014) 20.1.2.10 Number.MIN_SAFE_INTEGER";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// Test value
+assertEq(Number.MIN_SAFE_INTEGER, -(Math.pow(2, 53) - 1));
+
+//Test property attributes
+var descriptor = Object.getOwnPropertyDescriptor(Number, 'MIN_SAFE_INTEGER');
+
+assertEq(descriptor.writable, false);
+assertEq(descriptor.configurable, false);
+assertEq(descriptor.enumerable, false);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Number/20.1.2.6-MAX_SAFE_INTEGER.js b/js/src/tests/ecma_6/Number/20.1.2.6-MAX_SAFE_INTEGER.js
new file mode 100644
index 000000000..e3a2ddff1
--- /dev/null
+++ b/js/src/tests/ecma_6/Number/20.1.2.6-MAX_SAFE_INTEGER.js
@@ -0,0 +1,26 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+
+var BUGNUMBER = 885798;
+var summary = "ES6 (draft April 2014) 20.1.2.6 Number.MAX_SAFE_INTEGER";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// Test value
+assertEq(Number.MAX_SAFE_INTEGER, Math.pow(2, 53) - 1);
+
+//Test property attributes
+var descriptor = Object.getOwnPropertyDescriptor(Number, 'MAX_SAFE_INTEGER');
+
+assertEq(descriptor.writable, false);
+assertEq(descriptor.configurable, false);
+assertEq(descriptor.enumerable, false);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Number/20.1.3.2-toExponential.js b/js/src/tests/ecma_6/Number/20.1.3.2-toExponential.js
new file mode 100644
index 000000000..f87c750df
--- /dev/null
+++ b/js/src/tests/ecma_6/Number/20.1.3.2-toExponential.js
@@ -0,0 +1,47 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+
+var BUGNUMBER = 818617;
+var summary = "ECMAScript 2017 Draft ECMA-262 Section 20.1.3.2: Number.prototype.toExponential";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// With NaN, fractionDigits out of range.
+assertEq(Number.prototype.toExponential.call(NaN, 555), 'NaN');
+
+// With NaN fractionDigits in range.
+assertEq(Number.prototype.toExponential.call(NaN, 5), 'NaN');
+
+// With Infinity, fractionDigits out of range.
+assertEq(Number.prototype.toExponential.call(Infinity, 555), 'Infinity');
+
+// With Infinity, fractionDigits in range.
+assertEq(Number.prototype.toExponential.call(Infinity, 5), 'Infinity');
+
+// With -Infinity, fractionDigits out of range.
+assertEq(Number.prototype.toExponential.call(-Infinity, 555), '-Infinity');
+
+// With -Infinity, fractionDigits in range.
+assertEq(Number.prototype.toExponential.call(-Infinity, 5), '-Infinity');
+
+// With NaN, function assigning a value.
+let x = 10;
+assertEq(Number.prototype.toExponential.call(NaN, { valueOf() { x = 20; return 1; } }), 'NaN');
+assertEq(x, 20);
+
+// With NaN, function throwing an exception.
+assertThrows(() => Number.prototype.toExponential.call(NaN, { valueOf() { throw "hello"; } }));
+
+// Not a number throws TypeError
+assertThrowsInstanceOf(() => Number.prototype.toExponential.call("Hello"), TypeError);
+
+if (typeof reportCompare === "function") {
+ reportCompare(true, true);
+}
+
diff --git a/js/src/tests/ecma_6/Number/20.1.3.2-toPrecision.js b/js/src/tests/ecma_6/Number/20.1.3.2-toPrecision.js
new file mode 100644
index 000000000..5c9856044
--- /dev/null
+++ b/js/src/tests/ecma_6/Number/20.1.3.2-toPrecision.js
@@ -0,0 +1,47 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+
+var BUGNUMBER = 818617;
+var summary = "ECMAScript 2017 Draft ECMA-262 Section 20.1.3.5: Number.prototype.toPrecision";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// With NaN, fractionDigits out of range.
+assertEq(Number.prototype.toPrecision.call(NaN, 555), 'NaN');
+
+// With NaN, fractionDigits in range.
+assertEq(Number.prototype.toPrecision.call(NaN, 5), 'NaN');
+
+// With Infinity, fractionDigits out of range.
+assertEq(Number.prototype.toPrecision.call(Infinity, 555), 'Infinity');
+
+// With Infinity, fractionDigits in range.
+assertEq(Number.prototype.toPrecision.call(Infinity, 5), 'Infinity');
+
+// With -Infinity, fractionDigits out of range.
+assertEq(Number.prototype.toPrecision.call(-Infinity, 555), '-Infinity');
+
+// With -Infinity, fractionDigits in range.
+assertEq(Number.prototype.toPrecision.call(-Infinity, 5), '-Infinity');
+
+// With NaN, function assigning a value.
+let x = 10;
+assertEq(Number.prototype.toPrecision.call(NaN, { valueOf() { x = 20; return 1; } }), 'NaN');
+assertEq(x, 20);
+
+// With NaN, function throwing an exception.
+assertThrows(() => Number.prototype.toPrecision.call(NaN, { valueOf() { throw "hello"; } }));
+
+// Not a number throws TypeError
+assertThrowsInstanceOf(() => Number.prototype.toPrecision.call("Hello"), TypeError);
+
+if (typeof reportCompare === "function") {
+ reportCompare(true, true);
+}
+
diff --git a/js/src/tests/ecma_6/Number/20.1.3.3-toFixed.js b/js/src/tests/ecma_6/Number/20.1.3.3-toFixed.js
new file mode 100644
index 000000000..28b57ddaa
--- /dev/null
+++ b/js/src/tests/ecma_6/Number/20.1.3.3-toFixed.js
@@ -0,0 +1,17 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+assertEq(Number.prototype.toFixed.call(-Infinity), "-Infinity");
+assertEq(Number.prototype.toFixed.call(Infinity), "Infinity");
+assertEq(Number.prototype.toFixed.call(NaN), "NaN");
+
+assertThrowsInstanceOf(() => Number.prototype.toFixed.call(-Infinity, 555), RangeError);
+assertThrowsInstanceOf(() => Number.prototype.toFixed.call(Infinity, 555), RangeError);
+assertThrowsInstanceOf(() => Number.prototype.toFixed.call(NaN, 555), RangeError);
+
+assertThrowsInstanceOf(() => Number.prototype.toFixed.call("Hello"), TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Number/ToNumber.js b/js/src/tests/ecma_6/Number/ToNumber.js
new file mode 100644
index 000000000..5716c8a00
--- /dev/null
+++ b/js/src/tests/ecma_6/Number/ToNumber.js
@@ -0,0 +1,26 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+assertEq(Number("0b11"), 3);
+assertEq(Number("0B11"), 3);
+assertEq(Number(" 0b11 "), 3);
+assertEq(Number("0b12"), NaN);
+assertEq(Number("-0b11"), NaN);
+assertEq(+"0b11", 3);
+
+assertEq(Number("0o66"), 54);
+assertEq(Number("0O66"), 54);
+assertEq(Number(" 0o66 "), 54);
+assertEq(Number("0o88"), NaN);
+assertEq(Number("-0o66"), NaN);
+assertEq(+"0o66", 54);
+
+if(typeof getSelfHostedValue === "function"){
+ assertEq(getSelfHostedValue("ToNumber")("0b11"), 3);
+ assertEq(getSelfHostedValue("ToNumber")("0o66"), 54);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Number/browser.js b/js/src/tests/ecma_6/Number/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Number/browser.js
diff --git a/js/src/tests/ecma_6/Number/isSafeInteger-01.js b/js/src/tests/ecma_6/Number/isSafeInteger-01.js
new file mode 100644
index 000000000..d1a11cfe3
--- /dev/null
+++ b/js/src/tests/ecma_6/Number/isSafeInteger-01.js
@@ -0,0 +1,40 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1003764;
+var summary = "ES6 (draft Draft May 22, 2014) ES6 20.1.2.5 Number.isSafeInteger(number)";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(Number.isSafeInteger.length, 1);
+
+assertEq(Number.isSafeInteger({}), false);
+assertEq(Number.isSafeInteger(NaN), false);
+assertEq(Number.isSafeInteger(+Infinity), false);
+assertEq(Number.isSafeInteger(-Infinity), false);
+
+assertEq(Number.isSafeInteger(-1), true);
+assertEq(Number.isSafeInteger(+0), true);
+assertEq(Number.isSafeInteger(-0), true);
+assertEq(Number.isSafeInteger(1), true);
+
+assertEq(Number.isSafeInteger(3.2), false);
+
+assertEq(Number.isSafeInteger(Math.pow(2, 53) - 2), true);
+assertEq(Number.isSafeInteger(Math.pow(2, 53) - 1), true);
+assertEq(Number.isSafeInteger(Math.pow(2, 53)), false);
+assertEq(Number.isSafeInteger(Math.pow(2, 53) + 1), false);
+assertEq(Number.isSafeInteger(Math.pow(2, 53) + 2), false);
+
+assertEq(Number.isSafeInteger(-Math.pow(2, 53) - 2), false);
+assertEq(Number.isSafeInteger(-Math.pow(2, 53) - 1), false);
+assertEq(Number.isSafeInteger(-Math.pow(2, 53)), false);
+assertEq(Number.isSafeInteger(-Math.pow(2, 53) + 1), true);
+assertEq(Number.isSafeInteger(-Math.pow(2, 53) + 2), true);
+
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("All tests passed!");
diff --git a/js/src/tests/ecma_6/Number/parseFloat-01.js b/js/src/tests/ecma_6/Number/parseFloat-01.js
new file mode 100644
index 000000000..8c57e4e12
--- /dev/null
+++ b/js/src/tests/ecma_6/Number/parseFloat-01.js
@@ -0,0 +1,27 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 886949;
+var summary = "ES6 (draft May 2013) 15.7.3.10 Number.parseFloat(string)";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(Number.parseFloat("Infinity"), Infinity);
+assertEq(Number.parseFloat("+Infinity"), Infinity);
+assertEq(Number.parseFloat("-Infinity"), -Infinity);
+
+assertEq(Number.parseFloat("inf"), NaN);
+assertEq(Number.parseFloat("Inf"), NaN);
+assertEq(Number.parseFloat("infinity"), NaN);
+
+assertEq(Number.parseFloat("nan"), NaN);
+assertEq(Number.parseFloat("NaN"), NaN);
+
+/* Number.parseFloat should be the same function object as global parseFloat. */
+assertEq(Number.parseFloat, parseFloat);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("All tests passed!");
diff --git a/js/src/tests/ecma_6/Number/parseInt-01.js b/js/src/tests/ecma_6/Number/parseInt-01.js
new file mode 100644
index 000000000..20bda1872
--- /dev/null
+++ b/js/src/tests/ecma_6/Number/parseInt-01.js
@@ -0,0 +1,172 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 886949;
+var summary = "ES6 (draft May 2013) 15.7.3.9 Number.parseInt(string, radix)";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var str, radix;
+var upvar;
+
+/* 1. Let inputString be ToString(string). */
+
+assertEq(Number.parseInt({ toString: function() { return "17" } }, 10), 17);
+
+upvar = 0;
+str = { get toString() { upvar++; return function() { upvar++; return "12345"; } } };
+assertEq(Number.parseInt(str, 10), 12345);
+assertEq(upvar, 2);
+
+
+/*
+ * 2. Let S be a newly created substring of inputString consisting of the first
+ * character that is not a StrWhiteSpaceChar and all characters following
+ * that character. (In other words, remove leading white space.)
+ */
+
+var ws =
+ ["\t", "\v", "\f", " ", "\xA0", "\uFEFF",
+ "\u2004", "\u3000", // a few Unicode whitespaces
+ "\r", "\n", "\u2028", "\u2029"];
+
+str = "8675309";
+for (var i = 0, sz = ws.length; i < sz; i++)
+{
+ assertEq(Number.parseInt(ws[i] + str, 10), 8675309);
+ for (var j = 0, sz = ws.length; j < sz; j++)
+ {
+ assertEq(Number.parseInt(ws[i] + ws[j] + str, 10), 8675309,
+ ws[i].charCodeAt(0).toString(16) + ", " +
+ ws[j].charCodeAt(0).toString(16));
+ }
+}
+
+
+/*
+ * 3. Let sign be 1.
+ * 4. If S is not empty and the first character of S is a minus sign -, let
+ * sign be −1.
+ */
+str = "5552368";
+assertEq(Number.parseInt("-" + str, 10), -Number.parseInt(str, 10));
+assertEq(Number.parseInt(" -" + str, 10), -Number.parseInt(str, 10));
+assertEq(Number.parseInt("-", 10), NaN);
+assertEq(Number.parseInt("", 10), NaN);
+assertEq(Number.parseInt("-0", 10), -0);
+
+
+/*
+ * 5. If S is not empty and the first character of S is a plus sign + or a
+ * minus sign -, then remove the first character from S.
+ */
+assertEq(Number.parseInt("+12345", 10), 12345);
+assertEq(Number.parseInt(" +12345", 10), 12345);
+assertEq(Number.parseInt("-12345", 10), -12345);
+assertEq(Number.parseInt(" -12345", 10), -12345);
+
+
+/*
+ * 6. Let R = ToInt32(radix).
+ */
+
+upvar = "";
+str =
+ { toString: function() { if (!upvar) upvar = "string"; return "42"; } };
+radix =
+ { toString: function() { if (!upvar) upvar = "radix"; return "10"; } };
+
+assertEq(Number.parseInt(str, radix), 42);
+assertEq(upvar, "string");
+
+assertEq(Number.parseInt("123", null), 123);
+assertEq(Number.parseInt("123", undefined), 123);
+assertEq(Number.parseInt("123", NaN), 123);
+assertEq(Number.parseInt("123", -0), 123);
+assertEq(Number.parseInt("10", 72057594037927950), 16);
+assertEq(Number.parseInt("10", -4294967292), 4);
+assertEq(Number.parseInt("0x10", 1e308), 16);
+assertEq(Number.parseInt("10", 1e308), 10);
+assertEq(Number.parseInt("10", { valueOf: function() { return 16; } }), 16);
+
+
+/*
+ * 7. Let stripPrefix be true.
+ * 8. If R ≠ 0, then
+ * a. If R < 2 or R > 36, then return NaN.
+ * b. If R ≠ 16, let stripPrefix be false.
+ * 9. Else, R = 0
+ * a. Let R = 10.
+ * 10. If stripPrefix is true, then
+ * a. If the length of S is at least 2 and the first two characters of S
+ * are either “0x” or “0X”, then remove the first two characters from S and
+ * let R = 16.
+ */
+var vs = ["1", "51", "917", "2343", "99963"];
+for (var i = 0, sz = vs.length; i < sz; i++)
+ assertEq(Number.parseInt(vs[i], 0), Number.parseInt(vs[i], 10), "bad " + vs[i]);
+
+assertEq(Number.parseInt("0x10"), 16);
+assertEq(Number.parseInt("0x10", 0), 16);
+assertEq(Number.parseInt("0x10", 16), 16);
+assertEq(Number.parseInt("0x10", 8), 0);
+assertEq(Number.parseInt("-0x10", 16), -16);
+
+assertEq(Number.parseInt("5", 1), NaN);
+assertEq(Number.parseInt("5", 37), NaN);
+assertEq(Number.parseInt("5", { valueOf: function() { return -1; } }), NaN);
+
+
+/*
+ * 11. If S contains any character that is not a radix-R digit, then let Z be
+ * the substring of S consisting of all characters before the first such
+ * character; otherwise, let Z be S.
+ * 12. If Z is empty, return NaN.
+ */
+assertEq(Number.parseInt(""), NaN);
+assertEq(Number.parseInt("ohai"), NaN);
+assertEq(Number.parseInt("0xohai"), NaN);
+assertEq(Number.parseInt("-ohai"), NaN);
+assertEq(Number.parseInt("+ohai"), NaN);
+assertEq(Number.parseInt(" ohai"), NaN);
+
+assertEq(Number.parseInt("0xaohai"), 10);
+assertEq(Number.parseInt("hohai", 18), 17);
+
+
+/*
+ * 13. Let mathInt be the mathematical integer value that is represented by Z
+ * in radix-R notation, using the letters A-Z and a-z for digits with
+ * values 10 through 35. (However, if R is 10 and Z contains more than 20
+ * significant digits, every significant digit after the 20th may be
+ * replaced by a 0 digit, at the option of the implementation; and if R is
+ * not 2, 4, 8, 10, 16, or 32, then mathInt may be an implementation-
+ * dependent approximation to the mathematical integer value that is
+ * represented by Z in radix-R notation.)
+ * 14. Let number be the Number value for mathInt.
+ * 15. Return sign × number.
+ */
+assertEq(Number.parseInt("ohai", 36), 1142154);
+assertEq(Number.parseInt("0ohai", 36), 1142154);
+assertEq(Number.parseInt("00ohai", 36), 1142154);
+assertEq(Number.parseInt("A", 16), 10);
+assertEq(Number.parseInt("0A", 16), 10);
+assertEq(Number.parseInt("00A", 16), 10);
+assertEq(Number.parseInt("A", 17), 10);
+assertEq(Number.parseInt("0A", 17), 10);
+assertEq(Number.parseInt("00A", 17), 10);
+
+/* Number.parseInt should be the same function object as global parseInt. */
+assertEq(Number.parseInt, parseInt);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("All tests passed!");
diff --git a/js/src/tests/ecma_6/Number/parseInt-default-to-decimal.js b/js/src/tests/ecma_6/Number/parseInt-default-to-decimal.js
new file mode 100644
index 000000000..7049ef661
--- /dev/null
+++ b/js/src/tests/ecma_6/Number/parseInt-default-to-decimal.js
@@ -0,0 +1,30 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 886949;
+var summary = "ES6 (draft May 2013) 15.7.3.9 Number.parseInt(string, radix)." +
+ " Verify that Number.parseInt defaults to decimal.";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+assertEq(Number.parseInt("08"), 8);
+assertEq(Number.parseInt("09"), 9);
+assertEq(Number.parseInt("014"), 14);
+
+function strictParseInt(s) { "use strict"; return Number.parseInt(s); }
+
+assertEq(strictParseInt("08"), 8);
+assertEq(strictParseInt("09"), 9);
+assertEq(strictParseInt("014"), 14);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("All tests passed!");
diff --git a/js/src/tests/ecma_6/Number/shell.js b/js/src/tests/ecma_6/Number/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Number/shell.js
diff --git a/js/src/tests/ecma_6/Object/accessor-arguments-rest.js b/js/src/tests/ecma_6/Object/accessor-arguments-rest.js
new file mode 100644
index 000000000..82f37b62e
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/accessor-arguments-rest.js
@@ -0,0 +1,24 @@
+assertThrowsInstanceOf(() => eval("({ get x(...a) { } })"), SyntaxError);
+assertThrowsInstanceOf(() => eval("({ get x(a, ...b) { } })"), SyntaxError);
+assertThrowsInstanceOf(() => eval("({ get x([a], ...b) { } })"), SyntaxError);
+assertThrowsInstanceOf(() => eval("({ get x({a}, ...b) { } })"), SyntaxError);
+assertThrowsInstanceOf(() => eval("({ get x({a: A}, ...b) { } })"), SyntaxError);
+
+assertThrowsInstanceOf(() => eval("({ set x(...a) { } })"), SyntaxError);
+assertThrowsInstanceOf(() => eval("({ set x(a, ...b) { } })"), SyntaxError);
+assertThrowsInstanceOf(() => eval("({ set x([a], ...b) { } })"), SyntaxError);
+assertThrowsInstanceOf(() => eval("({ set x({a: A}, ...b) { } })"), SyntaxError);
+
+({ get(...a) { } });
+({ get(a, ...b) { } });
+({ get([a], ...b) { } });
+({ get({a}, ...b) { } });
+({ get({a: A}, ...b) { } });
+
+({ set(...a) { } });
+({ set(a, ...b) { } });
+({ set([a], ...b) { } });
+({ set({a: A}, ...b) { } });
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/accessor-name.js b/js/src/tests/ecma_6/Object/accessor-name.js
new file mode 100644
index 000000000..1b5268e07
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/accessor-name.js
@@ -0,0 +1,36 @@
+function name(obj, property, get) {
+ let desc = Object.getOwnPropertyDescriptor(obj, property);
+ return (get ? desc.get : desc.set).name;
+}
+
+assertEq(name({get a() {}}, "a", true), "get a");
+assertEq(name({set a(v) {}}, "a", false), "set a");
+
+assertEq(name({get 123() {}}, "123", true), "get 123");
+assertEq(name({set 123(v) {}}, "123", false), "set 123");
+
+assertEq(name({get case() {}}, "case", true), "get case");
+assertEq(name({set case(v) {}}, "case", false), "set case");
+
+assertEq(name({get get() {}}, "get", true), "get get");
+assertEq(name({set set(v) {}}, "set", false), "set set");
+
+let o = {get a() { }, set a(v) {}};
+assertEq(name(o, "a", true), "get a");
+assertEq(name(o, "a", false), "set a");
+
+o = {get 123() { }, set 123(v) {}}
+assertEq(name(o, "123", true), "get 123");
+assertEq(name(o, "123", false), "set 123");
+
+o = {get case() { }, set case(v) {}}
+assertEq(name(o, "case", true), "get case");
+assertEq(name(o, "case", false), "set case");
+
+// Congratulations on implementing these!
+assertEq(name({get ["a"]() {}}, "a", true), "");
+assertEq(name({get [123]() {}}, "123", true), "");
+assertEq(name({set ["a"](v) {}}, "a", false), "");
+assertEq(name({set [123](v) {}}, "123", false), "");
+
+reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/accessor-non-constructor.js b/js/src/tests/ecma_6/Object/accessor-non-constructor.js
new file mode 100644
index 000000000..32d1d3467
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/accessor-non-constructor.js
@@ -0,0 +1,20 @@
+var obj = { get a() { return 1; } };
+assertThrowsInstanceOf(() => {
+ new Object.getOwnPropertyDescriptor(obj, "a").get
+}, TypeError);
+
+obj = { set a(b) { } };
+assertThrowsInstanceOf(() => {
+ new Object.getOwnPropertyDescriptor(obj, "a").set
+}, TypeError);
+
+obj = { get a() { return 1; }, set a(b) { } };
+assertThrowsInstanceOf(() => {
+ new Object.getOwnPropertyDescriptor(obj, "a").get
+}, TypeError);
+assertThrowsInstanceOf(() => {
+ new Object.getOwnPropertyDescriptor(obj, "a").set
+}, TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/assign.js b/js/src/tests/ecma_6/Object/assign.js
new file mode 100644
index 000000000..5deb09c8e
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/assign.js
@@ -0,0 +1,303 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+function checkDataProperty(object, propertyKey, value, writable, enumerable, configurable) {
+ var desc = Object.getOwnPropertyDescriptor(object, propertyKey);
+ assertEq(desc === undefined, false);
+ assertEq('value' in desc, true);
+ assertEq(desc.value, value);
+ assertEq(desc.writable, writable);
+ assertEq(desc.enumerable, enumerable);
+ assertEq(desc.configurable, configurable);
+}
+
+/* 19.1.2.1 Object.assign ( target, ...sources ) */
+assertEq(Object.assign.length, 2);
+
+// Basic functionality works with multiple sources
+function basicMultipleSources() {
+ var a = {};
+ var b = { bProp : 7 };
+ var c = { cProp : 8 };
+ Object.assign(a, b, c);
+ assertEq(a.bProp, 7);
+ assertEq(a.cProp, 8);
+}
+basicMultipleSources();
+
+// Basic functionality works with symbols (Bug 1052358)
+function basicSymbols() {
+ var a = {};
+ var b = { bProp : 7 };
+ var aSymbol = Symbol("aSymbol");
+ b[aSymbol] = 22;
+ Object.assign(a, b);
+ assertEq(a.bProp, 7);
+ assertEq(a[aSymbol], 22);
+}
+basicSymbols();
+
+// Calls ToObject() for target, skips null/undefined sources, uses
+// ToObject(source) otherwise.
+function testToObject() {
+ assertThrowsInstanceOf(() => Object.assign(null, null), TypeError);
+ assertThrowsInstanceOf(() => Object.assign(), TypeError);
+ assertThrowsInstanceOf(() => Object.assign(null, {}), TypeError);
+ assertEq(Object.assign({}, null) instanceof Object, true);
+ assertEq(Object.assign({}, undefined) instanceof Object, true);
+
+ // Technically an embedding could have this as extension acting differently
+ // from ours, so a feature-test is inadequate. We can move this subtest
+ // into extensions/ if that ever matters.
+ if (typeof objectEmulatingUndefined === "function") {
+ var falsyObject = objectEmulatingUndefined();
+ falsyObject.foo = 7;
+
+ var obj = Object.assign({}, falsyObject);
+ assertEq(obj instanceof Object, true);
+ assertEq(obj.foo, 7);
+ }
+
+ assertEq(Object.assign(true, {}) instanceof Boolean, true);
+ assertEq(Object.assign(1, {}) instanceof Number, true);
+ assertEq(Object.assign("string", {}) instanceof String, true);
+ var o = {};
+ assertEq(Object.assign(o, {}), o);
+}
+testToObject();
+
+// Invokes [[OwnPropertyKeys]] on ToObject(source)
+function testOwnPropertyKeys() {
+ assertThrowsInstanceOf(() => Object.assign(null, new Proxy({}, {
+ getOwnPropertyNames: () => { throw new Error("not called"); }
+ })), TypeError);
+
+ var ownKeysCalled = false;
+ Object.assign({}, new Proxy({}, {
+ ownKeys: function() {
+ ownKeysCalled = true;
+ return [];
+ }
+ }));
+ assertEq(ownKeysCalled, true);
+};
+testOwnPropertyKeys();
+
+// Ensure correct property traversal
+function correctPropertyTraversal() {
+ var log = "";
+ var source = new Proxy({a: 1, b: 2}, {
+ ownKeys: () => ["b", "c", "a"],
+ getOwnPropertyDescriptor: function(t, pk) {
+ log += "#" + pk;
+ return Object.getOwnPropertyDescriptor(t, pk);
+ },
+ get: function(t, pk, r) {
+ log += "-" + pk;
+ return t[pk];
+ },
+ });
+ Object.assign({}, source);
+ assertEq(log, "#b-b#c#a-a");
+}
+correctPropertyTraversal();
+
+// Only [[Enumerable]] properties are assigned to target
+function onlyEnumerablePropertiesAssigned() {
+ var source = Object.defineProperties({}, {
+ a: {value: 1, enumerable: true},
+ b: {value: 2, enumerable: false},
+ });
+ var target = Object.assign({}, source);
+ assertEq("a" in target, true);
+ assertEq("b" in target, false);
+}
+onlyEnumerablePropertiesAssigned();
+
+
+// Enumerability is decided on-time, not before main loop (1)
+function testEnumerabilityDeterminedInLoop1()
+{
+ var getterCalled = false;
+ var sourceTarget = {
+ get a() { getterCalled = true },
+ get b() { Object.defineProperty(sourceTarget, "a", {enumerable: false}) },
+ };
+ var source = new Proxy(sourceTarget, { ownKeys: () => ["b", "a"] });
+ Object.assign({}, source);
+ assertEq(getterCalled, false);
+}
+testEnumerabilityDeterminedInLoop1();
+
+// Enumerability is decided on-time, not before main loop (2)
+function testEnumerabilityDeterminedInLoop2()
+{
+ var getterCalled = false;
+ var sourceTarget = {
+ get a() { getterCalled = true },
+ get b() { Object.defineProperty(sourceTarget, "a", {enumerable: true}) },
+ };
+ var source = new Proxy(sourceTarget, {
+ ownKeys: () => ["b", "a"]
+ });
+ Object.defineProperty(sourceTarget, "a", {enumerable: false});
+ Object.assign({}, source);
+ assertEq(getterCalled, true);
+}
+testEnumerabilityDeterminedInLoop2();
+
+// Properties are retrieved through Get() and assigned onto
+// the target as data properties, not in any sense cloned over as descriptors
+function testPropertiesRetrievedThroughGet() {
+ var getterCalled = false;
+ Object.assign({}, {get a() { getterCalled = true }});
+ assertEq(getterCalled, true);
+}
+testPropertiesRetrievedThroughGet();
+
+// Properties are retrieved through Get()
+// Properties are assigned through Put()
+function testPropertiesAssignedThroughPut() {
+ var setterCalled = false;
+ Object.assign({set a(v) { setterCalled = v }}, {a: true});
+ assertEq(setterCalled, true);
+}
+testPropertiesAssignedThroughPut();
+
+// Properties are retrieved through Get()
+// Properties are assigned through Put(): Existing property attributes are not altered
+function propertiesAssignedExistingNotAltered() {
+ var source = {a: 1, b: 2, c: 3};
+ var target = {a: 0, b: 0, c: 0};
+ Object.defineProperty(target, "a", {enumerable: false});
+ Object.defineProperty(target, "b", {configurable: false});
+ Object.defineProperty(target, "c", {enumerable: false, configurable: false});
+ Object.assign(target, source);
+ checkDataProperty(target, "a", 1, true, false, true);
+ checkDataProperty(target, "b", 2, true, true, false);
+ checkDataProperty(target, "c", 3, true, false, false);
+}
+propertiesAssignedExistingNotAltered();
+
+// Properties are retrieved through Get()
+// Properties are assigned through Put(): Throws TypeError if non-writable
+function propertiesAssignedTypeErrorNonWritable() {
+ var source = {a: 1};
+ var target = {a: 0};
+ Object.defineProperty(target, "a", {writable: false});
+ assertThrowsInstanceOf(() => Object.assign(target, source), TypeError);
+ checkDataProperty(target, "a", 0, false, true, true);
+}
+propertiesAssignedTypeErrorNonWritable();
+
+// Properties are retrieved through Get()
+// Put() creates standard properties; Property attributes from source are ignored
+function createsStandardProperties() {
+ var source = {a: 1, b: 2, c: 3, get d() { return 4 }};
+ Object.defineProperty(source, "b", {writable: false});
+ Object.defineProperty(source, "c", {configurable: false});
+ var target = Object.assign({}, source);
+ checkDataProperty(target, "a", 1, true, true, true);
+ checkDataProperty(target, "b", 2, true, true, true);
+ checkDataProperty(target, "c", 3, true, true, true);
+ checkDataProperty(target, "d", 4, true, true, true);
+}
+createsStandardProperties();
+
+// Properties created during traversal are not copied
+function propertiesCreatedDuringTraversalNotCopied() {
+ var source = {get a() { this.b = 2 }};
+ var target = Object.assign({}, source);
+ assertEq("a" in target, true);
+ assertEq("b" in target, false);
+}
+propertiesCreatedDuringTraversalNotCopied();
+
+// Properties deleted during traversal are not copied
+function testDeletePropertiesNotCopied() {
+ var source = new Proxy({
+ get a() { delete this.b },
+ b: 2,
+ }, {
+ getOwnPropertyNames: () => ["a", "b"]
+ });
+ var target = Object.assign({}, source);
+ assertEq("a" in target, true);
+ assertEq("b" in target, false);
+}
+testDeletePropertiesNotCopied();
+
+function testDeletionExposingShadowedProperty()
+{
+ var srcProto = { b: 42 };
+ var src =
+ Object.create(srcProto,
+ { a: { enumerable: true, get: function() { delete this.b; } },
+ b: { value: 2, configurable: true, enumerable: true } });
+ var source = new Proxy(src, { getOwnPropertyNames: () => ["a", "b"] });
+ var target = Object.assign({}, source);
+ assertEq("a" in target, true);
+ assertEq("b" in target, false);
+}
+testDeletionExposingShadowedProperty();
+
+// Properties first deleted and then recreated during traversal are copied (1)
+function testDeletedAndRecreatedPropertiesCopied1() {
+ var source = new Proxy({
+ get a() { delete this.c },
+ get b() { this.c = 4 },
+ c: 3,
+ }, {
+ getOwnPropertyNames: () => ["a", "b", "c"]
+ });
+ var target = Object.assign({}, source);
+ assertEq("a" in target, true);
+ assertEq("b" in target, true);
+ assertEq("c" in target, true);
+ checkDataProperty(target, "c", 4, true, true, true);
+}
+testDeletedAndRecreatedPropertiesCopied1();
+
+// Properties first deleted and then recreated during traversal are copied (2)
+function testDeletedAndRecreatedPropertiesCopied2() {
+ var source = new Proxy({
+ get a() { delete this.c },
+ get b() { this.c = 4 },
+ c: 3,
+ }, {
+ ownKeys: () => ["a", "c", "b"]
+ });
+ var target = Object.assign({}, source);
+ assertEq("a" in target, true);
+ assertEq("b" in target, true);
+ assertEq("c" in target, false);
+}
+testDeletedAndRecreatedPropertiesCopied2();
+
+// String and Symbol valued properties are copied
+function testStringAndSymbolPropertiesCopied() {
+ var keyA = "str-prop";
+ var source = {"str-prop": 1};
+ var target = Object.assign({}, source);
+ checkDataProperty(target, keyA, 1, true, true, true);
+}
+testStringAndSymbolPropertiesCopied();
+
+// Intermediate exceptions stop traversal and throw exception
+function testExceptionsDoNotStopFirstReported1() {
+ var TestError = function TestError() {};
+ var source = new Proxy({}, {
+ getOwnPropertyDescriptor: function(t, pk) {
+ assertEq(pk, "b");
+ throw new TestError();
+ },
+ ownKeys: () => ["b", "a"]
+ });
+ assertThrowsInstanceOf(() => Object.assign({}, source), TestError);
+}
+testExceptionsDoNotStopFirstReported1();
+
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/browser.js b/js/src/tests/ecma_6/Object/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/browser.js
diff --git a/js/src/tests/ecma_6/Object/bug-1150906.js b/js/src/tests/ecma_6/Object/bug-1150906.js
new file mode 100644
index 000000000..27403cccf
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/bug-1150906.js
@@ -0,0 +1,13 @@
+function f(x) {
+ Object.defineProperty(arguments, 0, {
+ get: function() {}
+ });
+ return arguments;
+}
+
+var obj = f(1);
+assertEq(obj[0], undefined);
+assertEq(Object.getOwnPropertyDescriptor(obj, 0).set, undefined);
+assertThrowsInstanceOf(() => { "use strict"; obj[0] = 1; }, TypeError);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Object/bug-1206700.js b/js/src/tests/ecma_6/Object/bug-1206700.js
new file mode 100644
index 000000000..4918bcbec
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/bug-1206700.js
@@ -0,0 +1,10 @@
+var x = {};
+Reflect.set(x, "prop", 5, Object.prototype);
+var y = {};
+Reflect.set(y, "prop", 6, Object.prototype);
+assertEq(x.hasOwnProperty("prop"), false);
+assertEq(y.hasOwnProperty("prop"), false);
+assertEq(Object.prototype.hasOwnProperty("prop"), true);
+assertEq(Object.prototype.prop, 6);
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Object/defineProperties-order.js b/js/src/tests/ecma_6/Object/defineProperties-order.js
new file mode 100644
index 000000000..417d10183
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/defineProperties-order.js
@@ -0,0 +1,17 @@
+// Based on testcases provided by André Bargull
+
+let log = [];
+let logger = new Proxy({}, {
+ get(target, key) {
+ log.push(key);
+ }
+});
+
+Object.create(null, new Proxy({a: {value: 0}, b: {value: 1}}, logger));
+assertEq(log.join(), "ownKeys,getOwnPropertyDescriptor,get,getOwnPropertyDescriptor,get");
+
+log = [];
+Object.defineProperties({}, new Proxy({a: {value: 0}, b: {value: 1}}, logger));
+assertEq(log.join(), "ownKeys,getOwnPropertyDescriptor,get,getOwnPropertyDescriptor,get");
+
+reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/defineProperty-proxy.js b/js/src/tests/ecma_6/Object/defineProperty-proxy.js
new file mode 100644
index 000000000..b5ece940b
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/defineProperty-proxy.js
@@ -0,0 +1,54 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Test details of the implementation of ToPropertyDescriptor exposed to scripts
+// thanks to scriptable proxies.
+
+// A LoggingProxy object logs certain operations performed on it.
+var log = [];
+function LoggingProxy(target) {
+ return new Proxy(target, {
+ has: function (t, id) {
+ log.push("has " + id);
+ return id in t;
+ },
+ get: function (t, id) {
+ log.push("get " + id);
+ return t[id];
+ }
+ });
+}
+
+// Tragically, we use separate code to implement Object.defineProperty on
+// arrays and on proxies. So run the test three times.
+var testSubjects = [
+ {},
+ [],
+ new Proxy({}, {})
+];
+
+for (var obj of testSubjects) {
+ log = [];
+
+ // Object.defineProperty is one public method that performs a
+ // ToPropertyDescriptor call.
+ Object.defineProperty(obj, "x", new LoggingProxy({
+ enumerable: true,
+ configurable: true,
+ value: 3,
+ writable: true
+ }));
+
+ // It should have performed exactly these operations on the proxy, in this
+ // order. See ES6 rev 24 (2014 April 27) 6.2.4.5 ToPropertyDescriptor.
+ assertDeepEq(log, [
+ "has enumerable", "get enumerable",
+ "has configurable", "get configurable",
+ "has value", "get value",
+ "has writable", "get writable",
+ "has get",
+ "has set"
+ ]);
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Object/destructuring-shorthand-defaults.js b/js/src/tests/ecma_6/Object/destructuring-shorthand-defaults.js
new file mode 100644
index 000000000..a03dea2a2
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/destructuring-shorthand-defaults.js
@@ -0,0 +1,135 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Ensure that the syntax used in shorthand destructuring with defaults
+// e.g. |{x=1, y=2} = {}| properly raises a syntax error within an object
+// literal. As per ES6 12.2.6 Object Initializer, "NOTE 3."
+
+const SYNTAX_ERROR_STMTS = [
+ // expressions
+ "({x={}={}}),",
+ "({y={x={}={}={}={}={}={}={}={}}={}}),",
+ "({a=1, b=2, c=3, x=({}={})}),",
+ "({x=1, y={z={1}}})",
+ "({x=1} = {y=1});",
+ "({x: y={z=1}}={})",
+ "({x=1}),",
+ "({z={x=1}})=>{};",
+ "({x = ({y=1}) => y})",
+ "(({x=1})) => x",
+ "({e=[]}==(;",
+ "({x=1}[-1]);",
+ "({x=y}[-9])",
+ "({x=y}.x.z[-9])",
+ "({x=y}`${-9}`)",
+ "(new {x=y}(-9))",
+ "new {x=1}",
+ "new {x=1}={}",
+ "typeof {x=1}",
+ "typeof ({x=1})",
+ "({x=y, [-9]:0})",
+ "((({w = x} >(-9)",
+ "++({x=1})",
+ "--{x=1}",
+ "!{x=1}={}",
+ "delete {x=1}",
+ "delete ({x=1})",
+ "delete {x=1} = {}",
+ "({x=1}.abc)",
+ "x > (0, {a = b} );",
+ // declarations
+ "var x = 0 + {a=1} = {}",
+ "let o = {x=1};",
+ "var j = {x=1};",
+ "var j = {x={y=1}}={};",
+ "const z = {x=1};",
+ "const z = {x={y=1}}={};",
+ "const {x=1};",
+ "const {x={y=33}}={};",
+ "var {x=1};",
+ "let {x=1};",
+ "let x, y, {z=1}={}, {w=2}, {e=3};",
+ // array initialization
+ "[{x=1, y = ({z=2} = {})}];",
+ // try/catch
+ "try {throw 'a';} catch ({x={y=1}}) {}",
+ // if/else
+ "if ({k: 1, x={y=2}={}}) {}",
+ "if (false) {} else if (true) { ({x=1}) }",
+ // switch
+ "switch ('c') { case 'c': ({x=1}); }",
+ // for
+ "for ({x=1}; 1;) {1}",
+ "for ({x={y=2}}; 1;) {1}",
+ "for (var x = 0; x < 2; x++) { ({x=1, y=2}) }",
+ "for (let x=1;{x=1};){}",
+ "for (let x=1;{x={y=2}};){}",
+ "for (let x=1;1;{x=1}){}",
+ "for (let x=1;1;{x={y=2}}){}",
+ // while
+ "while ({x=1}) {1};",
+ "while ({x={y=2}}={}) {1};",
+ // with
+ "with ({x=1}) {};",
+ "with ({x={y=3}={}}) {};",
+ "with (Math) { ({x=1}) };",
+ // ternary
+ "true ? {x=1} : 1;",
+ "false ? 1 : {x=1};",
+ "{x=1} ? 2 : 3;",
+]
+
+for (var stmt of SYNTAX_ERROR_STMTS) {
+ assertThrowsInstanceOf(() => {
+ eval(stmt);
+ }, SyntaxError);
+}
+
+const REFERENCE_ERROR_STMTS = [
+ "({x} += {});",
+ "({x = 1}) = {x: 2};",
+]
+
+for (var stmt of REFERENCE_ERROR_STMTS) {
+ assertThrowsInstanceOf(() => {
+ eval(stmt);
+ }, ReferenceError);
+}
+
+// A few tricky but acceptable cases:
+// see https://bugzilla.mozilla.org/show_bug.cgi?id=932080#c2
+
+assertEq((({a = 0}) => a)({}), 0);
+assertEq((({a = 0} = {}) => a)({}), 0);
+assertEq((({a = 0} = {}) => a)({a: 1}), 1);
+
+{
+ let x, y;
+ ({x=1} = {});
+ assertEq(x, 1);
+ ({x=1} = {x: 4});
+ assertEq(x, 4);
+ ({x=1, y=2} = {})
+ assertEq(x, 1);
+ assertEq(y, 2);
+}
+
+{
+ let {x={i=1, j=2}={}}={};
+ assertDeepEq(x, ({}));
+ assertEq(i, 1);
+ assertEq(j, 2);
+}
+
+// Default destructuring values, which are variables, should be defined
+// within closures (Bug 1255167).
+{
+ let f = function(a){
+ return (function({aa = a}){ return aa; })({});
+ };
+ assertEq(f(9999), 9999);
+}
+
+if (typeof reportCompare == "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/duplProps.js b/js/src/tests/ecma_6/Object/duplProps.js
new file mode 100644
index 000000000..41b8d67fb
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/duplProps.js
@@ -0,0 +1,116 @@
+/*
+ * ES6 allows duplicate property names in object literals, even in strict mode.
+ * These tests modify the tests in test262 to reflect this change.
+ */
+
+// test262/ch11/11.1/11.1.5/11.1.5-4-4-a-1-s.js
+a = function() { "use strict"; return { foo: 0, foo : 1 }};
+assertEq(a().foo, 1);
+a = function() { return { foo: 0, foo : 1 }};
+assertEq(a().foo, 1);
+
+// test262/ch11/11.1/11.1.5/11.1.5_4-4-b-1.js
+a = function() { "use strict"; return { foo : 1, get foo() { return 2; }}};
+assertEq(a().foo, 2);
+a = function() { return { foo : 1, get foo() { return 2;} }};
+assertEq(a().foo, 2);
+
+// test262/ch11/11.1/11.1.5/11.1.5_4-4-c-1.js
+a = function() { "use strict"; return { get foo() { return 2; }, foo : 1 }};
+assertEq(a().foo, 1);
+a = function() { return { get foo() { return 2; }, foo : 1 }};
+assertEq(a().foo, 1);
+
+// test262/ch11/11.1/11.1.5/11.1.5_4-4-b-2.js
+a = function() { "use strict"; return { foo : 1, set foo(a) { throw 2; }}};
+try {
+ a().foo = 5;
+ throw new Error("2 should be thrown here");
+} catch (e) {
+ if (e !== 2)
+ throw new Error("2 should be thrown here");
+}
+a = function() { return { foo : 1, set foo(a) { throw 2;} }};
+try {
+ a().foo = 5;
+ throw new Error("2 should be thrown here");
+} catch (e) {
+ if (e !== 2)
+ throw new Error("2 should be thrown here");
+}
+
+// test262/ch11/11.1/11.1.5/11.1.5_4-4-d-1.js
+a = function() { "use strict"; return { get foo() { return 2; }, get foo() { return 3; } }};
+assertEq(a().foo, 3);
+a = function() { return { get foo() { return 2; }, get foo() { return 3; } }};
+assertEq(a().foo, 3);
+
+// test262/ch11/11.1/11.1.5/11.1.5_4-4-c-2.js
+a = function() { "use strict"; return { set foo(a) { throw 2; }, foo : 1 }};
+assertEq(a().foo, 1);
+a = function() { return { set foo(a) { throw 2; }, foo : 1 }};
+assertEq(a().foo, 1);
+
+// test262/ch11/11.1/11.1.5/11.1.5_4-4-d-2.js
+a = function() { "use strict"; return { set foo(a) { throw 2; }, set foo(a) { throw 3; }}};
+try {
+ a().foo = 5;
+ throw new Error("3 should be thrown here");
+} catch (e) {
+ if (e !== 3)
+ throw new Error("3 should be thrown here");
+}
+a = function() { return { set foo(a) { throw 2; }, set foo(a) { throw 3; }}};
+try {
+ a().foo = 5;
+ throw new Error("3 should be thrown here");
+} catch (e) {
+ if (e !== 3)
+ throw new Error("3 should be thrown here");
+}
+
+// test262/ch11/11.1/11.1.5/11.1.5_4-4-d-3.js
+a = function() { "use strict"; return { get foo() { return 2; }, set foo(a) { throw 3; },
+ get foo() { return 4; }}};
+try {
+ assertEq(a().foo, 4);
+ a().foo = 5;
+ throw new Error("3 should be thrown here");
+} catch (e) {
+ if (e !== 3)
+ throw new Error("3 should be thrown here");
+}
+a = function() { return { get foo() { return 2; }, set foo(a) { throw 3; },
+ get foo() { return 4; }}};
+try {
+ assertEq(a().foo, 4);
+ a().foo = 5;
+ throw new Error("3 should be thrown here");
+} catch (e) {
+ if (e !== 3)
+ throw new Error("3 should be thrown here");
+}
+
+// test262/ch11/11.1/11.1.5/11.1.5_4-4-d-4.js
+a = function() { "use strict"; return { set foo(a) { throw 2; }, get foo() { return 4; },
+ set foo(a) { throw 3; }}};
+try {
+ assertEq(a().foo, 4);
+ a().foo = 5;
+ throw new Error("3 should be thrown here");
+} catch (e) {
+ if (e !== 3)
+ throw new Error("3 should be thrown here");
+}
+a = function() { return { set foo(a) { throw 2; }, get foo() { return 4; },
+ set foo(a) { throw 3; }}};
+try {
+ assertEq(a().foo, 4);
+ a().foo = 5;
+ throw new Error("3 should be thrown here");
+} catch (e) {
+ if (e !== 3)
+ throw new Error("3 should be thrown here");
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Object/freeze-proxy.js b/js/src/tests/ecma_6/Object/freeze-proxy.js
new file mode 100644
index 000000000..3d95a28d4
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/freeze-proxy.js
@@ -0,0 +1,27 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+function logProxy(object = {}, handler = {}) {
+ var log = [];
+ var proxy = new Proxy(object, new Proxy(handler, {
+ get(target, propertyKey, receiver) {
+ log.push(propertyKey);
+ return target[propertyKey];
+ }
+ }));
+ return {proxy, log};
+}
+
+// The order of operations is backwards when compared to ES6 draft rev 27
+// (2014 August 24), but see https://bugs.ecmascript.org/show_bug.cgi?id=3215
+// for an explanation on why the spec version is clearly wrong.
+
+var {proxy, log} = logProxy();
+Object.freeze(proxy);
+assertDeepEq(log, ["preventExtensions", "ownKeys"]);
+
+var {proxy, log} = logProxy();
+Object.freeze(Object.freeze(proxy));
+assertDeepEq(log, ["preventExtensions", "ownKeys", "preventExtensions", "ownKeys"]);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Object/freeze.js b/js/src/tests/ecma_6/Object/freeze.js
new file mode 100644
index 000000000..18f71f76d
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/freeze.js
@@ -0,0 +1,21 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var BUGNUMBER = 1076588;
+var summary = "Object.freeze() should return its argument with no conversion when the argument is a primitive value";
+
+print(BUGNUMBER + ": " + summary);
+assertEq(Object.freeze(), undefined);
+assertEq(Object.freeze(undefined), undefined);
+assertEq(Object.freeze(null), null);
+assertEq(Object.freeze(1), 1);
+assertEq(Object.freeze("foo"), "foo");
+assertEq(Object.freeze(true), true);
+if (typeof Symbol === "function") {
+ assertEq(Object.freeze(Symbol.for("foo")), Symbol.for("foo"));
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/getOwnPropertyDescriptor.js b/js/src/tests/ecma_6/Object/getOwnPropertyDescriptor.js
new file mode 100644
index 000000000..7aaba7b5e
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/getOwnPropertyDescriptor.js
@@ -0,0 +1,35 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var BUGNUMBER = 1079188;
+var summary = "Coerce the argument passed to Object.getOwnPropertyDescriptor using ToObject";
+print(BUGNUMBER + ": " + summary);
+
+assertThrowsInstanceOf(() => Object.getOwnPropertyDescriptor(), TypeError);
+assertThrowsInstanceOf(() => Object.getOwnPropertyDescriptor(undefined), TypeError);
+assertThrowsInstanceOf(() => Object.getOwnPropertyDescriptor(null), TypeError);
+
+Object.getOwnPropertyDescriptor(1);
+Object.getOwnPropertyDescriptor(true);
+if (typeof Symbol === "function") {
+ Object.getOwnPropertyDescriptor(Symbol("foo"));
+}
+
+assertDeepEq(Object.getOwnPropertyDescriptor("foo", "length"), {
+ value: 3,
+ writable: false,
+ enumerable: false,
+ configurable: false
+});
+
+assertDeepEq(Object.getOwnPropertyDescriptor("foo", 0), {
+ value: "f",
+ writable: false,
+ enumerable: true,
+ configurable: false
+});
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/getOwnPropertySymbols-proxy.js b/js/src/tests/ecma_6/Object/getOwnPropertySymbols-proxy.js
new file mode 100644
index 000000000..56f20afb3
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/getOwnPropertySymbols-proxy.js
@@ -0,0 +1,28 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// getOwnPropertySymbols(proxy) calls the getOwnPropertyNames hook (only).
+
+var symbols = [Symbol(), Symbol("moon"), Symbol.for("sun"), Symbol.iterator];
+var hits = 0;
+
+function HandlerProxy() {
+ return new Proxy({}, {
+ get: function (t, key) {
+ if (key !== "ownKeys")
+ throw new Error("tried to access handler[" + uneval(key) + "]");
+ hits++;
+ return t => symbols;
+ }
+ });
+}
+
+function OwnKeysProxy() {
+ return new Proxy({}, new HandlerProxy);
+}
+
+assertDeepEq(Object.getOwnPropertySymbols(new OwnKeysProxy), symbols);
+assertEq(hits, 1);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Object/getOwnPropertySymbols.js b/js/src/tests/ecma_6/Object/getOwnPropertySymbols.js
new file mode 100644
index 000000000..b92d14ef1
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/getOwnPropertySymbols.js
@@ -0,0 +1,46 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+assertDeepEq(Object.getOwnPropertySymbols({}), []);
+
+// String keys are ignored.
+assertEq(Object.getOwnPropertySymbols({a: 1, b: 2}).length, 0);
+assertEq(Object.getOwnPropertySymbols([0, 1, 2, 3]).length, 0);
+
+// Symbol keys are observed.
+var iterable = {};
+Object.defineProperty(iterable, Symbol.iterator, {
+ value: () => [][Symbol.iterator]()
+});
+assertDeepEq(Object.getOwnPropertySymbols(iterable), [Symbol.iterator]);
+assertDeepEq(Object.getOwnPropertySymbols(new Proxy(iterable, {})), [Symbol.iterator]);
+
+// Test on an object with a thousand own properties.
+var obj = {};
+for (var i = 0; i < 1000; i++) {
+ obj[Symbol.for("x" + i)] = 1;
+}
+assertEq(Object.getOwnPropertyNames(obj).length, 0);
+var symbols = Object.getOwnPropertySymbols(obj);
+assertEq(symbols.length, 1000);
+assertEq(symbols.indexOf(Symbol.for("x0")) !== -1, true);
+assertEq(symbols.indexOf(Symbol.for("x241")) !== -1, true);
+assertEq(symbols.indexOf(Symbol.for("x999")) !== -1, true);
+assertEq(Object.getOwnPropertySymbols(new Proxy(obj, {})).length, 1000);
+
+// The prototype chain is not consulted.
+assertEq(Object.getOwnPropertySymbols(Object.create(obj)).length, 0);
+assertEq(Object.getOwnPropertySymbols(new Proxy(Object.create(obj), {})).length, 0);
+
+// Primitives are coerced to objects; but there are never any symbol-keyed
+// properties on the resulting wrapper objects.
+assertThrowsInstanceOf(() => Object.getOwnPropertySymbols(), TypeError);
+assertThrowsInstanceOf(() => Object.getOwnPropertySymbols(undefined), TypeError);
+assertThrowsInstanceOf(() => Object.getOwnPropertySymbols(null), TypeError);
+for (var primitive of [true, 1, 3.14, "hello", Symbol()])
+ assertEq(Object.getOwnPropertySymbols(primitive).length, 0);
+
+assertEq(Object.getOwnPropertySymbols.length, 1);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Object/getPrototypeOf.js b/js/src/tests/ecma_6/Object/getPrototypeOf.js
new file mode 100644
index 000000000..71cd30c62
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/getPrototypeOf.js
@@ -0,0 +1,22 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var BUGNUMBER = 1079090;
+var summary = "Coerce the argument passed to Object.getPrototypeOf using ToObject";
+print(BUGNUMBER + ": " + summary);
+
+assertThrowsInstanceOf(() => Object.getPrototypeOf(), TypeError);
+assertThrowsInstanceOf(() => Object.getPrototypeOf(undefined), TypeError);
+assertThrowsInstanceOf(() => Object.getPrototypeOf(null), TypeError);
+
+assertEq(Object.getPrototypeOf(1), Number.prototype);
+assertEq(Object.getPrototypeOf(true), Boolean.prototype);
+assertEq(Object.getPrototypeOf("foo"), String.prototype);
+if (typeof Symbol === "function") {
+ assertEq(Object.getPrototypeOf(Symbol("foo")), Symbol.prototype);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/getter-name.js b/js/src/tests/ecma_6/Object/getter-name.js
new file mode 100644
index 000000000..601d6b477
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/getter-name.js
@@ -0,0 +1,10 @@
+var BUGNUMBER = 1180290;
+var summary = 'Object accessors should have get prefix';
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").get.name, "get __proto__");
+assertEq(Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set.name, "set __proto__");
+
+if (typeof reportCompare === 'function')
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/isExtensible.js b/js/src/tests/ecma_6/Object/isExtensible.js
new file mode 100644
index 000000000..f1fa00878
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/isExtensible.js
@@ -0,0 +1,21 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var BUGNUMBER = 1060873;
+var summary = "Object.isExtensible() should return false when given primitive values as input";
+
+print(BUGNUMBER + ": " + summary);
+assertEq(Object.isExtensible(), false);
+assertEq(Object.isExtensible(undefined), false);
+assertEq(Object.isExtensible(null), false);
+assertEq(Object.isExtensible(1), false);
+assertEq(Object.isExtensible("foo"), false);
+assertEq(Object.isExtensible(true), false);
+if (typeof Symbol === "function") {
+ assertEq(Object.isExtensible(Symbol()), false);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/isFrozen.js b/js/src/tests/ecma_6/Object/isFrozen.js
new file mode 100644
index 000000000..02056802d
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/isFrozen.js
@@ -0,0 +1,21 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var BUGNUMBER = 1071464;
+var summary = "Object.isFrozen() should return true when given primitive values as input";
+
+print(BUGNUMBER + ": " + summary);
+assertEq(Object.isFrozen(), true);
+assertEq(Object.isFrozen(undefined), true);
+assertEq(Object.isFrozen(null), true);
+assertEq(Object.isFrozen(1), true);
+assertEq(Object.isFrozen("foo"), true);
+assertEq(Object.isFrozen(true), true);
+if (typeof Symbol === "function") {
+ assertEq(Object.isFrozen(Symbol()), true);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/isSealed.js b/js/src/tests/ecma_6/Object/isSealed.js
new file mode 100644
index 000000000..cd363a87e
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/isSealed.js
@@ -0,0 +1,21 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var BUGNUMBER = 1062860;
+var summary = "Object.isSealed() should return true when given primitive values as input";
+
+print(BUGNUMBER + ": " + summary);
+assertEq(Object.isSealed(), true);
+assertEq(Object.isSealed(undefined), true);
+assertEq(Object.isSealed(null), true);
+assertEq(Object.isSealed(1), true);
+assertEq(Object.isSealed("foo"), true);
+assertEq(Object.isSealed(true), true);
+if (typeof Symbol === "function") {
+ assertEq(Object.isSealed(Symbol()), true);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/keys.js b/js/src/tests/ecma_6/Object/keys.js
new file mode 100644
index 000000000..5766f16d1
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/keys.js
@@ -0,0 +1,23 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var BUGNUMBER = 1038545;
+var summary = "Coerce the argument passed to Object.keys using ToObject";
+print(BUGNUMBER + ": " + summary);
+
+assertThrowsInstanceOf(() => Object.keys(), TypeError);
+assertThrowsInstanceOf(() => Object.keys(undefined), TypeError);
+assertThrowsInstanceOf(() => Object.keys(null), TypeError);
+
+assertDeepEq(Object.keys(1), []);
+assertDeepEq(Object.keys(true), []);
+if (typeof Symbol === "function") {
+ assertDeepEq(Object.keys(Symbol("foo")), []);
+}
+
+assertDeepEq(Object.keys("foo"), ["0", "1", "2"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/method-non-constructor.js b/js/src/tests/ecma_6/Object/method-non-constructor.js
new file mode 100644
index 000000000..fd1d589b9
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/method-non-constructor.js
@@ -0,0 +1,12 @@
+var obj = { method() { } };
+assertThrowsInstanceOf(() => {
+ new obj.method;
+}, TypeError);
+
+obj = { constructor() { } };
+assertThrowsInstanceOf(() => {
+ new obj.constructor;
+}, TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/preventExtensions-proxy.js b/js/src/tests/ecma_6/Object/preventExtensions-proxy.js
new file mode 100644
index 000000000..347a63bc3
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/preventExtensions-proxy.js
@@ -0,0 +1,23 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+function logProxy(object = {}, handler = {}) {
+ var log = [];
+ var proxy = new Proxy(object, new Proxy(handler, {
+ get(target, propertyKey, receiver) {
+ log.push(propertyKey);
+ return target[propertyKey];
+ }
+ }));
+ return {proxy, log};
+}
+
+var {proxy, log} = logProxy();
+Object.preventExtensions(proxy);
+assertDeepEq(log, ["preventExtensions"]);
+
+var {proxy, log} = logProxy();
+Object.preventExtensions(Object.preventExtensions(proxy));
+assertDeepEq(log, ["preventExtensions", "preventExtensions"]);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Object/preventExtensions.js b/js/src/tests/ecma_6/Object/preventExtensions.js
new file mode 100644
index 000000000..75c8ed3db
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/preventExtensions.js
@@ -0,0 +1,21 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var BUGNUMBER = 1073446;
+var summary = "Object.preventExtensions() should return its argument with no conversion when the argument is a primitive value";
+
+print(BUGNUMBER + ": " + summary);
+assertEq(Object.preventExtensions(), undefined);
+assertEq(Object.preventExtensions(undefined), undefined);
+assertEq(Object.preventExtensions(null), null);
+assertEq(Object.preventExtensions(1), 1);
+assertEq(Object.preventExtensions("foo"), "foo");
+assertEq(Object.preventExtensions(true), true);
+if (typeof Symbol === "function") {
+ assertEq(Object.preventExtensions(Symbol.for("foo")), Symbol.for("foo"));
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/property-descriptor-order.js b/js/src/tests/ecma_6/Object/property-descriptor-order.js
new file mode 100644
index 000000000..337d247da
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/property-descriptor-order.js
@@ -0,0 +1,17 @@
+var names = Object.getOwnPropertyNames(Object.getOwnPropertyDescriptor({foo: 0}, "foo"));
+assertDeepEq(names, ["value", "writable", "enumerable", "configurable"]);
+
+names = Object.getOwnPropertyNames(Object.getOwnPropertyDescriptor({get foo(){}}, "foo"));
+assertDeepEq(names, ["get", "set", "enumerable", "configurable"]);
+
+var proxy = new Proxy({}, {
+ defineProperty(target, key, desc) {
+ var names = Object.getOwnPropertyNames(desc);
+ assertDeepEq(names, ["set", "configurable"]);
+ return true;
+ }
+});
+
+Object.defineProperty(proxy, "foo", {configurable: true, set: function() {}});
+
+reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/propertyIsEnumerable-proxy.js b/js/src/tests/ecma_6/Object/propertyIsEnumerable-proxy.js
new file mode 100644
index 000000000..a1dda90e0
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/propertyIsEnumerable-proxy.js
@@ -0,0 +1,59 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+function logProxy(object) {
+ var log = [];
+ var handler = {
+ getOwnPropertyDescriptor(target, propertyKey) {
+ log.push(propertyKey);
+ return Object.getOwnPropertyDescriptor(target, propertyKey);
+ }
+ };
+ var proxy = new Proxy(object, new Proxy(handler, {
+ get(target, propertyKey, receiver) {
+ if (!(propertyKey in target)) {
+ throw new Error(`Unexpected call to trap: "${propertyKey}"`);
+ }
+ return target[propertyKey];
+ }
+ }));
+ return {proxy, log};
+}
+
+var properties = ["string-property"];
+if (typeof Symbol === 'function')
+ properties.push(Symbol("symbol-property"));
+
+for (var property of properties) {
+ // Test 1: property is not present on object
+ var {proxy, log} = logProxy({});
+ var result = Object.prototype.propertyIsEnumerable.call(proxy, property);
+ assertEq(result, false);
+ assertDeepEq(log, [property]);
+
+ // Test 2: property is present on object and enumerable
+ var {proxy, log} = logProxy({[property]: 0});
+ var result = Object.prototype.propertyIsEnumerable.call(proxy, property);
+ assertEq(result, true);
+ assertDeepEq(log, [property]);
+
+ // Test 3: property is present on object, but not enumerable
+ var {proxy, log} = logProxy(Object.defineProperty({[property]: 0}, property, {enumerable: false}));
+ var result = Object.prototype.propertyIsEnumerable.call(proxy, property);
+ assertEq(result, false);
+ assertDeepEq(log, [property]);
+
+ // Test 4: property is present on prototype object
+ var {proxy, log} = logProxy(Object.create({[property]: 0}));
+ var result = Object.prototype.propertyIsEnumerable.call(proxy, property);
+ assertEq(result, false);
+ assertDeepEq(log, [property]);
+
+ // Test 5: property is present on prototype object, prototype is proxy object
+ var {proxy, log} = logProxy({[property]: 0});
+ var result = Object.prototype.propertyIsEnumerable.call(Object.create(proxy), property);
+ assertEq(result, false);
+ assertDeepEq(log, []);
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Object/seal-proxy.js b/js/src/tests/ecma_6/Object/seal-proxy.js
new file mode 100644
index 000000000..44bb685c8
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/seal-proxy.js
@@ -0,0 +1,27 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+function logProxy(object = {}, handler = {}) {
+ var log = [];
+ var proxy = new Proxy(object, new Proxy(handler, {
+ get(target, propertyKey, receiver) {
+ log.push(propertyKey);
+ return target[propertyKey];
+ }
+ }));
+ return {proxy, log};
+}
+
+// The order of operations is backwards when compared to ES6 draft rev 27
+// (2014 August 24), but see https://bugs.ecmascript.org/show_bug.cgi?id=3215
+// for an explanation on why the spec version is clearly wrong.
+
+var {proxy, log} = logProxy();
+Object.seal(proxy);
+assertDeepEq(log, ["preventExtensions", "ownKeys"]);
+
+var {proxy, log} = logProxy();
+Object.seal(Object.seal(proxy));
+assertDeepEq(log, ["preventExtensions", "ownKeys", "preventExtensions", "ownKeys"]);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Object/seal.js b/js/src/tests/ecma_6/Object/seal.js
new file mode 100644
index 000000000..e325c80d9
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/seal.js
@@ -0,0 +1,21 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var BUGNUMBER = 1075294;
+var summary = "Object.seal() should return its argument with no conversion when the argument is a primitive value";
+
+print(BUGNUMBER + ": " + summary);
+assertEq(Object.seal(), undefined);
+assertEq(Object.seal(undefined), undefined);
+assertEq(Object.seal(null), null);
+assertEq(Object.seal(1), 1);
+assertEq(Object.seal("foo"), "foo");
+assertEq(Object.seal(true), true);
+if (typeof Symbol === "function") {
+ assertEq(Object.seal(Symbol.for("foo")), Symbol.for("foo"));
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/setPrototypeOf-cross-realm-cycle.js b/js/src/tests/ecma_6/Object/setPrototypeOf-cross-realm-cycle.js
new file mode 100644
index 000000000..e2efe010e
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/setPrototypeOf-cross-realm-cycle.js
@@ -0,0 +1,11 @@
+// The cycle check in 9.1.2 [[SetPrototypeOf]] prevents cross-realm cycles
+// involving only ordinary objects.
+
+var gw = newGlobal();
+
+var obj = {};
+var w = gw.Object.create(obj);
+assertThrowsInstanceOf(() => Object.setPrototypeOf(obj, w), TypeError);
+assertThrowsInstanceOf(() => gw.Object.setPrototypeOf(obj, w), gw.TypeError);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Object/setPrototypeOf-cycle.js b/js/src/tests/ecma_6/Object/setPrototypeOf-cycle.js
new file mode 100644
index 000000000..a8b5aa75c
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/setPrototypeOf-cycle.js
@@ -0,0 +1,16 @@
+// The cycle check in 9.1.2 [[SetPrototypeOf]] does not walk proxies.
+// Therefore it's very easy to create prototype chain cycles involving proxies,
+// and the spec requires us to accept this.
+
+var t = {};
+var p = new Proxy(t, {});
+Object.setPrototypeOf(t, p); // 🙈
+
+// Actually doing anything that searches this object's prototype chain
+// technically should not terminate. We instead throw "too much recursion".
+for (var obj of [t, p]) {
+ assertThrowsInstanceOf(() => "x" in obj, InternalError);
+ assertThrowsInstanceOf(() => obj.x, InternalError);
+ assertThrowsInstanceOf(() => { obj.x = 1; }, InternalError);
+}
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Object/setPrototypeOf-same-value.js b/js/src/tests/ecma_6/Object/setPrototypeOf-same-value.js
new file mode 100644
index 000000000..337550946
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/setPrototypeOf-same-value.js
@@ -0,0 +1,11 @@
+// Setting a "new" prototype to the current [[Prototype]] value should never fail
+
+var x = {}, t = Object.create(x);
+Object.preventExtensions(t);
+// Should not fail, because it is the same [[Prototype]] value
+Object.setPrototypeOf(t, x);
+
+// Object.prototype's [[Prototype]] is immutable, make sure we can still set null
+Object.setPrototypeOf(Object.prototype, null);
+
+reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/shell.js b/js/src/tests/ecma_6/Object/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/shell.js
diff --git a/js/src/tests/ecma_6/Object/toLocaleString.js b/js/src/tests/ecma_6/Object/toLocaleString.js
new file mode 100644
index 000000000..3fa2acc74
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/toLocaleString.js
@@ -0,0 +1,13 @@
+"use strict";
+
+Object.defineProperty(String.prototype, "toString", {
+ get() {
+ assertEq(typeof this, "string");
+
+ return function() { return typeof this; };
+ }
+})
+assertEq(Object.prototype.toLocaleString.call("test"), "string");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Object/toPrimitive-callers.js b/js/src/tests/ecma_6/Object/toPrimitive-callers.js
new file mode 100644
index 000000000..ffeef2225
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/toPrimitive-callers.js
@@ -0,0 +1,57 @@
+// Check all the algorithms that call ToPrimitive. Confirm that they're passing
+// the correct hint, per spec.
+
+var STRING = "xyzzy";
+var NUMBER = 42;
+
+function assertCallsToPrimitive(f, expectedHint, expectedResult) {
+ var hint = undefined;
+ var testObj = {
+ [Symbol.toPrimitive](h) {
+ assertEq(hint, undefined);
+ hint = h;
+ return h === "number" ? NUMBER : STRING;
+ }
+ };
+ var result = f(testObj);
+ assertEq(hint, expectedHint, String(f));
+ assertEq(result, expectedResult, String(f));
+}
+
+// ToNumber
+assertCallsToPrimitive(Number, "number", NUMBER);
+
+// ToString
+assertCallsToPrimitive(String, "string", STRING);
+
+// ToPropertyKey
+var obj = {[STRING]: "pass"};
+assertCallsToPrimitive(key => obj[key], "string", "pass");
+
+// Abstract Relational Comparison
+assertCallsToPrimitive(x => x >= 42, "number", true);
+assertCallsToPrimitive(x => x > "42", "number", false);
+
+// Abstract Equality Comparison
+assertCallsToPrimitive(x => x != STRING, "default", false);
+assertCallsToPrimitive(x => STRING == x, "default", true);
+assertCallsToPrimitive(x => x == NUMBER, "default", false);
+assertCallsToPrimitive(x => NUMBER != x, "default", true);
+
+// Addition
+assertCallsToPrimitive(x => 1 + x, "default", "1" + STRING);
+assertCallsToPrimitive(x => "" + x, "default", STRING);
+
+// Date constructor
+assertCallsToPrimitive(x => (new Date(x)).valueOf(), "default", Number(STRING));
+
+// Date.prototype.toJSON
+var expected = "a suffusion of yellow";
+function testJSON(x) {
+ x.toJSON = Date.prototype.toJSON;
+ x.toISOString = function () { return expected; };
+ return JSON.stringify(x);
+}
+assertCallsToPrimitive(testJSON, "number", JSON.stringify(expected));
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Object/toPrimitive.js b/js/src/tests/ecma_6/Object/toPrimitive.js
new file mode 100644
index 000000000..0904bd19a
--- /dev/null
+++ b/js/src/tests/ecma_6/Object/toPrimitive.js
@@ -0,0 +1,101 @@
+// ES6 7.1.1 ToPrimitive(input [, PreferredType]) specifies a new extension
+// point in the language. Objects can override the behavior of ToPrimitive
+// somewhat by supporting the method obj[@@toPrimitive](hint).
+//
+// (Rationale: ES5 had a [[DefaultValue]] internal method, overridden only by
+// Date objects. The change in ES6 is to make [[DefaultValue]] a plain old
+// method. This allowed ES6 to eliminate the [[DefaultValue]] internal method,
+// simplifying the meta-object protocol and thus proxies.)
+
+// obj[Symbol.toPrimitive]() is called whenever the ToPrimitive algorithm is invoked.
+var expectedThis, expectedHint;
+var obj = {
+ [Symbol.toPrimitive](hint, ...rest) {
+ assertEq(this, expectedThis);
+ assertEq(hint, expectedHint);
+ assertEq(rest.length, 0);
+ return 2015;
+ }
+};
+expectedThis = obj;
+expectedHint = "string";
+assertEq(String(obj), "2015");
+expectedHint = "number";
+assertEq(Number(obj), 2015);
+
+// It is called even through proxies.
+var proxy = new Proxy(obj, {});
+expectedThis = proxy;
+expectedHint = "default";
+assertEq("ES" + proxy, "ES2015");
+
+// It is called even through additional proxies and the prototype chain.
+proxy = new Proxy(Object.create(proxy), {});
+expectedThis = proxy;
+expectedHint = "default";
+assertEq("ES" + (proxy + 1), "ES2016");
+
+// It is not called if the operand is already a primitive.
+var ok = true;
+for (var constructor of [Boolean, Number, String, Symbol]) {
+ constructor.prototype[Symbol.toPrimitive] = function () {
+ ok = false;
+ throw "FAIL";
+ };
+}
+assertEq(Number(true), 1);
+assertEq(Number(77.7), 77.7);
+assertEq(Number("123"), 123);
+assertThrowsInstanceOf(() => Number(Symbol.iterator), TypeError);
+assertEq(String(true), "true");
+assertEq(String(77.7), "77.7");
+assertEq(String("123"), "123");
+assertEq(String(Symbol.iterator), "Symbol(Symbol.iterator)");
+assertEq(ok, true);
+
+// Converting a primitive symbol to another primitive type throws even if you
+// delete the @@toPrimitive method from Symbol.prototype.
+delete Symbol.prototype[Symbol.toPrimitive];
+var sym = Symbol("ok");
+assertThrowsInstanceOf(() => `${sym}`, TypeError);
+assertThrowsInstanceOf(() => Number(sym), TypeError);
+assertThrowsInstanceOf(() => "" + sym, TypeError);
+
+// However, having deleted that method, converting a Symbol wrapper object does
+// work: it calls Symbol.prototype.toString().
+obj = Object(sym);
+assertEq(String(obj), "Symbol(ok)");
+assertEq(`${obj}`, "Symbol(ok)");
+
+// Deleting valueOf as well makes numeric conversion also call toString().
+delete Symbol.prototype.valueOf;
+delete Object.prototype.valueOf;
+assertEq(Number(obj), NaN);
+Symbol.prototype.toString = function () { return "2060"; };
+assertEq(Number(obj), 2060);
+
+// Deleting Date.prototype[Symbol.toPrimitive] changes the result of addition
+// involving Date objects.
+var d = new Date;
+assertEq(0 + d, 0 + d.toString());
+delete Date.prototype[Symbol.toPrimitive];
+assertEq(0 + d, 0 + d.valueOf());
+
+// If @@toPrimitive, .toString, and .valueOf are all missing, we get a
+// particular sequence of property accesses, followed by a TypeError exception.
+var log = [];
+function doGet(target, propertyName, receiver) {
+ log.push(propertyName);
+}
+var handler = new Proxy({}, {
+ get(target, trapName, receiver) {
+ if (trapName !== "get")
+ throw `FAIL: system tried to access handler method: ${uneval(trapName)}`;
+ return doGet;
+ }
+});
+proxy = new Proxy(Object.create(null), handler);
+assertThrowsInstanceOf(() => proxy == 0, TypeError);
+assertDeepEq(log, [Symbol.toPrimitive, "valueOf", "toString"]);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Promise/browser.js b/js/src/tests/ecma_6/Promise/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/browser.js
diff --git a/js/src/tests/ecma_6/Promise/bug-1287334.js b/js/src/tests/ecma_6/Promise/bug-1287334.js
new file mode 100644
index 000000000..0bd25decd
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/bug-1287334.js
@@ -0,0 +1,12 @@
+if (!this.Promise) {
+ this.reportCompare && reportCompare(true, true);
+ quit(0);
+}
+
+var promise = Promise.resolve(1);
+var FakeCtor = function(exec){ exec(function(){}, function(){}); };
+Object.defineProperty(Promise, Symbol.species, {value: FakeCtor});
+// This just shouldn't crash. It does without bug 1287334 fixed.
+promise.then(function(){});
+
+this.reportCompare && reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Promise/bug-1288382.js b/js/src/tests/ecma_6/Promise/bug-1288382.js
new file mode 100644
index 000000000..f954d6279
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/bug-1288382.js
@@ -0,0 +1,13 @@
+if (!this.Promise) {
+ this.reportCompare && reportCompare(true, true);
+ quit(0);
+}
+
+// This just shouldn't trigger a failed assert.
+// It does without bug 1288382 fixed.
+Promise.all.call(class {
+ constructor(exec){ exec(()=>{}, ()=>{}); }
+ static resolve() { return {then(){}}; }
+}, [null]);
+
+this.reportCompare && reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Promise/bug-1289040.js b/js/src/tests/ecma_6/Promise/bug-1289040.js
new file mode 100644
index 000000000..9290d8ad4
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/bug-1289040.js
@@ -0,0 +1,13 @@
+if (!this.Promise) {
+ this.reportCompare && reportCompare(true,true);
+ quit(0);
+}
+
+var global = newGlobal();
+Promise.prototype.then = global.Promise.prototype.then;
+p1 = new Promise(function f(r) {
+ r(1);
+});
+p2 = p1.then(function g(){});
+
+this.reportCompare && reportCompare(true,true);
diff --git a/js/src/tests/ecma_6/Promise/dependent-promises.js b/js/src/tests/ecma_6/Promise/dependent-promises.js
new file mode 100644
index 000000000..36e11a5f6
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/dependent-promises.js
@@ -0,0 +1,41 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs Debugger
+
+if (!this.Promise) {
+ this.reportCompare && reportCompare(true,true);
+ quit(0);
+}
+
+var g = newGlobal();
+var dbg = new Debugger(g);
+var gw = dbg.addDebuggee(g);
+
+g.eval(`
+var p = new Promise(() => {});
+p.name = "p";
+var q = p.then();
+q.name = "q";
+var r = p.then(null, () => {});
+r.name = "r";
+var s = Promise.all([p, q]);
+s.name = "s";
+var t = Promise.race([r, s]);
+t.name = "t";
+`);
+
+function getDependentNames(promise) {
+ return gw.makeDebuggeeValue(promise).promiseDependentPromises.map((p) => p.getOwnPropertyDescriptor('name').value);
+}
+
+function arraysEqual(arr1, arr2, msg) {
+ assertEq(arr1.length, arr2.length, msg + ": length");
+ for (var i = 0; i < arr1.length; ++i) {
+ assertEq(arr1[i], arr2[i], msg + ": [" + i + "]");
+ }
+}
+
+arraysEqual(getDependentNames(g.p), ["q", "r", "s"], "deps for p");
+arraysEqual(getDependentNames(g.q), ["s"], "deps for q");
+arraysEqual(getDependentNames(g.r), ["t"], "deps for r");
+arraysEqual(getDependentNames(g.s), ["t"], "deps for s");
+
+this.reportCompare && reportCompare(true,true);
diff --git a/js/src/tests/ecma_6/Promise/enqueue-promise-reactions.js b/js/src/tests/ecma_6/Promise/enqueue-promise-reactions.js
new file mode 100644
index 000000000..ddb366aba
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/enqueue-promise-reactions.js
@@ -0,0 +1,43 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs getSelfHostedValue and drainJobQueue
+
+if (!this.Promise) {
+ this.reportCompare && reportCompare(true,true);
+ quit(0);
+}
+
+function onResolved(val) {
+ result = 'resolved with ' + val;
+}
+
+function onRejected(val) {
+ result = 'rejected with ' + val;
+}
+
+// Replacing `Promise#then` shouldn't affect addPromiseReactions.
+Promise.prototype.then = 1;
+
+// Replacing Promise@@species shouldn't affect addPromiseReactions.
+Promise[Symbol.species] = function(){};
+
+// Replacing `Promise` shouldn't affect addPromiseReactions.
+let PromiseCtor = Promise;
+Promise = {};
+
+let result;
+let res;
+let rej;
+let p = new PromiseCtor(function(res_, rej_) { res = res_; rej = rej_; });
+
+addPromiseReactions(p, onResolved, onRejected);
+res('foo');
+drainJobQueue();
+assertEq(result, 'resolved with foo')
+
+p = new PromiseCtor(function(res_, rej_) { res = res_; rej = rej_; });
+
+addPromiseReactions(p, onResolved, onRejected);
+rej('bar');
+drainJobQueue();
+assertEq(result, 'rejected with bar');
+
+this.reportCompare && reportCompare(true,true);
diff --git a/js/src/tests/ecma_6/Promise/get-wait-for-all-promise.js b/js/src/tests/ecma_6/Promise/get-wait-for-all-promise.js
new file mode 100644
index 000000000..cebb3ea58
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/get-wait-for-all-promise.js
@@ -0,0 +1,65 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs getSelfHostedValue and drainJobQueue
+
+if (!this.Promise) {
+ this.reportCompare && reportCompare(true,true);
+ quit(0);
+}
+
+function onResolved(val) {
+ result = 'resolved with ' + val;
+}
+
+function onRejected(val) {
+ result = 'rejected with ' + val;
+}
+
+// Replacing `Promise#then` shouldn't affect getWaitForAllPromise.
+let originalThen = Promise.prototype.then;
+Promise.prototype.then = 1;
+
+// Replacing Promise[@@species] shouldn't affect getWaitForAllPromise.
+Promise[Symbol.species] = function(){};
+
+// Replacing `Promise` shouldn't affect getWaitForAllPromise.
+let PromiseCtor = Promise;
+Promise = {};
+
+// Replacing Array[@@iterator] shouldn't affect getWaitForAllPromise.
+Array.prototype[Symbol.iterator] = function(){};
+
+let resolveFunctions = [];
+let rejectFunctions = [];
+let promises = [];
+for (let i = 0; i < 3; i++) {
+ let p = new PromiseCtor(function(res_, rej_) {
+ resolveFunctions.push(res_);
+ rejectFunctions.push(rej_);
+ });
+ promises.push(p);
+}
+
+let allPromise = getWaitForAllPromise(promises);
+let then = originalThen.call(allPromise, onResolved, onRejected);
+
+resolveFunctions.forEach((fun, i)=>fun(i));
+drainJobQueue();
+
+assertEq(result, 'resolved with 0,1,2');
+
+// Empty lists result in a promise resolved with an empty array.
+result = undefined;
+originalThen.call(getWaitForAllPromise([]), v=>(result = v));
+drainJobQueue();
+assertEq(result instanceof Array, true);
+assertEq(result.length, 0);
+
+//Empty lists result in a promise resolved with an empty array.
+result = undefined;
+originalThen.call(getWaitForAllPromise([]), v=>(result = v));
+
+drainJobQueue();
+
+assertEq(result instanceof Array, true);
+assertEq(result.length, 0);
+
+this.reportCompare && reportCompare(true,true);
diff --git a/js/src/tests/ecma_6/Promise/iterator-primitive.js b/js/src/tests/ecma_6/Promise/iterator-primitive.js
new file mode 100644
index 000000000..cfc3a4ed3
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/iterator-primitive.js
@@ -0,0 +1,28 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs drainJobQueue
+
+var BUGNUMBER = 1021835;
+var summary = "Returning non-object from @@iterator should throw";
+
+print(BUGNUMBER + ": " + summary);
+
+let primitives = [
+ 1,
+ true,
+ undefined,
+ null,
+ "foo",
+ Symbol.iterator
+];
+
+for (let primitive of primitives) {
+ let arg = {
+ [Symbol.iterator]() {
+ return primitive;
+ }
+ };
+ assertEventuallyThrows(Promise.all(arg), TypeError);
+ assertEventuallyThrows(Promise.race(arg), TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Promise/methods-non-enumerable.js b/js/src/tests/ecma_6/Promise/methods-non-enumerable.js
new file mode 100644
index 000000000..79c3563b2
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/methods-non-enumerable.js
@@ -0,0 +1,9 @@
+if (!this.Promise) {
+ reportCompare(true,true);
+ quit(0);
+}
+
+assertEq(Object.keys(Promise).length, 0);
+assertEq(Object.keys(Promise.prototype).length, 0);
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Promise/promise-all.js b/js/src/tests/ecma_6/Promise/promise-all.js
new file mode 100644
index 000000000..46383de78
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/promise-all.js
@@ -0,0 +1,30 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs drainJobQueue
+
+if (!this.Promise) {
+ this.reportCompare && reportCompare(true,true);
+ quit(0);
+}
+
+let results = [];
+
+let p1 = new Promise(res=>res('result'))
+ .then(val=>{results.push('then ' + val); return 'first then rval';})
+ .then(val=>{results.push('chained then with val: ' + val); return 'p1 then, then'});
+
+let p2 = new Promise((res, rej)=>rej('rejection'))
+ .catch(val=> {results.push('catch ' + val); return results.length;})
+ .then(val=>{results.push('then after catch with val: ' + val); return 'p2 catch, then'},
+ val=>{throw new Error("mustn't be called")});
+
+Promise.all([p1, p2]).then(res => results.push(res + ''));
+
+drainJobQueue();
+
+assertEq(results.length, 5);
+assertEq(results[0], 'then result');
+assertEq(results[1], 'catch rejection');
+assertEq(results[2], 'chained then with val: first then rval');
+assertEq(results[3], 'then after catch with val: 2');
+assertEq(results[4], 'p1 then, then,p2 catch, then');
+
+this.reportCompare && reportCompare(true,true);
diff --git a/js/src/tests/ecma_6/Promise/promise-basics.js b/js/src/tests/ecma_6/Promise/promise-basics.js
new file mode 100644
index 000000000..456b00dba
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/promise-basics.js
@@ -0,0 +1,101 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs drainJobQueue
+
+if (!this.Promise) {
+ this.reportCompare && reportCompare(0, 0, "ok");
+ quit(0);
+}
+
+let results = [];
+
+new Promise(res=>res('result'))
+ .then(val=>{results.push('then ' + val); return 'first then rval';})
+ .then(val=>results.push('chained then with val: ' + val));
+
+new Promise((res, rej)=>rej('rejection'))
+ .catch(val=>{results.push('catch ' + val); return results.length;})
+ .then(val=>results.push('then after catch with val: ' + val),
+ val=>{throw new Error("mustn't be called")});
+
+new Promise((res, rej)=> {res('result'); rej('rejection'); })
+ .catch(val=>{throw new Error("mustn't be called");})
+ .then(val=>results.push('then after resolve+reject with val: ' + val),
+ val=>{throw new Error("mustn't be called")});
+
+new Promise((res, rej)=> { rej('rejection'); res('result'); })
+ .catch(val=>{results.push('catch after reject+resolve with val: ' + val);})
+
+
+drainJobQueue();
+
+assertEq(results.length, 6);
+assertEq(results[0], 'then result');
+assertEq(results[1], 'catch rejection');
+assertEq(results[2], 'catch after reject+resolve with val: rejection');
+assertEq(results[3], 'chained then with val: first then rval');
+assertEq(results[4], 'then after catch with val: 2');
+assertEq(results[5], 'then after resolve+reject with val: result');
+
+results = [];
+
+Promise.resolve('resolution').then(res=>results.push(res),
+ rej=>{ throw new Error("mustn't be called"); });
+
+let thenCalled = false;
+Promise.reject('rejection').then(_=>{thenCalled = true},
+ rej=>results.push(rej));
+
+drainJobQueue();
+
+assertEq(thenCalled, false);
+assertEq(results.length, 2);
+assertEq(results[0], 'resolution');
+assertEq(results[1], 'rejection');
+
+
+function callback() {}
+
+// Calling the executor function with content functions shouldn't assert:
+Promise.resolve.call(function(exec) { exec(callback, callback); });
+Promise.reject.call(function(exec) { exec(callback, callback); });
+Promise.all.call(function(exec) { exec(callback, callback); });
+Promise.race.call(function(exec) { exec(callback, callback); });
+
+let resolveResult = undefined;
+function resolveFun() {resolveResult = "resolveCalled";}
+Promise.resolve.call(function(exec) { exec(resolveFun, callback); });
+assertEq(resolveResult, "resolveCalled");
+
+let rejectResult = undefined;
+function rejectFun() {rejectResult = "rejectCalled";}
+Promise.reject.call(function(exec) { exec(callback, rejectFun); });
+assertEq(rejectResult, "rejectCalled");
+
+// These should throw:
+var wasCalled = false;
+var hasThrown = false;
+try {
+ // Calling the executor function twice, providing a resolve callback both times.
+ Promise.resolve.call(function(executor) {
+ wasCalled = true;
+ executor(callback, undefined);
+ executor(callback, callback);
+ });
+} catch (e) {
+ hasThrown = true;
+}
+assertEq(wasCalled, true);
+assertEq(hasThrown, true);
+
+var hasThrown = false;
+try {
+ // Calling the executor function twice, providing a reject callback both times.
+ Promise.resolve.call(function(executor) {
+ executor(undefined, callback);
+ executor(callback, callback);
+ });
+} catch (e) {
+ hasThrown = true;
+}
+assertEq(hasThrown, true);
+
+this.reportCompare && reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Promise/promise-rejection-tracking.js b/js/src/tests/ecma_6/Promise/promise-rejection-tracking.js
new file mode 100644
index 000000000..4531fe0b0
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/promise-rejection-tracking.js
@@ -0,0 +1,36 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs setPromiseRejectionTrackerCallback
+
+if (!this.Promise) {
+ this.reportCompare && reportCompare(true,true);
+ quit(0);
+}
+
+const UNHANDLED = 0;
+const HANDLED = 1;
+
+let rejections = new Map();
+function rejectionTracker(promise, state) {
+ rejections.set(promise, state);
+}
+setPromiseRejectionTrackerCallback(rejectionTracker);
+
+// Unhandled rejections are tracked.
+let reject;
+let p = new Promise((res_, rej_) => (reject = rej_));
+assertEq(rejections.has(p), false);
+reject('reason');
+assertEq(rejections.get(p), UNHANDLED);
+// Later handling updates the tracking.
+p.then(_=>_, _=>_);
+assertEq(rejections.get(p), HANDLED);
+
+rejections.clear();
+
+// Handled rejections aren't tracked at all.
+p = new Promise((res_, rej_) => (reject = rej_));
+assertEq(rejections.has(p), false);
+p.then(_=>_, _=>_);
+reject('reason');
+assertEq(rejections.has(p), false);
+
+this.reportCompare && reportCompare(true,true);
diff --git a/js/src/tests/ecma_6/Promise/promise-species.js b/js/src/tests/ecma_6/Promise/promise-species.js
new file mode 100644
index 000000000..7e033b08b
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/promise-species.js
@@ -0,0 +1,13 @@
+if (!this.Promise) {
+ reportCompare(true,true);
+ quit(0);
+}
+
+assertEq(Promise[Symbol.species], Promise);
+let prop = Object.getOwnPropertyDescriptor(Promise, Symbol.species);
+assertEq('get' in prop, true);
+assertEq(typeof prop.get, 'function');
+assertEq('set' in prop, true);
+assertEq(prop.set, undefined);
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Promise/promise-subclassing.js b/js/src/tests/ecma_6/Promise/promise-subclassing.js
new file mode 100644
index 000000000..eba15a1d6
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/promise-subclassing.js
@@ -0,0 +1,67 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs drainJobQueue
+
+if (!this.Promise) {
+ this.reportCompare && reportCompare(true,true);
+ quit(0);
+}
+
+let results = [];
+
+class SubPromise extends Promise {
+ constructor(executor) {
+ results.push('SubPromise ctor called');
+ super(executor);
+ }
+ then(res, rej) {
+ results.push('SubPromise#then called');
+ return intermediatePromise = super.then(res, rej);
+ }
+}
+
+let subPromise = new SubPromise(function(res, rej) {
+ results.push('SubPromise ctor called executor');
+ res('result');
+});
+
+let intermediatePromise;
+let allSubPromise = SubPromise.all([subPromise]);
+
+assertEq(subPromise instanceof SubPromise, true);
+assertEq(allSubPromise instanceof SubPromise, true);
+assertEq(intermediatePromise instanceof SubPromise, true);
+
+expected = [
+'SubPromise ctor called',
+'SubPromise ctor called executor',
+'SubPromise ctor called',
+'SubPromise#then called',
+'SubPromise ctor called',
+];
+
+assertEq(results.length, expected.length);
+expected.forEach((expected,i) => assertEq(results[i], expected));
+
+subPromise.then(val=>results.push('subPromise.then with val ' + val));
+allSubPromise.then(val=>results.push('allSubPromise.then with val ' + val));
+
+expected.forEach((expected,i) => assertEq(results[i], expected));
+expected = expected.concat([
+'SubPromise#then called',
+'SubPromise ctor called',
+'SubPromise#then called',
+'SubPromise ctor called',
+]);
+
+assertEq(results.length, expected.length);
+expected.forEach((expected,i) => assertEq(results[i], expected));
+
+drainJobQueue();
+
+expected = expected.concat([
+'subPromise.then with val result',
+'allSubPromise.then with val result',
+]);
+
+assertEq(results.length, expected.length);
+
+this.reportCompare && reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Promise/self-resolve.js b/js/src/tests/ecma_6/Promise/self-resolve.js
new file mode 100644
index 000000000..e16a2ceb3
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/self-resolve.js
@@ -0,0 +1,23 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs drainJobQueue
+
+if (!this.Promise) {
+ this.reportCompare && reportCompare(true,true);
+ quit(0);
+}
+
+let resolve;
+let promise = new Promise(function(x) { resolve = x; });
+resolve(promise)
+
+let results = [];
+promise.then(res => assertEq(true, false, "not reached")).catch(res => {
+ assertEq(res instanceof TypeError, true);
+ results.push("rejected");
+});
+
+drainJobQueue()
+
+assertEq(results.length, 1);
+assertEq(results[0], "rejected");
+
+this.reportCompare && reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Promise/shell.js b/js/src/tests/ecma_6/Promise/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Promise/shell.js
diff --git a/js/src/tests/ecma_6/Proxy/getPrototypeOf.js b/js/src/tests/ecma_6/Proxy/getPrototypeOf.js
new file mode 100644
index 000000000..a0676c0c9
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/getPrototypeOf.js
@@ -0,0 +1,285 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "getPrototypeOf.js";
+var BUGNUMBER = 888969;
+var summary = "Scripted proxies' [[GetPrototypeOf]] behavior";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+const log = [];
+
+function observe(obj)
+{
+ var observingHandler = new Proxy({}, {
+ get(target, p, receiver) {
+ log.push(p);
+ return Reflect.get(target, p, receiver);
+ }
+ });
+
+ return new Proxy(obj, observingHandler);
+}
+
+function nop() {}
+
+var p, h;
+
+// 1. Let handler be the value of the [[ProxyHandler]] internal slot of O.
+// 2. If handler is null, throw a TypeError exception.
+// 3. Assert: Type(handler) is Object.
+var rev = Proxy.revocable({}, {});
+p = rev.proxy;
+
+assertEq(Object.getPrototypeOf(p), Object.prototype);
+rev.revoke();
+assertThrowsInstanceOf(() => Object.getPrototypeOf(p), TypeError);
+
+// 4. Let target be the value of the [[ProxyTarget]] internal slot of O.
+// 5. Let trap be ? GetMethod(handler, "getPrototypeOf").
+
+// Getting handler.getPrototypeOf might throw.
+assertThrowsValue(() => Object.getPrototypeOf(new Proxy({},
+ { get getPrototypeOf() {
+ throw 17;
+ } })),
+ 17);
+
+// The handler's getPrototypeOf, once gotten, might throw.
+p = new Proxy({}, { getPrototypeOf() { throw 42; } });
+
+assertThrowsValue(() => Object.getPrototypeOf(p), 42);
+
+// The trap might not be callable.
+p = new Proxy({}, { getPrototypeOf: 17 });
+
+assertThrowsInstanceOf(() => Object.getPrototypeOf(p),
+ TypeError);
+
+// 6. If trap is undefined, then
+// a. Return ? target.[[GetPrototypeOf]]().
+
+var x, tp;
+
+tp =
+ new Proxy(new Number(8675309), // behavior overridden by getPrototypeOf
+ { getPrototypeOf() { x = "getPrototypeOf trap"; return null; } });
+
+// The target's [[GetPrototypeOf]] should be invoked if the handler's
+// .getPrototypeOf is undefined.
+p = new Proxy(tp, { getPrototypeOf: undefined });
+x = "unset";
+assertEq(Object.getPrototypeOf(p), null);
+assertEq(x, "getPrototypeOf trap");
+
+// Likewise if the handler's .getPrototypeOf is null.
+p = new Proxy(tp, { getPrototypeOf: null });
+x = "unset";
+assertEq(Object.getPrototypeOf(p), null);
+assertEq(x, "getPrototypeOf trap");
+
+// Now the target is an empty object with a Number object as its [[Prototype]].
+var customProto = new Number(8675309);
+tp =
+ new Proxy({},
+ { getPrototypeOf() {
+ x = "getPrototypeOf trap";
+ return customProto;
+ } });
+
+// The target's [[GetPrototypeOf]] should be invoked if the handler's
+// .getPrototypeOf is undefined.
+p = new Proxy(tp, { getPrototypeOf: undefined });
+x = "unset";
+assertEq(Object.getPrototypeOf(p), customProto);
+assertEq(x, "getPrototypeOf trap");
+
+// Likewise if the handler's .getPrototypeOf is null.
+p = new Proxy(tp, { getPrototypeOf: null });
+x = "unset";
+assertEq(Object.getPrototypeOf(p), customProto);
+assertEq(x, "getPrototypeOf trap");
+
+// 7. Let handlerProto be ? Call(trap, handler, « target »).
+
+// The trap callable might throw.
+p = new Proxy({}, { getPrototypeOf() { throw "ohai"; } });
+
+assertThrowsValue(() => Object.getPrototypeOf(p),
+ "ohai");
+
+var throwingTrap =
+ new Proxy(function() { throw "not called"; },
+ { apply() { throw 37; } });
+
+p = new Proxy({}, { getPrototypeOf: throwingTrap });
+
+assertThrowsValue(() => Object.getPrototypeOf(p),
+ 37);
+
+// The trap callable must *only* be called.
+p = new Proxy({},
+ {
+ getPrototypeOf: observe(function() { throw "boo-urns"; })
+ });
+
+log.length = 0;
+assertThrowsValue(() => Object.getPrototypeOf(p),
+ "boo-urns");
+
+assertEq(log.length, 1);
+assertEq(log[0], "apply");
+
+// 8. If Type(handlerProto) is neither Object nor Null, throw a TypeError exception.
+
+var rval;
+
+var typeTestingTarget = {};
+p = new Proxy(typeTestingTarget, { getPrototypeOf() { return rval; } });
+
+function returnsPrimitives()
+{
+ rval = undefined;
+ assertThrowsInstanceOf(() => Object.getPrototypeOf(p),
+ TypeError);
+
+ rval = true;
+ assertThrowsInstanceOf(() => Object.getPrototypeOf(p),
+ TypeError);
+
+ rval = false;
+ assertThrowsInstanceOf(() => Object.getPrototypeOf(p),
+ TypeError);
+
+ rval = 0.0;
+ assertThrowsInstanceOf(() => Object.getPrototypeOf(p),
+ TypeError);
+
+ rval = -0.0;
+ assertThrowsInstanceOf(() => Object.getPrototypeOf(p),
+ TypeError);
+
+ rval = 3.141592654;
+ assertThrowsInstanceOf(() => Object.getPrototypeOf(p),
+ TypeError);
+
+ rval = NaN;
+ assertThrowsInstanceOf(() => Object.getPrototypeOf(p),
+ TypeError);
+
+ rval = -Infinity;
+ assertThrowsInstanceOf(() => Object.getPrototypeOf(p),
+ TypeError);
+
+ rval = "[[Prototype]] FOR REALZ";
+ assertThrowsInstanceOf(() => Object.getPrototypeOf(p),
+ TypeError);
+
+ rval = Symbol("[[Prototype]] FOR REALZ");
+ assertThrowsInstanceOf(() => Object.getPrototypeOf(p),
+ TypeError);
+}
+
+returnsPrimitives();
+Object.preventExtensions(typeTestingTarget);
+returnsPrimitives();
+
+// 9. Let extensibleTarget be ? IsExtensible(target).
+
+var act, extens;
+
+var typeTestingProxyTarget =
+ new Proxy({}, { isExtensible() {
+ seen = act();
+ return extens;
+ } });
+
+p = new Proxy(typeTestingProxyTarget, { getPrototypeOf() { return rval; } });
+
+rval = null;
+act = () => { throw "fnord" };
+assertThrowsValue(() => Object.getPrototypeOf(p),
+ "fnord");
+
+rval = /abc/;
+act = () => { throw "fnord again" };
+assertThrowsValue(() => Object.getPrototypeOf(p),
+ "fnord again");
+
+rval = Object.prototype;
+act = () => { throw "fnord" };
+assertThrowsValue(() => Object.getPrototypeOf(p),
+ "fnord");
+
+// 10. If extensibleTarget is true, return handlerProto.
+
+p = new Proxy({}, { getPrototypeOf() { return rval; } });
+
+rval = Number.prototype;
+assertEq(Object.getPrototypeOf(p), Number.prototype);
+
+// 11. Let targetProto be ? target.[[GetPrototypeOf]]().
+
+var targetProto;
+
+var targetWithProto =
+ new Proxy(Object.preventExtensions(Object.create(null)),
+ { getPrototypeOf() { act2(); return targetProto; } });
+
+p = new Proxy(targetWithProto,
+ { getPrototypeOf() { act1(); return rval; } });
+
+rval = null;
+targetProto = null;
+
+var regex = /targetProto/;
+
+act1 = () => log.push("act1");
+act2 = () => log.push("act2");
+
+log.length = 0;
+assertEq(Object.getPrototypeOf(p), null);
+assertEq(log.length, 2);
+assertEq(log[0], "act1");
+assertEq(log[1], "act2");
+
+act1 = () => log.push("act1 again");
+act2 = () => { throw "target throw"; };
+
+log.length = 0;
+assertThrowsValue(() => Object.getPrototypeOf(p),
+ "target throw");
+assertEq(log.length, 1);
+assertEq(log[0], "act1 again");
+
+// 12. If SameValue(handlerProto, targetProto) is false, throw a TypeError exception.
+
+act1 = act2 = nop;
+rval = /a/;
+assertThrowsInstanceOf(() => Object.getPrototypeOf(p),
+ TypeError);
+
+// 13. Return handlerProto.
+
+rval = null;
+targetProto = null;
+
+assertEq(Object.getPrototypeOf(p), null);
+
+p = new Proxy(Object.preventExtensions(new Number(55)),
+ { getPrototypeOf() { return Number.prototype; } });
+
+assertEq(Object.getPrototypeOf(p), Number.prototype);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Proxy/global-receiver.js b/js/src/tests/ecma_6/Proxy/global-receiver.js
new file mode 100644
index 000000000..b2d160c0d
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/global-receiver.js
@@ -0,0 +1,35 @@
+// The global object can be the receiver passed to the get and set traps of a Proxy.
+var global = this;
+var proto = Object.getPrototypeOf(global);
+var gets = 0, sets = 0;
+
+try {
+ Object.setPrototypeOf(global, new Proxy(proto, {
+ has(t, id) {
+ return id === "bareword" || Reflect.has(t, id);
+ },
+ get(t, id, r) {
+ gets++;
+ assertEq(r, global);
+ return Reflect.get(t, id, r);
+ },
+ set(t, id, v, r) {
+ sets++;
+ assertEq(r, global);
+ return Reflect.set(t, id, v, r);
+ }
+ }));
+} catch (e) {
+ global.bareword = undefined;
+ gets = 1;
+ sets = 1;
+}
+
+assertEq(bareword, undefined);
+assertEq(gets, 1);
+
+bareword = 12;
+assertEq(sets, 1);
+assertEq(global.bareword, 12);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Proxy/hasInstance.js b/js/src/tests/ecma_6/Proxy/hasInstance.js
new file mode 100644
index 000000000..bbdffb227
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/hasInstance.js
@@ -0,0 +1,13 @@
+var get = [];
+var fun = function() {}
+var p = new Proxy(fun, {
+ get(target, key) {
+ get.push(key);
+ return target[key];
+ }
+});
+
+assertEq(new fun instanceof p, true);
+assertDeepEq(get, [Symbol.hasInstance, "prototype"]);
+
+reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Proxy/json-stringify-replacer-array-revocable-proxy.js b/js/src/tests/ecma_6/Proxy/json-stringify-replacer-array-revocable-proxy.js
new file mode 100644
index 000000000..5d667e353
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/json-stringify-replacer-array-revocable-proxy.js
@@ -0,0 +1,39 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+var gTestfile = "json-stringify-replacer-array-revocable-proxy.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1196497;
+var summary =
+ "Don't assert when JSON.stringify is passed a revocable proxy to an array, " +
+ "then that proxy is revoked midflight during stringification";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var arr = [];
+var { proxy, revoke } = Proxy.revocable(arr, {
+ get(thisv, prop, receiver) {
+ // First (and only) get will be for "length", to determine the length of the
+ // list of properties to serialize. Returning 0 uses the empty list,
+ // resulting in |a: 0| being ignored below.
+ assertEq(thisv, arr);
+ assertEq(prop, "length");
+ assertEq(receiver, proxy);
+
+ revoke();
+ return 0;
+ }
+});
+
+assertEq(JSON.stringify({a: 0}, proxy), "{}");
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Proxy/ownkeys-allowed-types.js b/js/src/tests/ecma_6/Proxy/ownkeys-allowed-types.js
new file mode 100644
index 000000000..028ab8512
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/ownkeys-allowed-types.js
@@ -0,0 +1,20 @@
+function makeProxy(type) {
+ return new Proxy({}, { ownKeys() { return [type]; } });
+}
+
+for (var type of [123, 12.5, true, false, undefined, null, {}, []]) {
+ var proxy = makeProxy(type);
+ assertThrowsInstanceOf(() => Object.ownKeys(proxy), TypeError);
+ assertThrowsInstanceOf(() => Object.getOwnPropertyNames(proxy), TypeError);
+}
+
+type = Symbol();
+proxy = makeProxy(type);
+assertEq(Object.getOwnPropertySymbols(proxy)[0], type);
+
+type = "abc";
+proxy = makeProxy(type);
+assertEq(Object.getOwnPropertyNames(proxy)[0], type);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Proxy/ownkeys-linear.js b/js/src/tests/ecma_6/Proxy/ownkeys-linear.js
new file mode 100644
index 000000000..7b05a9384
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/ownkeys-linear.js
@@ -0,0 +1,70 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = 'ownkeys-linear.js';
+var BUGNUMBER = 1257779;
+var summary =
+ "Scripted proxies' [[OwnPropertyKeys]] should have linear complexity";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// Making this 50k makes cgc builds time out on tbpl. 5k takes 28s locally.
+// 10k takes 84s locally. So pick an intermediate number, with a generous
+// constant factor in case cgc-on-tbpl is much slower.
+const HALF_COUNT = 7500;
+
+var configurables = [];
+for (var i = 0; i < HALF_COUNT; i++)
+ configurables.push("conf" + i);
+
+var nonconfigurables = [];
+for (var i = 0; i < HALF_COUNT; i++)
+ nonconfigurables.push("nonconf" + i);
+
+var target = {};
+for (var name of configurables)
+ Object.defineProperty(target, name, { configurable: false, value: 0 });
+for (var name of nonconfigurables)
+ Object.defineProperty(target, name, { configurable: true, value: 0 });
+
+var handler = {
+ ownKeys(t) {
+ assertEq(t, target, "target mismatch!");
+
+ var trapResult = [];
+
+ // Append all nonconfigurables in reverse order of presence.
+ for (var i = nonconfigurables.length; i > 0; i--)
+ trapResult.push(nonconfigurables[i - 1]);
+
+ // Then the same for all configurables.
+ for (var i = configurables.length; i > 0; i--)
+ trapResult.push(configurables[i - 1]);
+
+ // The end consequence is that this ordering is exactly opposite the
+ // ordering they'll have on the target, and so worst-case performance will
+ // occur if the spec's |uncheckedResultKeys| structure is a vector having
+ // the same order as |trapResult|, searched from beginning to end in the
+ // presence-checks in the last few steps of the [[OwnPropertyKeys]]
+ // algorithm.
+ return trapResult;
+ }
+};
+
+var p = new Proxy(target, handler);
+
+// The test passes if it doesn't time out.
+assertEq(Object.getOwnPropertyNames(p).length, HALF_COUNT * 2);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Proxy/ownkeys-trap-duplicates.js b/js/src/tests/ecma_6/Proxy/ownkeys-trap-duplicates.js
new file mode 100644
index 000000000..eef84d571
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/ownkeys-trap-duplicates.js
@@ -0,0 +1,32 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = 'ownkeys-trap-duplicates.js';
+var BUGNUMBER = 1293995;
+var summary =
+ "Scripted proxies' [[OwnPropertyKeys]] should not throw if the trap " +
+ "implementation returns duplicate properties and the object is " +
+ "non-extensible or has non-configurable properties";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var target = Object.preventExtensions({ a: 1 });
+var proxy = new Proxy(target, { ownKeys(t) { return ["a", "a"]; } });
+assertDeepEq(Object.getOwnPropertyNames(proxy), ["a", "a"]);
+
+target = Object.freeze({ a: 1 });
+proxy = new Proxy(target, { ownKeys(t) { return ["a", "a"]; } });
+assertDeepEq(Object.getOwnPropertyNames(proxy), ["a", "a"]);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Proxy/proxy-__proto__.js b/js/src/tests/ecma_6/Proxy/proxy-__proto__.js
new file mode 100644
index 000000000..f68bea489
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/proxy-__proto__.js
@@ -0,0 +1,59 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = 'proxy-__proto__.js';
+var BUGNUMBER = 950407;
+var summary = "Behavior of __proto__ on ES6 proxies";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var protoDesc = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__");
+var protoGetter = protoDesc.get;
+var protoSetter = protoDesc.set;
+
+function testProxy(target, initialProto)
+{
+ print("Now testing behavior for new Proxy(" + ("" + target) + ", {})");
+
+ var pobj = new Proxy(target, {});
+
+ // Check [[Prototype]] before attempted mutation
+ assertEq(Object.getPrototypeOf(pobj), initialProto);
+ assertEq(protoGetter.call(pobj), initialProto);
+
+ // Attempt [[Prototype]] mutation
+ protoSetter.call(pobj, null);
+
+ // Check [[Prototype]] after attempted mutation
+ assertEq(Object.getPrototypeOf(pobj), null);
+ assertEq(protoGetter.call(pobj), null);
+ assertEq(Object.getPrototypeOf(target), null);
+}
+
+// Proxy object with non-null [[Prototype]]
+var nonNullProto = { toString: function() { return "non-null prototype"; } };
+var target = Object.create(nonNullProto);
+testProxy(target, nonNullProto);
+
+// Proxy object with null [[Prototype]]
+target = Object.create(null);
+target.toString = function() { return "null prototype" };
+testProxy(target, null);
+
+// Proxy function with [[Call]]
+var callForCallOnly = function () { };
+callForCallOnly.toString = function() { return "callable target"; };
+testProxy(callForCallOnly, Function.prototype);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Proxy/proxy-constructNonObject.js b/js/src/tests/ecma_6/Proxy/proxy-constructNonObject.js
new file mode 100644
index 000000000..04cee11e9
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/proxy-constructNonObject.js
@@ -0,0 +1,18 @@
+function bogusConstruct(target) { return 4; }
+function bogusConstructUndefined(target) { }
+
+var handler = { construct: bogusConstruct }
+
+function callable() {}
+
+var p = new Proxy(callable, handler);
+
+assertThrowsInstanceOf(function () { new p(); }, TypeError,
+ "[[Construct must throw if an object is not returned.");
+
+handler.construct = bogusConstructUndefined;
+assertThrowsInstanceOf(function () { new p(); }, TypeError,
+ "[[Construct must throw if an object is not returned.");
+
+if (typeof reportCompare === "function")
+ reportCompare(0,0, "OK");
diff --git a/js/src/tests/ecma_6/Proxy/proxy-for-in.js b/js/src/tests/ecma_6/Proxy/proxy-for-in.js
new file mode 100644
index 000000000..4332bfbba
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/proxy-for-in.js
@@ -0,0 +1,37 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+"use strict";
+
+let steps = [];
+
+const object = {
+ __proto__: {
+ "xyz": 42
+ }
+};
+const proxy = new Proxy(object, {
+ ownKeys(target) {
+ steps.push("ownKeys")
+ return ["a", "b"];
+ },
+
+ getOwnPropertyDescriptor(target, property) {
+ steps.push("getOwn-" + property);
+ return {
+ value: undefined,
+ configurable: true,
+ writable: true,
+ enumerable: (property === "a")
+ };
+ }
+});
+
+let iterated = [];
+for (let x in proxy)
+ iterated.push(x);
+
+assertEq(iterated.toString(), "a,xyz");
+assertEq(steps.toString(), "ownKeys,getOwn-a,getOwn-b");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Proxy/proxy-no-receiver-overwrite.js b/js/src/tests/ecma_6/Proxy/proxy-no-receiver-overwrite.js
new file mode 100644
index 000000000..86d352d45
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/proxy-no-receiver-overwrite.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var y = new Proxy({}, {
+ getOwnPropertyDescriptor(target, key) {
+ if (key === "a") {
+ return { configurable: true, get: function(v) {} };
+ } else {
+ assertEq(key, "b");
+ return { configurable: true, writable: false, value: 15 };
+ }
+ },
+
+ defineProperty() {
+ throw "not invoked";
+ }
+})
+
+// This will invoke [[Set]] on the target, with the proxy as receiver.
+assertThrowsInstanceOf(() => y.a = 1, TypeError);
+assertThrowsInstanceOf(() => y.b = 2, TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Proxy/proxy-with-revoked-arguments.js b/js/src/tests/ecma_6/Proxy/proxy-with-revoked-arguments.js
new file mode 100644
index 000000000..e0ae15acf
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/proxy-with-revoked-arguments.js
@@ -0,0 +1,53 @@
+var BUGNUMBER = 1151149;
+var summary = "Proxy constructor should throw if either the target or handler is a revoked proxy.";
+
+print(BUGNUMBER + ": " + summary);
+
+var p = new Proxy({}, {});
+
+new Proxy(p, {});
+new Proxy({}, p);
+
+var r = Proxy.revocable({}, {});
+p = r.proxy;
+
+new Proxy(p, {});
+new Proxy({}, p);
+
+r.revoke();
+
+assertThrowsInstanceOf(() => new Proxy(p, {}), TypeError);
+assertThrowsInstanceOf(() => new Proxy({}, p), TypeError);
+
+
+var r2 = Proxy.revocable({}, {});
+r = Proxy.revocable(r2.proxy, {});
+p = r.proxy;
+
+new Proxy(p, {});
+new Proxy({}, p);
+
+r2.revoke();
+
+new Proxy(p, {});
+new Proxy({}, p);
+
+r.revoke();
+
+assertThrowsInstanceOf(() => new Proxy(p, {}), TypeError);
+assertThrowsInstanceOf(() => new Proxy({}, p), TypeError);
+
+
+var g = newGlobal();
+p = g.eval(`var r = Proxy.revocable({}, {}); r.proxy;`);
+
+new Proxy(p, {});
+new Proxy({}, p);
+
+g.eval(`r.revoke();`);
+
+assertThrowsInstanceOf(() => new Proxy(p, {}), TypeError);
+assertThrowsInstanceOf(() => new Proxy({}, p), TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Proxy/regress-bug1037770.js b/js/src/tests/ecma_6/Proxy/regress-bug1037770.js
new file mode 100644
index 000000000..240b04f32
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/regress-bug1037770.js
@@ -0,0 +1,7 @@
+foo = 1;
+Object.defineProperty(this, "foo", {writable:false, configurable:true});
+foo = 2;
+assertEq(foo, 1);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Proxy/regress-bug1062349.js b/js/src/tests/ecma_6/Proxy/regress-bug1062349.js
new file mode 100644
index 000000000..fe0ad3d9a
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/regress-bug1062349.js
@@ -0,0 +1,31 @@
+// Adapted from a test case contributed by André Bargull in bug 1062349.
+
+var log = [];
+var hh = {
+ get(t, pk) {
+ log.push("trap: " + pk);
+ return t[pk];
+ }
+};
+var h = new Proxy({
+ get set() {
+ log.push("called set()");
+ Object.defineProperty(o, "prop", {value: 0});
+ log.push("o.prop:", Object.getOwnPropertyDescriptor(o, "prop"));
+ }
+}, hh);
+var p = new Proxy({}, h);
+var o = {__proto__: p};
+
+o.prop = 1;
+
+var expectedDesc = {value: 0, writable: false, enumerable: false, configurable: false};
+assertDeepEq(log, [
+ "trap: set",
+ "called set()",
+ "o.prop:",
+ expectedDesc
+]);
+assertDeepEq(Object.getOwnPropertyDescriptor(o, "prop"), expectedDesc);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Proxy/regress-bug950407.js b/js/src/tests/ecma_6/Proxy/regress-bug950407.js
new file mode 100644
index 000000000..bb4a71eb0
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/regress-bug950407.js
@@ -0,0 +1,11 @@
+var ab = new ArrayBuffer(5);
+var p = new Proxy(ab, {});
+var ps = Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set;
+var threw = 0;
+try {
+ ps.call(p, {});
+} catch(ex) {
+ threw = 1;
+}
+
+reportCompare(1, threw, "Setting __proto__ on a proxy to an ArrayBuffer must throw.");
diff --git a/js/src/tests/ecma_6/Proxy/revocable-proxy-prototype.js b/js/src/tests/ecma_6/Proxy/revocable-proxy-prototype.js
new file mode 100644
index 000000000..7afbc15d2
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/revocable-proxy-prototype.js
@@ -0,0 +1,40 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = 'revocable-proxy-prototype.js';
+var BUGNUMBER = 1052139;
+var summary = "Accessing a revocable proxy's [[Prototype]] shouldn't crash";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+function checkFunctionAppliedToRevokedProxy(fun)
+{
+ var p = Proxy.revocable({}, {});
+ p.revoke();
+
+ try
+ {
+ fun(p.proxy);
+ throw "didn't throw";
+ }
+ catch (e)
+ {
+ assertEq(e instanceof TypeError, true,
+ "expected TypeError, got " + e);
+ }
+}
+
+checkFunctionAppliedToRevokedProxy(proxy => Object.getPrototypeOf(proxy));
+checkFunctionAppliedToRevokedProxy(proxy => Object.setPrototypeOf(proxy, null));
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Proxy/revoke-as-side-effect.js b/js/src/tests/ecma_6/Proxy/revoke-as-side-effect.js
new file mode 100644
index 000000000..25d4c9bf9
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/revoke-as-side-effect.js
@@ -0,0 +1,73 @@
+function createProxy(proxyTarget) {
+ var {proxy, revoke} = Proxy.revocable(proxyTarget, new Proxy({}, {
+ get(target, propertyKey, receiver) {
+ print("trap get:", propertyKey);
+ revoke();
+ }
+ }));
+ return proxy;
+}
+
+var obj;
+
+// [[GetPrototypeOf]]
+assertEq(Object.getPrototypeOf(createProxy({})), Object.prototype);
+assertEq(Object.getPrototypeOf(createProxy([])), Array.prototype);
+
+// [[SetPrototypeOf]]
+obj = {};
+Object.setPrototypeOf(createProxy(obj), Array.prototype);
+assertEq(Object.getPrototypeOf(obj), Array.prototype);
+
+// [[IsExtensible]]
+assertEq(Object.isExtensible(createProxy({})), true);
+assertEq(Object.isExtensible(createProxy(Object.preventExtensions({}))), false);
+
+// [[PreventExtensions]]
+obj = {};
+Object.preventExtensions(createProxy(obj));
+assertEq(Object.isExtensible(obj), false);
+
+// [[GetOwnProperty]]
+assertEq(Object.getOwnPropertyDescriptor(createProxy({}), "a"), undefined);
+assertEq(Object.getOwnPropertyDescriptor(createProxy({a: 5}), "a").value, 5);
+
+// [[DefineOwnProperty]]
+obj = {};
+Object.defineProperty(createProxy(obj), "a", {value: 5});
+assertEq(obj.a, 5);
+
+// [[HasProperty]]
+assertEq("a" in createProxy({}), false);
+assertEq("a" in createProxy({a: 5}), true);
+
+// [[Get]]
+assertEq(createProxy({}).a, undefined);
+assertEq(createProxy({a: 5}).a, 5);
+
+// [[Set]]
+assertThrowsInstanceOf(() => createProxy({}).a = 0, TypeError);
+assertThrowsInstanceOf(() => createProxy({a: 5}).a = 0, TypeError);
+
+// [[Delete]]
+assertEq(delete createProxy({}).a, true);
+assertEq(delete createProxy(Object.defineProperty({}, "a", {configurable: false})).a, false);
+
+// [[OwnPropertyKeys]]
+assertEq(Object.getOwnPropertyNames(createProxy({})).length, 0);
+assertEq(Object.getOwnPropertyNames(createProxy({a: 5})).length, 1);
+
+// [[Call]]
+assertEq(createProxy(function() { return "ok" })(), "ok");
+
+// [[Construct]]
+// This throws because after the "construct" trap on the proxy is consulted,
+// OrdinaryCreateFromConstructor (called because the |q| function's
+// [[ConstructorKind]] is "base" per FunctionAllocate) accesses
+// |new.target.prototype| to create the |this| for the construct operation, that
+// would be returned if |return obj;| didn't override it.
+assertThrowsInstanceOf(() => new (createProxy(function q(){ return obj; })),
+ TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Proxy/setPrototypeOf.js b/js/src/tests/ecma_6/Proxy/setPrototypeOf.js
new file mode 100644
index 000000000..d79c53fd9
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/setPrototypeOf.js
@@ -0,0 +1,258 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "setPrototypeOf.js";
+var BUGNUMBER = 888969;
+var summary = "Scripted proxies' [[SetPrototypeOf]] behavior";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+const log = [];
+
+function observe(obj)
+{
+ var observingHandler = new Proxy({}, {
+ get(target, p, receiver) {
+ log.push(p);
+ return Reflect.get(target, p, receiver);
+ }
+ });
+
+ return new Proxy(obj, observingHandler);
+}
+
+var p, h;
+
+// 1. Assert: Either Type(V) is Object or Type(V) is Null.
+// 2. Let handler be the value of the [[ProxyHandler]] internal slot of O.
+// 3. If handler is null, throw a TypeError exception.
+// 4. Assert: Type(handler) is Object.
+// 5. Let target be the value of the [[ProxyTarget]] internal slot of O.
+
+var rev = Proxy.revocable({}, {});
+p = rev.proxy;
+
+var originalProto = Reflect.getPrototypeOf(p);
+assertEq(originalProto, Object.prototype);
+
+rev.revoke();
+assertThrowsInstanceOf(() => Reflect.setPrototypeOf(p, originalProto),
+ TypeError);
+assertThrowsInstanceOf(() => Reflect.setPrototypeOf(p, null),
+ TypeError);
+
+// 6. Let trap be ? GetMethod(handler, "setPrototypeOf").
+
+// handler has uncallable (and not null/undefined) property
+p = new Proxy({}, { setPrototypeOf: 9 });
+assertThrowsInstanceOf(() => Reflect.setPrototypeOf(p, null),
+ TypeError);
+
+p = new Proxy({}, { setPrototypeOf: -3.7 });
+assertThrowsInstanceOf(() => Reflect.setPrototypeOf(p, null),
+ TypeError);
+
+p = new Proxy({}, { setPrototypeOf: NaN });
+assertThrowsInstanceOf(() => Reflect.setPrototypeOf(p, null),
+ TypeError);
+
+p = new Proxy({}, { setPrototypeOf: Infinity });
+assertThrowsInstanceOf(() => Reflect.setPrototypeOf(p, null),
+ TypeError);
+
+p = new Proxy({}, { setPrototypeOf: true });
+assertThrowsInstanceOf(() => Reflect.setPrototypeOf(p, null),
+ TypeError);
+
+p = new Proxy({}, { setPrototypeOf: /x/ });
+assertThrowsInstanceOf(() => Reflect.setPrototypeOf(p, null),
+ TypeError);
+
+p = new Proxy({}, { setPrototypeOf: Symbol(42) });
+assertThrowsInstanceOf(() => Reflect.setPrototypeOf(p, null),
+ TypeError);
+
+p = new Proxy({}, { setPrototypeOf: class X {} });
+assertThrowsInstanceOf(() => Reflect.setPrototypeOf(p, null),
+ TypeError);
+
+p = new Proxy({}, observe({}));
+
+assertEq(Reflect.setPrototypeOf(p, Object.prototype), true);
+assertEq(log.length, 1);
+assertEq(log[0], "get");
+
+h = observe({ setPrototypeOf() { throw 3.14; } });
+p = new Proxy(Object.create(Object.prototype), h);
+
+// "setting" without change
+log.length = 0;
+assertThrowsValue(() => Reflect.setPrototypeOf(p, Object.prototype),
+ 3.14);
+assertEq(log.length, 1);
+assertEq(log[0], "get");
+
+// "setting" with change
+log.length = 0;
+assertThrowsValue(() => Reflect.setPrototypeOf(p, /foo/),
+ 3.14);
+assertEq(log.length, 1);
+assertEq(log[0], "get");
+
+// 7. If trap is undefined, then
+// a. Return ? target.[[SetPrototypeOf]](V).
+
+var settingProtoThrows =
+ new Proxy({}, { setPrototypeOf() { throw "agnizes"; } });
+
+p = new Proxy(settingProtoThrows, { setPrototypeOf: undefined });
+assertThrowsValue(() => Reflect.setPrototypeOf(p, null),
+ "agnizes");
+
+p = new Proxy(settingProtoThrows, { setPrototypeOf: null });
+assertThrowsValue(() => Reflect.setPrototypeOf(p, null),
+ "agnizes");
+
+var anotherProto =
+ new Proxy({},
+ { setPrototypeOf(t, p) {
+ log.push("reached");
+ return Reflect.setPrototypeOf(t, p);
+ } });
+
+p = new Proxy(anotherProto, { setPrototypeOf: undefined });
+
+log.length = 0;
+assertEq(Reflect.setPrototypeOf(p, null), true);
+assertEq(log.length, 1);
+assertEq(log[0], "reached");
+
+p = new Proxy(anotherProto, { setPrototypeOf: null });
+
+log.length = 0;
+assertEq(Reflect.setPrototypeOf(p, null), true);
+assertEq(log.length, 1);
+assertEq(log[0], "reached");
+
+// 8. Let booleanTrapResult be ToBoolean(? Call(trap, handler, « target, V »)).
+
+// The trap callable might throw.
+p = new Proxy({}, { setPrototypeOf() { throw "ohai"; } });
+
+assertThrowsValue(() => Reflect.setPrototypeOf(p, /x/),
+ "ohai");
+
+var throwingTrap =
+ new Proxy(function() { throw "not called"; },
+ { apply() { throw 37; } });
+
+p = new Proxy({}, { setPrototypeOf: throwingTrap });
+
+assertThrowsValue(() => Reflect.setPrototypeOf(p, Object.prototype),
+ 37);
+
+// The trap callable must *only* be called.
+p = new Proxy({},
+ {
+ setPrototypeOf: observe(function() { throw "boo-urns"; })
+ });
+
+log.length = 0;
+assertThrowsValue(() => Reflect.setPrototypeOf(p, Object.prototype),
+ "boo-urns");
+
+assertEq(log.length, 1);
+assertEq(log[0], "apply");
+
+// 9. If booleanTrapResult is false, return false.
+
+p = new Proxy({}, { setPrototypeOf() { return false; } });
+assertEq(Reflect.setPrototypeOf(p, Object.prototype), false);
+
+p = new Proxy({}, { setPrototypeOf() { return +0; } });
+assertEq(Reflect.setPrototypeOf(p, Object.prototype), false);
+
+p = new Proxy({}, { setPrototypeOf() { return -0; } });
+assertEq(Reflect.setPrototypeOf(p, Object.prototype), false);
+
+p = new Proxy({}, { setPrototypeOf() { return NaN; } });
+assertEq(Reflect.setPrototypeOf(p, Object.prototype), false);
+
+p = new Proxy({}, { setPrototypeOf() { return ""; } });
+assertEq(Reflect.setPrototypeOf(p, Object.prototype), false);
+
+p = new Proxy({}, { setPrototypeOf() { return undefined; } });
+assertEq(Reflect.setPrototypeOf(p, Object.prototype), false);
+
+// 10. Let extensibleTarget be ? IsExtensible(target).
+
+var targetThrowIsExtensible =
+ new Proxy({}, { isExtensible() { throw "psych!"; } });
+
+p = new Proxy(targetThrowIsExtensible, { setPrototypeOf() { return true; } });
+assertThrowsValue(() => Reflect.setPrototypeOf(p, Object.prototype),
+ "psych!");
+
+// 11. If extensibleTarget is true, return true.
+
+var targ = {};
+
+p = new Proxy(targ, { setPrototypeOf() { return true; } });
+assertEq(Reflect.setPrototypeOf(p, /x/), true);
+assertEq(Reflect.getPrototypeOf(targ), Object.prototype);
+assertEq(Reflect.getPrototypeOf(p), Object.prototype);
+
+p = new Proxy(targ, { setPrototypeOf() { return /x/; } });
+assertEq(Reflect.setPrototypeOf(p, /x/), true);
+assertEq(Reflect.getPrototypeOf(targ), Object.prototype);
+assertEq(Reflect.getPrototypeOf(p), Object.prototype);
+
+p = new Proxy(targ, { setPrototypeOf() { return Infinity; } });
+assertEq(Reflect.setPrototypeOf(p, /x/), true);
+assertEq(Reflect.getPrototypeOf(targ), Object.prototype);
+assertEq(Reflect.getPrototypeOf(p), Object.prototype);
+
+p = new Proxy(targ, { setPrototypeOf() { return Symbol(true); } });
+assertEq(Reflect.setPrototypeOf(p, /x/), true);
+assertEq(Reflect.getPrototypeOf(targ), Object.prototype);
+assertEq(Reflect.getPrototypeOf(p), Object.prototype);
+
+// 12. Let targetProto be ? target.[[GetPrototypeOf]]().
+
+var targetNotExtensibleGetProtoThrows =
+ new Proxy(Object.preventExtensions({}),
+ { getPrototypeOf() { throw NaN; } });
+
+p = new Proxy(targetNotExtensibleGetProtoThrows,
+ { setPrototypeOf() { log.push("goober"); return true; } });
+
+log.length = 0;
+assertThrowsValue(() => Reflect.setPrototypeOf(p, /abcd/),
+ NaN);
+
+// 13. If SameValue(V, targetProto) is false, throw a TypeError exception.
+
+var newProto;
+
+p = new Proxy(Object.preventExtensions(Object.create(Math)),
+ { setPrototypeOf(t, p) { return true; } });
+
+assertThrowsInstanceOf(() => Reflect.setPrototypeOf(p, null),
+ TypeError);
+
+// 14. Return true.
+
+assertEq(Reflect.setPrototypeOf(p, Math), true);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Proxy/shell.js b/js/src/tests/ecma_6/Proxy/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/shell.js
diff --git a/js/src/tests/ecma_6/Proxy/trap-null.js b/js/src/tests/ecma_6/Proxy/trap-null.js
new file mode 100644
index 000000000..703649e7c
--- /dev/null
+++ b/js/src/tests/ecma_6/Proxy/trap-null.js
@@ -0,0 +1,103 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = 'trap-null.js';
+var BUGNUMBER = 1257102;
+var summary = "null as a trap value on a handler should operate on the target";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// This might seem like overkill, but this proxying trick caught typos of
+// several trap names before this test landed. \o/ /o\
+var allTraps = {
+ getPrototypeOf: null,
+ setPrototypeOf: null,
+ isExtensible: null,
+ preventExtensions: null,
+ getOwnPropertyDescriptor: null,
+ defineProperty: null,
+ has: null,
+ get: null,
+ set: null,
+ deleteProperty: null,
+ ownKeys: null,
+ apply: null,
+ construct: null,
+};
+
+var complainingHandler = new Proxy(allTraps, {
+ get(target, p, receiver) {
+ var v = Reflect.get(target, p, receiver);
+ if (v !== null)
+ throw new TypeError("failed to set one of the traps to null? " + p);
+
+ return v;
+ }
+});
+
+var proxyTarget = function(x) {
+ "use strict";
+ var str = this + x;
+ str += new.target ? "constructing" : "calling";
+ return new.target ? new String(str) : str;
+};
+proxyTarget.prototype.toString = () => "###";
+proxyTarget.prototype.valueOf = () => "@@@";
+
+var proxy = new Proxy(proxyTarget, complainingHandler);
+
+assertEq(Reflect.getPrototypeOf(proxy), Function.prototype);
+
+assertEq(Object.getPrototypeOf(proxyTarget), Function.prototype);
+assertEq(Reflect.setPrototypeOf(proxy, null), true);
+assertEq(Object.getPrototypeOf(proxyTarget), null);
+
+assertEq(Reflect.isExtensible(proxy), true);
+
+assertEq(Reflect.isExtensible(proxyTarget), true);
+assertEq(Reflect.preventExtensions(proxy), true);
+assertEq(Reflect.isExtensible(proxy), false);
+assertEq(Reflect.isExtensible(proxyTarget), false);
+
+var desc = Reflect.getOwnPropertyDescriptor(proxy, "length");
+assertEq(desc.value, 1);
+
+assertEq(desc.configurable, true);
+assertEq(Reflect.defineProperty(proxy, "length", { value: 3, configurable: false }), true);
+desc = Reflect.getOwnPropertyDescriptor(proxy, "length");
+assertEq(desc.configurable, false);
+
+assertEq(Reflect.has(proxy, "length"), true);
+
+assertEq(Reflect.get(proxy, "length"), 3);
+
+assertEq(Reflect.set(proxy, "length", 3), false);
+
+assertEq(Reflect.deleteProperty(proxy, "length"), false);
+
+var keys = Reflect.ownKeys(proxy);
+assertEq(keys.length, 3);
+keys.sort();
+assertEq(keys[0], "length");
+assertEq(keys[1], "name");
+assertEq(keys[2], "prototype");
+
+assertEq(Reflect.apply(proxy, "hi!", [" "]), "hi! calling");
+
+var res = Reflect.construct(proxy, [" - "]);
+assertEq(typeof res, "object");
+assertEq(res instanceof String, true);
+assertEq(res.valueOf(), "@@@ - constructing");
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Reflect/apply.js b/js/src/tests/ecma_6/Reflect/apply.js
new file mode 100644
index 000000000..fbd9db2a4
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/apply.js
@@ -0,0 +1,130 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Reflect.apply calls functions.
+assertEq(Reflect.apply(Math.floor, undefined, [1.75]), 1);
+
+// Reflect.apply requires a target object that's callable.
+var nonCallable = [{}, [], (class clsX { constructor() {} })];
+for (var value of nonCallable) {
+ assertThrowsInstanceOf(() => Reflect.apply(nonCallable), TypeError);
+}
+
+// When target is not callable, Reflect.apply does not try to get argumentList.length before throwing.
+var hits = 0;
+var bogusArgumentList = {get length() { hit++; throw "FAIL";}};
+assertThrowsInstanceOf(() => Reflect.apply({callable: false}, null, bogusArgumentList),
+ TypeError);
+assertEq(hits, 0);
+
+// Reflect.apply works on a range of different callable objects.
+// Builtin functions (we also tested Math.floor above):
+assertEq(Reflect.apply(String.fromCharCode,
+ undefined,
+ [104, 101, 108, 108, 111]),
+ "hello");
+
+// Builtin methods:
+assertEq(Reflect.apply(RegExp.prototype.exec,
+ /ab/,
+ ["confabulation"]).index,
+ 4);
+
+// Builtin methods of primitive objects:
+assertEq(Reflect.apply("".charAt,
+ "ponies",
+ [3]),
+ "i");
+
+// Bound functions:
+assertEq(Reflect.apply(function () { return this; }.bind(Math),
+ Function,
+ []),
+ Math);
+assertEq(Reflect.apply(Array.prototype.concat.bind([1, 2], [3]),
+ [4, 5],
+ [[6, 7, 8]]).join(),
+ "1,2,3,6,7,8");
+
+// Generator functions:
+function* g(arg) { yield "pass" + arg; }
+assertEq(Reflect.apply(g,
+ undefined,
+ ["word"]).next().value,
+ "password");
+
+// Proxies:
+function f() { return 13; }
+assertEq(Reflect.apply(new Proxy(f, {}),
+ undefined,
+ []),
+ 13);
+
+// Cross-compartment wrappers:
+var gw = newGlobal();
+assertEq(Reflect.apply(gw.parseInt,
+ undefined,
+ ["45"]),
+ 45);
+assertEq(Reflect.apply(gw.Symbol.for,
+ undefined,
+ ["moon"]),
+ Symbol.for("moon"));
+
+gw.eval("function q() { return q; }");
+assertEq(Reflect.apply(gw.q,
+ undefined,
+ []),
+ gw.q);
+
+
+// Exceptions are propagated.
+var nope = new Error("nope");
+function fail() {
+ throw nope;
+}
+assertThrowsValue(() => Reflect.apply(fail, undefined, []),
+ nope);
+
+// Exceptions thrown by cross-compartment wrappers are re-wrapped for the
+// calling compartment.
+var gxw = gw.eval("var x = new Error('x'); x");
+gw.eval("function fail() { throw x; }");
+assertThrowsValue(() => Reflect.apply(gw.fail, undefined, []),
+ gxw);
+
+// The thisArgument is passed to the target function as the 'this' value.
+var obj = {};
+hits = 0;
+assertEq(Reflect.apply(function () { hits++; assertEq(this, obj); },
+ obj,
+ []),
+ undefined);
+assertEq(hits, 1);
+
+// Primitive values can be thisArgument.
+function strictThis() { "use strict"; return this; }
+for (var value of [null, undefined, 0, -0, NaN, Symbol("moon")]) {
+ assertEq(Reflect.apply(strictThis, value, []),
+ value);
+}
+
+// If the target is a non-strict function and thisArgument is a primitive value
+// other than null or undefined, then thisArgument is converted to a wrapper
+// object.
+var testValues = [true, 1e9, "ok", Symbol("ok")];
+function nonStrictThis(expected) {
+ assertEq(typeof this, "object");
+ assertEq(Reflect.apply(Object.prototype.toString, this, []).toLowerCase(), expected);
+ return "ok";
+}
+for (var value of testValues) {
+ assertEq(Reflect.apply(nonStrictThis,
+ value,
+ ["[object " + typeof value + "]"]),
+ "ok");
+}
+
+// For more Reflect.apply tests, see target.js and argumentsList.js.
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/argumentsList.js b/js/src/tests/ecma_6/Reflect/argumentsList.js
new file mode 100644
index 000000000..1cd5984f0
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/argumentsList.js
@@ -0,0 +1,164 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Tests for the argumentList argument to Reflect.apply and Reflect.construct.
+
+// Reflect.apply and Reflect.construct require an argumentList argument that must be an object.
+assertThrowsInstanceOf(() => Reflect.apply(Math.min, undefined), // missing
+ TypeError);
+assertThrowsInstanceOf(() => Reflect.construct(Object), // missing
+ TypeError);
+for (var primitive of SOME_PRIMITIVE_VALUES) {
+ assertThrowsInstanceOf(() => Reflect.apply(Math.min, undefined, primitive),
+ TypeError);
+ assertThrowsInstanceOf(() => Reflect.construct(Object, primitive),
+ TypeError);
+}
+
+// Array used by several tests below.
+var BOTH = [
+ Reflect.apply,
+ // Adapt Reflect.construct to accept the same arguments as Reflect.apply.
+ (target, thisArgument, argumentList) => Reflect.construct(target, argumentList)
+];
+
+// The argumentList is copied and becomes the list of arguments passed to the function.
+function getRest(...x) { return x; }
+var args = [1, 2, 3];
+for (var method of BOTH) {
+ var result = method(getRest, undefined, args);
+ assertEq(result.join(), args.join());
+ assertEq(result !== args, true);
+}
+
+// argumentList.length can be less than func.length.
+function testLess(a, b, c, d, e) {
+ assertEq(a, 1);
+ assertEq(b, true);
+ assertEq(c, "three");
+ assertEq(d, Symbol.for);
+ assertEq(e, undefined);
+
+ assertEq(arguments.length, 4);
+ assertEq(arguments !== args, true);
+ return "ok";
+}
+args = [1, true, "three", Symbol.for];
+assertEq(Reflect.apply(testLess, undefined, args), "ok");
+assertEq(Reflect.construct(testLess, args) instanceof testLess, true);
+
+// argumentList.length can be more than func.length.
+function testMoar(a) {
+ assertEq(a, args[0]);
+ return "good";
+}
+assertEq(Reflect.apply(testMoar, undefined, args), "good");
+assertEq(Reflect.construct(testMoar, args) instanceof testMoar, true);
+
+// argumentList can be any object with a .length property.
+function getArgs(...args) {
+ return args;
+}
+for (var method of BOTH) {
+ assertDeepEq(method(getArgs, undefined, {length: 0}),
+ []);
+ assertDeepEq(method(getArgs, undefined, {length: 1, "0": "zero"}),
+ ["zero"]);
+ assertDeepEq(method(getArgs, undefined, {length: 2}),
+ [undefined, undefined]);
+ assertDeepEq(method(getArgs, undefined, function (a, b, c) {}),
+ [undefined, undefined, undefined]);
+}
+
+// The Iterable/Iterator interfaces are not used.
+var funnyArgs = {
+ 0: "zero",
+ 1: "one",
+ length: 2,
+ [Symbol.iterator]() { throw "FAIL 1"; },
+ next() { throw "FAIL 2"; }
+};
+for (var method of BOTH) {
+ assertDeepEq(method(getArgs, undefined, funnyArgs),
+ ["zero", "one"]);
+}
+
+// If argumentList has no .length property, no arguments are passed.
+function count() { return {numArgsReceived: arguments.length}; }
+for (var method of BOTH) {
+ assertEq(method(count, undefined, {"0": 0, "1": 1}).numArgsReceived,
+ 0);
+ function* g() { yield 1; yield 2; }
+ assertEq(method(count, undefined, g()).numArgsReceived,
+ 0);
+}
+
+// If argumentsList.length has a getter, it is called.
+var log;
+args = {
+ get length() { log += "L"; return 1; },
+ get "0"() { log += "0"; return "zero"; },
+ get "1"() { log += "1"; return "one"; }
+};
+for (var method of BOTH) {
+ log = "";
+ assertDeepEq(method(getArgs, undefined, args),
+ ["zero"]);
+ assertEq(log, "L0");
+}
+
+// The argumentsList.length getter can throw; the exception is propagated.
+var exc = {status: "bad"};
+args = {
+ get length() { throw exc; }
+};
+for (var method of BOTH) {
+ assertThrowsValue(() => method(count, undefined, args), exc);
+}
+
+// If argumentsList.length is unreasonably huge, we get an error.
+// (This is an implementation limit.)
+for (var method of BOTH) {
+ for (var value of [1e12, 1e240, Infinity]) {
+ assertThrowsInstanceOf(() => method(count, undefined, {length: value}),
+ Error);
+ }
+}
+
+// argumentsList.length is converted to an integer.
+for (var value of [1.7, "1", {valueOf() { return "1"; }}]) {
+ args = {
+ length: value,
+ "0": "ponies"
+ };
+ for (var method of BOTH) {
+ var result = method(getArgs, undefined, args);
+ assertEq(result.length, 1);
+ assertEq(result[0], "ponies");
+ }
+}
+
+// If argumentsList.length is negative or NaN, no arguments are passed.
+for (var method of BOTH) {
+ for (var num of [-1, -0.1, -0, -1e99, -Infinity, NaN]) {
+ assertEq(method(count, undefined, {length: num}).numArgsReceived,
+ 0);
+ }
+}
+
+// Many arguments can be passed.
+var many = 65537;
+var args = {length: many, 0: "zero", [many - 1]: "last"};
+function testMany(...args) {
+ for (var i = 0; i < many; i++) {
+ assertEq(i in args, true);
+ assertEq(args[i], i === 0 ? "zero" : i === many - 1 ? "last" : undefined);
+ }
+ return this;
+}
+assertEq(Reflect.apply(testMany, "pass", args).toString(), "pass");
+assertEq(Reflect.construct(testMany, args) instanceof testMany, true);
+assertEq(Reflect.apply(new Proxy(testMany, {}), "pass", args).toString(), "pass");
+assertEq(Reflect.construct(new Proxy(testMany, {}), args) instanceof testMany, true);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/browser.js b/js/src/tests/ecma_6/Reflect/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/browser.js
diff --git a/js/src/tests/ecma_6/Reflect/construct.js b/js/src/tests/ecma_6/Reflect/construct.js
new file mode 100644
index 000000000..7dbb9bfa7
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/construct.js
@@ -0,0 +1,107 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Reflect.construct invokes constructors.
+
+assertDeepEq(Reflect.construct(Object, []), {});
+assertDeepEq(Reflect.construct(String, ["hello"]), new String("hello"));
+
+// Constructing Date creates a real Date object.
+var d = Reflect.construct(Date, [1776, 6, 4]);
+assertEq(d instanceof Date, true);
+assertEq(d.getFullYear(), 1776); // non-generic method requires real Date object
+
+// [[Construct]] methods don't necessarily create new objects.
+var obj = {};
+assertEq(Reflect.construct(Object, [obj]), obj);
+
+
+// === Various kinds of constructors
+// We've already seen some builtin constructors.
+//
+// JS functions:
+function f(x) { this.x = x; }
+assertDeepEq(Reflect.construct(f, [3]), new f(3));
+f.prototype = Array.prototype;
+assertDeepEq(Reflect.construct(f, [3]), new f(3));
+
+// Bound functions:
+var bound = f.bind(null, "carrot");
+assertDeepEq(Reflect.construct(bound, []), new bound);
+
+// Classes:
+class Base {
+ constructor(...args) {
+ this.args = args;
+ this.newTarget = new.target;
+ }
+}
+class Derived extends Base {
+ constructor(...args) { super(...args); }
+}
+
+assertDeepEq(Reflect.construct(Base, []), new Base);
+assertDeepEq(Reflect.construct(Derived, [7]), new Derived(7));
+g = Derived.bind(null, "q");
+assertDeepEq(Reflect.construct(g, [8, 9]), new g(8, 9));
+
+// Cross-compartment wrappers:
+var g = newGlobal();
+var local = {here: this};
+g.eval("function F(arg) { this.arg = arg }");
+assertDeepEq(Reflect.construct(g.F, [local]), new g.F(local));
+
+// If first argument to Reflect.construct isn't a constructor, it throws a
+// TypeError.
+var nonConstructors = [
+ {},
+ Reflect.construct, // builtin functions aren't constructors
+ x => x + 1,
+ Math.max.bind(null, 0), // bound non-constructors aren't constructors
+ ((x, y) => x > y).bind(null, 0),
+
+ // A Proxy to a non-constructor function isn't a constructor, even if a
+ // construct handler is present.
+ new Proxy(Reflect.construct, {construct(){}}),
+];
+for (var obj of nonConstructors) {
+ assertThrowsInstanceOf(() => Reflect.construct(obj, []), TypeError);
+ assertThrowsInstanceOf(() => Reflect.construct(obj, [], Object), TypeError);
+}
+
+
+// === new.target tests
+
+// If the newTarget argument to Reflect.construct is missing, the target is used.
+function checkNewTarget() {
+ assertEq(new.target, expected);
+ expected = undefined;
+}
+var expected = checkNewTarget;
+Reflect.construct(checkNewTarget, []);
+
+// The newTarget argument is correctly passed to the constructor.
+var constructors = [Object, Function, f, bound];
+for (var ctor of constructors) {
+ expected = ctor;
+ Reflect.construct(checkNewTarget, [], ctor);
+ assertEq(expected, undefined);
+}
+
+// The newTarget argument must be a constructor.
+for (var v of SOME_PRIMITIVE_VALUES.concat(nonConstructors)) {
+ assertThrowsInstanceOf(() => Reflect.construct(checkNewTarget, [], v), TypeError);
+}
+
+// The builtin Array constructor uses new.target.prototype and always
+// creates a real array object.
+function someConstructor() {}
+var result = Reflect.construct(Array, [], someConstructor);
+assertEq(Reflect.getPrototypeOf(result), someConstructor.prototype);
+assertEq(result.length, 0);
+assertEq(Array.isArray(result), true);
+
+
+// For more Reflect.construct tests, see target.js and argumentsList.js.
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/defineProperty.js b/js/src/tests/ecma_6/Reflect/defineProperty.js
new file mode 100644
index 000000000..c3b1e8600
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/defineProperty.js
@@ -0,0 +1,164 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Reflect.defineProperty defines properties.
+var obj = {};
+assertEq(Reflect.defineProperty(obj, "x", {value: 7}), true);
+assertEq(obj.x, 7);
+var desc = Reflect.getOwnPropertyDescriptor(obj, "x");
+assertDeepEq(desc, {value: 7,
+ writable: false,
+ enumerable: false,
+ configurable: false});
+
+// Reflect.defineProperty can define a symbol-keyed property.
+var key = Symbol(":o)");
+assertEq(Reflect.defineProperty(obj, key, {value: 8}), true);
+assertEq(obj[key], 8);
+
+// array .length property
+obj = [1, 2, 3, 4, 5];
+assertEq(Reflect.defineProperty(obj, "length", {value: 4}), true);
+assertDeepEq(obj, [1, 2, 3, 4]);
+
+// The target can be a proxy.
+obj = {};
+var proxy = new Proxy(obj, {
+ defineProperty(t, id, desc) {
+ t[id] = 1;
+ return true;
+ }
+});
+assertEq(Reflect.defineProperty(proxy, "prop", {value: 7}), true);
+assertEq(obj.prop, 1);
+assertEq(delete obj.prop, true);
+assertEq("prop" in obj, false);
+
+// The attributes object is re-parsed, not passed through to the
+// handler.defineProperty method.
+obj = {};
+var attributes = {
+ configurable: 17,
+ enumerable: undefined,
+ value: null
+};
+proxy = new Proxy(obj, {
+ defineProperty(t, id, desc) {
+ assertEq(desc !== attributes, true);
+ assertEq(desc.configurable, true);
+ assertEq(desc.enumerable, false);
+ assertEq(desc.value, null);
+ assertEq("writable" in desc, false);
+ return 15; // and the return value here is coerced to boolean
+ }
+});
+assertEq(Reflect.defineProperty(proxy, "prop", attributes), true);
+
+
+// === Failure and error cases
+//
+// Reflect.defineProperty behaves much like Object.defineProperty, which has
+// extremely thorough tests elsewhere, and the implementation is largely
+// shared. Duplicating those tests with Reflect.defineProperty would be a
+// big waste.
+//
+// However, certain failures cause Reflect.defineProperty to return false
+// without throwing a TypeError (unlike Object.defineProperty). So here we test
+// many error cases to check that behavior.
+
+// missing attributes argument
+assertThrowsInstanceOf(() => Reflect.defineProperty(obj, "y"),
+ TypeError);
+
+// non-object attributes argument
+for (var attributes of SOME_PRIMITIVE_VALUES) {
+ assertThrowsInstanceOf(() => Reflect.defineProperty(obj, "y", attributes),
+ TypeError);
+}
+
+// inextensible object
+obj = Object.preventExtensions({});
+assertEq(Reflect.defineProperty(obj, "prop", {value: 4}), false);
+
+// inextensible object with irrelevant inherited property
+obj = Object.preventExtensions(Object.create({"prop": 3}));
+assertEq(Reflect.defineProperty(obj, "prop", {value: 4}), false);
+
+// redefine nonconfigurable to configurable
+obj = Object.freeze({prop: 1});
+assertEq(Reflect.defineProperty(obj, "prop", {configurable: true}), false);
+
+// redefine enumerability of nonconfigurable property
+obj = Object.freeze(Object.defineProperties({}, {
+ x: {enumerable: true, configurable: false, value: 0},
+ y: {enumerable: false, configurable: false, value: 0},
+}));
+assertEq(Reflect.defineProperty(obj, "x", {enumerable: false}), false);
+assertEq(Reflect.defineProperty(obj, "y", {enumerable: true}), false);
+
+// redefine nonconfigurable data to accessor property, or vice versa
+obj = Object.seal({x: 1, get y() { return 2; }});
+assertEq(Reflect.defineProperty(obj, "x", {get() { return 2; }}), false);
+assertEq(Reflect.defineProperty(obj, "y", {value: 1}), false);
+
+// redefine nonwritable, nonconfigurable property as writable
+obj = Object.freeze({prop: 0});
+assertEq(Reflect.defineProperty(obj, "prop", {writable: true}), false);
+assertEq(Reflect.defineProperty(obj, "prop", {writable: false}), true); // no-op
+
+// change value of nonconfigurable nonwritable property
+obj = Object.freeze({prop: 0});
+assertEq(Reflect.defineProperty(obj, "prop", {value: -0}), false);
+assertEq(Reflect.defineProperty(obj, "prop", {value: +0}), true); // no-op
+
+// change getter or setter
+function g() {}
+function s(x) {}
+obj = {};
+Object.defineProperty(obj, "prop", {get: g, set: s, configurable: false});
+assertEq(Reflect.defineProperty(obj, "prop", {get: s}), false);
+assertEq(Reflect.defineProperty(obj, "prop", {get: g}), true); // no-op
+assertEq(Reflect.defineProperty(obj, "prop", {set: g}), false);
+assertEq(Reflect.defineProperty(obj, "prop", {set: s}), true); // no-op
+
+// Proxy defineProperty handler method that returns false
+var falseValues = [false, 0, -0, "", NaN, null, undefined];
+if (typeof objectEmulatingUndefined === "function")
+ falseValues.push(objectEmulatingUndefined());
+var value;
+proxy = new Proxy({}, {
+ defineProperty(t, id, desc) {
+ return value;
+ }
+});
+for (value of falseValues) {
+ assertEq(Reflect.defineProperty(proxy, "prop", {value: 1}), false);
+}
+
+// Proxy defineProperty handler method returns true, in violation of invariants.
+// Per spec, this is a TypeError, not a false return.
+obj = Object.freeze({x: 1});
+proxy = new Proxy(obj, {
+ defineProperty(t, id, desc) {
+ return true;
+ }
+});
+assertThrowsInstanceOf(() => Reflect.defineProperty(proxy, "x", {value: 2}), TypeError);
+assertThrowsInstanceOf(() => Reflect.defineProperty(proxy, "y", {value: 0}), TypeError);
+assertEq(Reflect.defineProperty(proxy, "x", {value: 1}), true);
+
+// The second argument is converted ToPropertyKey before any internal methods
+// are called on the first argument.
+var poison =
+ (counter => new Proxy({}, new Proxy({}, { get() { throw counter++; } })))(42);
+assertThrowsValue(() => {
+ Reflect.defineProperty(poison, {
+ toString() { throw 17; },
+ valueOf() { throw 8675309; }
+ }, poison);
+}, 17);
+
+
+// For more Reflect.defineProperty tests, see target.js and propertyKeys.js.
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/deleteProperty.js b/js/src/tests/ecma_6/Reflect/deleteProperty.js
new file mode 100644
index 000000000..744e0f571
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/deleteProperty.js
@@ -0,0 +1,80 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Reflect.deleteProperty deletes properties.
+var obj = {x: 1, y: 2};
+assertEq(Reflect.deleteProperty(obj, "x"), true);
+assertDeepEq(obj, {y: 2});
+
+var arr = [1, 1, 2, 3, 5];
+assertEq(Reflect.deleteProperty(arr, "3"), true);
+assertDeepEq(arr, [1, 1, 2, , 5]);
+
+
+// === Failure and error cases
+// Since Reflect.deleteProperty is almost exactly identical to the non-strict
+// `delete` operator, there is not much to test that would not be redundant.
+
+// Returns true if no such property exists.
+assertEq(Reflect.deleteProperty({}, "q"), true);
+
+// Or if it's inherited.
+var proto = {x: 1};
+assertEq(Reflect.deleteProperty(Object.create(proto), "x"), true);
+assertEq(proto.x, 1);
+
+// Return false if asked to delete a non-configurable property.
+var arr = [];
+assertEq(Reflect.deleteProperty(arr, "length"), false);
+assertEq(arr.hasOwnProperty("length"), true);
+assertEq(Reflect.deleteProperty(this, "undefined"), false);
+assertEq(this.undefined, void 0);
+
+// Return false if a Proxy's deleteProperty handler returns a false-y value.
+var value;
+var proxy = new Proxy({}, {
+ deleteProperty(t, k) {
+ return value;
+ }
+});
+for (value of [true, false, 0, "something", {}]) {
+ assertEq(Reflect.deleteProperty(proxy, "q"), !!value);
+}
+
+// If a Proxy's handler method throws, the error is propagated.
+proxy = new Proxy({}, {
+ deleteProperty(t, k) { throw "vase"; }
+});
+assertThrowsValue(() => Reflect.deleteProperty(proxy, "prop"), "vase");
+
+// Throw a TypeError if a Proxy's handler method returns true in violation of
+// the object invariants.
+proxy = new Proxy(Object.freeze({prop: 1}), {
+ deleteProperty(t, k) { return true; }
+});
+assertThrowsInstanceOf(() => Reflect.deleteProperty(proxy, "prop"), TypeError);
+
+
+// === Deleting elements from `arguments`
+
+// Non-strict arguments element becomes unmapped
+function f(x, y, z) {
+ assertEq(Reflect.deleteProperty(arguments, "0"), true);
+ arguments.x = 33;
+ return x;
+}
+assertEq(f(17, 19, 23), 17);
+
+// Frozen non-strict arguments element
+function testFrozenArguments() {
+ Object.freeze(arguments);
+ assertEq(Reflect.deleteProperty(arguments, "0"), false);
+ assertEq(arguments[0], "zero");
+ assertEq(arguments[1], "one");
+}
+testFrozenArguments("zero", "one");
+
+
+// For more Reflect.deleteProperty tests, see target.js and propertyKeys.js.
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/get.js b/js/src/tests/ecma_6/Reflect/get.js
new file mode 100644
index 000000000..b38b188b0
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/get.js
@@ -0,0 +1,72 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Reflect.get gets the value of a property.
+
+var x = {p: 1};
+assertEq(Reflect.get(x, "p"), 1);
+assertEq(Reflect.get(x, "toString"), Object.prototype.toString);
+assertEq(Reflect.get(x, "missing"), undefined);
+
+
+// === Various targets
+
+// Array
+assertEq(Reflect.get([], 700), undefined);
+assertEq(Reflect.get(["zero", "one"], 1), "one");
+
+// TypedArray
+assertEq(Reflect.get(new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7]), 7), 7);
+
+// Treatment of NaN
+var f = new Float64Array([NaN]);
+var u = new Uint32Array(f.buffer);
+u[0]++;
+u[1]++;
+assertEq(f[0], NaN);
+assertEq(Reflect.get(f, 0), NaN);
+
+// Proxy with no get handler
+assertEq(Reflect.get(new Proxy(x, {}), "p"), 1);
+
+// Proxy with a get handler
+var obj = new Proxy(x, {
+ get(t, k, r) { return k + "ful"; }
+});
+assertEq(Reflect.get(obj, "mood"), "moodful");
+
+// Exceptions thrown by a proxy's get handler are propagated.
+assertThrowsInstanceOf(() => Reflect.get(obj, Symbol()), TypeError);
+
+// Ordinary object, property has a setter and no getter
+obj = {set name(x) {}};
+assertEq(Reflect.get(obj, "name"), undefined);
+
+
+// === Receiver
+
+// Receiver argument is passed to getters as the this-value.
+obj = { get x() { return this; }};
+assertEq(Reflect.get(obj, "x", Math), Math);
+assertEq(Reflect.get(Object.create(obj), "x", JSON), JSON);
+
+// If missing, target is passed instead.
+assertEq(Reflect.get(obj, "x"), obj);
+
+// Receiver argument is passed to the proxy get handler.
+obj = new Proxy({}, {
+ get(t, k, r) {
+ assertEq(k, "itself");
+ return r;
+ }
+});
+assertEq(Reflect.get(obj, "itself"), obj);
+assertEq(Reflect.get(obj, "itself", Math), Math);
+assertEq(Reflect.get(Object.create(obj), "itself", Math), Math);
+
+// The receiver shouldn't have to be an object
+assertEq(Reflect.get(obj, "itself", 37.2), 37.2);
+
+// For more Reflect.get tests, see target.js and propertyKeys.js.
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/getOwnPropertyDescriptor.js b/js/src/tests/ecma_6/Reflect/getOwnPropertyDescriptor.js
new file mode 100644
index 000000000..aa7329778
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/getOwnPropertyDescriptor.js
@@ -0,0 +1,21 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Reflect.getOwnPropertyDescriptor inspects object properties.
+assertDeepEq(
+ Reflect.getOwnPropertyDescriptor({x: "hello"}, "x"),
+ {value: "hello", writable: true, enumerable: true, configurable: true});
+assertEq(
+ Reflect.getOwnPropertyDescriptor({x: "hello"}, "y"),
+ undefined);
+assertDeepEq(
+ Reflect.getOwnPropertyDescriptor([], "length"),
+ {value: 0, writable: true, enumerable: false, configurable: false});
+
+// Reflect.getOwnPropertyDescriptor shares its implementation with
+// Object.getOwnPropertyDescriptor. The only difference is how non-object
+// targets are handled.
+//
+// For more Reflect.getOwnPropertyDescriptor tests, see target.js and propertyKeys.js.
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/getPrototypeOf.js b/js/src/tests/ecma_6/Reflect/getPrototypeOf.js
new file mode 100644
index 000000000..6a29d4a9b
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/getPrototypeOf.js
@@ -0,0 +1,17 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Reflect.getPrototypeOf returns an object's prototype.
+assertEq(Reflect.getPrototypeOf({}), Object.prototype);
+assertEq(Reflect.getPrototypeOf(Object.prototype), null);
+assertEq(Reflect.getPrototypeOf(Object.create(null)), null);
+
+var proxy = new Proxy({}, {
+ getPrototypeOf(t) { return Math; }
+});
+
+assertEq(Reflect.getPrototypeOf(proxy), Math);
+
+// For more Reflect.getPrototypeOf tests, see target.js.
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/has.js b/js/src/tests/ecma_6/Reflect/has.js
new file mode 100644
index 000000000..6019a61ed
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/has.js
@@ -0,0 +1,41 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Reflect.has is identical to the `in` operator.
+assertEq(Reflect.has({x: 0}, "x"), true);
+assertEq(Reflect.has({x: 0}, "y"), false);
+assertEq(Reflect.has({x: 0}, "toString"), true);
+
+// The target can be an array; Reflect.has works on array elements.
+var arr = ["zero"];
+arr[10000] = 0;
+assertEq(Reflect.has(arr, "10000"), true);
+assertEq(Reflect.has(arr, 10000), true);
+assertEq(Reflect.has(arr, "-0"), false);
+assertEq(Reflect.has(arr, -0), true);
+
+// And string objects (though not string primitives; see target.js).
+var str = new String("hello");
+assertEq(Reflect.has(str, "4"), true);
+assertEq(Reflect.has(str, "-0"), false);
+assertEq(Reflect.has(str, -0), true);
+
+// Proxy without .has() handler method
+var obj = {get prop() {}};
+for (var i = 0; i < 2; i++) {
+ obj = new Proxy(obj, {});
+ assertEq(Reflect.has(obj, "prop"), true);
+ assertEq(Reflect.has(obj, "nope"), false);
+}
+
+// Proxy with .has() handler method
+obj = new Proxy({}, {
+ has(t, k) { return k.startsWith("door"); }
+});
+assertEq(Reflect.has(obj, "doorbell"), true);
+assertEq(Reflect.has(obj, "dormitory"), false);
+
+
+// For more Reflect.has tests, see target.js and propertyKeys.js.
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/isExtensible.js b/js/src/tests/ecma_6/Reflect/isExtensible.js
new file mode 100644
index 000000000..f38724875
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/isExtensible.js
@@ -0,0 +1,57 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Reflect.isExtensible behaves just like Object.extensible except when the
+// target argument is missing or is not an object (and that behavior is tested
+// in target.js).
+
+// Test basic functionality.
+var someObjects = [
+ {},
+ {a: "a"},
+ [0, 1],
+ new Uint8Array(64),
+ Object(Symbol("table")),
+ new Proxy({}, {})
+];
+if (typeof SharedArrayBuffer != "undefined")
+ someObjects.push(new Uint8Array(new SharedArrayBuffer(64)));
+
+for (var obj of someObjects) {
+ assertEq(Reflect.isExtensible(obj), true);
+ assertEq(Reflect.preventExtensions(obj), true);
+ assertEq(Reflect.isExtensible(obj), false);
+}
+
+// Array with nonwritable length.
+var arr = [0, 1, 2, 3];
+Object.defineProperty(arr, "length", {writable: false});
+assertEq(Reflect.isExtensible(arr), true);
+
+// Proxy case.
+for (var ext of [true, false]) {
+ var obj = {};
+ if (!ext)
+ Object.preventExtensions(obj);
+ var proxy = new Proxy(obj, {
+ isExtensible() { return ext; }
+ });
+ assertEq(Reflect.isExtensible(proxy), ext);
+}
+
+// If a Proxy's isExtensible method throws, the exception is propagated.
+proxy = new Proxy({}, {
+ isExtensible() { throw "oops"; }
+});
+assertThrowsValue(() => Reflect.isExtensible(proxy), "oops");
+
+// If an invariant is broken, [[IsExtensible]] does not return false. It throws
+// a TypeError.
+proxy = new Proxy({}, {
+ isExtensible() { return false; }
+});
+assertThrowsInstanceOf(() => Reflect.isExtensible(proxy), TypeError);
+
+// For more Reflect.isExtensible tests, see target.js.
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/ownKeys.js b/js/src/tests/ecma_6/Reflect/ownKeys.js
new file mode 100644
index 000000000..5433562eb
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/ownKeys.js
@@ -0,0 +1,66 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Reflect.ownKeys(obj) returns an array of an object's own property keys.
+
+// Test that Reflect.ownKeys gets the expected result when applied to various
+// objects. (These tests also check the basics: that the result is an array,
+// that its prototype is correct, etc.)
+var sym = Symbol.for("comet");
+var sym2 = Symbol.for("meteor");
+var cases = [
+ {object: {z: 3, y: 2, x: 1},
+ keys: ["z", "y", "x"]},
+ {object: [],
+ keys: ["length"]},
+ {object: new Int8Array(4),
+ keys: ["0", "1", "2", "3"]},
+ {object: new Proxy({a: 7}, {}),
+ keys: ["a"]},
+ {object: {[sym]: "ok"},
+ keys: [sym]},
+ {object: {[sym]: 0, // test 9.1.12 ordering
+ "str": 0,
+ "773": 0,
+ "0": 0,
+ [sym2]: 0,
+ "-1": 0,
+ "8": 0,
+ "second str": 0},
+ keys: ["0", "8", "773", // indexes in numeric order
+ "str", "-1", "second str", // strings in insertion order
+ sym, sym2]}, // symbols in insertion order
+ {object: newGlobal().Math, // cross-compartment wrapper
+ keys: Reflect.ownKeys(Math)}
+];
+for (var {object, keys} of cases)
+ assertDeepEq(Reflect.ownKeys(object), keys);
+
+// Reflect.ownKeys() creates a new array each time it is called.
+var object = {}, keys = [];
+for (var i = 0; i < 3; i++) {
+ var newKeys = Reflect.ownKeys(object);
+ assertEq(newKeys !== keys, true);
+ keys = newKeys;
+}
+
+// Proxy behavior with successful ownKeys() handler
+keys = ["str", "0"];
+obj = {};
+proxy = new Proxy(obj, {
+ ownKeys() { return keys; }
+});
+var actual = Reflect.ownKeys(proxy);
+assertDeepEq(actual, keys); // we get correct answers
+assertEq(actual !== keys, true); // but not the same object
+
+// If a proxy breaks invariants, a TypeError is thrown.
+var obj = Object.preventExtensions({});
+var proxy = new Proxy(obj, {
+ ownKeys() { return ["something"]; }
+});
+assertThrowsInstanceOf(() => Reflect.ownKeys(proxy), TypeError);
+
+// For more Reflect.ownKeys tests, see target.js.
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/preventExtensions.js b/js/src/tests/ecma_6/Reflect/preventExtensions.js
new file mode 100644
index 000000000..63ca2545b
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/preventExtensions.js
@@ -0,0 +1,56 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Reflect.preventExtensions is the same as Object.preventExtensions, except
+// for the return value and the behavior in error cases.
+
+var someObjects = [
+ {},
+ new Int32Array(7),
+ Object(Symbol("table")),
+ new Proxy({}, {})
+];
+
+for (var obj of someObjects) {
+ assertEq(Reflect.preventExtensions(obj), true);
+ // [[PreventExtensions]] on an already-inextensible object is a no-op.
+ assertEq(Reflect.preventExtensions(obj), true);
+}
+
+// Error cases.
+assertThrowsInstanceOf(() => Reflect.isExtensible(), TypeError);
+for (var value of [undefined, null, true, 1, NaN, "Phaedo", Symbol("good")]) {
+ assertThrowsInstanceOf(() => Reflect.isExtensible(value), TypeError);
+}
+
+// A proxy's preventExtensions handler can return false without doing anything.
+obj = {};
+var proxy = new Proxy(obj, {
+ preventExtensions() { return false; }
+});
+assertEq(Reflect.preventExtensions(proxy), false);
+assertEq(Reflect.isExtensible(obj), true);
+assertEq(Reflect.isExtensible(proxy), true);
+
+// If a proxy's preventExtensions handler throws, the exception is propagated.
+obj = {};
+proxy = new Proxy(obj, {
+ preventExtensions() { throw "fit"; }
+});
+assertThrowsValue(() => Reflect.preventExtensions(proxy), "fit");
+assertEq(Reflect.isExtensible(obj), true);
+assertEq(Reflect.isExtensible(proxy), true);
+
+// If a proxy's preventExtensions handler returns true while leaving the target
+// extensible, that's a TypeError.
+obj = {};
+proxy = new Proxy(obj, {
+ preventExtensions() { return true; }
+});
+assertThrowsInstanceOf(() => Reflect.preventExtensions(proxy), TypeError);
+assertEq(Reflect.isExtensible(obj), true);
+assertEq(Reflect.isExtensible(proxy), true);
+
+// For more Reflect.preventExtensions tests, see target.js.
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/propertyKeys.js b/js/src/tests/ecma_6/Reflect/propertyKeys.js
new file mode 100644
index 000000000..6495a96fd
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/propertyKeys.js
@@ -0,0 +1,84 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Test corner cases involving Reflect methods' propertyKey arguments.
+
+// keys - Array of propertyKey values to be tested.
+//
+// Each element of this array is a record with these properties:
+//
+// * value: a value that will be passed as a property key
+// to the various Reflect methods;
+//
+// * expected: (optional) the string or symbol that ToPropertyKey(value)
+// should return. If this is omitted, ToPropertyKey(value) === value.
+//
+var keys = [
+ {value: null, expected: "null"},
+ {value: undefined, expected: "undefined"},
+ {value: true, expected: "true"},
+ {value: 42, expected: "42"},
+ {value: "string"},
+ {value: ""},
+ {value: "string with \0"},
+ {value: new String("ok"), expected: "ok"},
+ {value: Symbol("sym")},
+ {value: Symbol.iterator},
+ {value: Object(Symbol.for("comet")), expected: Symbol.for("comet")},
+ {
+ value: {
+ toString() { return "key"; },
+ valueOf() { return "bad"; }
+ },
+ expected: "key"
+ },
+ {
+ value: {
+ toString: undefined,
+ valueOf() { return "fallback"; }
+ },
+ expected: "fallback"
+ },
+ {
+ value: {
+ [Symbol.toPrimitive](hint) { return hint; }
+ },
+ expected: "string"
+ },
+ {
+ value: {
+ [Symbol.toPrimitive](hint) { return Symbol.for(hint); }
+ },
+ expected: Symbol.for("string")
+ }
+];
+
+for (var {value, expected} of keys) {
+ if (expected === undefined)
+ expected = value;
+
+ var obj = {};
+ assertEq(Reflect.defineProperty(obj, value, {value: 1, configurable: true}), true);
+ assertDeepEq(Reflect.ownKeys(obj), [expected]);
+ assertDeepEq(Reflect.getOwnPropertyDescriptor(obj, value),
+ {value: 1,
+ writable: false,
+ enumerable: false,
+ configurable: true});
+ assertEq(Reflect.deleteProperty(obj, value), true);
+ assertEq(Reflect.has(obj, value), false);
+ assertEq(Reflect.set(obj, value, 113), true);
+ assertEq(obj[expected], 113);
+ assertEq(Reflect.has(obj, value), true);
+ assertEq(Reflect.get(obj, value), 113);
+}
+
+// ToPropertyKey can throw.
+var exc = {};
+var badKey = {toString() { throw exc; }};
+var methodNames = ["defineProperty", "deleteProperty", "has", "get", "getOwnPropertyDescriptor", "set"];
+for (var name of methodNames) {
+ assertThrowsValue(() => Reflect[name]({}, badKey), exc);
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/set.js b/js/src/tests/ecma_6/Reflect/set.js
new file mode 100644
index 000000000..83cd98b69
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/set.js
@@ -0,0 +1,280 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Reflect.set does property assignment.
+// With three arguments, this is pretty straightforward.
+var obj = {};
+assertEq(Reflect.set(obj, "prop", "value"), true);
+assertEq(obj.prop, "value");
+
+
+// === Various targets
+
+// It can assign array elements.
+var arr = ["duck", "duck", "duck"];
+assertEq(Reflect.set(arr, 2, "goose"), true);
+assertEq(arr[2], "goose");
+
+// It can extend an array.
+assertEq(Reflect.set(arr, 3, "Model T"), true);
+assertEq(arr.length, 4);
+
+// It can truncate an array.
+assertEq(Reflect.set(arr, "length", 1), true);
+assertDeepEq(arr, ["duck"]);
+
+// It won't assign to non-writable properties of String objects.
+var str = new String("hello");
+assertEq(Reflect.set(str, "0", "y"), false);
+assertEq(str[0], "h");
+assertEq(Reflect.set(str, "length", 700), false);
+assertEq(str.length, 5);
+
+
+// === Receivers
+// The optional fourth argument is the receiver, which [[Set]] methods use for
+// various things.
+
+// On ordinary objects, if the property has a setter, the receiver is passed as
+// the this-value to the setter.
+var expected;
+var obj = {
+ set prop(v) {
+ "use strict";
+ assertEq(v, 32);
+ assertEq(this, expected);
+ }
+};
+for (expected of [obj, {}, [], 37.3]) {
+ assertEq(Reflect.set(obj, "prop", 32, expected), true);
+}
+
+// If the property doesn't already exist, it is defined on the receiver.
+obj = {};
+var obj2 = {};
+assertEq(Reflect.set(obj, "prop", 47, obj2), true);
+assertDeepEq(obj, {});
+assertDeepEq(Reflect.getOwnPropertyDescriptor(obj2, "prop"),
+ {value: 47, writable: true, enumerable: true, configurable: true});
+
+// If the property doesn't already exist, and the receiver isn't an object, return false.
+for (var v of SOME_PRIMITIVE_VALUES) {
+ assertEq(Reflect.set({}, "x", 0, v), false);
+}
+
+// Receiver defaults to the target.
+obj = {};
+var hits;
+var expectedReceiver;
+var proxy = new Proxy(obj, {
+ set(t, k, v, r) {
+ assertEq(t, obj);
+ assertEq(k, "key");
+ assertEq(v, "value");
+ assertEq(r, expectedReceiver); // not obj
+ hits++;
+ return true;
+ }
+});
+hits = 0;
+expectedReceiver = proxy;
+assertEq(Reflect.set(proxy, "key", "value"), true);
+assertEq(hits, 1);
+
+// But not if explicitly present and undefined.
+hits = 0;
+expectedReceiver = undefined;
+assertEq(Reflect.set(proxy, "key", "value", undefined), true);
+assertEq(hits, 1);
+
+// Reflect.set can be used as fallback behavior in a proxy handler .set()
+// method.
+var log;
+obj = {
+ set prop(v) {
+ log += "p";
+ assertEq(v, "value");
+ assertEq(this, proxy); // not obj!
+ }
+};
+proxy = new Proxy(obj, {
+ set(t, k, v, r) {
+ assertEq(t, obj);
+ assertEq(r, proxy);
+ log += "s";
+ return Reflect.set(t, k, v, r);
+ }
+});
+log = "";
+assertEq(Reflect.set(proxy, "prop", "value"), true);
+assertEq(log, "sp");
+
+
+// === Cross-compartment wrapper behavior.
+
+// When calling a cross-compartment wrapper, receiver is rewrapped for the
+// target compartment.
+var g = newGlobal();
+if (!("assertEq" in g))
+ g.assertEq = assertEq; // necessary in the browser
+g.eval(`
+ var hits;
+ var obj = {
+ set x(v) {
+ "use strict";
+ assertEq(this, receiver);
+ assertEq(v, "xyzzy");
+ hits++;
+ }
+ };
+ var receiver = {};
+`);
+g.hits = 0;
+assertEq(Reflect.set(g.obj, "x", "xyzzy", g.receiver), true);
+assertEq(g.hits, 1);
+
+// ...even when receiver is from a different compartment than target.
+var receiver = {};
+g.receiver = receiver;
+g.hits = 0;
+assertEq(Reflect.set(g.obj, "x", "xyzzy", receiver), true);
+assertEq(g.hits, 1);
+
+// ...even when receiver is a primtive value, even undefined.
+for (receiver of SOME_PRIMITIVE_VALUES) {
+ g.receiver = receiver;
+ g.hits = 0;
+ assertEq(Reflect.set(g.obj, "x", "xyzzy", receiver), true);
+ assertEq(g.hits, 1);
+}
+
+
+// === Less than 3 arguments
+
+// With two arguments, the value is assumed to be undefined.
+obj = {};
+assertEq(Reflect.set(obj, "size"), true);
+assertDeepEq(Reflect.getOwnPropertyDescriptor(obj, "size"),
+ {value: undefined, writable: true, enumerable: true, configurable: true});
+
+// With just one argument, the key is "undefined".
+obj = {};
+assertEq(Reflect.set(obj), true);
+assertDeepEq(Reflect.getOwnPropertyDescriptor(obj, "undefined"),
+ {value: undefined, writable: true, enumerable: true, configurable: true});
+
+// For the no argument-case, see target.js.
+
+
+// === Failure cases
+
+// Non-writable data property
+obj = {};
+Reflect.defineProperty(obj, "x", {value: 0, writable: false});
+assertEq(Reflect.set(obj, "x", 1), false);
+assertEq(obj.x, 0);
+
+// The same, but inherited from a prototype
+var obj2 = Object.create(obj);
+assertEq(Reflect.set(obj2, "x", 1), false);
+assertEq(obj2.hasOwnProperty("x"), false);
+assertEq(obj2.x, 0);
+
+// Getter, no setter
+obj = {};
+var desc = {get: () => 12, set: undefined, enumerable: false, configurable: true};
+Reflect.defineProperty(obj, "y", desc);
+assertEq(Reflect.set(obj, "y", 13), false);
+assertDeepEq(Reflect.getOwnPropertyDescriptor(obj, "y"), desc);
+
+// The same, but inherited from a prototype
+obj2 = Object.create(obj);
+assertEq(Reflect.set(obj2, "y", 1), false);
+assertEq(obj2.hasOwnProperty("y"), false);
+assertDeepEq(Reflect.getOwnPropertyDescriptor(obj, "y"), desc);
+
+// Proxy set handler returns a false value
+for (var no of [false, ""]) {
+ var hits = 0;
+ obj = {};
+ var proxy = new Proxy(obj, {
+ set(t, k, v, r) {
+ assertEq(t, obj);
+ assertEq(k, "x");
+ assertEq(v, 33);
+ assertEq(r, proxy);
+ hits++;
+ return no;
+ }
+ });
+ assertEq(Reflect.set(proxy, "x", 33), false);
+ assertEq(hits, 1);
+ assertEq("x" in obj, false);
+}
+
+// Proxy handler method throws
+obj = {};
+proxy = new Proxy(obj, {
+ set(t, k, v, r) { throw "i don't like " + v; }
+});
+assertThrowsValue(() => Reflect.set(proxy, "food", "cheese"), "i don't like cheese");
+
+// If a Proxy set handler breaks the object invariants, it's a TypeError.
+for (obj of [{a: 0}, {get a() { return 0; }}]) {
+ Object.freeze(obj);
+ proxy = new Proxy(obj, {
+ set(t, k, v, r) { return true; }
+ });
+ assertThrowsInstanceOf(() => Reflect.set(proxy, "a", "b"), TypeError);
+}
+
+// Per spec, this should first call p.[[Set]]("0", 42, a) and
+// then (since p has no own properties) a.[[Set]]("0", 42, a).
+// The latter should not define a property on p.
+var a = [0, 1, 2, 3];
+var p = Object.create(a);
+Reflect.set(p, "0", 42, a);
+assertEq(p.hasOwnProperty("0"), false);
+assertDeepEq(Reflect.getOwnPropertyDescriptor(a, "0"),
+ {value: 42, writable: true, enumerable: true, configurable: true});
+
+// Test behavior of ordinary objects' [[Set]] method (ES6 9.1.9).
+// On an ordinary object, if the property key isn't present, [[Set]] calls
+// receiver.[[GetOwnProperty]]() and then receiver.[[DefineProperty]]().
+var log;
+obj = {};
+var proxyTarget = {};
+var existingDescriptor, expected, defineResult;
+var receiver = new Proxy(proxyTarget, {
+ getOwnPropertyDescriptor(t, k) {
+ log += "g";
+ return existingDescriptor;
+ },
+ defineProperty(t, k, desc) {
+ log += "d";
+ assertEq(t, proxyTarget);
+ assertEq(k, "prop");
+ assertDeepEq(desc, expected);
+ return defineResult;
+ }
+});
+existingDescriptor = undefined;
+expected = {value: 5, writable: true, enumerable: true, configurable: true};
+for (var defineResult of [true, false]) {
+ log = "";
+ assertEq(Reflect.set(obj, "prop", 5, receiver), defineResult);
+ assertEq(log, "gd");
+}
+
+existingDescriptor = {value: 7, writable: true, enumerable: false, configurable: true};
+expected = {value: 4};
+for (var defineResult of [true, false]) {
+ log = "";
+ assertEq(Reflect.set(obj, "prop", 4, receiver), defineResult);
+ assertEq(log, "gd");
+}
+
+
+// For more Reflect.set tests, see target.js and propertyKeys.js.
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/setPrototypeOf.js b/js/src/tests/ecma_6/Reflect/setPrototypeOf.js
new file mode 100644
index 000000000..ed7857a02
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/setPrototypeOf.js
@@ -0,0 +1,72 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Reflect.setPrototypeOf changes an object's [[Prototype]].
+var obj = {};
+assertEq(Object.getPrototypeOf(obj), Object.prototype);
+var proto = {};
+assertEq(Reflect.setPrototypeOf(obj, proto), true);
+assertEq(Object.getPrototypeOf(obj), proto);
+
+// It can change an object's [[Prototype]] to null.
+obj = {};
+assertEq(Reflect.setPrototypeOf(obj, null), true);
+assertEq(Object.getPrototypeOf(obj), null);
+
+// The proto argument is required too.
+obj = {};
+assertThrowsInstanceOf(() => Reflect.setPrototypeOf(obj), TypeError);
+
+// The proto argument must be either null or an object.
+for (proto of [undefined, false, 0, 1.6, "that", Symbol.iterator]) {
+ assertThrowsInstanceOf(() => Reflect.setPrototypeOf(obj, proto), TypeError);
+}
+
+// Return false if the target isn't extensible.
+proto = {};
+obj = Object.preventExtensions(Object.create(proto));
+assertEq(Reflect.setPrototypeOf(obj, {}), false);
+assertEq(Reflect.setPrototypeOf(obj, null), false);
+assertEq(Reflect.setPrototypeOf(obj, proto), true); // except if not changing anything
+
+// Return false rather than create a [[Prototype]] cycle.
+obj = {};
+assertEq(Reflect.setPrototypeOf(obj, obj), false);
+
+// Don't create a [[Prototype]] cycle involving 2 objects.
+obj = Object.create(proto);
+assertEq(Reflect.setPrototypeOf(proto, obj), false);
+
+// Don't create a longish [[Prototype]] cycle.
+for (var i = 0; i < 256; i++)
+ obj = Object.create(obj);
+assertEq(Reflect.setPrototypeOf(proto, obj), false);
+
+// The spec claims we should allow creating cycles involving proxies. (The
+// cycle check quietly exits on encountering the proxy.)
+obj = {};
+var proxy = new Proxy(Object.create(obj), {});
+
+assertEq(Reflect.setPrototypeOf(obj, proxy), true);
+assertEq(Reflect.getPrototypeOf(obj), proxy);
+assertEq(Reflect.getPrototypeOf(proxy), obj);
+
+// If a proxy handler returns a false-y value, return false.
+var hits = 0;
+proto = {name: "proto"};
+obj = {name: "obj"};
+proxy = new Proxy(obj, {
+ setPrototypeOf(t, p) {
+ assertEq(t, obj);
+ assertEq(p, proto);
+ hits++;
+ return 0;
+ }
+});
+
+assertEq(Reflect.setPrototypeOf(proxy, proto), false);
+assertEq(hits, 1);
+
+// For more Reflect.setPrototypeOf tests, see target.js.
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/shell.js b/js/src/tests/ecma_6/Reflect/shell.js
new file mode 100644
index 000000000..2aa5397ed
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/shell.js
@@ -0,0 +1,9 @@
+// List of a few values that are not objects.
+var SOME_PRIMITIVE_VALUES = [
+ undefined, null,
+ false,
+ -Infinity, -1.6e99, -1, -0, 0, Math.pow(2, -1074), 1, 4294967295,
+ Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER + 1, 1.6e99, Infinity, NaN,
+ "", "Phaedo",
+ Symbol(), Symbol("iterator"), Symbol.for("iterator"), Symbol.iterator
+];
diff --git a/js/src/tests/ecma_6/Reflect/surfaces.js b/js/src/tests/ecma_6/Reflect/surfaces.js
new file mode 100644
index 000000000..d8486363a
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/surfaces.js
@@ -0,0 +1,59 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Check surface features of the Reflect object.
+assertEq(typeof Reflect, 'object');
+assertEq(Object.getPrototypeOf(Reflect), Object.prototype);
+assertEq(Reflect.toString(), '[object Object]');
+assertThrowsInstanceOf(() => new Reflect, TypeError);
+
+var desc = Object.getOwnPropertyDescriptor(this, "Reflect");
+assertEq(desc.enumerable, false);
+assertEq(desc.configurable, true);
+assertEq(desc.writable, true);
+
+for (var name in Reflect)
+ throw new Error("Reflect should not have any enumerable properties");
+
+// The name and length of all the standard Reflect methods.
+var methods = {
+ apply: 3,
+ construct: 2,
+ defineProperty: 3,
+ deleteProperty: 2,
+ get: 2,
+ getOwnPropertyDescriptor: 2,
+ getPrototypeOf: 1,
+ has: 2,
+ isExtensible: 1,
+ ownKeys: 1,
+ preventExtensions: 1,
+ set: 3,
+ setPrototypeOf: 2
+};
+
+// Check that all Reflect properties are listed above.
+for (var name of Reflect.ownKeys(Reflect)) {
+ // If this assertion fails, congratulations on implementing a new Reflect feature!
+ // Add it to the list of methods above.
+ if (name !== "parse")
+ assertEq(name in methods, true, `unexpected property found: Reflect.${name}`);
+}
+
+// Check the .length and property attributes of each Reflect method.
+for (var name of Object.keys(methods)) {
+ var desc = Object.getOwnPropertyDescriptor(Reflect, name);
+ assertEq(desc.enumerable, false);
+ assertEq(desc.configurable, true);
+ assertEq(desc.writable, true);
+ var f = desc.value;
+ assertEq(typeof f, "function");
+ assertEq(f.length, methods[name]);
+}
+
+// Check that the SpiderMonkey "resolve hook" mechanism does not resurrect the
+// Reflect property once it is deleted.
+delete this.Reflect;
+assertEq("Reflect" in this, false);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Reflect/target.js b/js/src/tests/ecma_6/Reflect/target.js
new file mode 100644
index 000000000..8d18ce99a
--- /dev/null
+++ b/js/src/tests/ecma_6/Reflect/target.js
@@ -0,0 +1,44 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Check correct handling of the `target` argument shared by every Reflect method.
+
+// For each standard Reflect method, an array of arguments
+// that would be OK after a suitable target argument.
+var methodInfo = {
+ apply: [undefined, []],
+ construct: [[]],
+ defineProperty: ["x", {}],
+ deleteProperty: ["x"],
+ get: ["x", {}],
+ getOwnPropertyDescriptor: ["x"],
+ getPrototypeOf: [],
+ has: ["x"],
+ isExtensible: [],
+ ownKeys: [],
+ preventExtensions: [],
+ set: ["x", 0],
+ setPrototypeOf: [{}]
+};
+
+// Check that all Reflect properties are listed above.
+for (var name of Reflect.ownKeys(Reflect)) {
+ // If this assertion fails, congratulations on implementing a new Reflect feature!
+ // Add it to methodInfo above.
+ if (name !== "parse")
+ assertEq(name in methodInfo, true);
+}
+
+for (var name of Object.keys(methodInfo)) {
+ var args = methodInfo[name];
+
+ // The target argument is required.
+ assertThrowsInstanceOf(Reflect[name], TypeError);
+
+ // Throw if the target argument is not an object.
+ for (var value of SOME_PRIMITIVE_VALUES) {
+ assertThrowsInstanceOf(() => Reflect[name](value, ...args), TypeError);
+ }
+}
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/RegExp/RegExpExec-exec.js b/js/src/tests/ecma_6/RegExp/RegExpExec-exec.js
new file mode 100644
index 000000000..e92792fcf
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/RegExpExec-exec.js
@@ -0,0 +1,18 @@
+var BUGNUMBER = 887016;
+var summary = "RegExpExec should throw if exec property of non-RegExp is not callable";
+
+print(BUGNUMBER + ": " + summary);
+
+for (var exec of [null, 0, false, undefined, ""]) {
+ // RegExp with non-callable exec
+ var re = /a/;
+ re.exec = exec;
+ RegExp.prototype[Symbol.match].call(re, "foo");
+
+ // non-RegExp with non-callable exec
+ assertThrowsInstanceOf(() => RegExp.prototype[Symbol.match].call({ exec }, "foo"),
+ TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/RegExpExec-return.js b/js/src/tests/ecma_6/RegExp/RegExpExec-return.js
new file mode 100644
index 000000000..1148aac07
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/RegExpExec-return.js
@@ -0,0 +1,31 @@
+var BUGNUMBER = 887016;
+var summary = "RegExpExec should throw if returned value is not an object nor null.";
+
+print(BUGNUMBER + ": " + summary);
+
+for (var ret of [null, {}, [], /a/]) {
+ assertEq(RegExp.prototype[Symbol.match].call({
+ get global() {
+ return false;
+ },
+ exec(S) {
+ return ret;
+ }
+ }, "foo"), ret);
+}
+
+for (ret of [undefined, 1, true, false, Symbol.iterator]) {
+ assertThrowsInstanceOf(() => {
+ RegExp.prototype[Symbol.match].call({
+ get global() {
+ return false;
+ },
+ exec(S) {
+ return ret;
+ }
+ }, "foo");
+ }, TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/browser.js b/js/src/tests/ecma_6/RegExp/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/browser.js
diff --git a/js/src/tests/ecma_6/RegExp/class-null.js b/js/src/tests/ecma_6/RegExp/class-null.js
new file mode 100644
index 000000000..c95e5a4d7
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/class-null.js
@@ -0,0 +1,15 @@
+var BUGNUMBER = 1279467;
+var summary = "Null in character class in RegExp with unicode flag.";
+
+print(BUGNUMBER + ": " + summary);
+
+var m = /([\0]+)/u.exec("\u0000");
+assertEq(m.length, 2);
+assertEq(m[0], '\u0000');
+assertEq(m[1], '\u0000');
+
+var m = /([\0]+)/u.exec("0");
+assertEq(m, null);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/compile-lastIndex.js b/js/src/tests/ecma_6/RegExp/compile-lastIndex.js
new file mode 100644
index 000000000..80c820f43
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/compile-lastIndex.js
@@ -0,0 +1,88 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var BUGNUMBER = 1253099;
+var summary =
+ "RegExp.prototype.compile must perform all its steps *except* setting " +
+ ".lastIndex, then throw, when provided a RegExp whose .lastIndex has been " +
+ "made non-writable";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var regex = /foo/i;
+
+// Aside from making .lastIndex non-writable, this has two incidental effects
+// ubiquitously tested through the remainder of this test:
+//
+// * RegExp.prototype.compile will do everything it ordinarily does, BUT it
+// will throw a TypeError when attempting to zero .lastIndex immediately
+// before succeeding overall.
+// * RegExp.prototype.test for a non-global and non-sticky regular expression,
+// in case of a match, will return true (as normal). BUT if no match is
+// found, it will throw a TypeError when attempting to modify .lastIndex.
+//
+// Ain't it great?
+Object.defineProperty(regex, "lastIndex", { value: 42, writable: false });
+
+assertEq(regex.global, false);
+assertEq(regex.ignoreCase, true);
+assertEq(regex.multiline, false);
+assertEq(regex.unicode, false);
+assertEq(regex.sticky, false);
+assertEq(Object.getOwnPropertyDescriptor(regex, "lastIndex").writable, false);
+assertEq(regex.lastIndex, 42);
+
+assertEq(regex.test("foo"), true);
+assertEq(regex.test("FOO"), true);
+assertThrowsInstanceOf(() => regex.test("bar"), TypeError);
+assertThrowsInstanceOf(() => regex.test("BAR"), TypeError);
+
+assertThrowsInstanceOf(() => regex.compile("bar"), TypeError);
+
+assertEq(regex.global, false);
+assertEq(regex.ignoreCase, false);
+assertEq(regex.multiline, false);
+assertEq(regex.unicode, false);
+assertEq(regex.sticky, false);
+assertEq(Object.getOwnPropertyDescriptor(regex, "lastIndex").writable, false);
+assertEq(regex.lastIndex, 42);
+assertThrowsInstanceOf(() => regex.test("foo"), TypeError);
+assertThrowsInstanceOf(() => regex.test("FOO"), TypeError);
+assertEq(regex.test("bar"), true);
+assertThrowsInstanceOf(() => regex.test("BAR"), TypeError);
+
+assertThrowsInstanceOf(() => regex.compile("^baz", "m"), TypeError);
+
+assertEq(regex.global, false);
+assertEq(regex.ignoreCase, false);
+assertEq(regex.multiline, true);
+assertEq(regex.unicode, false);
+assertEq(regex.sticky, false);
+assertEq(Object.getOwnPropertyDescriptor(regex, "lastIndex").writable, false);
+assertEq(regex.lastIndex, 42);
+assertThrowsInstanceOf(() => regex.test("foo"), TypeError);
+assertThrowsInstanceOf(() => regex.test("FOO"), TypeError);
+assertThrowsInstanceOf(() => regex.test("bar"), TypeError);
+assertThrowsInstanceOf(() => regex.test("BAR"), TypeError);
+assertEq(regex.test("baz"), true);
+assertThrowsInstanceOf(() => regex.test("BAZ"), TypeError);
+assertThrowsInstanceOf(() => regex.test("012345678901234567890123456789012345678901baz"),
+ TypeError);
+assertEq(regex.test("012345678901234567890123456789012345678901\nbaz"), true);
+assertThrowsInstanceOf(() => regex.test("012345678901234567890123456789012345678901BAZ"),
+ TypeError);
+assertThrowsInstanceOf(() => regex.test("012345678901234567890123456789012345678901\nBAZ"),
+ TypeError);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/RegExp/constructor-IsRegExp.js b/js/src/tests/ecma_6/RegExp/constructor-IsRegExp.js
new file mode 100644
index 000000000..8c735e4b9
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/constructor-IsRegExp.js
@@ -0,0 +1,86 @@
+var BUGNUMBER = 1147817;
+var summary = "RegExp constructor with pattern with @@match.";
+
+print(BUGNUMBER + ": " + summary);
+
+var matchValue;
+var constructorValue;
+
+var matchGet;
+var constructorGet;
+var sourceGet;
+var flagsGet;
+function reset() {
+ matchGet = false;
+ constructorGet = false;
+ sourceGet = false;
+ flagsGet = false;
+}
+var obj = {
+ get [Symbol.match]() {
+ matchGet = true;
+ return matchValue;
+ },
+ get constructor() {
+ constructorGet = true;
+ return constructorValue;
+ },
+ get source() {
+ sourceGet = true;
+ return "foo";
+ },
+ get flags() {
+ flagsGet = true;
+ return "i";
+ },
+ toString() {
+ return "bar";
+ }
+};
+
+matchValue = true;
+constructorValue = function() {};
+
+reset();
+assertEq(RegExp(obj).toString(), "/foo/i");
+assertEq(matchGet, true);
+assertEq(constructorGet, true);
+assertEq(sourceGet, true);
+assertEq(flagsGet, true);
+
+reset();
+assertEq(RegExp(obj, "g").toString(), "/foo/g");
+assertEq(matchGet, true);
+assertEq(constructorGet, false);
+assertEq(sourceGet, true);
+assertEq(flagsGet, false);
+
+matchValue = false;
+constructorValue = function() {};
+
+reset();
+assertEq(RegExp(obj).toString(), "/bar/");
+assertEq(matchGet, true);
+assertEq(constructorGet, false);
+assertEq(sourceGet, false);
+assertEq(flagsGet, false);
+
+reset();
+assertEq(RegExp(obj, "g").toString(), "/bar/g");
+assertEq(matchGet, true);
+assertEq(constructorGet, false);
+assertEq(sourceGet, false);
+assertEq(flagsGet, false);
+
+matchValue = true;
+constructorValue = RegExp;
+
+reset();
+assertEq(RegExp(obj), obj);
+assertEq(matchGet, true);
+assertEq(constructorGet, true);
+assertEq(sourceGet, false);
+assertEq(flagsGet, false);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/constructor-constructor.js b/js/src/tests/ecma_6/RegExp/constructor-constructor.js
new file mode 100644
index 000000000..528f4978c
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/constructor-constructor.js
@@ -0,0 +1,78 @@
+var BUGNUMBER = 1147817;
+var summary = "RegExp constructor should check pattern.constructor.";
+
+print(BUGNUMBER + ": " + summary);
+
+var g = newGlobal();
+
+var re = /foo/;
+assertEq(RegExp(re), re);
+re.constructor = 10;
+assertEq(RegExp(re) === re, false);
+assertEq(RegExp(re).toString(), re.toString());
+
+// If pattern comes from different global, RegExp shouldn't return it.
+re = g.eval(`var re = /foo/; re;`);
+assertEq(RegExp(re) === re, false);
+assertEq(RegExp(re).toString(), re.toString());
+g.eval(`re.constructor = 10;`);
+assertEq(RegExp(re) === re, false);
+assertEq(RegExp(re).toString(), re.toString());
+
+
+re = new Proxy(/a/, {
+ get(that, name) {
+ return that[name];
+ }
+});
+assertEq(RegExp(re), re);
+re = new Proxy(/a/, {
+ get(that, name) {
+ if (name == "constructor") {
+ return function() {};
+ }
+ return that[name];
+ }
+});
+assertEq(RegExp(re) === re, false);
+re = new Proxy(/a/, {
+ get(that, name) {
+ if (name == Symbol.match) {
+ return undefined;
+ }
+ return that[name];
+ }
+});
+assertEq(RegExp(re) === re, false);
+
+re = new Proxy(g.eval(`/a/`), {
+ get(that, name) {
+ return that[name];
+ }
+});
+assertEq(RegExp(re) === re, false);
+
+re = g.eval(`new Proxy(/a/, {
+ get(that, name) {
+ return that[name];
+ }
+});`);
+assertEq(RegExp(re) === re, false);
+
+
+var obj = { [Symbol.match]: true, source: "foo", flags: "gi" };
+assertEq(RegExp(obj) === obj, false);
+assertEq(RegExp(obj).toString(), "/foo/gi");
+obj.constructor = RegExp;
+assertEq(RegExp(obj), obj);
+
+obj = g.eval(`var obj = { [Symbol.match]: true, source: "foo", flags: "gi" }; obj;`);
+assertEq(RegExp(obj) === obj, false);
+assertEq(RegExp(obj).toString(), "/foo/gi");
+g.eval(`obj.constructor = RegExp`);
+assertEq(RegExp(obj) === obj, false);
+obj.constructor = RegExp;
+assertEq(RegExp(obj), obj);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/constructor-ordering-2.js b/js/src/tests/ecma_6/RegExp/constructor-ordering-2.js
new file mode 100644
index 000000000..21a6bbeca
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/constructor-ordering-2.js
@@ -0,0 +1,21 @@
+// Make sure that we don't ToString the second argument until /after/ doing
+// the appropriate subclassing lookups
+
+var didLookup = false;
+
+var re = /a/;
+var flags = { toString() { assertEq(didLookup, true); return "g"; } };
+var newRe = Reflect.construct(RegExp, [re, flags],
+ Object.defineProperty(function(){}.bind(null), "prototype", {
+ get() {
+ didLookup = true;
+ return RegExp.prototype;
+ }
+}));
+
+assertEq(Object.getPrototypeOf(newRe), RegExp.prototype);
+assertEq(didLookup, true);
+
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/RegExp/constructor-ordering.js b/js/src/tests/ecma_6/RegExp/constructor-ordering.js
new file mode 100644
index 000000000..3e3a9b695
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/constructor-ordering.js
@@ -0,0 +1,16 @@
+// Make sure that we don't misorder subclassing accesses with respect to
+// accessing regex arg internal slots
+//
+// Test credit André Bargull.
+
+var re = /a/;
+var newRe = Reflect.construct(RegExp, [re], Object.defineProperty(function(){}.bind(null), "prototype", {
+ get() {
+ re.compile("b");
+ return RegExp.prototype;
+ }
+}));
+assertEq(newRe.source, "a");
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/RegExp/constructor-regexp-unicode.js b/js/src/tests/ecma_6/RegExp/constructor-regexp-unicode.js
new file mode 100644
index 000000000..b348c34a0
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/constructor-regexp-unicode.js
@@ -0,0 +1,9 @@
+var BUGNUMBER = 1274393;
+var summary = "RegExp constructor should check the pattern syntax again when adding unicode flag.";
+
+print(BUGNUMBER + ": " + summary);
+
+assertThrowsInstanceOf(() => RegExp(/\-/, "u"), SyntaxError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/constructor-regexp.js b/js/src/tests/ecma_6/RegExp/constructor-regexp.js
new file mode 100644
index 000000000..419b02713
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/constructor-regexp.js
@@ -0,0 +1,61 @@
+var BUGNUMBER = 1130860;
+var summary = "RegExp constructor shouldn't invoke source/flags getters on argument RegExp instance.";
+
+print(BUGNUMBER + ": " + summary);
+
+// same-compartment
+var a = /foo/;
+var flagsCalled = false;
+var sourceCalled = false;
+Object.defineProperty(a, "source", { get: () => {
+ sourceCalled = true;
+ return "bar";
+}});
+Object.defineProperty(a, "flags", { get: () => {
+ flagsCalled = true;
+ return "i";
+}});
+
+assertEq(a.source, "bar");
+assertEq(a.flags, "i");
+assertEq(sourceCalled, true);
+assertEq(flagsCalled, true);
+
+sourceCalled = false;
+flagsCalled = false;
+assertEq(new RegExp(a).source, "foo");
+assertEq(sourceCalled, false);
+assertEq(flagsCalled, false);
+
+// cross-compartment
+var g = newGlobal();
+var b = g.eval(`
+var b = /foo2/;
+var flagsCalled = false;
+var sourceCalled = false;
+Object.defineProperty(b, "source", { get: () => {
+ sourceCalled = true;
+ return "bar2";
+}});
+Object.defineProperty(b, "flags", { get: () => {
+ flagsCalled = true;
+ return "i";
+}});
+b;
+`);
+
+assertEq(b.source, "bar2");
+assertEq(b.flags, "i");
+assertEq(g.eval("sourceCalled;"), true);
+assertEq(g.eval("flagsCalled;"), true);
+
+g.eval(`
+sourceCalled = false;
+flagsCalled = false;
+`);
+assertEq(new RegExp(b).source, "foo2");
+assertEq(g.eval("sourceCalled;"), false);
+assertEq(g.eval("flagsCalled;"), false);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/descriptor.js b/js/src/tests/ecma_6/RegExp/descriptor.js
new file mode 100644
index 000000000..cc545b3a6
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/descriptor.js
@@ -0,0 +1,25 @@
+var BUGNUMBER = 1120169;
+var summary = "Implement RegExp.prototype.{global, ignoreCase, multiline, sticky, unicode} - property descriptor";
+
+print(BUGNUMBER + ": " + summary);
+
+var getters = [
+ "flags",
+ "global",
+ "ignoreCase",
+ "multiline",
+ "source",
+ "sticky",
+ "unicode",
+];
+
+for (var name of getters) {
+ var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, name);
+ assertEq(desc.configurable, true);
+ assertEq(desc.enumerable, false);
+ assertEq("writable" in desc, false);
+ assertEq("get" in desc, true);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/escape.js b/js/src/tests/ecma_6/RegExp/escape.js
new file mode 100644
index 000000000..bb59b797d
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/escape.js
@@ -0,0 +1,70 @@
+var BUGNUMBER = 1130860;
+var summary = 'Slash and LineTerminator should be escaped correctly.';
+
+print(BUGNUMBER + ": " + summary);
+
+function test(re, source) {
+ assertEq(re.source, source);
+ assertEq(eval("/" + re.source + "/").source, source);
+ assertEq(re.toString(), "/" + source + "/");
+}
+
+test(/\\n/, "\\\\n");
+test(/\\\n/, "\\\\\\n");
+test(/\\\\n/, "\\\\\\\\n");
+test(RegExp("\\n"), "\\n");
+test(RegExp("\\\n"), "\\n");
+test(RegExp("\\\\n"), "\\\\n");
+
+test(/\\r/, "\\\\r");
+test(/\\\r/, "\\\\\\r");
+test(/\\\\r/, "\\\\\\\\r");
+test(RegExp("\\r"), "\\r");
+test(RegExp("\\\r"), "\\r");
+test(RegExp("\\\\r"), "\\\\r");
+
+test(/\\u2028/, "\\\\u2028");
+test(/\\\u2028/, "\\\\\\u2028");
+test(/\\\\u2028/, "\\\\\\\\u2028");
+test(RegExp("\\u2028"), "\\u2028");
+test(RegExp("\\\u2028"), "\\u2028");
+test(RegExp("\\\\u2028"), "\\\\u2028");
+
+test(/\\u2029/, "\\\\u2029");
+test(/\\\u2029/, "\\\\\\u2029");
+test(/\\\\u2029/, "\\\\\\\\u2029");
+test(RegExp("\\u2029"), "\\u2029");
+test(RegExp("\\\u2029"), "\\u2029");
+test(RegExp("\\\\u2029"), "\\\\u2029");
+
+test(/\//, "\\/");
+test(/\\\//, "\\\\\\/");
+test(RegExp("/"), "\\/");
+test(RegExp("\/"), "\\/");
+test(RegExp("\\/"), "\\/");
+test(RegExp("\\\/"), "\\/");
+test(RegExp("\\\\/"), "\\\\\\/");
+
+test(/[/]/, "[/]");
+test(/[\/]/, "[\\/]");
+test(/[\\/]/, "[\\\\/]");
+test(/[\\\/]/, "[\\\\\\/]");
+test(RegExp("[/]"), "[/]");
+test(RegExp("[\/]"), "[/]");
+test(RegExp("[\\/]"), "[\\/]");
+test(RegExp("[\\\/]"), "[\\/]");
+test(RegExp("[\\\\/]"), "[\\\\/]");
+
+test(RegExp("\[/\]"), "[/]");
+test(RegExp("\[\\/\]"), "[\\/]");
+
+test(/\[\/\]/, "\\[\\/\\]");
+test(/\[\\\/\]/, "\\[\\\\\\/\\]");
+test(RegExp("\\[/\\]"), "\\[\\/\\]");
+test(RegExp("\\[\/\\]"), "\\[\\/\\]");
+test(RegExp("\\[\\/\\]"), "\\[\\/\\]");
+test(RegExp("\\[\\\/\\]"), "\\[\\/\\]");
+test(RegExp("\\[\\\\/\\]"), "\\[\\\\\\/\\]");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/exec-lastIndex-negative.js b/js/src/tests/ecma_6/RegExp/exec-lastIndex-negative.js
new file mode 100644
index 000000000..18eb2ab9d
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/exec-lastIndex-negative.js
@@ -0,0 +1,27 @@
+var BUGNUMBER = 1207922;
+var summary = "negative lastIndex should be treated as 0.";
+
+print(BUGNUMBER + ": " + summary);
+
+var pattern = /abc/gi;
+var string = 'AbcaBcabC';
+
+var indices = [
+ -1,
+ -Math.pow(2,32),
+ -(Math.pow(2,32) + 1),
+ -Math.pow(2,32) * 2,
+ -Math.pow(2,40),
+ -Number.MAX_VALUE,
+];
+for (var index of indices) {
+ pattern.lastIndex = index;
+ var result = pattern.exec(string);
+ assertEq(result.index, 0);
+ assertEq(result.length, 1);
+ assertEq(result[0], "Abc");
+ assertEq(pattern.lastIndex, 3);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/flag-accessors.js b/js/src/tests/ecma_6/RegExp/flag-accessors.js
new file mode 100644
index 000000000..848b916c5
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/flag-accessors.js
@@ -0,0 +1,49 @@
+var BUGNUMBER = 1120169;
+var summary = "Implement RegExp.prototype.{global, ignoreCase, multiline, sticky, unicode}";
+
+print(BUGNUMBER + ": " + summary);
+
+var props = [
+ "global",
+ "ignoreCase",
+ "multiline",
+ "sticky",
+ "unicode",
+];
+
+testThrows(RegExp.prototype);
+test(/foo/iymg, [true, true, true, true, false]);
+test(RegExp(""), [false, false, false, false, false]);
+test(RegExp("", "mygi"), [true, true, true, true, false]);
+test(RegExp("", "mygiu"), [true, true, true, true, true]);
+
+testThrowsGeneric();
+testThrowsGeneric(1);
+testThrowsGeneric("");
+testThrowsGeneric({});
+testThrowsGeneric(new Proxy({}, {get(){ return true; }}));
+
+function test(obj, expects) {
+ for (var i = 0; i < props.length; i++) {
+ assertEq(obj[props[i]], expects[i]);
+ }
+}
+
+function testThrows(obj) {
+ for (var prop of props) {
+ assertThrowsInstanceOf(obj[prop], TypeError);
+ }
+}
+
+function testThrowsGeneric(obj) {
+ for (var prop of props) {
+ assertThrowsInstanceOf(() => genericGet(obj, prop), TypeError);
+ }
+}
+
+function genericGet(obj, prop) {
+ return Object.getOwnPropertyDescriptor(RegExp.prototype, prop).get.call(obj);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/flags-param-handling.js b/js/src/tests/ecma_6/RegExp/flags-param-handling.js
new file mode 100644
index 000000000..e47799601
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/flags-param-handling.js
@@ -0,0 +1,18 @@
+assertEq(RegExp(/foo/my).flags, "my");
+assertEq(RegExp(/foo/, "gi").flags, "gi");
+assertEq(RegExp(/foo/my, "gi").flags, "gi");
+assertEq(RegExp(/foo/my, "").flags, "");
+assertEq(RegExp(/foo/my, undefined).flags, "my");
+assertThrowsInstanceOf(() => RegExp(/foo/my, null), SyntaxError);
+assertThrowsInstanceOf(() => RegExp(/foo/my, "foo"), SyntaxError);
+
+assertEq(/a/.compile("b", "gi").flags, "gi");
+assertEq(/a/.compile(/b/my).flags, "my");
+assertEq(/a/.compile(/b/my, undefined).flags, "my");
+assertThrowsInstanceOf(() => /a/.compile(/b/my, "gi"), TypeError);
+assertThrowsInstanceOf(() => /a/.compile(/b/my, ""), TypeError);
+assertThrowsInstanceOf(() => /a/.compile(/b/my, null), TypeError);
+assertThrowsInstanceOf(() => /a/.compile(/b/my, "foo"), TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/flags.js b/js/src/tests/ecma_6/RegExp/flags.js
new file mode 100644
index 000000000..292fa4f3f
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/flags.js
@@ -0,0 +1,26 @@
+var BUGNUMBER = 1108467;
+var summary = "Implement RegExp.prototype.flags";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(RegExp.prototype.flags, "");
+assertEq(/foo/iymg.flags, "gimy");
+assertEq(RegExp("").flags, "");
+assertEq(RegExp("", "mygi").flags, "gimy");
+assertEq(RegExp("", "mygui").flags, "gimuy");
+assertEq(genericFlags({}), "");
+assertEq(genericFlags({ignoreCase: true}), "i");
+assertEq(genericFlags({sticky:1, unicode:1, global: 0}), "uy");
+assertEq(genericFlags({__proto__: {multiline: true}}), "m");
+assertEq(genericFlags(new Proxy({}, {get(){return true}})), "gimuy");
+
+assertThrowsInstanceOf(() => genericFlags(), TypeError);
+assertThrowsInstanceOf(() => genericFlags(1), TypeError);
+assertThrowsInstanceOf(() => genericFlags(""), TypeError);
+
+function genericFlags(obj) {
+ return Object.getOwnPropertyDescriptor(RegExp.prototype,"flags").get.call(obj);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/getter-name.js b/js/src/tests/ecma_6/RegExp/getter-name.js
new file mode 100644
index 000000000..d0a413dbc
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/getter-name.js
@@ -0,0 +1,16 @@
+var BUGNUMBER = 1180290;
+var summary = 'RegExp getters should have get prefix';
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(Object.getOwnPropertyDescriptor(RegExp, Symbol.species).get.name, "get [Symbol.species]");
+assertEq(Object.getOwnPropertyDescriptor(RegExp.prototype, "flags").get.name, "get flags");
+assertEq(Object.getOwnPropertyDescriptor(RegExp.prototype, "global").get.name, "get global");
+assertEq(Object.getOwnPropertyDescriptor(RegExp.prototype, "ignoreCase").get.name, "get ignoreCase");
+assertEq(Object.getOwnPropertyDescriptor(RegExp.prototype, "multiline").get.name, "get multiline");
+assertEq(Object.getOwnPropertyDescriptor(RegExp.prototype, "source").get.name, "get source");
+assertEq(Object.getOwnPropertyDescriptor(RegExp.prototype, "sticky").get.name, "get sticky");
+assertEq(Object.getOwnPropertyDescriptor(RegExp.prototype, "unicode").get.name, "get unicode");
+
+if (typeof reportCompare === 'function')
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/ignoreCase-multiple.js b/js/src/tests/ecma_6/RegExp/ignoreCase-multiple.js
new file mode 100644
index 000000000..e52cf499b
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/ignoreCase-multiple.js
@@ -0,0 +1,71 @@
+var BUGNUMBER = 1280046;
+var summary = "ignoreCase match should perform Canonicalize both on input and pattern.";
+
+print(BUGNUMBER + ": " + summary);
+
+// Each element [code1, upper, code2] satisfies the following condition:
+// ToUpperCase(code1) == upper
+// ToUpperCase(code2) == upper
+var pairs =
+ [
+ // U+00B5: MICRO SIGN
+ // U+039C: GREEK CAPITAL LETTER MU
+ // U+03BC: GREEK SMALL LETTER MU
+ ["\u00B5", "\u039C", "\u03BC"],
+ // U+0345: COMBINING GREEK YPOGEGRAMMENI
+ // U+0399: GREEK CAPITAL LETTER IOTA
+ // U+03B9: GREEK SMALL LETTER IOTA
+ ["\u0345", "\u0399", "\u03B9"],
+ // U+03C2: GREEK SMALL LETTER FINAL SIGMA
+ // U+03A3: GREEK CAPITAL LETTER SIGMA
+ // U+03C3: GREEK SMALL LETTER SIGMA
+ ["\u03C2", "\u03A3", "\u03C3"],
+ // U+03D0: GREEK BETA SYMBOL
+ // U+0392: GREEK CAPITAL LETTER BETA
+ // U+03B2: GREEK SMALL LETTER BETA
+ ["\u03D0", "\u0392", "\u03B2"],
+ // U+03D1: GREEK THETA SYMBOL
+ // U+0398: GREEK CAPITAL LETTER THETA
+ // U+03B8: GREEK SMALL LETTER THETA
+ ["\u03D1", "\u0398", "\u03B8"],
+ // U+03D5: GREEK PHI SYMBOL
+ // U+03A6: GREEK CAPITAL LETTER PHI
+ // U+03C6: GREEK SMALL LETTER PHI
+ ["\u03D5", "\u03A6", "\u03C6"],
+ // U+03D6: GREEK PI SYMBOL
+ // U+03A0: GREEK CAPITAL LETTER PI
+ // U+03C0: GREEK SMALL LETTER PI
+ ["\u03D6", "\u03A0", "\u03C0"],
+ // U+03F0: GREEK KAPPA SYMBOL
+ // U+039A: GREEK CAPITAL LETTER KAPPA
+ // U+03BA: GREEK SMALL LETTER KAPPA
+ ["\u03F0", "\u039A", "\u03BA"],
+ // U+03F1: GREEK RHO SYMBOL
+ // U+03A1: GREEK CAPITAL LETTER RHO
+ // U+03C1: GREEK SMALL LETTER RHO
+ ["\u03F1", "\u03A1", "\u03C1"],
+ // U+03F5: GREEK LUNATE EPSILON SYMBOL
+ // U+0395: GREEK CAPITAL LETTER EPSILON
+ // U+03B5: GREEK SMALL LETTER EPSILON
+ ["\u03F5", "\u0395", "\u03B5"],
+ // U+1E9B: LATIN SMALL LETTER LONG S WITH DOT ABOVE
+ // U+1E60: LATIN CAPITAL LETTER S WITH DOT ABOVE
+ // U+1E61: LATIN SMALL LETTER S WITH DOT ABOVE
+ ["\u1E9B", "\u1E60", "\u1E61"],
+ // U+1FBE: GREEK PROSGEGRAMMENI
+ // U+0399: GREEK CAPITAL LETTER IOTA
+ // U+03B9: GREEK SMALL LETTER IOTA
+ ["\u1FBE", "\u0399", "\u03B9"],
+ ];
+
+for (var [code1, upper, code2] of pairs) {
+ assertEq(new RegExp(code1, "i").test(code2), true);
+ assertEq(new RegExp(code1, "i").test(upper), true);
+ assertEq(new RegExp(upper, "i").test(code1), true);
+ assertEq(new RegExp(upper, "i").test(code2), true);
+ assertEq(new RegExp(code2, "i").test(code1), true);
+ assertEq(new RegExp(code2, "i").test(upper), true);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/lastIndex-nonwritable.js b/js/src/tests/ecma_6/RegExp/lastIndex-nonwritable.js
new file mode 100644
index 000000000..3c867f953
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/lastIndex-nonwritable.js
@@ -0,0 +1,27 @@
+var BUGNUMBER = 1168416;
+var summary = "Regexp.prototype.test/exec shouldn't change lastIndex if not writable.";
+
+print(BUGNUMBER + ": " + summary);
+
+var regex = /0/g;
+Object.freeze(regex);
+var str = "abc000";
+
+var desc = Object.getOwnPropertyDescriptor(regex, "lastIndex");
+assertEq(desc.writable, false);
+assertEq(desc.value, 0);
+
+assertThrowsInstanceOf(() => regex.test(str), TypeError);
+
+desc = Object.getOwnPropertyDescriptor(regex, "lastIndex");
+assertEq(desc.writable, false);
+assertEq(desc.value, 0);
+
+assertThrowsInstanceOf(() => regex.exec(str), TypeError);
+
+desc = Object.getOwnPropertyDescriptor(regex, "lastIndex");
+assertEq(desc.writable, false);
+assertEq(desc.value, 0);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/match-this.js b/js/src/tests/ecma_6/RegExp/match-this.js
new file mode 100644
index 000000000..ee05462f2
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/match-this.js
@@ -0,0 +1,12 @@
+var BUGNUMBER = 887016;
+var summary = "RegExp.prototype[@@match] should check this value.";
+
+print(BUGNUMBER + ": " + summary);
+
+for (var v of [null, 1, true, undefined, "", Symbol.iterator]) {
+ assertThrowsInstanceOf(() => RegExp.prototype[Symbol.match].call(v),
+ TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/match-trace.js b/js/src/tests/ecma_6/RegExp/match-trace.js
new file mode 100644
index 000000000..3216db641
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/match-trace.js
@@ -0,0 +1,147 @@
+var BUGNUMBER = 887016;
+var summary = "Trace RegExp.prototype[@@match] behavior.";
+
+print(BUGNUMBER + ": " + summary);
+
+var n;
+var log;
+var target;
+var global;
+var unicode;
+var logProxy;
+
+var execResult;
+var lastIndexResult;
+var lastIndexExpected;
+
+function P(A) {
+ return new Proxy(A, {
+ get(that, name) {
+ if (logProxy)
+ log += "get:result[" + name + "],";
+ return that[name];
+ }
+ });
+}
+
+var myRegExp = {
+ get global() {
+ log += "get:global,";
+ return global;
+ },
+ get lastIndex() {
+ log += "get:lastIndex,";
+ return lastIndexResult[n];
+ },
+ set lastIndex(v) {
+ log += "set:lastIndex,";
+ assertEq(v, lastIndexExpected[n]);
+ },
+ get unicode() {
+ log += "get:unicode,";
+ return unicode;
+ },
+ get exec() {
+ log += "get:exec,";
+ return function(S) {
+ log += "call:exec,";
+ assertEq(S, target);
+ return execResult[n++];
+ };
+ },
+};
+
+function reset() {
+ n = 0;
+ log = "";
+ target = "abcAbcABC";
+ global = true;
+ unicode = false;
+ logProxy = true;
+}
+
+// Trace global with non-empty match.
+reset();
+execResult = [ P(["abc"]), P(["ABC"]), null ];
+lastIndexResult = [ , , , ];
+lastIndexExpected = [ 0, , , ];
+var ret = RegExp.prototype[Symbol.match].call(myRegExp, target);
+assertEq(JSON.stringify(ret), `["abc","ABC"]`);
+assertEq(log,
+ "get:global," +
+ "get:unicode," +
+ "set:lastIndex," +
+ "get:exec,call:exec,get:result[0]," +
+ "get:exec,call:exec,get:result[0]," +
+ "get:exec,call:exec,");
+
+// Trace global with empty match.
+reset();
+execResult = [ P([""]), P([""]), null ];
+lastIndexResult = [ , 4, 20, ];
+lastIndexExpected = [ 0, 5, 21, ];
+ret = RegExp.prototype[Symbol.match].call(myRegExp, target);
+assertEq(JSON.stringify(ret), `["",""]`);
+assertEq(log,
+ "get:global," +
+ "get:unicode," +
+ "set:lastIndex," +
+ "get:exec,call:exec,get:result[0],get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec,get:result[0],get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec,");
+
+// Trace global and unicode with empty match.
+// 1. not surrogate pair
+// 2. lead surrogate pair
+// 3. trail surrogate pair
+// 4. lead surrogate pair without trail surrogate pair
+// 5. index overflow
+reset();
+unicode = true;
+// 0123 4 5678
+target = "___\uD83D\uDC38___\uD83D";
+execResult = [ P([""]), P([""]), P([""]), P([""]), P([""]), null ];
+lastIndexResult = [ , 2, 3, 4, 8, 9, ];
+lastIndexExpected = [ 0, 3, 5, 5, 9, 10, ];
+ret = RegExp.prototype[Symbol.match].call(myRegExp, target);
+assertEq(JSON.stringify(ret), `["","","","",""]`);
+assertEq(log,
+ "get:global," +
+ "get:unicode," +
+ "set:lastIndex," +
+ "get:exec,call:exec,get:result[0],get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec,get:result[0],get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec,get:result[0],get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec,get:result[0],get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec,get:result[0],get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec,");
+
+// Trace global with no match.
+reset();
+execResult = [ null ];
+lastIndexResult = [ , ];
+lastIndexExpected = [ 0, ];
+ret = RegExp.prototype[Symbol.match].call(myRegExp, target);
+assertEq(ret, null);
+assertEq(log,
+ "get:global," +
+ "get:unicode," +
+ "set:lastIndex," +
+ "get:exec,call:exec,");
+
+// Trace non-global.
+reset();
+global = false;
+execResult = [ P(["abc"]) ];
+lastIndexResult = [];
+lastIndexExpected = [];
+ret = RegExp.prototype[Symbol.match].call(myRegExp, target);
+// ret is the Proxy on non-global case, disable logging.
+logProxy = false;
+assertEq(JSON.stringify(ret), `["abc"]`);
+assertEq(log,
+ "get:global," +
+ "get:exec,call:exec,");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/match.js b/js/src/tests/ecma_6/RegExp/match.js
new file mode 100644
index 000000000..06308b2d6
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/match.js
@@ -0,0 +1,36 @@
+var BUGNUMBER = 887016;
+var summary = "Implement RegExp.prototype[@@match].";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(RegExp.prototype[Symbol.match].name, "[Symbol.match]");
+assertEq(RegExp.prototype[Symbol.match].length, 1);
+var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, Symbol.match);
+assertEq(desc.configurable, true);
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, true);
+
+var re = /a/;
+var v = re[Symbol.match]("abcAbcABC");
+assertEq(Array.isArray(v), true);
+assertEq(v.length, 1);
+assertEq(v[0], "a");
+
+re = /d/;
+v = re[Symbol.match]("abcAbcABC");
+assertEq(v, null);
+
+re = /a/ig;
+v = re[Symbol.match]("abcAbcABC");
+assertEq(Array.isArray(v), true);
+assertEq(v.length, 3);
+assertEq(v[0], "a");
+assertEq(v[1], "A");
+assertEq(v[2], "A");
+
+re = /d/g;
+v = re[Symbol.match]("abcAbcABC");
+assertEq(v, null);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/replace-compile.js b/js/src/tests/ecma_6/RegExp/replace-compile.js
new file mode 100644
index 000000000..45359037a
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/replace-compile.js
@@ -0,0 +1,21 @@
+var BUGNUMBER = 1287524;
+var summary = 'RegExp.prototype[@@replace] should call replacer function after collecting all matches.';
+
+print(BUGNUMBER + ": " + summary);
+
+var rx = RegExp("a", "g");
+var r = rx[Symbol.replace]("abba", function() {
+ rx.compile("b", "g");
+ return "?";
+});
+assertEq(r, "?bb?");
+
+rx = RegExp("a", "g");
+r = "abba".replace(rx, function() {
+ rx.compile("b", "g");
+ return "?";
+});
+assertEq(r, "?bb?");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/replace-global-unicode.js b/js/src/tests/ecma_6/RegExp/replace-global-unicode.js
new file mode 100644
index 000000000..80b3ea199
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/replace-global-unicode.js
@@ -0,0 +1,18 @@
+var BUGNUMBER = 1287524;
+var summary = 'RegExp.prototype[@@replace] should not use optimized path if RegExp.prototype.unicode is modified.';
+
+print(BUGNUMBER + ": " + summary);
+
+Object.defineProperty(RegExp.prototype, "unicode", {
+ get() {
+ RegExp.prototype.exec = () => null;
+ }
+});
+
+var rx = RegExp("a", "g");
+var s = "abba";
+var r = rx[Symbol.replace](s, "c");
+assertEq(r, "abba");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/replace-sticky-lastIndex.js b/js/src/tests/ecma_6/RegExp/replace-sticky-lastIndex.js
new file mode 100644
index 000000000..2500b2c42
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/replace-sticky-lastIndex.js
@@ -0,0 +1,23 @@
+var BUGNUMBER = 887016;
+var summary = "String.prototype.replace should do nothing if lastIndex is invalid for sticky RegExp";
+
+print(BUGNUMBER + ": " + summary);
+
+var re = /a/y;
+re.lastIndex = -1;
+assertEq("a".replace(re, "b"), "b");
+re.lastIndex = 0;
+assertEq("a".replace(re, "b"), "b");
+re.lastIndex = 1;
+assertEq("a".replace(re, "b"), "a");
+re.lastIndex = 2;
+assertEq("a".replace(re, "b"), "a");
+re.lastIndex = "foo";
+assertEq("a".replace(re, "b"), "b");
+re.lastIndex = "1";
+assertEq("a".replace(re, "b"), "a");
+re.lastIndex = {};
+assertEq("a".replace(re, "b"), "b");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/replace-sticky.js b/js/src/tests/ecma_6/RegExp/replace-sticky.js
new file mode 100644
index 000000000..32a6e2aee
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/replace-sticky.js
@@ -0,0 +1,21 @@
+var BUGNUMBER = 887016;
+var summary = "String.prototype.replace should use and update lastIndex if sticky flag is set";
+
+print(BUGNUMBER + ": " + summary);
+
+var input = "abcdeabcdeabcdefghij";
+var re = new RegExp("abcde", "y");
+re.test(input);
+assertEq(re.lastIndex, 5);
+var ret = input.replace(re, "ABCDE");
+assertEq(ret, "abcdeABCDEabcdefghij");
+assertEq(re.lastIndex, 10);
+ret = input.replace(re, "ABCDE");
+assertEq(ret, "abcdeabcdeABCDEfghij");
+assertEq(re.lastIndex, 15);
+ret = input.replace(re, "ABCDE");
+assertEq(ret, "abcdeabcdeabcdefghij");
+assertEq(re.lastIndex, 0);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/replace-this.js b/js/src/tests/ecma_6/RegExp/replace-this.js
new file mode 100644
index 000000000..499304f9c
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/replace-this.js
@@ -0,0 +1,12 @@
+var BUGNUMBER = 887016;
+var summary = "RegExp.prototype[@@replace] should check |this| value.";
+
+print(BUGNUMBER + ": " + summary);
+
+for (var v of [null, 1, true, undefined, "", Symbol.iterator]) {
+ assertThrowsInstanceOf(() => RegExp.prototype[Symbol.replace].call(v),
+ TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/replace-trace.js b/js/src/tests/ecma_6/RegExp/replace-trace.js
new file mode 100644
index 000000000..73e623563
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/replace-trace.js
@@ -0,0 +1,309 @@
+var BUGNUMBER = 887016;
+var summary = "Trace RegExp.prototype[@@replace] behavior.";
+
+print(BUGNUMBER + ": " + summary);
+
+var n;
+var log;
+var target;
+var global;
+var unicode;
+
+var execResult;
+var lastIndexResult;
+var lastIndexExpected;
+
+var arraySetterObserved = false;
+function startObserve() {
+ for (var i = 0; i < 10; i++) {
+ Object.defineProperty(Array.prototype, i, {
+ set: function(v) {
+ arraySetterObserved = true;
+ },
+ configurable: true,
+ });
+ }
+}
+function stopObserve() {
+ for (var i = 0; i < 10; i++)
+ delete Array.prototype[i]
+}
+
+startObserve();
+
+function P(A, index, matched2) {
+ var i = 0;
+ A.index = index;
+ return new Proxy(A, {
+ get(that, name) {
+ log += "get:result[" + name + "],";
+
+ // Return a different value for 2nd access to result[0].
+ if (matched2 !== undefined && name == 0) {
+ if (i == 1) {
+ return matched2;
+ }
+ i++;
+ }
+
+ return that[name];
+ }
+ });
+}
+
+var myRegExp = {
+ get global() {
+ log += "get:global,";
+ return global;
+ },
+ get lastIndex() {
+ log += "get:lastIndex,";
+ return lastIndexResult[n];
+ },
+ set lastIndex(v) {
+ log += "set:lastIndex,";
+ assertEq(v, lastIndexExpected[n]);
+ },
+ get unicode() {
+ log += "get:unicode,";
+ return unicode;
+ },
+ get exec() {
+ log += "get:exec,";
+ return function(S) {
+ log += "call:exec,";
+ assertEq(S, target);
+ return execResult[n++];
+ };
+ },
+};
+
+function reset() {
+ n = 0;
+ log = "";
+ target = "abcAbcABC";
+ global = true;
+ unicode = false;
+ arraySetterObserved = false;
+}
+
+// Trace global with non-empty match.
+reset();
+execResult = [ P(["bc"], 1), null ];
+lastIndexResult = [ , , ];
+lastIndexExpected = [ 0, , ];
+var ret = RegExp.prototype[Symbol.replace].call(myRegExp, target, "_XYZ_");
+assertEq(arraySetterObserved, false);
+assertEq(ret, "a_XYZ_AbcABC");
+assertEq(log,
+ "get:global," +
+ "get:unicode," +
+ "set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:exec,call:exec," +
+ "get:result[length],get:result[0],get:result[index],");
+
+// Trace global with empty match.
+reset();
+execResult = [ P([""], 1), null ];
+lastIndexResult = [ , 5, ];
+lastIndexExpected = [ 0, 6, ];
+ret = RegExp.prototype[Symbol.replace].call(myRegExp, target, "_XYZ_");
+assertEq(arraySetterObserved, false);
+assertEq(ret, "a_XYZ_bcAbcABC");
+assertEq(log,
+ "get:global," +
+ "get:unicode," +
+ "set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[length],get:result[0],get:result[index],");
+
+// Trace global and unicode with empty match.
+// 1. not surrogate pair
+// 2. lead surrogate pair
+// 3. trail surrogate pair
+// 4. lead surrogate pair without trail surrogate pair
+// 5. index overflow
+reset();
+unicode = true;
+// 0123 4 5678
+target = "---\uD83D\uDC38---\uD83D";
+execResult = [ P([""], 1), P([""], 2), P([""], 3), P([""], 4), P([""], 5), null ];
+lastIndexResult = [ , 2, 3, 4, 8, 9, ];
+lastIndexExpected = [ 0, 3, 5, 5, 9, 10, ];
+ret = RegExp.prototype[Symbol.replace].call(myRegExp, target, "_XYZ_");
+assertEq(arraySetterObserved, false);
+assertEq(ret, "-_XYZ_-_XYZ_-_XYZ_\uD83D_XYZ_\uDC38_XYZ_---\uD83D");
+assertEq(log,
+ "get:global," +
+ "get:unicode," +
+ "set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[length],get:result[0],get:result[index]," +
+ "get:result[length],get:result[0],get:result[index]," +
+ "get:result[length],get:result[0],get:result[index]," +
+ "get:result[length],get:result[0],get:result[index]," +
+ "get:result[length],get:result[0],get:result[index],");
+
+// Trace global with captures and substitutions.
+reset();
+execResult = [ P(["bc", "b", "c"], 1), null ];
+lastIndexResult = [ , , ];
+lastIndexExpected = [ 0, , ];
+ret = RegExp.prototype[Symbol.replace].call(myRegExp, target, "[$&,$`,$',$1,$2,$3,$]");
+assertEq(arraySetterObserved, false);
+assertEq(ret, "a[bc,a,AbcABC,b,c,$3,$]AbcABC");
+assertEq(log,
+ "get:global," +
+ "get:unicode," +
+ "set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:exec,call:exec," +
+ "get:result[length],get:result[0],get:result[index]," +
+ "get:result[1],get:result[2],");
+
+// Trace global with empty match and captures and substitutions,
+// with different matched.
+reset();
+execResult = [ P(["", "b", "c"], 1, "BC"), null ];
+lastIndexResult = [ , 5, ];
+lastIndexExpected = [ 0, 6, ];
+ret = RegExp.prototype[Symbol.replace].call(myRegExp, target, "[$&,$`,$',$1,$2,$3,$]");
+assertEq(arraySetterObserved, false);
+assertEq(ret, "a[BC,a,AbcABC,b,c,$3,$]AbcABC");
+assertEq(log,
+ "get:global," +
+ "get:unicode," +
+ "set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[length],get:result[0],get:result[index]," +
+ "get:result[1],get:result[2],");
+
+// Trace global with empty match and captures and function,
+// with different matched.
+reset();
+execResult = [ P(["", "b", "c"], 1, "BC"), null ];
+lastIndexResult = [ , 5, ];
+lastIndexExpected = [ 0, 6, ];
+function replaceFunc(...args) {
+ log += "call:replaceFunc,";
+ assertEq(args.length, 5);
+ assertEq(args[0], "BC");
+ assertEq(args[1], "b");
+ assertEq(args[2], "c");
+ assertEq(args[3], 1);
+ assertEq(args[4], target);
+ return "_ret_";
+}
+// This also tests RegExpStatics save/restore with no match.
+ret = RegExp.prototype[Symbol.replace].call(myRegExp, target, replaceFunc);
+assertEq(arraySetterObserved, false);
+assertEq(ret, "a_ret_AbcABC");
+assertEq(log,
+ "get:global," +
+ "get:unicode," +
+ "set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:lastIndex,set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[length],get:result[0],get:result[index]," +
+ "get:result[1],get:result[2]," +
+ "call:replaceFunc,");
+
+// Trace global with non-empty match, move backwards.
+// 2nd match shouldn't be replaced.
+reset();
+execResult = [ P(["X"], 5), P(["YZ"], 1), null ];
+lastIndexResult = [ , , , ];
+lastIndexExpected = [ 0, , , ];
+ret = RegExp.prototype[Symbol.replace].call(myRegExp, target, "_XYZ_");
+assertEq(arraySetterObserved, false);
+assertEq(ret, "abcAb_XYZ_ABC");
+assertEq(log,
+ "get:global," +
+ "get:unicode," +
+ "set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:exec,call:exec," +
+ "get:result[length],get:result[0],get:result[index]," +
+ "get:result[length],get:result[0],get:result[index],");
+
+// Trace global with non-empty match, position + matchLength overflows.
+reset();
+execResult = [ P(["fooooooo"], 7), null ];
+lastIndexResult = [ , , ];
+lastIndexExpected = [ 0, , ];
+ret = RegExp.prototype[Symbol.replace].call(myRegExp, target, "_XYZ_");
+assertEq(arraySetterObserved, false);
+assertEq(ret, "abcAbcA_XYZ_");
+assertEq(log,
+ "get:global," +
+ "get:unicode," +
+ "set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:exec,call:exec," +
+ "get:result[length],get:result[0],get:result[index],");
+
+// Trace global with non-empty match, position overflows.
+reset();
+execResult = [ P(["fooooooo"], 12), null ];
+lastIndexResult = [ , , ];
+lastIndexExpected = [ 0, , ];
+ret = RegExp.prototype[Symbol.replace].call(myRegExp, target, "_XYZ_");
+assertEq(arraySetterObserved, false);
+assertEq(ret, "abcAbcABC_XYZ_");
+assertEq(log,
+ "get:global," +
+ "get:unicode," +
+ "set:lastIndex," +
+ "get:exec,call:exec," +
+ "get:result[0]," +
+ "get:exec,call:exec," +
+ "get:result[length],get:result[0],get:result[index],");
+
+// Trace non-global.
+reset();
+global = false;
+execResult = [ P(["bc"], 1) ];
+lastIndexResult = [ , , ];
+lastIndexExpected = [ 0, , ];
+ret = RegExp.prototype[Symbol.replace].call(myRegExp, target, "_XYZ_");
+assertEq(arraySetterObserved, false);
+assertEq(ret, "a_XYZ_AbcABC");
+assertEq(log,
+ "get:global," +
+ "get:exec,call:exec," +
+ "get:result[length],get:result[0],get:result[index],");
+
+stopObserve();
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/replace-twoBytes.js b/js/src/tests/ecma_6/RegExp/replace-twoBytes.js
new file mode 100644
index 000000000..660677c9f
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/replace-twoBytes.js
@@ -0,0 +1,44 @@
+var BUGNUMBER = 1269719;
+var summary = "RegExp.prototype[@@replace] should check latin1/twoBytes for all strings used in relate operation.";
+
+print(BUGNUMBER + ": " + summary);
+
+var ans = [
+ "[AB$2$3$]",
+ "[AB$2$3$]\u3048",
+ "[AB$2$3$]",
+ "[AB$2$3$]\u3048",
+ "[A\u3044$2$3$]",
+ "[A\u3044$2$3$]\u3048",
+ "[A\u3044$2$3$]",
+ "[A\u3044$2$3$]\u3048",
+ "[\u3042B$2$3$]",
+ "[\u3042B$2$3$]\u3048",
+ "[\u3042B$2$3$]",
+ "[\u3042B$2$3$]\u3048",
+ "[\u3042\u3044$2$3$]",
+ "[\u3042\u3044$2$3$]\u3048",
+ "[\u3042\u3044$2$3$]",
+ "[\u3042\u3044$2$3$]\u3048",
+];
+var i = 0;
+for (var matched of ["A", "\u3042"]) {
+ for (var group1 of ["B", "\u3044"]) {
+ for (var string of ["C", "\u3046"]) {
+ for (var replacement of ["[$&$`$'$1$2$3$]", "[$&$`$'$1$2$3$]\u3048"]) {
+ var myRegExp = {
+ get exec() {
+ return function() {
+ return [matched, group1];
+ };
+ }
+ };
+ assertEq(RegExp.prototype[Symbol.replace].call(myRegExp, string, replacement), ans[i]);
+ i++;
+ }
+ }
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/replace.js b/js/src/tests/ecma_6/RegExp/replace.js
new file mode 100644
index 000000000..43522ab55
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/replace.js
@@ -0,0 +1,34 @@
+var BUGNUMBER = 887016;
+var summary = "Implement RegExp.prototype[@@replace].";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(RegExp.prototype[Symbol.replace].name, "[Symbol.replace]");
+assertEq(RegExp.prototype[Symbol.replace].length, 2);
+var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, Symbol.replace);
+assertEq(desc.configurable, true);
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, true);
+
+var re = /a/;
+var v = re[Symbol.replace]("abcAbcABC", "X");
+assertEq(v, "XbcAbcABC");
+
+re = /d/;
+v = re[Symbol.replace]("abcAbcABC", "X");
+assertEq(v, "abcAbcABC");
+
+re = /a/ig;
+v = re[Symbol.replace]("abcAbcABC", "X");
+assertEq(v, "XbcXbcXBC");
+
+re = /(a)(b)(cd)/;
+v = re[Symbol.replace]("012abcd345", "_$$_$&_$`_$'_$0_$1_$2_$3_$4_$+_$");
+assertEq(v, "012_$_abcd_012_345_$0_a_b_cd_$4_cd_$345");
+
+re = /(a)(b)(cd)/;
+v = re[Symbol.replace]("012abcd345", "_\u3042_$$_$&_$`_$'_$0_$1_$2_$3_$4_$+_$");
+assertEq(v, "012_\u3042_$_abcd_012_345_$0_a_b_cd_$4_cd_$345");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/search-this.js b/js/src/tests/ecma_6/RegExp/search-this.js
new file mode 100644
index 000000000..731f5480f
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/search-this.js
@@ -0,0 +1,12 @@
+var BUGNUMBER = 887016;
+var summary = "RegExp.prototype[@@search] should check this value.";
+
+print(BUGNUMBER + ": " + summary);
+
+for (var v of [null, 1, true, undefined, "", Symbol.iterator]) {
+ assertThrowsInstanceOf(() => RegExp.prototype[Symbol.search].call(v),
+ TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/search-trace.js b/js/src/tests/ecma_6/RegExp/search-trace.js
new file mode 100644
index 000000000..ef14514c6
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/search-trace.js
@@ -0,0 +1,76 @@
+var BUGNUMBER = 887016;
+var summary = "Trace RegExp.prototype[@@search] behavior.";
+
+print(BUGNUMBER + ": " + summary);
+
+var n;
+var log;
+var target;
+
+var execResult;
+var lastIndexResult;
+var lastIndexExpected;
+
+function P(index) {
+ return new Proxy({ index }, {
+ get(that, name) {
+ log += "get:result[" + name + "],";
+ return that[name];
+ }
+ });
+}
+
+var myRegExp = {
+ get lastIndex() {
+ log += "get:lastIndex,";
+ return lastIndexResult[n];
+ },
+ set lastIndex(v) {
+ log += "set:lastIndex,";
+ assertEq(v, lastIndexExpected[n]);
+ },
+ get exec() {
+ log += "get:exec,";
+ return function(S) {
+ log += "call:exec,";
+ assertEq(S, target);
+ return execResult[n++];
+ };
+ },
+};
+
+function reset() {
+ n = 0;
+ log = "";
+ target = "abcAbcABC";
+}
+
+// Trace hit.
+reset();
+execResult = [ P(16) ];
+lastIndexResult = [ 10, , ];
+lastIndexExpected = [ 0, 10 ];
+var ret = RegExp.prototype[Symbol.search].call(myRegExp, target);
+assertEq(ret, 16);
+assertEq(log,
+ "get:lastIndex," +
+ "set:lastIndex," +
+ "get:exec,call:exec," +
+ "set:lastIndex," +
+ "get:result[index],");
+
+// Trace not hit.
+reset();
+execResult = [ null ];
+lastIndexResult = [ 10, , ];
+lastIndexExpected = [ 0, 10 ];
+ret = RegExp.prototype[Symbol.search].call(myRegExp, target);
+assertEq(ret, -1);
+assertEq(log,
+ "get:lastIndex," +
+ "set:lastIndex," +
+ "get:exec,call:exec," +
+ "set:lastIndex,");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/search.js b/js/src/tests/ecma_6/RegExp/search.js
new file mode 100644
index 000000000..0875ee47e
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/search.js
@@ -0,0 +1,26 @@
+var BUGNUMBER = 887016;
+var summary = "Implement RegExp.prototype[@@search].";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(RegExp.prototype[Symbol.search].name, "[Symbol.search]");
+assertEq(RegExp.prototype[Symbol.search].length, 1);
+var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, Symbol.search);
+assertEq(desc.configurable, true);
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, true);
+
+var re = /B/;
+var v = re[Symbol.search]("abcAbcABC");
+assertEq(v, 7);
+
+re = /B/i;
+v = re[Symbol.search]("abcAbcABCD");
+assertEq(v, 1);
+
+re = /d/;
+v = re[Symbol.search]("abcAbcABCD");
+assertEq(v, -1);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/shell.js b/js/src/tests/ecma_6/RegExp/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/shell.js
diff --git a/js/src/tests/ecma_6/RegExp/source.js b/js/src/tests/ecma_6/RegExp/source.js
new file mode 100644
index 000000000..354a9d19d
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/source.js
@@ -0,0 +1,29 @@
+var BUGNUMBER = 1120169;
+var summary = "Implement RegExp.prototype.source";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(RegExp.prototype.source, "(?:)");
+assertEq(/foo/.source, "foo");
+assertEq(/foo/iymg.source, "foo");
+assertEq(/\//.source, "\\/");
+assertEq(/\n\r/.source, "\\n\\r");
+assertEq(/\u2028\u2029/.source, "\\u2028\\u2029");
+assertEq(RegExp("").source, "(?:)");
+assertEq(RegExp("", "mygi").source, "(?:)");
+assertEq(RegExp("/").source, "\\/");
+assertEq(RegExp("\n\r").source, "\\n\\r");
+assertEq(RegExp("\u2028\u2029").source, "\\u2028\\u2029");
+
+assertThrowsInstanceOf(() => genericSource(), TypeError);
+assertThrowsInstanceOf(() => genericSource(1), TypeError);
+assertThrowsInstanceOf(() => genericSource(""), TypeError);
+assertThrowsInstanceOf(() => genericSource({}), TypeError);
+assertThrowsInstanceOf(() => genericSource(new Proxy(/foo/, {get(){ return true; }})), TypeError);
+
+function genericSource(obj) {
+ return Object.getOwnPropertyDescriptor(RegExp.prototype, "source").get.call(obj);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/split-deleted-flags.js b/js/src/tests/ecma_6/RegExp/split-deleted-flags.js
new file mode 100644
index 000000000..d2ccc852d
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/split-deleted-flags.js
@@ -0,0 +1,11 @@
+var BUGNUMBER = 1322319;
+var summary = "RegExp.prototype.split should throw if RegRxp.prototype.flags is deleted."
+
+print(BUGNUMBER + ": " + summary);
+
+delete RegExp.prototype.flags;
+
+assertThrowsInstanceOf(() => "aaaaa".split(/a/), SyntaxError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/split-flags-on-obj.js b/js/src/tests/ecma_6/RegExp/split-flags-on-obj.js
new file mode 100644
index 000000000..8c68efed5
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/split-flags-on-obj.js
@@ -0,0 +1,21 @@
+var BUGNUMBER = 0;
+var summary = "RegExp.prototype.split should reflect the change to Object.prototype.flags.";
+
+print(BUGNUMBER + ": " + summary);
+
+Object.defineProperty(Object.prototype, "flags", Object.getOwnPropertyDescriptor(RegExp.prototype, "flags"));
+delete RegExp.prototype.flags;
+
+let re = /a/i;
+let a = re[Symbol.split]("1a2A3a4A5");
+assertDeepEq(a, ["1", "2", "3", "4", "5"]);
+
+delete Object.prototype.flags;
+
+Object.prototype.flags = "";
+
+a = re[Symbol.split]("1a2A3a4A5");
+assertDeepEq(a, ["1", "2A3", "4A5"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/split-invalid-lastIndex.js b/js/src/tests/ecma_6/RegExp/split-invalid-lastIndex.js
new file mode 100644
index 000000000..3def559ad
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/split-invalid-lastIndex.js
@@ -0,0 +1,31 @@
+var BUGNUMBER = 1263851;
+var summary = "RegExp.prototype[@@split] should handle if lastIndex is out of bound.";
+
+print(BUGNUMBER + ": " + summary);
+
+var myRegExp = {
+ get constructor() {
+ return {
+ get [Symbol.species]() {
+ return function() {
+ return {
+ get lastIndex() {
+ return 9;
+ },
+ set lastIndex(v) {},
+ exec() {
+ return [];
+ }
+ };
+ };
+ }
+ };
+ }
+};
+var result = RegExp.prototype[Symbol.split].call(myRegExp, "abcde");;
+assertEq(result.length, 2);
+assertEq(result[0], "");
+assertEq(result[1], "");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/split-limit.js b/js/src/tests/ecma_6/RegExp/split-limit.js
new file mode 100644
index 000000000..5fa194b90
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/split-limit.js
@@ -0,0 +1,14 @@
+var BUGNUMBER = 1287525;
+var summary = "RegExp.prototype[@@split] shouldn't use optimized path if limit is not number.";
+
+print(BUGNUMBER + ": " + summary);
+
+var rx = /a/;
+var r = rx[Symbol.split]("abba", {valueOf() {
+ RegExp.prototype.exec = () => null;
+ return 100;
+}});
+assertEq(r.length, 1);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/split-obj.js b/js/src/tests/ecma_6/RegExp/split-obj.js
new file mode 100644
index 000000000..75c09f38d
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/split-obj.js
@@ -0,0 +1,12 @@
+var BUGNUMBER = 887016;
+var summary = "RegExp.prototype[@@split] should check if this value is RegExp.";
+
+print(BUGNUMBER + ": " + summary);
+
+var obj = { flags: "", toString: () => "-" };
+assertDeepEq(RegExp.prototype[Symbol.split].call(obj, "a-b-c"),
+ ["a", "b", "c"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
diff --git a/js/src/tests/ecma_6/RegExp/split-prop-access.js b/js/src/tests/ecma_6/RegExp/split-prop-access.js
new file mode 100644
index 000000000..73c5bebb3
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/split-prop-access.js
@@ -0,0 +1,19 @@
+var BUGNUMBER = 1287525;
+var summary = 'String.prototype.split should call ToUint32(limit) before ToString(separator).';
+
+print(BUGNUMBER + ": " + summary);
+
+var accessed = false;
+
+var rx = /a/;
+Object.defineProperty(rx, Symbol.match, {
+ get() {
+ accessed = true;
+ }
+});
+rx[Symbol.split]("abba");
+
+assertEq(accessed, true);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/split-this.js b/js/src/tests/ecma_6/RegExp/split-this.js
new file mode 100644
index 000000000..ece29fe8a
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/split-this.js
@@ -0,0 +1,12 @@
+var BUGNUMBER = 887016;
+var summary = "RegExp.prototype[@@split] should check this value.";
+
+print(BUGNUMBER + ": " + summary);
+
+for (var v of [null, 1, true, undefined, "", Symbol.iterator]) {
+ assertThrowsInstanceOf(() => RegExp.prototype[Symbol.split].call(v),
+ TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/split-trace.js b/js/src/tests/ecma_6/RegExp/split-trace.js
new file mode 100644
index 000000000..ce6e410d9
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/split-trace.js
@@ -0,0 +1,229 @@
+var BUGNUMBER = 887016;
+var summary = "Trace RegExp.prototype[@@split] behavior.";
+
+print(BUGNUMBER + ": " + summary);
+
+var n;
+var log;
+var target;
+var flags;
+var expectedFlags;
+
+var execResult;
+var lastIndexResult;
+var lastIndexExpected;
+
+var arraySetterObserved = false;
+function startObserve() {
+ for (var i = 0; i < 10; i++) {
+ Object.defineProperty(Array.prototype, i, {
+ set: function(v) {
+ arraySetterObserved = true;
+ },
+ configurable: true,
+ });
+ }
+}
+function stopObserve() {
+ for (var i = 0; i < 10; i++)
+ delete Array.prototype[i]
+}
+
+startObserve();
+
+function P(A) {
+ return new Proxy(A, {
+ get(that, name) {
+ log += "get:result[" + name + "],";
+ return that[name];
+ }
+ });
+}
+
+var myRegExp = {
+ get constructor() {
+ log += "get:constructor,";
+ return {
+ get [Symbol.species]() {
+ log += "get:species,";
+ return function(pattern, flags) {
+ assertEq(pattern, myRegExp);
+ assertEq(flags, expectedFlags);
+ log += "call:constructor,";
+ return {
+ get lastIndex() {
+ log += "get:lastIndex,";
+ return lastIndexResult[n];
+ },
+ set lastIndex(v) {
+ log += "set:lastIndex,";
+ assertEq(v, lastIndexExpected[n]);
+ },
+ get flags() {
+ log += "get:flags,";
+ return flags;
+ },
+ get exec() {
+ log += "get:exec,";
+ return function(S) {
+ log += "call:exec,";
+ assertEq(S, target);
+ return execResult[n++];
+ };
+ },
+ };
+ };
+ }
+ };
+ },
+ get flags() {
+ log += "get:flags,";
+ return flags;
+ },
+};
+
+function reset() {
+ n = 0;
+ log = "";
+ target = "abcde";
+ flags = "";
+ expectedFlags = "y";
+ arraySetterObserved = false;
+}
+
+// Trace match and no match.
+reset();
+execResult = [ null, P(["b"]), null, P(["d"]), null ];
+lastIndexResult = [ , , 2, , 4, , ];
+lastIndexExpected = [ 0, 1, 2, 3, 4, ];
+var ret = RegExp.prototype[Symbol.split].call(myRegExp, target);
+assertEq(arraySetterObserved, false);
+assertEq(JSON.stringify(ret), `["a","c","e"]`);
+assertEq(log,
+ "get:constructor," +
+ "get:species," +
+ "get:flags," +
+ "call:constructor," +
+ "set:lastIndex,get:exec,call:exec," +
+ "set:lastIndex,get:exec,call:exec,get:lastIndex," +
+ "get:result[length]," +
+ "set:lastIndex,get:exec,call:exec," +
+ "set:lastIndex,get:exec,call:exec,get:lastIndex," +
+ "get:result[length]," +
+ "set:lastIndex,get:exec,call:exec,");
+
+// Trace non-empty flags, empty target, no match.
+reset();
+flags = "iy";
+expectedFlags = "iy";
+target = "";
+execResult = [ null ];
+lastIndexResult = [];
+lastIndexExpected = [];
+ret = RegExp.prototype[Symbol.split].call(myRegExp, target);
+assertEq(arraySetterObserved, false);
+assertEq(JSON.stringify(ret), `[""]`);
+assertEq(log,
+ "get:constructor," +
+ "get:species," +
+ "get:flags," +
+ "call:constructor," +
+ "get:exec,call:exec,");
+
+// Trace empty target, match.
+reset();
+target = "";
+execResult = [ P([""]) ];
+lastIndexResult = [];
+lastIndexExpected = [];
+ret = RegExp.prototype[Symbol.split].call(myRegExp, target);
+assertEq(arraySetterObserved, false);
+assertEq(JSON.stringify(ret), `[]`);
+assertEq(log,
+ "get:constructor," +
+ "get:species," +
+ "get:flags," +
+ "call:constructor," +
+ "get:exec,call:exec,");
+
+// Trace captures.
+reset();
+target = "abc";
+execResult = [ null, P(["b", "X", "YZ"]), null ];
+lastIndexResult = [ , , 2, , ];
+lastIndexExpected = [ 0, 1, 2, ];
+ret = RegExp.prototype[Symbol.split].call(myRegExp, target);
+assertEq(arraySetterObserved, false);
+assertEq(JSON.stringify(ret), `["a","X","YZ","c"]`);
+assertEq(log,
+ "get:constructor," +
+ "get:species," +
+ "get:flags," +
+ "call:constructor," +
+ "set:lastIndex,get:exec,call:exec," +
+ "set:lastIndex,get:exec,call:exec,get:lastIndex," +
+ "get:result[length]," +
+ "get:result[1],get:result[2]," +
+ "set:lastIndex,get:exec,call:exec,");
+
+// Trace unicode.
+// 1. not surrogate pair
+// 2. lead surrogate pair
+// 3. trail surrogate pair
+// 4. lead surrogate pair without trail surrogate pair
+// 5. index overflow
+reset();
+flags = "u";
+expectedFlags = "uy";
+target = "-\uD83D\uDC38\uDC38\uD83D";
+execResult = [ null, null, null, null ];
+lastIndexResult = [ , , , , , ];
+lastIndexExpected = [ 0, 1, 3, 4, ];
+ret = RegExp.prototype[Symbol.split].call(myRegExp, target);
+assertEq(arraySetterObserved, false);
+assertEq(JSON.stringify(ret), `["-\uD83D\uDC38\uDC38\uD83D"]`);
+assertEq(log,
+ "get:constructor," +
+ "get:species," +
+ "get:flags," +
+ "call:constructor," +
+ "set:lastIndex,get:exec,call:exec," +
+ "set:lastIndex,get:exec,call:exec," +
+ "set:lastIndex,get:exec,call:exec," +
+ "set:lastIndex,get:exec,call:exec,");
+
+// Trace unicode, match, same position and different position.
+reset();
+flags = "u";
+expectedFlags = "uy";
+target = "-\uD83D\uDC38\uDC38\uD83D";
+var E = P(["", "X"]);
+execResult = [ E, E, E, E, E, E, E ];
+lastIndexResult = [ , 0, 1, 1, 3, 3, 4, 4 ];
+lastIndexExpected = [ 0, 1, 1, 3, 3, 4, 4, ];
+ret = RegExp.prototype[Symbol.split].call(myRegExp, target);
+assertEq(arraySetterObserved, false);
+assertEq(JSON.stringify(ret), `["-","X","\uD83D\uDC38","X","\uDC38","X","\uD83D"]`);
+assertEq(log,
+ "get:constructor," +
+ "get:species," +
+ "get:flags," +
+ "call:constructor," +
+ "set:lastIndex,get:exec,call:exec,get:lastIndex," +
+ "set:lastIndex,get:exec,call:exec,get:lastIndex," +
+ "get:result[length]," +
+ "get:result[1]," +
+ "set:lastIndex,get:exec,call:exec,get:lastIndex," +
+ "set:lastIndex,get:exec,call:exec,get:lastIndex," +
+ "get:result[length]," +
+ "get:result[1]," +
+ "set:lastIndex,get:exec,call:exec,get:lastIndex," +
+ "set:lastIndex,get:exec,call:exec,get:lastIndex," +
+ "get:result[length]," +
+ "get:result[1]," +
+ "set:lastIndex,get:exec,call:exec,get:lastIndex,");
+
+stopObserve();
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/split.js b/js/src/tests/ecma_6/RegExp/split.js
new file mode 100644
index 000000000..d7e28d791
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/split.js
@@ -0,0 +1,30 @@
+var BUGNUMBER = 887016;
+var summary = "Implement RegExp.prototype[@@split].";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(RegExp.prototype[Symbol.split].name, "[Symbol.split]");
+assertEq(RegExp.prototype[Symbol.split].length, 2);
+var desc = Object.getOwnPropertyDescriptor(RegExp.prototype, Symbol.split);
+assertEq(desc.configurable, true);
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, true);
+
+var re = /b/;
+var v = re[Symbol.split]("abcAbcABC");
+assertEq(JSON.stringify(v), `["a","cA","cABC"]`);
+
+re = /d/;
+v = re[Symbol.split]("abcAbcABC");
+assertEq(JSON.stringify(v), `["abcAbcABC"]`);
+
+re = /b/ig;
+v = re[Symbol.split]("abcAbcABC");
+assertEq(JSON.stringify(v), `["a","cA","cA","C"]`);
+
+re = /b/ig;
+v = re[Symbol.split]("abcAbcABC", 2);
+assertEq(JSON.stringify(v), `["a","cA"]`);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/sticky.js b/js/src/tests/ecma_6/RegExp/sticky.js
new file mode 100644
index 000000000..13a6debe9
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/sticky.js
@@ -0,0 +1,126 @@
+var BUGNUMBER = 773687;
+var summary = 'sticky flag should not break assertion behavior.';
+
+print(BUGNUMBER + ": " + summary);
+
+function test(re, text, expectations) {
+ // Sanity check for test data itself.
+ assertEq(expectations.length, text.length + 1);
+
+ for (var i = 0; i < expectations.length; i++) {
+ var result = expectations[i];
+
+ re.lastIndex = i;
+ var match = re.exec(text);
+ if (result === null) {
+ assertEq(re.lastIndex, 0);
+ assertEq(match, null);
+ } else {
+ assertEq(re.lastIndex, result.lastIndex);
+ assertEq(match !== null, true);
+ assertEq(match.length, result.matches.length);
+ for (var j = 0; j < result.matches.length; j++)
+ assertEq(match[j], result.matches[j]);
+ assertEq(match.index, result.index);
+ }
+ }
+}
+
+// simple text
+test(/bc/y, "abcabd", [
+ null,
+ { lastIndex: 3, matches: ["bc"], index: 1 },
+ null,
+ null,
+ null,
+ null,
+ null,
+]);
+
+// complex pattern
+test(/bc|c|d/y, "abcabd", [
+ null,
+ { lastIndex: 3, matches: ["bc"], index: 1 },
+ { lastIndex: 3, matches: ["c"], index: 2 },
+ null,
+ null,
+ { lastIndex: 6, matches: ["d"], index: 5 },
+ null,
+]);
+
+test(/.*(bc|c|d)/y, "abcabd", [
+ { lastIndex: 6, matches: ["abcabd", "d"], index: 0 },
+ { lastIndex: 6, matches: ["bcabd", "d"], index: 1 },
+ { lastIndex: 6, matches: ["cabd", "d"], index: 2 },
+ { lastIndex: 6, matches: ["abd", "d"], index: 3 },
+ { lastIndex: 6, matches: ["bd", "d"], index: 4 },
+ { lastIndex: 6, matches: ["d", "d"], index: 5 },
+ null,
+]);
+
+test(/.*?(bc|c|d)/y, "abcabd", [
+ { lastIndex: 3, matches: ["abc", "bc"], index: 0 },
+ { lastIndex: 3, matches: ["bc", "bc"], index: 1 },
+ { lastIndex: 3, matches: ["c", "c"], index: 2 },
+ { lastIndex: 6, matches: ["abd", "d"], index: 3 },
+ { lastIndex: 6, matches: ["bd", "d"], index: 4 },
+ { lastIndex: 6, matches: ["d", "d"], index: 5 },
+ null,
+]);
+
+test(/(bc|.*c|d)/y, "abcabd", [
+ { lastIndex: 3, matches: ["abc", "abc"], index: 0 },
+ { lastIndex: 3, matches: ["bc", "bc"], index: 1 },
+ { lastIndex: 3, matches: ["c", "c"], index: 2 },
+ null,
+ null,
+ { lastIndex: 6, matches: ["d", "d"], index: 5 },
+ null,
+]);
+
+// ^ assertions
+test(/^/y, "abcabc", [
+ { lastIndex: 0, matches: [""], index: 0 },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+]);
+
+test(/^a/my, "abc\nabc", [
+ { lastIndex: 1, matches: ["a"], index: 0 },
+ null,
+ null,
+ null,
+ { lastIndex: 5, matches: ["a"], index: 4 },
+ null,
+ null,
+ null,
+]);
+
+// \b assertions
+test(/\b/y, "abc bc", [
+ { lastIndex: 0, matches: [""], index: 0 },
+ null,
+ null,
+ { lastIndex: 3, matches: [""], index: 3 },
+ { lastIndex: 4, matches: [""], index: 4 },
+ null,
+ { lastIndex: 6, matches: [""], index: 6 },
+]);
+
+// \B assertions
+test(/\B/y, "abc bc", [
+ null,
+ { lastIndex: 1, matches: [""], index: 1 },
+ { lastIndex: 2, matches: [""], index: 2 },
+ null,
+ null,
+ { lastIndex: 5, matches: [""], index: 5 },
+ null,
+]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/test-trailing.js b/js/src/tests/ecma_6/RegExp/test-trailing.js
new file mode 100644
index 000000000..7cb910ee6
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/test-trailing.js
@@ -0,0 +1,31 @@
+var BUGNUMBER = 1304737;
+var summary = "Trailing .* should not be ignored on matchOnly match.";
+
+print(BUGNUMBER + ": " + summary);
+
+function test(r, lastIndexIsZero) {
+ r.lastIndex = 0;
+ r.test("foo");
+ assertEq(r.lastIndex, lastIndexIsZero ? 0 : 3);
+
+ r.lastIndex = 0;
+ r.test("foo\nbar");
+ assertEq(r.lastIndex, lastIndexIsZero ? 0 : 3);
+
+ var input = "foo" + ".bar".repeat(20000);
+ r.lastIndex = 0;
+ r.test(input);
+ assertEq(r.lastIndex, lastIndexIsZero ? 0 : input.length);
+
+ r.lastIndex = 0;
+ r.test(input + "\nbaz");
+ assertEq(r.lastIndex, lastIndexIsZero ? 0 : input.length);
+}
+
+test(/f.*/, true);
+test(/f.*/g, false);
+test(/f.*/y, false);
+test(/f.*/gy, false);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/toString.js b/js/src/tests/ecma_6/RegExp/toString.js
new file mode 100644
index 000000000..5ffbeed33
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/toString.js
@@ -0,0 +1,42 @@
+var BUGNUMBER = 1079919;
+var summary = "Make RegExp.prototype.toString to be a generic function.";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(RegExp.prototype.toString(), "/(?:)/");
+assertEq(/foo/.toString(), "/foo/");
+assertEq(/foo/i.toString(), "/foo/i");
+assertEq(/foo/gimy.toString(), "/foo/gimy");
+assertEq(/foo/igym.toString(), "/foo/gimy");
+assertEq(/\n\r/.toString(), "/\\n\\r/");
+assertEq(/\u2028\u2029/.toString(), "/\\u2028\\u2029/");
+assertEq(/\//.toString(), "/\\//");
+assertEq(RegExp().toString(), "/(?:)/");
+assertEq(RegExp("", "gimy").toString(), "/(?:)/gimy");
+assertEq(RegExp("\n\r").toString(), "/\\n\\r/");
+assertEq(RegExp("\u2028\u2029").toString(), "/\\u2028\\u2029/");
+assertEq(RegExp("/").toString(), "/\\//");
+
+assertThrowsInstanceOf(() => RegExp.prototype.toString.call(), TypeError);
+assertThrowsInstanceOf(() => RegExp.prototype.toString.call(1), TypeError);
+assertThrowsInstanceOf(() => RegExp.prototype.toString.call(""), TypeError);
+assertEq(RegExp.prototype.toString.call({}), "/undefined/undefined");
+assertEq(RegExp.prototype.toString.call({ source:"foo", flags:"bar" }), "/foo/bar");
+
+var a = [];
+var p = new Proxy({}, {
+ get(that, name) {
+ a.push(name);
+ return {
+ toString() {
+ a.push(name + "-tostring");
+ return name;
+ }
+ };
+ }
+});
+assertEq(RegExp.prototype.toString.call(p), "/source/flags");
+assertEq(a.join(","), "source,source-tostring,flags,flags-tostring");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-back-reference.js b/js/src/tests/ecma_6/RegExp/unicode-back-reference.js
new file mode 100644
index 000000000..2a65432a1
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-back-reference.js
@@ -0,0 +1,39 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- back reference should not match lead surrogate that has corresponding trail surrogate.";
+
+print(BUGNUMBER + ": " + summary);
+
+// The last character of back reference is not a surrogate.
+assertEqArray(/foo(.+)bar\1/u.exec("fooAbarA\uDC00"),
+ ["fooAbarA", "A"]);
+assertEqArray(/foo(.+)bar\1/u.exec("fooAbarA\uD834"),
+ ["fooAbarA", "A"]);
+assertEqArray(/foo(.+)bar\1/u.exec("fooAbarAA"),
+ ["fooAbarA", "A"]);
+assertEqArray(/foo(.+)bar\1/u.exec("fooAbarA"),
+ ["fooAbarA", "A"]);
+
+// The last character of back reference is a lead surrogate.
+assertEq(/foo(.+)bar\1/u.exec("foo\uD834bar\uD834\uDC00"), null);
+assertEqArray(/foo(.+)bar\1/u.exec("foo\uD834bar\uD834\uD834"),
+ ["foo\uD834bar\uD834", "\uD834"]);
+assertEqArray(/foo(.+)bar\1/u.exec("foo\uD834bar\uD834A"),
+ ["foo\uD834bar\uD834", "\uD834"]);
+assertEqArray(/foo(.+)bar\1/u.exec("foo\uD834bar\uD834"),
+ ["foo\uD834bar\uD834", "\uD834"]);
+
+// The last character of back reference is a trail surrogate.
+assertEqArray(/foo(.+)bar\1/u.exec("foo\uDC00bar\uDC00\uDC00"),
+ ["foo\uDC00bar\uDC00", "\uDC00"]);
+assertEqArray(/foo(.+)bar\1/u.exec("foo\uDC00bar\uDC00\uD834"),
+ ["foo\uDC00bar\uDC00", "\uDC00"]);
+assertEqArray(/foo(.+)bar\1/u.exec("foo\uDC00bar\uDC00A"),
+ ["foo\uDC00bar\uDC00", "\uDC00"]);
+assertEqArray(/foo(.+)bar\1/u.exec("foo\uDC00bar\uDC00"),
+ ["foo\uDC00bar\uDC00", "\uDC00"]);
+
+// Pattern should not match to surrogate pair partially.
+assertEq(/^(.+)\1$/u.exec("\uDC00foobar\uD834\uDC00foobar\uD834"), null);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-braced.js b/js/src/tests/ecma_6/RegExp/unicode-braced.js
new file mode 100644
index 000000000..97df7acab
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-braced.js
@@ -0,0 +1,166 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- braced pattern in RegExpUnicodeEscapeSequence.";
+
+print(BUGNUMBER + ": " + summary);
+
+// ==== standalone ====
+
+assertEqArray(/\u{41}/u.exec("ABC"),
+ ["A"]);
+assertEqArray(/\u{41}/.exec("ABC" + "u".repeat(41)),
+ ["u".repeat(41)]);
+
+assertEqArray(/\u{4A}/u.exec("JKL"),
+ ["J"]);
+assertEqArray(/\u{4A}/.exec("JKLu{4A}"),
+ ["u{4A}"]);
+
+assertEqArray(/\u{1F438}/u.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/\u{1F438}/.exec("u{1F438}"),
+ ["u{1F438}"]);
+
+assertEqArray(/\u{0}/u.exec("\u{0}"),
+ ["\u{0}"]);
+assertEqArray(/\u{10FFFF}/u.exec("\u{10FFFF}"),
+ ["\u{10FFFF}"]);
+assertEqArray(/\u{10ffff}/u.exec("\u{10FFFF}"),
+ ["\u{10FFFF}"]);
+
+// leading 0
+assertEqArray(/\u{0000000000000000000000}/u.exec("\u{0}"),
+ ["\u{0}"]);
+assertEqArray(/\u{000000000000000010FFFF}/u.exec("\u{10FFFF}"),
+ ["\u{10FFFF}"]);
+
+// RegExp constructor
+assertEqArray(new RegExp("\\u{0}", "u").exec("\u{0}"),
+ ["\u{0}"]);
+assertEqArray(new RegExp("\\u{41}", "u").exec("ABC"),
+ ["A"]);
+assertEqArray(new RegExp("\\u{1F438}", "u").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(new RegExp("\\u{10FFFF}", "u").exec("\u{10FFFF}"),
+ ["\u{10FFFF}"]);
+
+assertEqArray(new RegExp("\\u{0000000000000000}", "u").exec("\u{0}"),
+ ["\u{0}"]);
+
+assertEqArray(eval(`/\\u{${"0".repeat(Math.pow(2, 24)) + "1234"}}/u`).exec("\u{1234}"),
+ ["\u{1234}"]);
+assertEqArray(new RegExp(`\\u{${"0".repeat(Math.pow(2, 24)) + "1234"}}`, "u").exec("\u{1234}"),
+ ["\u{1234}"]);
+
+// ==== ? ====
+
+assertEqArray(/\u{1F438}?/u.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/\u{1F438}?/u.exec(""),
+ [""]);
+
+// lead-only target
+assertEqArray(/\u{1F438}?/u.exec("\uD83D"),
+ [""]);
+
+// RegExp constructor
+assertEqArray(new RegExp("\\u{1F438}?", "u").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(new RegExp("\\u{1F438}?", "u").exec(""),
+ [""]);
+assertEqArray(new RegExp("\\u{1F438}?", "u").exec("\uD83D"),
+ [""]);
+
+// ==== + ====
+
+assertEqArray(/\u{1F438}+/u.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/\u{1F438}+/u.exec("\u{1F438}\u{1F438}"),
+ ["\u{1F438}\u{1F438}"]);
+assertEq(/\u{1F438}+/u.exec(""),
+ null);
+
+// lead-only target
+assertEq(/\u{1F438}+/u.exec("\uD83D"),
+ null);
+assertEqArray(/\u{1F438}+/u.exec("\uD83D\uDC38\uDC38"),
+ ["\uD83D\uDC38"]);
+
+// ==== * ====
+
+assertEqArray(/\u{1F438}*/u.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/\u{1F438}*/u.exec("\u{1F438}\u{1F438}"),
+ ["\u{1F438}\u{1F438}"]);
+assertEqArray(/\u{1F438}*/u.exec(""),
+ [""]);
+
+// lead-only target
+assertEqArray(/\u{1F438}*/u.exec("\uD83D"),
+ [""]);
+assertEqArray(/\u{1F438}*/u.exec("\uD83D\uDC38\uDC38"),
+ ["\uD83D\uDC38"]);
+
+// ==== lead-only ====
+
+// match only non-surrogate pair
+assertEqArray(/\u{D83D}/u.exec("\uD83D\uDBFF"),
+ ["\uD83D"]);
+assertEq(/\u{D83D}/u.exec("\uD83D\uDC00"),
+ null);
+assertEq(/\u{D83D}/u.exec("\uD83D\uDFFF"),
+ null);
+assertEqArray(/\u{D83D}/u.exec("\uD83D\uE000"),
+ ["\uD83D"]);
+
+// match before non-tail char
+assertEqArray(/\u{D83D}/u.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/\u{D83D}/u.exec("\uD83DA"),
+ ["\uD83D"]);
+
+// ==== trail-only ====
+
+// match only non-surrogate pair
+assertEqArray(/\u{DC38}/u.exec("\uD7FF\uDC38"),
+ ["\uDC38"]);
+assertEq(/\u{DC38}/u.exec("\uD800\uDC38"),
+ null);
+assertEq(/\u{DC38}/u.exec("\uDBFF\uDC38"),
+ null);
+assertEqArray(/\u{DC38}/u.exec("\uDC00\uDC38"),
+ ["\uDC38"]);
+
+// match after non-lead char
+assertEqArray(/\u{DC38}/u.exec("\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/\u{DC38}/u.exec("A\uDC38"),
+ ["\uDC38"]);
+
+// ==== wrong patterns ====
+
+assertThrowsInstanceOf(() => eval(`/\\u{-1}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{0.0}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{G}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{{/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{110000}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{00110000}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{100000000000000000000000000000}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{ FFFF}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{FFFF }/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{FF FF}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{F F F F}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u{100000001}/u`), SyntaxError);
+
+// surrogate pair with braced
+assertEq(/\u{D83D}\u{DC38}+/u.exec("\uD83D\uDC38\uDC38"),
+ null);
+assertEq(/\uD83D\u{DC38}+/u.exec("\uD83D\uDC38\uDC38"),
+ null);
+assertEq(/\u{D83D}\uDC38+/u.exec("\uD83D\uDC38\uDC38"),
+ null);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-character-class-escape.js b/js/src/tests/ecma_6/RegExp/unicode-character-class-escape.js
new file mode 100644
index 000000000..175207d5a
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-character-class-escape.js
@@ -0,0 +1,75 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- CharacterClassEscape.";
+
+print(BUGNUMBER + ": " + summary);
+
+// BMP
+
+assertEqArray(/\d+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["0123456789"]);
+assertEqArray(/\D+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["abcxyzABCXYZ"]);
+
+assertEqArray(/\s+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["\t\r\n\v\x0c\xa0\uFEFF"]);
+assertEqArray(/\S+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["abcxyzABCXYZ0123456789_"]);
+
+assertEqArray(/\w+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["abcxyzABCXYZ0123456789_"]);
+assertEqArray(/\W+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["\t\r\n\v\x0c\xa0\uFEFF*"]);
+
+assertEqArray(/\n+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["\n"]);
+
+assertEqArray(/[\d]+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["0123456789"]);
+assertEqArray(/[\D]+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["abcxyzABCXYZ"]);
+
+assertEqArray(/[\s]+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["\t\r\n\v\x0c\xa0\uFEFF"]);
+assertEqArray(/[\S]+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["abcxyzABCXYZ0123456789_"]);
+
+assertEqArray(/[\w]+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["abcxyzABCXYZ0123456789_"]);
+assertEqArray(/[\W]+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["\t\r\n\v\x0c\xa0\uFEFF*"]);
+
+assertEqArray(/[\n]+/u.exec("abcxyzABCXYZ0123456789_\t\r\n\v\x0c\xa0\uFEFF*"),
+ ["\n"]);
+
+// non-BMP
+
+function testNonBMP(re) {
+ assertEqArray(re.exec("\uD83D\uDBFF"),
+ ["\uD83D"]);
+ assertEqArray(re.exec("\uD83D\uDC00"),
+ ["\uD83D\uDC00"]);
+ assertEqArray(re.exec("\uD83D\uDFFF"),
+ ["\uD83D\uDFFF"]);
+ assertEqArray(re.exec("\uD83D\uE000"),
+ ["\uD83D"]);
+
+ assertEqArray(re.exec("\uD7FF\uDC38"),
+ ["\uD7FF"]);
+ assertEqArray(re.exec("\uD800\uDC38"),
+ ["\uD800\uDC38"]);
+ assertEqArray(re.exec("\uDBFF\uDC38"),
+ ["\uDBFF\uDC38"]);
+ assertEqArray(re.exec("\uDC00\uDC38"),
+ ["\uDC00"]);
+}
+
+testNonBMP(/\D/u);
+testNonBMP(/\S/u);
+testNonBMP(/\W/u);
+
+testNonBMP(/[\D]/u);
+testNonBMP(/[\S]/u);
+testNonBMP(/[\W]/u);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-class-braced.js b/js/src/tests/ecma_6/RegExp/unicode-class-braced.js
new file mode 100644
index 000000000..4b5954012
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-class-braced.js
@@ -0,0 +1,236 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- braced pattern in RegExpUnicodeEscapeSequence in CharacterClass.";
+
+print(BUGNUMBER + ": " + summary);
+
+// ==== standalone ====
+
+assertEqArray(/[\u{41}]/u.exec("ABC"),
+ ["A"]);
+
+assertEqArray(/[\u{1F438}]/u.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEq(/[\u{1F438}]/u.exec("\uD83D"),
+ null);
+assertEq(/[\u{1F438}]/u.exec("\uDC38"),
+ null);
+
+assertEqArray(/[\u{0}]/u.exec("\u{0}"),
+ ["\u{0}"]);
+assertEqArray(/[\u{10FFFF}]/u.exec("\u{10FFFF}"),
+ ["\u{10FFFF}"]);
+assertEqArray(/[\u{10ffff}]/u.exec("\u{10FFFF}"),
+ ["\u{10FFFF}"]);
+
+// leading 0
+assertEqArray(/[\u{0000000000000000000000}]/u.exec("\u{0}"),
+ ["\u{0}"]);
+assertEqArray(/[\u{000000000000000010FFFF}]/u.exec("\u{10FFFF}"),
+ ["\u{10FFFF}"]);
+
+// RegExp constructor
+assertEqArray(new RegExp("[\\u{0}]", "u").exec("\u{0}"),
+ ["\u{0}"]);
+assertEqArray(new RegExp("[\\u{41}]", "u").exec("ABC"),
+ ["A"]);
+assertEqArray(new RegExp("[\\u{1F438}]", "u").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(new RegExp("[\\u{10FFFF}]", "u").exec("\u{10FFFF}"),
+ ["\u{10FFFF}"]);
+
+assertEqArray(new RegExp("[\\u{0000000000000000}]", "u").exec("\u{0}"),
+ ["\u{0}"]);
+
+assertEqArray(eval(`/[\\u{${"0".repeat(Math.pow(2, 24)) + "1234"}}]/u`).exec("\u{1234}"),
+ ["\u{1234}"]);
+assertEqArray(new RegExp(`[\\u{${"0".repeat(Math.pow(2, 24)) + "1234"}}]`, "u").exec("\u{1234}"),
+ ["\u{1234}"]);
+
+// ==== BMP + non-BMP ====
+
+assertEqArray(/[A\u{1F438}]/u.exec("A\u{1F438}"),
+ ["A"]);
+assertEqArray(/[A\u{1F438}]/u.exec("\u{1F438}A"),
+ ["\u{1F438}"]);
+
+// lead-only target
+assertEqArray(/[A\u{1F438}]/u.exec("\uD83DA"),
+ ["A"]);
+assertEq(/[A\u{1F438}]/u.exec("\uD83D"),
+ null);
+
+// +
+assertEqArray(/[A\u{1F438}]+/u.exec("\u{1F438}A\u{1F438}A"),
+ ["\u{1F438}A\u{1F438}A"]);
+
+// trail surrogate + lead surrogate
+assertEqArray(/[A\u{1F438}]+/u.exec("\uD83D\uDC38A\uDC38\uD83DA"),
+ ["\uD83D\uDC38A"]);
+
+// ==== non-BMP + non-BMP ====
+
+assertEqArray(/[\u{1F418}\u{1F438}]/u.exec("\u{1F418}\u{1F438}"),
+ ["\u{1F418}"]);
+
+assertEqArray(/[\u{1F418}\u{1F438}]+/u.exec("\u{1F418}\u{1F438}"),
+ ["\u{1F418}\u{1F438}"]);
+assertEqArray(/[\u{1F418}\u{1F438}]+/u.exec("\u{1F418}\uDC38\uD83D"),
+ ["\u{1F418}"]);
+assertEqArray(/[\u{1F418}\u{1F438}]+/u.exec("\uDC18\uD83D\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/[\u{1F418}\u{1F438}]+/u.exec("\uDC18\u{1F438}\uD83D"),
+ ["\u{1F438}"]);
+
+// trail surrogate + lead surrogate
+assertEq(/[\u{1F418}\u{1F438}]+/u.exec("\uDC18\uDC38\uD83D\uD83D"),
+ null);
+
+// ==== non-BMP + non-BMP range (from_lead == to_lead) ====
+
+assertEqArray(/[\u{1F418}-\u{1F438}]/u.exec("\u{1F418}"),
+ ["\u{1F418}"]);
+assertEqArray(/[\u{1F418}-\u{1F438}]/u.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/[\u{1F418}-\u{1F438}]/u.exec("\u{1F427}"),
+ ["\u{1F427}"]);
+
+assertEq(/[\u{1F418}-\u{1F438}]/u.exec("\u{1F417}"),
+ null);
+assertEq(/[\u{1F418}-\u{1F438}]/u.exec("\u{1F439}"),
+ null);
+
+// ==== non-BMP + non-BMP range (from_lead + 1 == to_lead) ====
+
+assertEqArray(/[\u{1F17C}-\u{1F438}]/u.exec("\uD83C\uDD7C"),
+ ["\uD83C\uDD7C"]);
+assertEqArray(/[\u{1F17C}-\u{1F438}]/u.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/[\u{1F17C}-\u{1F438}]/u.exec("\uD83C\uDF99"),
+ ["\uD83C\uDF99"]);
+assertEqArray(/[\u{1F17C}-\u{1F438}]/u.exec("\uD83D\uDC00"),
+ ["\uD83D\uDC00"]);
+
+assertEq(/[\u{1F17C}-\u{1F438}]/u.exec("\uD83C\uDD7B"),
+ null);
+assertEq(/[\u{1F17C}-\u{1F438}]/u.exec("\uD83C\uE000"),
+ null);
+assertEq(/[\u{1F17C}-\u{1F438}]/u.exec("\uD83D\uDB99"),
+ null);
+assertEq(/[\u{1F17C}-\u{1F438}]/u.exec("\uD83D\uDC39"),
+ null);
+
+// ==== non-BMP + non-BMP range (from_lead + 2 == to_lead) ====
+
+assertEqArray(/[\u{1F17C}-\u{1F829}]/u.exec("\uD83C\uDD7C"),
+ ["\uD83C\uDD7C"]);
+assertEqArray(/[\u{1F17C}-\u{1F829}]/u.exec("\uD83E\uDC29"),
+ ["\uD83E\uDC29"]);
+
+assertEqArray(/[\u{1F17C}-\u{1F829}]/u.exec("\uD83C\uDF99"),
+ ["\uD83C\uDF99"]);
+assertEqArray(/[\u{1F17C}-\u{1F829}]/u.exec("\uD83D\uDC00"),
+ ["\uD83D\uDC00"]);
+assertEqArray(/[\u{1F17C}-\u{1F829}]/u.exec("\uD83D\uDF99"),
+ ["\uD83D\uDF99"]);
+assertEqArray(/[\u{1F17C}-\u{1F829}]/u.exec("\uD83E\uDC00"),
+ ["\uD83E\uDC00"]);
+
+assertEq(/[\u{1F17C}-\u{1F829}]/u.exec("\uD83C\uDD7B"),
+ null);
+assertEq(/[\u{1F17C}-\u{1F829}]/u.exec("\uD83C\uE000"),
+ null);
+assertEq(/[\u{1F17C}-\u{1F829}]/u.exec("\uD83D\uDB99"),
+ null);
+assertEq(/[\u{1F17C}-\u{1F829}]/u.exec("\uD83D\uE000"),
+ null);
+assertEq(/[\u{1F17C}-\u{1F829}]/u.exec("\uD83E\uDB99"),
+ null);
+assertEq(/[\u{1F17C}-\u{1F829}]/u.exec("\uD83E\uDC30"),
+ null);
+
+// ==== non-BMP + non-BMP range (other) ====
+
+assertEqArray(/[\u{1D164}-\u{1F438}]/u.exec("\uD834\uDD64"),
+ ["\uD834\uDD64"]);
+assertEqArray(/[\u{1D164}-\u{1F438}]/u.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/[\u{1D164}-\u{1F438}]/u.exec("\uD836\uDF99"),
+ ["\uD836\uDF99"]);
+assertEqArray(/[\u{1D164}-\u{1F438}]/u.exec("\uD838\uDC00"),
+ ["\uD838\uDC00"]);
+
+assertEq(/[\u{1D164}-\u{1F438}]/u.exec("\uD834\uDD63"),
+ null);
+assertEq(/[\u{1D164}-\u{1F438}]/u.exec("\uD83D\uDC39"),
+ null);
+
+assertEq(/[\u{1D164}-\u{1F438}]/u.exec("\uD834\uE000"),
+ null);
+assertEq(/[\u{1D164}-\u{1F438}]/u.exec("\uD835\uDB99"),
+ null);
+assertEq(/[\u{1D164}-\u{1F438}]/u.exec("\uD83C\uE000"),
+ null);
+assertEq(/[\u{1D164}-\u{1F438}]/u.exec("\uD83D\uDB99"),
+ null);
+
+// ==== BMP + non-BMP range ====
+
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("B"),
+ ["B"]);
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("C"),
+ ["C"]);
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("\uFFFF"),
+ ["\uFFFF"]);
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("\uD800\uDC00"),
+ ["\uD800\uDC00"]);
+
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("\uD800"),
+ ["\uD800"]);
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("\uDBFF"),
+ ["\uDBFF"]);
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("\uDC00"),
+ ["\uDC00"]);
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("\uDFFF"),
+ ["\uDFFF"]);
+
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("\uDC38"),
+ ["\uDC38"]);
+
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("\uD83D\uDBFF"),
+ ["\uD83D"]);
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("\uD83D\uDC00"),
+ ["\uD83D\uDC00"]);
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("\uD83D\uDC38"),
+ ["\uD83D\uDC38"]);
+assertEq(/[\u{42}-\u{1F438}]/u.exec("\uD83D\uDC39"),
+ null);
+assertEq(/[\u{42}-\u{1F438}]/u.exec("\uD83D\uDFFF"),
+ null);
+assertEqArray(/[\u{42}-\u{1F438}]/u.exec("\uD83D\uE000"),
+ ["\uD83D"]);
+
+assertEq(/[\u{42}-\u{1F438}]/u.exec("A"),
+ null);
+
+// ==== wrong patterns ====
+
+assertThrowsInstanceOf(() => eval(`/[\\u{-1}]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{0.0}]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{G}]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{}]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{{]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{110000}]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{00110000}]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{100000000000000000000000000000}]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{ FFFF}]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{FFFF }]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{FF FF}]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{F F F F}]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u{100000001}]/u`), SyntaxError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-class-empty.js b/js/src/tests/ecma_6/RegExp/unicode-class-empty.js
new file mode 100644
index 000000000..4d187551f
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-class-empty.js
@@ -0,0 +1,25 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- empty class should not match anything.";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(/[]/u.exec("A"),
+ null);
+assertEq(/[]/u.exec("\uD83D"),
+ null);
+assertEq(/[]/u.exec("\uDC38"),
+ null);
+assertEq(/[]/u.exec("\uD83D\uDC38"),
+ null);
+
+assertEqArray(/[^]/u.exec("A"),
+ ["A"]);
+assertEqArray(/[^]/u.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/[^]/u.exec("\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/[^]/u.exec("\uD83D\uDC38"),
+ ["\uD83D\uDC38"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-class-ignoreCase.js b/js/src/tests/ecma_6/RegExp/unicode-class-ignoreCase.js
new file mode 100644
index 000000000..afa7705c7
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-class-ignoreCase.js
@@ -0,0 +1,28 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- ignoreCase flag for CharacterClass.";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEqArray(/[ABC]+/iu.exec("DCBAabcd"),
+ ["CBAabc"]);
+
+assertEqArray(/[A\u{10401}]+/iu.exec("A\u{10401}a\u{10429}"),
+ ["A\u{10401}a\u{10429}"]);
+
+assertEqArray(/[\u{10401}-\u{10404}\u{10408}-\u{1040B}]+/iu.exec("\u{10400}\u{10401}\u{10402}\u{10403}\u{10404}\u{10408}\u{10409}\u{1040A}\u{1040B}\u{1040C}"),
+ ["\u{10401}\u{10402}\u{10403}\u{10404}\u{10408}\u{10409}\u{1040A}\u{1040B}"]);
+assertEqArray(/[\u{10401}-\u{10404}\u{10408}-\u{1040B}]+/iu.exec("\u{10428}\u{10429}\u{1042A}\u{1042B}\u{1042C}\u{10430}\u{10431}\u{10432}\u{10433}\u{10434}"),
+ ["\u{10429}\u{1042A}\u{1042B}\u{1042C}\u{10430}\u{10431}\u{10432}\u{10433}"]);
+
+assertEqArray(/[\u{10429}-\u{1042C}\u{10430}-\u{10433}]+/iu.exec("\u{10400}\u{10401}\u{10402}\u{10403}\u{10404}\u{10408}\u{10409}\u{1040A}\u{1040B}\u{1040C}"),
+ ["\u{10401}\u{10402}\u{10403}\u{10404}\u{10408}\u{10409}\u{1040A}\u{1040B}"]);
+assertEqArray(/[\u{10429}-\u{1042C}\u{10430}-\u{10433}]+/iu.exec("\u{10428}\u{10429}\u{1042A}\u{1042B}\u{1042C}\u{10430}\u{10431}\u{10432}\u{10433}\u{10434}"),
+ ["\u{10429}\u{1042A}\u{1042B}\u{1042C}\u{10430}\u{10431}\u{10432}\u{10433}"]);
+
+assertEqArray(/[\u{10401}-\u{10404}\u{10430}-\u{10433}]+/iu.exec("\u{10400}\u{10401}\u{10402}\u{10403}\u{10404}\u{10408}\u{10409}\u{1040A}\u{1040B}\u{1040C}"),
+ ["\u{10401}\u{10402}\u{10403}\u{10404}\u{10408}\u{10409}\u{1040A}\u{1040B}"]);
+assertEqArray(/[\u{10401}-\u{10404}\u{10430}-\u{10433}]+/iu.exec("\u{10428}\u{10429}\u{1042A}\u{1042B}\u{1042C}\u{10430}\u{10431}\u{10432}\u{10433}\u{10434}"),
+ ["\u{10429}\u{1042A}\u{1042B}\u{1042C}\u{10430}\u{10431}\u{10432}\u{10433}"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-class-lead-trail.js b/js/src/tests/ecma_6/RegExp/unicode-class-lead-trail.js
new file mode 100644
index 000000000..c83bf937d
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-class-lead-trail.js
@@ -0,0 +1,142 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- lead and trail pattern in RegExpUnicodeEscapeSequence in CharacterClass.";
+
+print(BUGNUMBER + ": " + summary);
+
+// ==== standalone ====
+
+assertEqArray(/[\uD83D\uDC38]/u.exec("\uD83D\uDC38"),
+ ["\uD83D\uDC38"]);
+assertEq(/[\uD83D\uDC38]/u.exec("\uD83D"),
+ null);
+assertEq(/[\uD83D\uDC38]/u.exec("\uDC38"),
+ null);
+
+// no unicode flag
+assertEqArray(/[\uD83D\uDC38]/.exec("\uD83D\uDC38"),
+ ["\uD83D"]);
+assertEqArray(/[\uD83D\uDC38]/.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/[\uD83D\uDC38]/.exec("\uDC38"),
+ ["\uDC38"]);
+
+// RegExp constructor
+assertEqArray(new RegExp("[\uD83D\uDC38]", "u").exec("\uD83D\uDC38"),
+ ["\uD83D\uDC38"]);
+assertEq(new RegExp("[\uD83D\uDC38]", "u").exec("\uD83D"),
+ null);
+assertEq(new RegExp("[\uD83D\uDC38]", "u").exec("\uDC38"),
+ null);
+
+// RegExp constructor, no unicode flag
+assertEqArray(new RegExp("[\uD83D\uDC38]", "").exec("\uD83D\uDC38"),
+ ["\uD83D"]);
+assertEqArray(new RegExp("[\uD83D\uDC38]", "").exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(new RegExp("[\uD83D\uDC38]", "").exec("\uDC38"),
+ ["\uDC38"]);
+
+// ==== lead-only ====
+
+// match only non-surrogate pair
+assertEqArray(/[\uD83D]/u.exec("\uD83D\uDBFF"),
+ ["\uD83D"]);
+assertEq(/[\uD83D]/u.exec("\uD83D\uDC00"),
+ null);
+assertEq(/[\uD83D]/u.exec("\uD83D\uDFFF"),
+ null);
+assertEqArray(/[\uD83D]/u.exec("\uD83D\uE000"),
+ ["\uD83D"]);
+
+// match before non-tail char
+assertEqArray(/[\uD83D]/u.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/[\uD83D]/u.exec("\uD83DA"),
+ ["\uD83D"]);
+
+// no unicode flag
+assertEqArray(/[\uD83D]/.exec("\uD83D\uDBFF"),
+ ["\uD83D"]);
+assertEqArray(/[\uD83D]/.exec("\uD83D\uDC00"),
+ ["\uD83D"]);
+assertEqArray(/[\uD83D]/.exec("\uD83D\uDFFF"),
+ ["\uD83D"]);
+assertEqArray(/[\uD83D]/.exec("\uD83D\uE000"),
+ ["\uD83D"]);
+assertEqArray(/[\uD83D]/.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/[\uD83D]/.exec("\uD83DA"),
+ ["\uD83D"]);
+
+// ==== trail-only ====
+
+// match only non-surrogate pair
+assertEqArray(/[\uDC38]/u.exec("\uD7FF\uDC38"),
+ ["\uDC38"]);
+assertEq(/[\uDC38]/u.exec("\uD800\uDC38"),
+ null);
+assertEq(/[\uDC38]/u.exec("\uDBFF\uDC38"),
+ null);
+assertEqArray(/[\uDC38]/u.exec("\uDC00\uDC38"),
+ ["\uDC38"]);
+
+// match after non-lead char
+assertEqArray(/[\uDC38]/u.exec("\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/[\uDC38]/u.exec("A\uDC38"),
+ ["\uDC38"]);
+
+// no unicode flag
+assertEqArray(/[\uDC38]/.exec("\uD7FF\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/[\uDC38]/.exec("\uD800\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/[\uDC38]/.exec("\uDBFF\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/[\uDC38]/.exec("\uDC00\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/[\uDC38]/.exec("\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/[\uDC38]/.exec("A\uDC38"),
+ ["\uDC38"]);
+
+// ==== invalid trail ====
+
+assertEqArray(/[\uD83D\u3042]*/u.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/[\uD83D\u3042]*/u.exec("\uD83D\u3042"),
+ ["\uD83D\u3042"]);
+assertEqArray(/[\uD83D\u3042]*/u.exec("\uD83D\u3042\u3042\uD83D"),
+ ["\uD83D\u3042\u3042\uD83D"]);
+
+assertEqArray(/[\uD83D\u{3042}]*/u.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/[\uD83D\u{3042}]*/u.exec("\uD83D\u3042"),
+ ["\uD83D\u3042"]);
+assertEqArray(/[\uD83D\u{3042}]*/u.exec("\uD83D\u3042\u3042\uD83D"),
+ ["\uD83D\u3042\u3042\uD83D"]);
+
+assertEqArray(/[\uD83DA]*/u.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/[\uD83DA]*/u.exec("\uD83DA"),
+ ["\uD83DA"]);
+assertEqArray(/[\uD83DA]*/u.exec("\uD83DAA\uD83D"),
+ ["\uD83DAA\uD83D"]);
+
+// ==== wrong patterns ====
+
+assertThrowsInstanceOf(() => eval(`/[\\u]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u0]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u00]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u000]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u000G]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\u0.00]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\uD83D\\u]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\uD83D\\u0]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\uD83D\\u00]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\uD83D\\u000]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\uD83D\\u000G]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\uD83D\\u0.00]/u`), SyntaxError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-class-negated.js b/js/src/tests/ecma_6/RegExp/unicode-class-negated.js
new file mode 100644
index 000000000..0b573f6dc
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-class-negated.js
@@ -0,0 +1,64 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- negated CharacterClass.";
+
+print(BUGNUMBER + ": " + summary);
+
+// ==== BMP ====
+
+assertEqArray(/[^A]/u.exec("ABC"),
+ ["B"]);
+assertEqArray(/[^A]/u.exec("A\u{1F438}C"),
+ ["\u{1F438}"]);
+assertEqArray(/[^A]/u.exec("A\uD83DC"),
+ ["\uD83D"]);
+assertEqArray(/[^A]/u.exec("A\uDC38C"),
+ ["\uDC38"]);
+
+assertEqArray(/[^\uE000]/u.exec("\uE000\uE001"),
+ ["\uE001"]);
+assertEqArray(/[^\uE000]/u.exec("\uE000\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/[^\uE000]/u.exec("\uE000\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/[^\uE000]/u.exec("\uE000\uDC38"),
+ ["\uDC38"]);
+
+// ==== non-BMP ====
+
+assertEqArray(/[^\u{1F438}]/u.exec("\u{1F438}A"),
+ ["A"]);
+assertEqArray(/[^\u{1F438}]/u.exec("\u{1F438}\u{1F439}"),
+ ["\u{1F439}"]);
+assertEqArray(/[^\u{1F438}]/u.exec("\u{1F438}\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/[^\u{1F438}]/u.exec("\u{1F438}\uDC38"),
+ ["\uDC38"]);
+
+// ==== lead-only ====
+
+assertEqArray(/[^\uD83D]/u.exec("\u{1F438}A"),
+ ["\u{1F438}"]);
+assertEqArray(/[^\uD83D]/u.exec("\uD83D\uDBFF"),
+ ["\uDBFF"]);
+assertEqArray(/[^\uD83D]/u.exec("\uD83D\uDC00"),
+ ["\uD83D\uDC00"]);
+assertEqArray(/[^\uD83D]/u.exec("\uD83D\uDFFF"),
+ ["\uD83D\uDFFF"]);
+assertEqArray(/[^\uD83D]/u.exec("\uD83D\uE000"),
+ ["\uE000"]);
+
+// ==== trail-only ====
+
+assertEqArray(/[^\uDC38]/u.exec("\u{1F438}A"),
+ ["\u{1F438}"]);
+assertEqArray(/[^\uDC38]/u.exec("\uD7FF\uDC38"),
+ ["\uD7FF"]);
+assertEqArray(/[^\uDC38]/u.exec("\uD800\uDC38"),
+ ["\uD800\uDC38"]);
+assertEqArray(/[^\uDC38]/u.exec("\uDBFF\uDC38"),
+ ["\uDBFF\uDC38"]);
+assertEqArray(/[^\uDC38]/u.exec("\uDC00\uDC38"),
+ ["\uDC00"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-class-range.js b/js/src/tests/ecma_6/RegExp/unicode-class-range.js
new file mode 100644
index 000000000..5bb757560
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-class-range.js
@@ -0,0 +1,28 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- disallow range with CharacterClassEscape.";
+
+print(BUGNUMBER + ": " + summary);
+
+assertThrowsInstanceOf(() => eval(`/[\\w-\\uFFFF]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\W-\\uFFFF]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\d-\\uFFFF]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\D-\\uFFFF]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\s-\\uFFFF]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\S-\\uFFFF]/u`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`/[\\uFFFF-\\w]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\uFFFF-\\W]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\uFFFF-\\d]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\uFFFF-\\D]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\uFFFF-\\s]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\uFFFF-\\S]/u`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`/[\\w-\\w]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\W-\\W]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\d-\\d]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\D-\\D]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\s-\\s]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\S-\\S]/u`), SyntaxError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-class-raw.js b/js/src/tests/ecma_6/RegExp/unicode-class-raw.js
new file mode 100644
index 000000000..742fec2b4
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-class-raw.js
@@ -0,0 +1,65 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- raw unicode.";
+
+print(BUGNUMBER + ": " + summary);
+
+// ==== standalone ====
+
+assertEqArray(eval(`/[\uD83D\uDC38]/u`).exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// no unicode flag
+assertEqArray(eval(`/[\uD83D\uDC38]/`).exec("\u{1F438}"),
+ ["\uD83D"]);
+
+// escaped (lead)
+assertEq(eval(`/[\\uD83D\uDC38]/u`).exec("\u{1F438}"),
+ null);
+assertEq(eval(`/[\\u{D83D}\uDC38]/u`).exec("\u{1F438}"),
+ null);
+
+// escaped (trail)
+assertEq(eval(`/[\uD83D\\uDC38]/u`).exec("\u{1F438}"),
+ null);
+assertEq(eval(`/[\uD83D\\u{DC38}]/u`).exec("\u{1F438}"),
+ null);
+
+// escaped (lead), no unicode flag
+assertEqArray(eval(`/[\\uD83D\uDC38]/`).exec("\u{1F438}"),
+ ["\uD83D"]);
+
+// escaped (trail), no unicode flag
+assertEqArray(eval(`/[\uD83D\\uDC38]/`).exec("\u{1F438}"),
+ ["\uD83D"]);
+
+// ==== RegExp constructor ====
+
+assertEqArray(new RegExp("[\uD83D\uDC38]", "u").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// no unicode flag
+assertEqArray(new RegExp("[\uD83D\uDC38]", "").exec("\u{1F438}"),
+ ["\uD83D"]);
+
+// escaped(lead)
+assertEq(new RegExp("[\\uD83D\uDC38]", "u").exec("\u{1F438}"),
+ null);
+assertEq(new RegExp("[\\u{D83D}\uDC38]", "u").exec("\u{1F438}"),
+ null);
+
+// escaped(trail)
+assertEq(new RegExp("[\uD83D\\uDC38]", "u").exec("\u{1F438}"),
+ null);
+assertEq(new RegExp("[\uD83D\\u{DC38}]", "u").exec("\u{1F438}"),
+ null);
+
+// escaped(lead), no unicode flag
+assertEqArray(new RegExp("[\\uD83D\uDC38]", "").exec("\u{1F438}"),
+ ["\uD83D"]);
+
+// escaped(trail), no unicode flag
+assertEqArray(new RegExp("[\uD83D\\uDC38]", "").exec("\u{1F438}"),
+ ["\uD83D"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-disallow-extended.js b/js/src/tests/ecma_6/RegExp/unicode-disallow-extended.js
new file mode 100644
index 000000000..d1f775fac
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-disallow-extended.js
@@ -0,0 +1,117 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- disallow extended patterns.";
+
+print(BUGNUMBER + ": " + summary);
+
+// IdentityEscape
+
+assertEqArray(/\^\$\\\.\*\+\?\(\)\[\]\{\}\|/u.exec("^$\\.*+?()[]{}|"),
+ ["^$\\.*+?()[]{}|"]);
+assertThrowsInstanceOf(() => eval(`/\\A/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\-/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\U{10}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\U0000/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\uD83D\\U0000/u`), SyntaxError);
+
+assertEqArray(/[\^\$\\\.\*\+\?\(\)\[\]\{\}\|]+/u.exec("^$\\.*+?()[]{}|"),
+ ["^$\\.*+?()[]{}|"]);
+assertThrowsInstanceOf(() => eval(`/[\\A]/u`), SyntaxError);
+assertEqArray(/[A\-Z]+/u.exec("a-zABC"),
+ ["-"]);
+assertThrowsInstanceOf(() => eval(`/[\\U{10}]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\U0000]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\uD83D\\U0000]/u`), SyntaxError);
+
+// PatternCharacter
+assertThrowsInstanceOf(() => eval(`/{}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/{/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/{0}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/{1,}/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/{1,2}/u`), SyntaxError);
+
+// QuantifiableAssertion
+assertEqArray(/.B(?=A)/u.exec("cBaCBA"),
+ ["CB"]);
+assertEqArray(/.B(?!A)/u.exec("CBAcBa"),
+ ["cB"]);
+assertEqArray(/.B(?:A)/u.exec("cBaCBA"),
+ ["CBA"]);
+assertEqArray(/.B(A)/u.exec("cBaCBA"),
+ ["CBA", "A"]);
+
+assertThrowsInstanceOf(() => eval(`/.B(?=A)+/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/.B(?!A)+/u`), SyntaxError);
+assertEqArray(/.B(?:A)+/u.exec("cBaCBA"),
+ ["CBA"]);
+assertEqArray(/.B(A)+/u.exec("cBaCBA"),
+ ["CBA", "A"]);
+
+// ControlLetter
+assertEqArray(/\cA/u.exec("\u0001"),
+ ["\u0001"]);
+assertEqArray(/\cZ/u.exec("\u001a"),
+ ["\u001a"]);
+assertEqArray(/\ca/u.exec("\u0001"),
+ ["\u0001"]);
+assertEqArray(/\cz/u.exec("\u001a"),
+ ["\u001a"]);
+
+assertEqArray(/[\cA]/u.exec("\u0001"),
+ ["\u0001"]);
+assertEqArray(/[\cZ]/u.exec("\u001a"),
+ ["\u001a"]);
+assertEqArray(/[\ca]/u.exec("\u0001"),
+ ["\u0001"]);
+assertEqArray(/[\cz]/u.exec("\u001a"),
+ ["\u001a"]);
+
+assertThrowsInstanceOf(() => eval(`/\\c/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\c1/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\c_/u`), SyntaxError);
+
+assertThrowsInstanceOf(() => eval(`/[\\c]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\c1]/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/[\\c_]/u`), SyntaxError);
+
+// HexEscapeSequence
+assertThrowsInstanceOf(() => eval(`/\\x/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\x0/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\x1/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\x1G/u`), SyntaxError);
+
+// LegacyOctalEscapeSequence
+assertThrowsInstanceOf(() => eval(`/\\52/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\052/u`), SyntaxError);
+
+// DecimalEscape
+assertEqArray(/\0/u.exec("\0"),
+ ["\0"]);
+assertEqArray(/[\0]/u.exec("\0"),
+ ["\0"]);
+assertEqArray(/\0A/u.exec("\0A"),
+ ["\0A"]);
+assertEqArray(/\0G/u.exec("\0G"),
+ ["\0G"]);
+assertEqArray(/(A.)\1/u.exec("ABACABAB"),
+ ["ABAB", "AB"]);
+assertEqArray(/(A.)(B.)(C.)(D.)(E.)(F.)(G.)(H.)(I.)(J.)(K.)\10/u.exec("A1B2C3D4E5F6G7H8I9JaKbJa"),
+ ["A1B2C3D4E5F6G7H8I9JaKbJa", "A1", "B2", "C3", "D4", "E5", "F6", "G7", "H8", "I9", "Ja", "Kb"]);
+
+assertThrowsInstanceOf(() => eval(`/\\00/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\01/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\09/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\1/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\2/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\3/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\4/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\5/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\6/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\7/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\8/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\9/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\10/u`), SyntaxError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-everything.js b/js/src/tests/ecma_6/RegExp/unicode-everything.js
new file mode 100644
index 000000000..a18ac2867
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-everything.js
@@ -0,0 +1,59 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- everything Atom.";
+
+print(BUGNUMBER + ": " + summary);
+
+// ==== standalone ====
+
+assertEqArray(/./u.exec("ABC"),
+ ["A"]);
+assertEqArray(/./u.exec("\u{1F438}BC"),
+ ["\u{1F438}"]);
+
+assertEqArray(/./u.exec("\uD83D\uDBFF"),
+ ["\uD83D"]);
+assertEqArray(/./u.exec("\uD83D\uDC00"),
+ ["\uD83D\uDC00"]);
+assertEqArray(/./u.exec("\uD83D\uDFFF"),
+ ["\uD83D\uDFFF"]);
+assertEqArray(/./u.exec("\uD83D\uE000"),
+ ["\uD83D"]);
+assertEqArray(/./u.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/./u.exec("\uD83DA"),
+ ["\uD83D"]);
+
+assertEqArray(/./u.exec("\uD7FF\uDC38"),
+ ["\uD7FF"]);
+assertEqArray(/./u.exec("\uD800\uDC38"),
+ ["\uD800\uDC38"]);
+assertEqArray(/./u.exec("\uDBFF\uDC38"),
+ ["\uDBFF\uDC38"]);
+assertEqArray(/./u.exec("\uDC00\uDC38"),
+ ["\uDC00"]);
+assertEqArray(/./u.exec("\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/./u.exec("A\uDC38"),
+ ["A"]);
+
+assertEqArray(/.A/u.exec("\uD7FF\uDC38A"),
+ ["\uDC38A"]);
+assertEqArray(/.A/u.exec("\uD800\uDC38A"),
+ ["\uD800\uDC38A"]);
+assertEqArray(/.A/u.exec("\uDBFF\uDC38A"),
+ ["\uDBFF\uDC38A"]);
+assertEqArray(/.A/u.exec("\uDC00\uDC38A"),
+ ["\uDC38A"]);
+
+// ==== leading multiple ====
+
+assertEqArray(/.*A/u.exec("\u{1F438}\u{1F438}\u{1F438}A"),
+ ["\u{1F438}\u{1F438}\u{1F438}A"]);
+
+// ==== trailing multiple ====
+
+assertEqArray(/A.*/u.exec("A\u{1F438}\u{1F438}\u{1F438}"),
+ ["A\u{1F438}\u{1F438}\u{1F438}"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-ignoreCase-ascii.js b/js/src/tests/ecma_6/RegExp/unicode-ignoreCase-ascii.js
new file mode 100644
index 000000000..6d453290e
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-ignoreCase-ascii.js
@@ -0,0 +1,45 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- ignoreCase flag with non-ascii to ascii map.";
+
+print(BUGNUMBER + ": " + summary);
+
+// LATIN CAPITAL LETTER Y WITH DIAERESIS
+assertEqArray(/\u0178/iu.exec("\u00FF"),
+ ["\u00FF"]);
+assertEqArray(/\u00FF/iu.exec("\u0178"),
+ ["\u0178"]);
+
+// LATIN SMALL LETTER LONG S
+assertEqArray(/\u017F/iu.exec("S"),
+ ["S"]);
+assertEqArray(/\u017F/iu.exec("s"),
+ ["s"]);
+assertEqArray(/S/iu.exec("\u017F"),
+ ["\u017F"]);
+assertEqArray(/s/iu.exec("\u017F"),
+ ["\u017F"]);
+
+// LATIN CAPITAL LETTER SHARP S
+assertEqArray(/\u1E9E/iu.exec("\u00DF"),
+ ["\u00DF"]);
+assertEqArray(/\u00DF/iu.exec("\u1E9E"),
+ ["\u1E9E"]);
+
+// KELVIN SIGN
+assertEqArray(/\u212A/iu.exec("K"),
+ ["K"]);
+assertEqArray(/\u212A/iu.exec("k"),
+ ["k"]);
+assertEqArray(/K/iu.exec("\u212A"),
+ ["\u212A"]);
+assertEqArray(/k/iu.exec("\u212A"),
+ ["\u212A"]);
+
+// ANGSTROM SIGN
+assertEqArray(/\u212B/iu.exec("\u00E5"),
+ ["\u00E5"]);
+assertEqArray(/\u00E5/iu.exec("\u212B"),
+ ["\u212B"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-ignoreCase-escape.js b/js/src/tests/ecma_6/RegExp/unicode-ignoreCase-escape.js
new file mode 100644
index 000000000..d731fb6bb
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-ignoreCase-escape.js
@@ -0,0 +1,71 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- ignoreCase flag with character class escape.";
+
+// \W doesn't match S or K from the change in
+// https://github.com/tc39/ecma262/pull/525
+// (bug 1281739)
+
+print(BUGNUMBER + ": " + summary);
+
+// LATIN SMALL LETTER LONG S
+
+assertEqArray(/\w/iu.exec("S"),
+ ["S"]);
+assertEqArray(/\w/iu.exec("s"),
+ ["s"]);
+assertEqArray(/\w/iu.exec("\u017F"),
+ ["\u017F"]);
+
+assertEqArray(/[^\W]/iu.exec("S"),
+ ["S"]);
+assertEqArray(/[^\W]/iu.exec("s"),
+ ["s"]);
+assertEqArray(/[^\W]/iu.exec("\u017F"),
+ ["\u017F"]);
+
+assertEq(/\W/iu.exec("S"),
+ null);
+assertEq(/\W/iu.exec("s"),
+ null);
+assertEq(/\W/iu.exec("\u017F"),
+ null);
+
+assertEq(/[^\w]/iu.exec("S"),
+ null);
+assertEq(/[^\w]/iu.exec("s"),
+ null);
+assertEq(/[^\w]/iu.exec("\u017F"),
+ null);
+
+// KELVIN SIGN
+
+assertEqArray(/\w/iu.exec("k"),
+ ["k"]);
+assertEqArray(/\w/iu.exec("k"),
+ ["k"]);
+assertEqArray(/\w/iu.exec("\u212A"),
+ ["\u212A"]);
+
+assertEqArray(/[^\W]/iu.exec("k"),
+ ["k"]);
+assertEqArray(/[^\W]/iu.exec("k"),
+ ["k"]);
+assertEqArray(/[^\W]/iu.exec("\u212A"),
+ ["\u212A"]);
+
+assertEq(/\W/iu.exec("k"),
+ null);
+assertEq(/\W/iu.exec("k"),
+ null);
+assertEq(/\W/iu.exec("\u212A"),
+ null);
+
+assertEq(/[^\w]/iu.exec("k"),
+ null);
+assertEq(/[^\w]/iu.exec("k"),
+ null);
+assertEq(/[^\w]/iu.exec("\u212A"),
+ null);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-ignoreCase-negated.js b/js/src/tests/ecma_6/RegExp/unicode-ignoreCase-negated.js
new file mode 100644
index 000000000..30909a515
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-ignoreCase-negated.js
@@ -0,0 +1,19 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- ignoreCase flag with negated character class.";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(/[^A]/iu.exec("A"),
+ null);
+assertEq(/[^a]/iu.exec("A"),
+ null);
+assertEq(/[^A]/iu.exec("a"),
+ null);
+assertEq(/[^a]/iu.exec("a"),
+ null);
+
+assertEqArray(/[^A]/iu.exec("b"),
+ ["b"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-ignoreCase.js b/js/src/tests/ecma_6/RegExp/unicode-ignoreCase.js
new file mode 100644
index 000000000..28b2e77dc
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-ignoreCase.js
@@ -0,0 +1,2643 @@
+/* Generated by make_unicode.py DO NOT MODIFY */
+/* Unicode version: 9.0.0 */
+
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- ignoreCase flag.";
+
+print(BUGNUMBER + ": " + summary);
+
+function test(code, ...equivs) {
+ var codeRe = new RegExp(String.fromCodePoint(code) + "+", "iu");
+ var ans = String.fromCodePoint(code) + equivs.map(c => String.fromCodePoint(c)).join("");
+ assertEqArray(codeRe.exec("<" + ans + ">"), [ans]);
+ codeRe = new RegExp("[" + String.fromCodePoint(code) + "]+", "iu");
+ assertEqArray(codeRe.exec("<" + ans + ">"), [ans]);
+}
+test(0x41,0x61);
+test(0x42,0x62);
+test(0x43,0x63);
+test(0x44,0x64);
+test(0x45,0x65);
+test(0x46,0x66);
+test(0x47,0x67);
+test(0x48,0x68);
+test(0x49,0x69);
+test(0x4a,0x6a);
+test(0x4b,0x6b,0x212a);
+test(0x4c,0x6c);
+test(0x4d,0x6d);
+test(0x4e,0x6e);
+test(0x4f,0x6f);
+test(0x50,0x70);
+test(0x51,0x71);
+test(0x52,0x72);
+test(0x53,0x73,0x17f);
+test(0x54,0x74);
+test(0x55,0x75);
+test(0x56,0x76);
+test(0x57,0x77);
+test(0x58,0x78);
+test(0x59,0x79);
+test(0x5a,0x7a);
+test(0x61,0x41);
+test(0x62,0x42);
+test(0x63,0x43);
+test(0x64,0x44);
+test(0x65,0x45);
+test(0x66,0x46);
+test(0x67,0x47);
+test(0x68,0x48);
+test(0x69,0x49);
+test(0x6a,0x4a);
+test(0x6b,0x4b,0x212a);
+test(0x6c,0x4c);
+test(0x6d,0x4d);
+test(0x6e,0x4e);
+test(0x6f,0x4f);
+test(0x70,0x50);
+test(0x71,0x51);
+test(0x72,0x52);
+test(0x73,0x53,0x17f);
+test(0x74,0x54);
+test(0x75,0x55);
+test(0x76,0x56);
+test(0x77,0x57);
+test(0x78,0x58);
+test(0x79,0x59);
+test(0x7a,0x5a);
+test(0xb5,0x3bc,0x39c);
+test(0xc0,0xe0);
+test(0xc1,0xe1);
+test(0xc2,0xe2);
+test(0xc3,0xe3);
+test(0xc4,0xe4);
+test(0xc5,0xe5,0x212b);
+test(0xc6,0xe6);
+test(0xc7,0xe7);
+test(0xc8,0xe8);
+test(0xc9,0xe9);
+test(0xca,0xea);
+test(0xcb,0xeb);
+test(0xcc,0xec);
+test(0xcd,0xed);
+test(0xce,0xee);
+test(0xcf,0xef);
+test(0xd0,0xf0);
+test(0xd1,0xf1);
+test(0xd2,0xf2);
+test(0xd3,0xf3);
+test(0xd4,0xf4);
+test(0xd5,0xf5);
+test(0xd6,0xf6);
+test(0xd8,0xf8);
+test(0xd9,0xf9);
+test(0xda,0xfa);
+test(0xdb,0xfb);
+test(0xdc,0xfc);
+test(0xdd,0xfd);
+test(0xde,0xfe);
+test(0xdf,0x1e9e);
+test(0xe0,0xc0);
+test(0xe1,0xc1);
+test(0xe2,0xc2);
+test(0xe3,0xc3);
+test(0xe4,0xc4);
+test(0xe5,0xc5,0x212b);
+test(0xe6,0xc6);
+test(0xe7,0xc7);
+test(0xe8,0xc8);
+test(0xe9,0xc9);
+test(0xea,0xca);
+test(0xeb,0xcb);
+test(0xec,0xcc);
+test(0xed,0xcd);
+test(0xee,0xce);
+test(0xef,0xcf);
+test(0xf0,0xd0);
+test(0xf1,0xd1);
+test(0xf2,0xd2);
+test(0xf3,0xd3);
+test(0xf4,0xd4);
+test(0xf5,0xd5);
+test(0xf6,0xd6);
+test(0xf8,0xd8);
+test(0xf9,0xd9);
+test(0xfa,0xda);
+test(0xfb,0xdb);
+test(0xfc,0xdc);
+test(0xfd,0xdd);
+test(0xfe,0xde);
+test(0xff,0x178);
+test(0x100,0x101);
+test(0x101,0x100);
+test(0x102,0x103);
+test(0x103,0x102);
+test(0x104,0x105);
+test(0x105,0x104);
+test(0x106,0x107);
+test(0x107,0x106);
+test(0x108,0x109);
+test(0x109,0x108);
+test(0x10a,0x10b);
+test(0x10b,0x10a);
+test(0x10c,0x10d);
+test(0x10d,0x10c);
+test(0x10e,0x10f);
+test(0x10f,0x10e);
+test(0x110,0x111);
+test(0x111,0x110);
+test(0x112,0x113);
+test(0x113,0x112);
+test(0x114,0x115);
+test(0x115,0x114);
+test(0x116,0x117);
+test(0x117,0x116);
+test(0x118,0x119);
+test(0x119,0x118);
+test(0x11a,0x11b);
+test(0x11b,0x11a);
+test(0x11c,0x11d);
+test(0x11d,0x11c);
+test(0x11e,0x11f);
+test(0x11f,0x11e);
+test(0x120,0x121);
+test(0x121,0x120);
+test(0x122,0x123);
+test(0x123,0x122);
+test(0x124,0x125);
+test(0x125,0x124);
+test(0x126,0x127);
+test(0x127,0x126);
+test(0x128,0x129);
+test(0x129,0x128);
+test(0x12a,0x12b);
+test(0x12b,0x12a);
+test(0x12c,0x12d);
+test(0x12d,0x12c);
+test(0x12e,0x12f);
+test(0x12f,0x12e);
+test(0x132,0x133);
+test(0x133,0x132);
+test(0x134,0x135);
+test(0x135,0x134);
+test(0x136,0x137);
+test(0x137,0x136);
+test(0x139,0x13a);
+test(0x13a,0x139);
+test(0x13b,0x13c);
+test(0x13c,0x13b);
+test(0x13d,0x13e);
+test(0x13e,0x13d);
+test(0x13f,0x140);
+test(0x140,0x13f);
+test(0x141,0x142);
+test(0x142,0x141);
+test(0x143,0x144);
+test(0x144,0x143);
+test(0x145,0x146);
+test(0x146,0x145);
+test(0x147,0x148);
+test(0x148,0x147);
+test(0x14a,0x14b);
+test(0x14b,0x14a);
+test(0x14c,0x14d);
+test(0x14d,0x14c);
+test(0x14e,0x14f);
+test(0x14f,0x14e);
+test(0x150,0x151);
+test(0x151,0x150);
+test(0x152,0x153);
+test(0x153,0x152);
+test(0x154,0x155);
+test(0x155,0x154);
+test(0x156,0x157);
+test(0x157,0x156);
+test(0x158,0x159);
+test(0x159,0x158);
+test(0x15a,0x15b);
+test(0x15b,0x15a);
+test(0x15c,0x15d);
+test(0x15d,0x15c);
+test(0x15e,0x15f);
+test(0x15f,0x15e);
+test(0x160,0x161);
+test(0x161,0x160);
+test(0x162,0x163);
+test(0x163,0x162);
+test(0x164,0x165);
+test(0x165,0x164);
+test(0x166,0x167);
+test(0x167,0x166);
+test(0x168,0x169);
+test(0x169,0x168);
+test(0x16a,0x16b);
+test(0x16b,0x16a);
+test(0x16c,0x16d);
+test(0x16d,0x16c);
+test(0x16e,0x16f);
+test(0x16f,0x16e);
+test(0x170,0x171);
+test(0x171,0x170);
+test(0x172,0x173);
+test(0x173,0x172);
+test(0x174,0x175);
+test(0x175,0x174);
+test(0x176,0x177);
+test(0x177,0x176);
+test(0x178,0xff);
+test(0x179,0x17a);
+test(0x17a,0x179);
+test(0x17b,0x17c);
+test(0x17c,0x17b);
+test(0x17d,0x17e);
+test(0x17e,0x17d);
+test(0x17f,0x73,0x53);
+test(0x180,0x243);
+test(0x181,0x253);
+test(0x182,0x183);
+test(0x183,0x182);
+test(0x184,0x185);
+test(0x185,0x184);
+test(0x186,0x254);
+test(0x187,0x188);
+test(0x188,0x187);
+test(0x189,0x256);
+test(0x18a,0x257);
+test(0x18b,0x18c);
+test(0x18c,0x18b);
+test(0x18e,0x1dd);
+test(0x18f,0x259);
+test(0x190,0x25b);
+test(0x191,0x192);
+test(0x192,0x191);
+test(0x193,0x260);
+test(0x194,0x263);
+test(0x195,0x1f6);
+test(0x196,0x269);
+test(0x197,0x268);
+test(0x198,0x199);
+test(0x199,0x198);
+test(0x19a,0x23d);
+test(0x19c,0x26f);
+test(0x19d,0x272);
+test(0x19e,0x220);
+test(0x19f,0x275);
+test(0x1a0,0x1a1);
+test(0x1a1,0x1a0);
+test(0x1a2,0x1a3);
+test(0x1a3,0x1a2);
+test(0x1a4,0x1a5);
+test(0x1a5,0x1a4);
+test(0x1a6,0x280);
+test(0x1a7,0x1a8);
+test(0x1a8,0x1a7);
+test(0x1a9,0x283);
+test(0x1ac,0x1ad);
+test(0x1ad,0x1ac);
+test(0x1ae,0x288);
+test(0x1af,0x1b0);
+test(0x1b0,0x1af);
+test(0x1b1,0x28a);
+test(0x1b2,0x28b);
+test(0x1b3,0x1b4);
+test(0x1b4,0x1b3);
+test(0x1b5,0x1b6);
+test(0x1b6,0x1b5);
+test(0x1b7,0x292);
+test(0x1b8,0x1b9);
+test(0x1b9,0x1b8);
+test(0x1bc,0x1bd);
+test(0x1bd,0x1bc);
+test(0x1bf,0x1f7);
+test(0x1c4,0x1c6,0x1c5);
+test(0x1c5,0x1c6,0x1c4);
+test(0x1c6,0x1c4,0x1c5);
+test(0x1c7,0x1c9,0x1c8);
+test(0x1c8,0x1c9,0x1c7);
+test(0x1c9,0x1c7,0x1c8);
+test(0x1ca,0x1cc,0x1cb);
+test(0x1cb,0x1cc,0x1ca);
+test(0x1cc,0x1ca,0x1cb);
+test(0x1cd,0x1ce);
+test(0x1ce,0x1cd);
+test(0x1cf,0x1d0);
+test(0x1d0,0x1cf);
+test(0x1d1,0x1d2);
+test(0x1d2,0x1d1);
+test(0x1d3,0x1d4);
+test(0x1d4,0x1d3);
+test(0x1d5,0x1d6);
+test(0x1d6,0x1d5);
+test(0x1d7,0x1d8);
+test(0x1d8,0x1d7);
+test(0x1d9,0x1da);
+test(0x1da,0x1d9);
+test(0x1db,0x1dc);
+test(0x1dc,0x1db);
+test(0x1dd,0x18e);
+test(0x1de,0x1df);
+test(0x1df,0x1de);
+test(0x1e0,0x1e1);
+test(0x1e1,0x1e0);
+test(0x1e2,0x1e3);
+test(0x1e3,0x1e2);
+test(0x1e4,0x1e5);
+test(0x1e5,0x1e4);
+test(0x1e6,0x1e7);
+test(0x1e7,0x1e6);
+test(0x1e8,0x1e9);
+test(0x1e9,0x1e8);
+test(0x1ea,0x1eb);
+test(0x1eb,0x1ea);
+test(0x1ec,0x1ed);
+test(0x1ed,0x1ec);
+test(0x1ee,0x1ef);
+test(0x1ef,0x1ee);
+test(0x1f1,0x1f3,0x1f2);
+test(0x1f2,0x1f3,0x1f1);
+test(0x1f3,0x1f1,0x1f2);
+test(0x1f4,0x1f5);
+test(0x1f5,0x1f4);
+test(0x1f6,0x195);
+test(0x1f7,0x1bf);
+test(0x1f8,0x1f9);
+test(0x1f9,0x1f8);
+test(0x1fa,0x1fb);
+test(0x1fb,0x1fa);
+test(0x1fc,0x1fd);
+test(0x1fd,0x1fc);
+test(0x1fe,0x1ff);
+test(0x1ff,0x1fe);
+test(0x200,0x201);
+test(0x201,0x200);
+test(0x202,0x203);
+test(0x203,0x202);
+test(0x204,0x205);
+test(0x205,0x204);
+test(0x206,0x207);
+test(0x207,0x206);
+test(0x208,0x209);
+test(0x209,0x208);
+test(0x20a,0x20b);
+test(0x20b,0x20a);
+test(0x20c,0x20d);
+test(0x20d,0x20c);
+test(0x20e,0x20f);
+test(0x20f,0x20e);
+test(0x210,0x211);
+test(0x211,0x210);
+test(0x212,0x213);
+test(0x213,0x212);
+test(0x214,0x215);
+test(0x215,0x214);
+test(0x216,0x217);
+test(0x217,0x216);
+test(0x218,0x219);
+test(0x219,0x218);
+test(0x21a,0x21b);
+test(0x21b,0x21a);
+test(0x21c,0x21d);
+test(0x21d,0x21c);
+test(0x21e,0x21f);
+test(0x21f,0x21e);
+test(0x220,0x19e);
+test(0x222,0x223);
+test(0x223,0x222);
+test(0x224,0x225);
+test(0x225,0x224);
+test(0x226,0x227);
+test(0x227,0x226);
+test(0x228,0x229);
+test(0x229,0x228);
+test(0x22a,0x22b);
+test(0x22b,0x22a);
+test(0x22c,0x22d);
+test(0x22d,0x22c);
+test(0x22e,0x22f);
+test(0x22f,0x22e);
+test(0x230,0x231);
+test(0x231,0x230);
+test(0x232,0x233);
+test(0x233,0x232);
+test(0x23a,0x2c65);
+test(0x23b,0x23c);
+test(0x23c,0x23b);
+test(0x23d,0x19a);
+test(0x23e,0x2c66);
+test(0x23f,0x2c7e);
+test(0x240,0x2c7f);
+test(0x241,0x242);
+test(0x242,0x241);
+test(0x243,0x180);
+test(0x244,0x289);
+test(0x245,0x28c);
+test(0x246,0x247);
+test(0x247,0x246);
+test(0x248,0x249);
+test(0x249,0x248);
+test(0x24a,0x24b);
+test(0x24b,0x24a);
+test(0x24c,0x24d);
+test(0x24d,0x24c);
+test(0x24e,0x24f);
+test(0x24f,0x24e);
+test(0x250,0x2c6f);
+test(0x251,0x2c6d);
+test(0x252,0x2c70);
+test(0x253,0x181);
+test(0x254,0x186);
+test(0x256,0x189);
+test(0x257,0x18a);
+test(0x259,0x18f);
+test(0x25b,0x190);
+test(0x25c,0xa7ab);
+test(0x260,0x193);
+test(0x261,0xa7ac);
+test(0x263,0x194);
+test(0x265,0xa78d);
+test(0x266,0xa7aa);
+test(0x268,0x197);
+test(0x269,0x196);
+test(0x26a,0xa7ae);
+test(0x26b,0x2c62);
+test(0x26c,0xa7ad);
+test(0x26f,0x19c);
+test(0x271,0x2c6e);
+test(0x272,0x19d);
+test(0x275,0x19f);
+test(0x27d,0x2c64);
+test(0x280,0x1a6);
+test(0x283,0x1a9);
+test(0x287,0xa7b1);
+test(0x288,0x1ae);
+test(0x289,0x244);
+test(0x28a,0x1b1);
+test(0x28b,0x1b2);
+test(0x28c,0x245);
+test(0x292,0x1b7);
+test(0x29d,0xa7b2);
+test(0x29e,0xa7b0);
+test(0x345,0x3b9,0x399,0x1fbe);
+test(0x370,0x371);
+test(0x371,0x370);
+test(0x372,0x373);
+test(0x373,0x372);
+test(0x376,0x377);
+test(0x377,0x376);
+test(0x37b,0x3fd);
+test(0x37c,0x3fe);
+test(0x37d,0x3ff);
+test(0x37f,0x3f3);
+test(0x386,0x3ac);
+test(0x388,0x3ad);
+test(0x389,0x3ae);
+test(0x38a,0x3af);
+test(0x38c,0x3cc);
+test(0x38e,0x3cd);
+test(0x38f,0x3ce);
+test(0x391,0x3b1);
+test(0x392,0x3b2,0x3d0);
+test(0x393,0x3b3);
+test(0x394,0x3b4);
+test(0x395,0x3b5,0x3f5);
+test(0x396,0x3b6);
+test(0x397,0x3b7);
+test(0x398,0x3b8,0x3d1,0x3f4);
+test(0x399,0x3b9,0x345,0x1fbe);
+test(0x39a,0x3ba,0x3f0);
+test(0x39b,0x3bb);
+test(0x39c,0x3bc,0xb5);
+test(0x39d,0x3bd);
+test(0x39e,0x3be);
+test(0x39f,0x3bf);
+test(0x3a0,0x3c0,0x3d6);
+test(0x3a1,0x3c1,0x3f1);
+test(0x3a3,0x3c3,0x3c2);
+test(0x3a4,0x3c4);
+test(0x3a5,0x3c5);
+test(0x3a6,0x3c6,0x3d5);
+test(0x3a7,0x3c7);
+test(0x3a8,0x3c8);
+test(0x3a9,0x3c9,0x2126);
+test(0x3aa,0x3ca);
+test(0x3ab,0x3cb);
+test(0x3ac,0x386);
+test(0x3ad,0x388);
+test(0x3ae,0x389);
+test(0x3af,0x38a);
+test(0x3b1,0x391);
+test(0x3b2,0x392,0x3d0);
+test(0x3b3,0x393);
+test(0x3b4,0x394);
+test(0x3b5,0x395,0x3f5);
+test(0x3b6,0x396);
+test(0x3b7,0x397);
+test(0x3b8,0x398,0x3d1,0x3f4);
+test(0x3b9,0x345,0x399,0x1fbe);
+test(0x3ba,0x39a,0x3f0);
+test(0x3bb,0x39b);
+test(0x3bc,0xb5,0x39c);
+test(0x3bd,0x39d);
+test(0x3be,0x39e);
+test(0x3bf,0x39f);
+test(0x3c0,0x3a0,0x3d6);
+test(0x3c1,0x3a1,0x3f1);
+test(0x3c2,0x3c3,0x3a3);
+test(0x3c3,0x3a3,0x3c2);
+test(0x3c4,0x3a4);
+test(0x3c5,0x3a5);
+test(0x3c6,0x3a6,0x3d5);
+test(0x3c7,0x3a7);
+test(0x3c8,0x3a8);
+test(0x3c9,0x3a9,0x2126);
+test(0x3ca,0x3aa);
+test(0x3cb,0x3ab);
+test(0x3cc,0x38c);
+test(0x3cd,0x38e);
+test(0x3ce,0x38f);
+test(0x3cf,0x3d7);
+test(0x3d0,0x3b2,0x392);
+test(0x3d1,0x3b8,0x398,0x3f4);
+test(0x3d5,0x3c6,0x3a6);
+test(0x3d6,0x3c0,0x3a0);
+test(0x3d7,0x3cf);
+test(0x3d8,0x3d9);
+test(0x3d9,0x3d8);
+test(0x3da,0x3db);
+test(0x3db,0x3da);
+test(0x3dc,0x3dd);
+test(0x3dd,0x3dc);
+test(0x3de,0x3df);
+test(0x3df,0x3de);
+test(0x3e0,0x3e1);
+test(0x3e1,0x3e0);
+test(0x3e2,0x3e3);
+test(0x3e3,0x3e2);
+test(0x3e4,0x3e5);
+test(0x3e5,0x3e4);
+test(0x3e6,0x3e7);
+test(0x3e7,0x3e6);
+test(0x3e8,0x3e9);
+test(0x3e9,0x3e8);
+test(0x3ea,0x3eb);
+test(0x3eb,0x3ea);
+test(0x3ec,0x3ed);
+test(0x3ed,0x3ec);
+test(0x3ee,0x3ef);
+test(0x3ef,0x3ee);
+test(0x3f0,0x3ba,0x39a);
+test(0x3f1,0x3c1,0x3a1);
+test(0x3f2,0x3f9);
+test(0x3f3,0x37f);
+test(0x3f4,0x3b8,0x398,0x3d1);
+test(0x3f5,0x3b5,0x395);
+test(0x3f7,0x3f8);
+test(0x3f8,0x3f7);
+test(0x3f9,0x3f2);
+test(0x3fa,0x3fb);
+test(0x3fb,0x3fa);
+test(0x3fd,0x37b);
+test(0x3fe,0x37c);
+test(0x3ff,0x37d);
+test(0x400,0x450);
+test(0x401,0x451);
+test(0x402,0x452);
+test(0x403,0x453);
+test(0x404,0x454);
+test(0x405,0x455);
+test(0x406,0x456);
+test(0x407,0x457);
+test(0x408,0x458);
+test(0x409,0x459);
+test(0x40a,0x45a);
+test(0x40b,0x45b);
+test(0x40c,0x45c);
+test(0x40d,0x45d);
+test(0x40e,0x45e);
+test(0x40f,0x45f);
+test(0x410,0x430);
+test(0x411,0x431);
+test(0x412,0x432,0x1c80);
+test(0x413,0x433);
+test(0x414,0x434,0x1c81);
+test(0x415,0x435);
+test(0x416,0x436);
+test(0x417,0x437);
+test(0x418,0x438);
+test(0x419,0x439);
+test(0x41a,0x43a);
+test(0x41b,0x43b);
+test(0x41c,0x43c);
+test(0x41d,0x43d);
+test(0x41e,0x43e,0x1c82);
+test(0x41f,0x43f);
+test(0x420,0x440);
+test(0x421,0x441,0x1c83);
+test(0x422,0x442,0x1c84,0x1c85);
+test(0x423,0x443);
+test(0x424,0x444);
+test(0x425,0x445);
+test(0x426,0x446);
+test(0x427,0x447);
+test(0x428,0x448);
+test(0x429,0x449);
+test(0x42a,0x44a,0x1c86);
+test(0x42b,0x44b);
+test(0x42c,0x44c);
+test(0x42d,0x44d);
+test(0x42e,0x44e);
+test(0x42f,0x44f);
+test(0x430,0x410);
+test(0x431,0x411);
+test(0x432,0x412,0x1c80);
+test(0x433,0x413);
+test(0x434,0x414,0x1c81);
+test(0x435,0x415);
+test(0x436,0x416);
+test(0x437,0x417);
+test(0x438,0x418);
+test(0x439,0x419);
+test(0x43a,0x41a);
+test(0x43b,0x41b);
+test(0x43c,0x41c);
+test(0x43d,0x41d);
+test(0x43e,0x41e,0x1c82);
+test(0x43f,0x41f);
+test(0x440,0x420);
+test(0x441,0x421,0x1c83);
+test(0x442,0x422,0x1c84,0x1c85);
+test(0x443,0x423);
+test(0x444,0x424);
+test(0x445,0x425);
+test(0x446,0x426);
+test(0x447,0x427);
+test(0x448,0x428);
+test(0x449,0x429);
+test(0x44a,0x42a,0x1c86);
+test(0x44b,0x42b);
+test(0x44c,0x42c);
+test(0x44d,0x42d);
+test(0x44e,0x42e);
+test(0x44f,0x42f);
+test(0x450,0x400);
+test(0x451,0x401);
+test(0x452,0x402);
+test(0x453,0x403);
+test(0x454,0x404);
+test(0x455,0x405);
+test(0x456,0x406);
+test(0x457,0x407);
+test(0x458,0x408);
+test(0x459,0x409);
+test(0x45a,0x40a);
+test(0x45b,0x40b);
+test(0x45c,0x40c);
+test(0x45d,0x40d);
+test(0x45e,0x40e);
+test(0x45f,0x40f);
+test(0x460,0x461);
+test(0x461,0x460);
+test(0x462,0x463,0x1c87);
+test(0x463,0x462,0x1c87);
+test(0x464,0x465);
+test(0x465,0x464);
+test(0x466,0x467);
+test(0x467,0x466);
+test(0x468,0x469);
+test(0x469,0x468);
+test(0x46a,0x46b);
+test(0x46b,0x46a);
+test(0x46c,0x46d);
+test(0x46d,0x46c);
+test(0x46e,0x46f);
+test(0x46f,0x46e);
+test(0x470,0x471);
+test(0x471,0x470);
+test(0x472,0x473);
+test(0x473,0x472);
+test(0x474,0x475);
+test(0x475,0x474);
+test(0x476,0x477);
+test(0x477,0x476);
+test(0x478,0x479);
+test(0x479,0x478);
+test(0x47a,0x47b);
+test(0x47b,0x47a);
+test(0x47c,0x47d);
+test(0x47d,0x47c);
+test(0x47e,0x47f);
+test(0x47f,0x47e);
+test(0x480,0x481);
+test(0x481,0x480);
+test(0x48a,0x48b);
+test(0x48b,0x48a);
+test(0x48c,0x48d);
+test(0x48d,0x48c);
+test(0x48e,0x48f);
+test(0x48f,0x48e);
+test(0x490,0x491);
+test(0x491,0x490);
+test(0x492,0x493);
+test(0x493,0x492);
+test(0x494,0x495);
+test(0x495,0x494);
+test(0x496,0x497);
+test(0x497,0x496);
+test(0x498,0x499);
+test(0x499,0x498);
+test(0x49a,0x49b);
+test(0x49b,0x49a);
+test(0x49c,0x49d);
+test(0x49d,0x49c);
+test(0x49e,0x49f);
+test(0x49f,0x49e);
+test(0x4a0,0x4a1);
+test(0x4a1,0x4a0);
+test(0x4a2,0x4a3);
+test(0x4a3,0x4a2);
+test(0x4a4,0x4a5);
+test(0x4a5,0x4a4);
+test(0x4a6,0x4a7);
+test(0x4a7,0x4a6);
+test(0x4a8,0x4a9);
+test(0x4a9,0x4a8);
+test(0x4aa,0x4ab);
+test(0x4ab,0x4aa);
+test(0x4ac,0x4ad);
+test(0x4ad,0x4ac);
+test(0x4ae,0x4af);
+test(0x4af,0x4ae);
+test(0x4b0,0x4b1);
+test(0x4b1,0x4b0);
+test(0x4b2,0x4b3);
+test(0x4b3,0x4b2);
+test(0x4b4,0x4b5);
+test(0x4b5,0x4b4);
+test(0x4b6,0x4b7);
+test(0x4b7,0x4b6);
+test(0x4b8,0x4b9);
+test(0x4b9,0x4b8);
+test(0x4ba,0x4bb);
+test(0x4bb,0x4ba);
+test(0x4bc,0x4bd);
+test(0x4bd,0x4bc);
+test(0x4be,0x4bf);
+test(0x4bf,0x4be);
+test(0x4c0,0x4cf);
+test(0x4c1,0x4c2);
+test(0x4c2,0x4c1);
+test(0x4c3,0x4c4);
+test(0x4c4,0x4c3);
+test(0x4c5,0x4c6);
+test(0x4c6,0x4c5);
+test(0x4c7,0x4c8);
+test(0x4c8,0x4c7);
+test(0x4c9,0x4ca);
+test(0x4ca,0x4c9);
+test(0x4cb,0x4cc);
+test(0x4cc,0x4cb);
+test(0x4cd,0x4ce);
+test(0x4ce,0x4cd);
+test(0x4cf,0x4c0);
+test(0x4d0,0x4d1);
+test(0x4d1,0x4d0);
+test(0x4d2,0x4d3);
+test(0x4d3,0x4d2);
+test(0x4d4,0x4d5);
+test(0x4d5,0x4d4);
+test(0x4d6,0x4d7);
+test(0x4d7,0x4d6);
+test(0x4d8,0x4d9);
+test(0x4d9,0x4d8);
+test(0x4da,0x4db);
+test(0x4db,0x4da);
+test(0x4dc,0x4dd);
+test(0x4dd,0x4dc);
+test(0x4de,0x4df);
+test(0x4df,0x4de);
+test(0x4e0,0x4e1);
+test(0x4e1,0x4e0);
+test(0x4e2,0x4e3);
+test(0x4e3,0x4e2);
+test(0x4e4,0x4e5);
+test(0x4e5,0x4e4);
+test(0x4e6,0x4e7);
+test(0x4e7,0x4e6);
+test(0x4e8,0x4e9);
+test(0x4e9,0x4e8);
+test(0x4ea,0x4eb);
+test(0x4eb,0x4ea);
+test(0x4ec,0x4ed);
+test(0x4ed,0x4ec);
+test(0x4ee,0x4ef);
+test(0x4ef,0x4ee);
+test(0x4f0,0x4f1);
+test(0x4f1,0x4f0);
+test(0x4f2,0x4f3);
+test(0x4f3,0x4f2);
+test(0x4f4,0x4f5);
+test(0x4f5,0x4f4);
+test(0x4f6,0x4f7);
+test(0x4f7,0x4f6);
+test(0x4f8,0x4f9);
+test(0x4f9,0x4f8);
+test(0x4fa,0x4fb);
+test(0x4fb,0x4fa);
+test(0x4fc,0x4fd);
+test(0x4fd,0x4fc);
+test(0x4fe,0x4ff);
+test(0x4ff,0x4fe);
+test(0x500,0x501);
+test(0x501,0x500);
+test(0x502,0x503);
+test(0x503,0x502);
+test(0x504,0x505);
+test(0x505,0x504);
+test(0x506,0x507);
+test(0x507,0x506);
+test(0x508,0x509);
+test(0x509,0x508);
+test(0x50a,0x50b);
+test(0x50b,0x50a);
+test(0x50c,0x50d);
+test(0x50d,0x50c);
+test(0x50e,0x50f);
+test(0x50f,0x50e);
+test(0x510,0x511);
+test(0x511,0x510);
+test(0x512,0x513);
+test(0x513,0x512);
+test(0x514,0x515);
+test(0x515,0x514);
+test(0x516,0x517);
+test(0x517,0x516);
+test(0x518,0x519);
+test(0x519,0x518);
+test(0x51a,0x51b);
+test(0x51b,0x51a);
+test(0x51c,0x51d);
+test(0x51d,0x51c);
+test(0x51e,0x51f);
+test(0x51f,0x51e);
+test(0x520,0x521);
+test(0x521,0x520);
+test(0x522,0x523);
+test(0x523,0x522);
+test(0x524,0x525);
+test(0x525,0x524);
+test(0x526,0x527);
+test(0x527,0x526);
+test(0x528,0x529);
+test(0x529,0x528);
+test(0x52a,0x52b);
+test(0x52b,0x52a);
+test(0x52c,0x52d);
+test(0x52d,0x52c);
+test(0x52e,0x52f);
+test(0x52f,0x52e);
+test(0x531,0x561);
+test(0x532,0x562);
+test(0x533,0x563);
+test(0x534,0x564);
+test(0x535,0x565);
+test(0x536,0x566);
+test(0x537,0x567);
+test(0x538,0x568);
+test(0x539,0x569);
+test(0x53a,0x56a);
+test(0x53b,0x56b);
+test(0x53c,0x56c);
+test(0x53d,0x56d);
+test(0x53e,0x56e);
+test(0x53f,0x56f);
+test(0x540,0x570);
+test(0x541,0x571);
+test(0x542,0x572);
+test(0x543,0x573);
+test(0x544,0x574);
+test(0x545,0x575);
+test(0x546,0x576);
+test(0x547,0x577);
+test(0x548,0x578);
+test(0x549,0x579);
+test(0x54a,0x57a);
+test(0x54b,0x57b);
+test(0x54c,0x57c);
+test(0x54d,0x57d);
+test(0x54e,0x57e);
+test(0x54f,0x57f);
+test(0x550,0x580);
+test(0x551,0x581);
+test(0x552,0x582);
+test(0x553,0x583);
+test(0x554,0x584);
+test(0x555,0x585);
+test(0x556,0x586);
+test(0x561,0x531);
+test(0x562,0x532);
+test(0x563,0x533);
+test(0x564,0x534);
+test(0x565,0x535);
+test(0x566,0x536);
+test(0x567,0x537);
+test(0x568,0x538);
+test(0x569,0x539);
+test(0x56a,0x53a);
+test(0x56b,0x53b);
+test(0x56c,0x53c);
+test(0x56d,0x53d);
+test(0x56e,0x53e);
+test(0x56f,0x53f);
+test(0x570,0x540);
+test(0x571,0x541);
+test(0x572,0x542);
+test(0x573,0x543);
+test(0x574,0x544);
+test(0x575,0x545);
+test(0x576,0x546);
+test(0x577,0x547);
+test(0x578,0x548);
+test(0x579,0x549);
+test(0x57a,0x54a);
+test(0x57b,0x54b);
+test(0x57c,0x54c);
+test(0x57d,0x54d);
+test(0x57e,0x54e);
+test(0x57f,0x54f);
+test(0x580,0x550);
+test(0x581,0x551);
+test(0x582,0x552);
+test(0x583,0x553);
+test(0x584,0x554);
+test(0x585,0x555);
+test(0x586,0x556);
+test(0x10a0,0x2d00);
+test(0x10a1,0x2d01);
+test(0x10a2,0x2d02);
+test(0x10a3,0x2d03);
+test(0x10a4,0x2d04);
+test(0x10a5,0x2d05);
+test(0x10a6,0x2d06);
+test(0x10a7,0x2d07);
+test(0x10a8,0x2d08);
+test(0x10a9,0x2d09);
+test(0x10aa,0x2d0a);
+test(0x10ab,0x2d0b);
+test(0x10ac,0x2d0c);
+test(0x10ad,0x2d0d);
+test(0x10ae,0x2d0e);
+test(0x10af,0x2d0f);
+test(0x10b0,0x2d10);
+test(0x10b1,0x2d11);
+test(0x10b2,0x2d12);
+test(0x10b3,0x2d13);
+test(0x10b4,0x2d14);
+test(0x10b5,0x2d15);
+test(0x10b6,0x2d16);
+test(0x10b7,0x2d17);
+test(0x10b8,0x2d18);
+test(0x10b9,0x2d19);
+test(0x10ba,0x2d1a);
+test(0x10bb,0x2d1b);
+test(0x10bc,0x2d1c);
+test(0x10bd,0x2d1d);
+test(0x10be,0x2d1e);
+test(0x10bf,0x2d1f);
+test(0x10c0,0x2d20);
+test(0x10c1,0x2d21);
+test(0x10c2,0x2d22);
+test(0x10c3,0x2d23);
+test(0x10c4,0x2d24);
+test(0x10c5,0x2d25);
+test(0x10c7,0x2d27);
+test(0x10cd,0x2d2d);
+test(0x13a0,0xab70);
+test(0x13a1,0xab71);
+test(0x13a2,0xab72);
+test(0x13a3,0xab73);
+test(0x13a4,0xab74);
+test(0x13a5,0xab75);
+test(0x13a6,0xab76);
+test(0x13a7,0xab77);
+test(0x13a8,0xab78);
+test(0x13a9,0xab79);
+test(0x13aa,0xab7a);
+test(0x13ab,0xab7b);
+test(0x13ac,0xab7c);
+test(0x13ad,0xab7d);
+test(0x13ae,0xab7e);
+test(0x13af,0xab7f);
+test(0x13b0,0xab80);
+test(0x13b1,0xab81);
+test(0x13b2,0xab82);
+test(0x13b3,0xab83);
+test(0x13b4,0xab84);
+test(0x13b5,0xab85);
+test(0x13b6,0xab86);
+test(0x13b7,0xab87);
+test(0x13b8,0xab88);
+test(0x13b9,0xab89);
+test(0x13ba,0xab8a);
+test(0x13bb,0xab8b);
+test(0x13bc,0xab8c);
+test(0x13bd,0xab8d);
+test(0x13be,0xab8e);
+test(0x13bf,0xab8f);
+test(0x13c0,0xab90);
+test(0x13c1,0xab91);
+test(0x13c2,0xab92);
+test(0x13c3,0xab93);
+test(0x13c4,0xab94);
+test(0x13c5,0xab95);
+test(0x13c6,0xab96);
+test(0x13c7,0xab97);
+test(0x13c8,0xab98);
+test(0x13c9,0xab99);
+test(0x13ca,0xab9a);
+test(0x13cb,0xab9b);
+test(0x13cc,0xab9c);
+test(0x13cd,0xab9d);
+test(0x13ce,0xab9e);
+test(0x13cf,0xab9f);
+test(0x13d0,0xaba0);
+test(0x13d1,0xaba1);
+test(0x13d2,0xaba2);
+test(0x13d3,0xaba3);
+test(0x13d4,0xaba4);
+test(0x13d5,0xaba5);
+test(0x13d6,0xaba6);
+test(0x13d7,0xaba7);
+test(0x13d8,0xaba8);
+test(0x13d9,0xaba9);
+test(0x13da,0xabaa);
+test(0x13db,0xabab);
+test(0x13dc,0xabac);
+test(0x13dd,0xabad);
+test(0x13de,0xabae);
+test(0x13df,0xabaf);
+test(0x13e0,0xabb0);
+test(0x13e1,0xabb1);
+test(0x13e2,0xabb2);
+test(0x13e3,0xabb3);
+test(0x13e4,0xabb4);
+test(0x13e5,0xabb5);
+test(0x13e6,0xabb6);
+test(0x13e7,0xabb7);
+test(0x13e8,0xabb8);
+test(0x13e9,0xabb9);
+test(0x13ea,0xabba);
+test(0x13eb,0xabbb);
+test(0x13ec,0xabbc);
+test(0x13ed,0xabbd);
+test(0x13ee,0xabbe);
+test(0x13ef,0xabbf);
+test(0x13f0,0x13f8);
+test(0x13f1,0x13f9);
+test(0x13f2,0x13fa);
+test(0x13f3,0x13fb);
+test(0x13f4,0x13fc);
+test(0x13f5,0x13fd);
+test(0x13f8,0x13f0);
+test(0x13f9,0x13f1);
+test(0x13fa,0x13f2);
+test(0x13fb,0x13f3);
+test(0x13fc,0x13f4);
+test(0x13fd,0x13f5);
+test(0x1c80,0x432,0x412);
+test(0x1c81,0x434,0x414);
+test(0x1c82,0x43e,0x41e);
+test(0x1c83,0x441,0x421);
+test(0x1c84,0x442,0x422,0x1c85);
+test(0x1c85,0x442,0x422,0x1c84);
+test(0x1c86,0x44a,0x42a);
+test(0x1c87,0x463,0x462);
+test(0x1c88,0xa64b,0xa64a);
+test(0x1d79,0xa77d);
+test(0x1d7d,0x2c63);
+test(0x1e00,0x1e01);
+test(0x1e01,0x1e00);
+test(0x1e02,0x1e03);
+test(0x1e03,0x1e02);
+test(0x1e04,0x1e05);
+test(0x1e05,0x1e04);
+test(0x1e06,0x1e07);
+test(0x1e07,0x1e06);
+test(0x1e08,0x1e09);
+test(0x1e09,0x1e08);
+test(0x1e0a,0x1e0b);
+test(0x1e0b,0x1e0a);
+test(0x1e0c,0x1e0d);
+test(0x1e0d,0x1e0c);
+test(0x1e0e,0x1e0f);
+test(0x1e0f,0x1e0e);
+test(0x1e10,0x1e11);
+test(0x1e11,0x1e10);
+test(0x1e12,0x1e13);
+test(0x1e13,0x1e12);
+test(0x1e14,0x1e15);
+test(0x1e15,0x1e14);
+test(0x1e16,0x1e17);
+test(0x1e17,0x1e16);
+test(0x1e18,0x1e19);
+test(0x1e19,0x1e18);
+test(0x1e1a,0x1e1b);
+test(0x1e1b,0x1e1a);
+test(0x1e1c,0x1e1d);
+test(0x1e1d,0x1e1c);
+test(0x1e1e,0x1e1f);
+test(0x1e1f,0x1e1e);
+test(0x1e20,0x1e21);
+test(0x1e21,0x1e20);
+test(0x1e22,0x1e23);
+test(0x1e23,0x1e22);
+test(0x1e24,0x1e25);
+test(0x1e25,0x1e24);
+test(0x1e26,0x1e27);
+test(0x1e27,0x1e26);
+test(0x1e28,0x1e29);
+test(0x1e29,0x1e28);
+test(0x1e2a,0x1e2b);
+test(0x1e2b,0x1e2a);
+test(0x1e2c,0x1e2d);
+test(0x1e2d,0x1e2c);
+test(0x1e2e,0x1e2f);
+test(0x1e2f,0x1e2e);
+test(0x1e30,0x1e31);
+test(0x1e31,0x1e30);
+test(0x1e32,0x1e33);
+test(0x1e33,0x1e32);
+test(0x1e34,0x1e35);
+test(0x1e35,0x1e34);
+test(0x1e36,0x1e37);
+test(0x1e37,0x1e36);
+test(0x1e38,0x1e39);
+test(0x1e39,0x1e38);
+test(0x1e3a,0x1e3b);
+test(0x1e3b,0x1e3a);
+test(0x1e3c,0x1e3d);
+test(0x1e3d,0x1e3c);
+test(0x1e3e,0x1e3f);
+test(0x1e3f,0x1e3e);
+test(0x1e40,0x1e41);
+test(0x1e41,0x1e40);
+test(0x1e42,0x1e43);
+test(0x1e43,0x1e42);
+test(0x1e44,0x1e45);
+test(0x1e45,0x1e44);
+test(0x1e46,0x1e47);
+test(0x1e47,0x1e46);
+test(0x1e48,0x1e49);
+test(0x1e49,0x1e48);
+test(0x1e4a,0x1e4b);
+test(0x1e4b,0x1e4a);
+test(0x1e4c,0x1e4d);
+test(0x1e4d,0x1e4c);
+test(0x1e4e,0x1e4f);
+test(0x1e4f,0x1e4e);
+test(0x1e50,0x1e51);
+test(0x1e51,0x1e50);
+test(0x1e52,0x1e53);
+test(0x1e53,0x1e52);
+test(0x1e54,0x1e55);
+test(0x1e55,0x1e54);
+test(0x1e56,0x1e57);
+test(0x1e57,0x1e56);
+test(0x1e58,0x1e59);
+test(0x1e59,0x1e58);
+test(0x1e5a,0x1e5b);
+test(0x1e5b,0x1e5a);
+test(0x1e5c,0x1e5d);
+test(0x1e5d,0x1e5c);
+test(0x1e5e,0x1e5f);
+test(0x1e5f,0x1e5e);
+test(0x1e60,0x1e61,0x1e9b);
+test(0x1e61,0x1e60,0x1e9b);
+test(0x1e62,0x1e63);
+test(0x1e63,0x1e62);
+test(0x1e64,0x1e65);
+test(0x1e65,0x1e64);
+test(0x1e66,0x1e67);
+test(0x1e67,0x1e66);
+test(0x1e68,0x1e69);
+test(0x1e69,0x1e68);
+test(0x1e6a,0x1e6b);
+test(0x1e6b,0x1e6a);
+test(0x1e6c,0x1e6d);
+test(0x1e6d,0x1e6c);
+test(0x1e6e,0x1e6f);
+test(0x1e6f,0x1e6e);
+test(0x1e70,0x1e71);
+test(0x1e71,0x1e70);
+test(0x1e72,0x1e73);
+test(0x1e73,0x1e72);
+test(0x1e74,0x1e75);
+test(0x1e75,0x1e74);
+test(0x1e76,0x1e77);
+test(0x1e77,0x1e76);
+test(0x1e78,0x1e79);
+test(0x1e79,0x1e78);
+test(0x1e7a,0x1e7b);
+test(0x1e7b,0x1e7a);
+test(0x1e7c,0x1e7d);
+test(0x1e7d,0x1e7c);
+test(0x1e7e,0x1e7f);
+test(0x1e7f,0x1e7e);
+test(0x1e80,0x1e81);
+test(0x1e81,0x1e80);
+test(0x1e82,0x1e83);
+test(0x1e83,0x1e82);
+test(0x1e84,0x1e85);
+test(0x1e85,0x1e84);
+test(0x1e86,0x1e87);
+test(0x1e87,0x1e86);
+test(0x1e88,0x1e89);
+test(0x1e89,0x1e88);
+test(0x1e8a,0x1e8b);
+test(0x1e8b,0x1e8a);
+test(0x1e8c,0x1e8d);
+test(0x1e8d,0x1e8c);
+test(0x1e8e,0x1e8f);
+test(0x1e8f,0x1e8e);
+test(0x1e90,0x1e91);
+test(0x1e91,0x1e90);
+test(0x1e92,0x1e93);
+test(0x1e93,0x1e92);
+test(0x1e94,0x1e95);
+test(0x1e95,0x1e94);
+test(0x1e9b,0x1e61,0x1e60);
+test(0x1e9e,0xdf);
+test(0x1ea0,0x1ea1);
+test(0x1ea1,0x1ea0);
+test(0x1ea2,0x1ea3);
+test(0x1ea3,0x1ea2);
+test(0x1ea4,0x1ea5);
+test(0x1ea5,0x1ea4);
+test(0x1ea6,0x1ea7);
+test(0x1ea7,0x1ea6);
+test(0x1ea8,0x1ea9);
+test(0x1ea9,0x1ea8);
+test(0x1eaa,0x1eab);
+test(0x1eab,0x1eaa);
+test(0x1eac,0x1ead);
+test(0x1ead,0x1eac);
+test(0x1eae,0x1eaf);
+test(0x1eaf,0x1eae);
+test(0x1eb0,0x1eb1);
+test(0x1eb1,0x1eb0);
+test(0x1eb2,0x1eb3);
+test(0x1eb3,0x1eb2);
+test(0x1eb4,0x1eb5);
+test(0x1eb5,0x1eb4);
+test(0x1eb6,0x1eb7);
+test(0x1eb7,0x1eb6);
+test(0x1eb8,0x1eb9);
+test(0x1eb9,0x1eb8);
+test(0x1eba,0x1ebb);
+test(0x1ebb,0x1eba);
+test(0x1ebc,0x1ebd);
+test(0x1ebd,0x1ebc);
+test(0x1ebe,0x1ebf);
+test(0x1ebf,0x1ebe);
+test(0x1ec0,0x1ec1);
+test(0x1ec1,0x1ec0);
+test(0x1ec2,0x1ec3);
+test(0x1ec3,0x1ec2);
+test(0x1ec4,0x1ec5);
+test(0x1ec5,0x1ec4);
+test(0x1ec6,0x1ec7);
+test(0x1ec7,0x1ec6);
+test(0x1ec8,0x1ec9);
+test(0x1ec9,0x1ec8);
+test(0x1eca,0x1ecb);
+test(0x1ecb,0x1eca);
+test(0x1ecc,0x1ecd);
+test(0x1ecd,0x1ecc);
+test(0x1ece,0x1ecf);
+test(0x1ecf,0x1ece);
+test(0x1ed0,0x1ed1);
+test(0x1ed1,0x1ed0);
+test(0x1ed2,0x1ed3);
+test(0x1ed3,0x1ed2);
+test(0x1ed4,0x1ed5);
+test(0x1ed5,0x1ed4);
+test(0x1ed6,0x1ed7);
+test(0x1ed7,0x1ed6);
+test(0x1ed8,0x1ed9);
+test(0x1ed9,0x1ed8);
+test(0x1eda,0x1edb);
+test(0x1edb,0x1eda);
+test(0x1edc,0x1edd);
+test(0x1edd,0x1edc);
+test(0x1ede,0x1edf);
+test(0x1edf,0x1ede);
+test(0x1ee0,0x1ee1);
+test(0x1ee1,0x1ee0);
+test(0x1ee2,0x1ee3);
+test(0x1ee3,0x1ee2);
+test(0x1ee4,0x1ee5);
+test(0x1ee5,0x1ee4);
+test(0x1ee6,0x1ee7);
+test(0x1ee7,0x1ee6);
+test(0x1ee8,0x1ee9);
+test(0x1ee9,0x1ee8);
+test(0x1eea,0x1eeb);
+test(0x1eeb,0x1eea);
+test(0x1eec,0x1eed);
+test(0x1eed,0x1eec);
+test(0x1eee,0x1eef);
+test(0x1eef,0x1eee);
+test(0x1ef0,0x1ef1);
+test(0x1ef1,0x1ef0);
+test(0x1ef2,0x1ef3);
+test(0x1ef3,0x1ef2);
+test(0x1ef4,0x1ef5);
+test(0x1ef5,0x1ef4);
+test(0x1ef6,0x1ef7);
+test(0x1ef7,0x1ef6);
+test(0x1ef8,0x1ef9);
+test(0x1ef9,0x1ef8);
+test(0x1efa,0x1efb);
+test(0x1efb,0x1efa);
+test(0x1efc,0x1efd);
+test(0x1efd,0x1efc);
+test(0x1efe,0x1eff);
+test(0x1eff,0x1efe);
+test(0x1f00,0x1f08);
+test(0x1f01,0x1f09);
+test(0x1f02,0x1f0a);
+test(0x1f03,0x1f0b);
+test(0x1f04,0x1f0c);
+test(0x1f05,0x1f0d);
+test(0x1f06,0x1f0e);
+test(0x1f07,0x1f0f);
+test(0x1f08,0x1f00);
+test(0x1f09,0x1f01);
+test(0x1f0a,0x1f02);
+test(0x1f0b,0x1f03);
+test(0x1f0c,0x1f04);
+test(0x1f0d,0x1f05);
+test(0x1f0e,0x1f06);
+test(0x1f0f,0x1f07);
+test(0x1f10,0x1f18);
+test(0x1f11,0x1f19);
+test(0x1f12,0x1f1a);
+test(0x1f13,0x1f1b);
+test(0x1f14,0x1f1c);
+test(0x1f15,0x1f1d);
+test(0x1f18,0x1f10);
+test(0x1f19,0x1f11);
+test(0x1f1a,0x1f12);
+test(0x1f1b,0x1f13);
+test(0x1f1c,0x1f14);
+test(0x1f1d,0x1f15);
+test(0x1f20,0x1f28);
+test(0x1f21,0x1f29);
+test(0x1f22,0x1f2a);
+test(0x1f23,0x1f2b);
+test(0x1f24,0x1f2c);
+test(0x1f25,0x1f2d);
+test(0x1f26,0x1f2e);
+test(0x1f27,0x1f2f);
+test(0x1f28,0x1f20);
+test(0x1f29,0x1f21);
+test(0x1f2a,0x1f22);
+test(0x1f2b,0x1f23);
+test(0x1f2c,0x1f24);
+test(0x1f2d,0x1f25);
+test(0x1f2e,0x1f26);
+test(0x1f2f,0x1f27);
+test(0x1f30,0x1f38);
+test(0x1f31,0x1f39);
+test(0x1f32,0x1f3a);
+test(0x1f33,0x1f3b);
+test(0x1f34,0x1f3c);
+test(0x1f35,0x1f3d);
+test(0x1f36,0x1f3e);
+test(0x1f37,0x1f3f);
+test(0x1f38,0x1f30);
+test(0x1f39,0x1f31);
+test(0x1f3a,0x1f32);
+test(0x1f3b,0x1f33);
+test(0x1f3c,0x1f34);
+test(0x1f3d,0x1f35);
+test(0x1f3e,0x1f36);
+test(0x1f3f,0x1f37);
+test(0x1f40,0x1f48);
+test(0x1f41,0x1f49);
+test(0x1f42,0x1f4a);
+test(0x1f43,0x1f4b);
+test(0x1f44,0x1f4c);
+test(0x1f45,0x1f4d);
+test(0x1f48,0x1f40);
+test(0x1f49,0x1f41);
+test(0x1f4a,0x1f42);
+test(0x1f4b,0x1f43);
+test(0x1f4c,0x1f44);
+test(0x1f4d,0x1f45);
+test(0x1f51,0x1f59);
+test(0x1f53,0x1f5b);
+test(0x1f55,0x1f5d);
+test(0x1f57,0x1f5f);
+test(0x1f59,0x1f51);
+test(0x1f5b,0x1f53);
+test(0x1f5d,0x1f55);
+test(0x1f5f,0x1f57);
+test(0x1f60,0x1f68);
+test(0x1f61,0x1f69);
+test(0x1f62,0x1f6a);
+test(0x1f63,0x1f6b);
+test(0x1f64,0x1f6c);
+test(0x1f65,0x1f6d);
+test(0x1f66,0x1f6e);
+test(0x1f67,0x1f6f);
+test(0x1f68,0x1f60);
+test(0x1f69,0x1f61);
+test(0x1f6a,0x1f62);
+test(0x1f6b,0x1f63);
+test(0x1f6c,0x1f64);
+test(0x1f6d,0x1f65);
+test(0x1f6e,0x1f66);
+test(0x1f6f,0x1f67);
+test(0x1f70,0x1fba);
+test(0x1f71,0x1fbb);
+test(0x1f72,0x1fc8);
+test(0x1f73,0x1fc9);
+test(0x1f74,0x1fca);
+test(0x1f75,0x1fcb);
+test(0x1f76,0x1fda);
+test(0x1f77,0x1fdb);
+test(0x1f78,0x1ff8);
+test(0x1f79,0x1ff9);
+test(0x1f7a,0x1fea);
+test(0x1f7b,0x1feb);
+test(0x1f7c,0x1ffa);
+test(0x1f7d,0x1ffb);
+test(0x1f80,0x1f88);
+test(0x1f81,0x1f89);
+test(0x1f82,0x1f8a);
+test(0x1f83,0x1f8b);
+test(0x1f84,0x1f8c);
+test(0x1f85,0x1f8d);
+test(0x1f86,0x1f8e);
+test(0x1f87,0x1f8f);
+test(0x1f88,0x1f80);
+test(0x1f89,0x1f81);
+test(0x1f8a,0x1f82);
+test(0x1f8b,0x1f83);
+test(0x1f8c,0x1f84);
+test(0x1f8d,0x1f85);
+test(0x1f8e,0x1f86);
+test(0x1f8f,0x1f87);
+test(0x1f90,0x1f98);
+test(0x1f91,0x1f99);
+test(0x1f92,0x1f9a);
+test(0x1f93,0x1f9b);
+test(0x1f94,0x1f9c);
+test(0x1f95,0x1f9d);
+test(0x1f96,0x1f9e);
+test(0x1f97,0x1f9f);
+test(0x1f98,0x1f90);
+test(0x1f99,0x1f91);
+test(0x1f9a,0x1f92);
+test(0x1f9b,0x1f93);
+test(0x1f9c,0x1f94);
+test(0x1f9d,0x1f95);
+test(0x1f9e,0x1f96);
+test(0x1f9f,0x1f97);
+test(0x1fa0,0x1fa8);
+test(0x1fa1,0x1fa9);
+test(0x1fa2,0x1faa);
+test(0x1fa3,0x1fab);
+test(0x1fa4,0x1fac);
+test(0x1fa5,0x1fad);
+test(0x1fa6,0x1fae);
+test(0x1fa7,0x1faf);
+test(0x1fa8,0x1fa0);
+test(0x1fa9,0x1fa1);
+test(0x1faa,0x1fa2);
+test(0x1fab,0x1fa3);
+test(0x1fac,0x1fa4);
+test(0x1fad,0x1fa5);
+test(0x1fae,0x1fa6);
+test(0x1faf,0x1fa7);
+test(0x1fb0,0x1fb8);
+test(0x1fb1,0x1fb9);
+test(0x1fb3,0x1fbc);
+test(0x1fb8,0x1fb0);
+test(0x1fb9,0x1fb1);
+test(0x1fba,0x1f70);
+test(0x1fbb,0x1f71);
+test(0x1fbc,0x1fb3);
+test(0x1fbe,0x3b9,0x345,0x399);
+test(0x1fc3,0x1fcc);
+test(0x1fc8,0x1f72);
+test(0x1fc9,0x1f73);
+test(0x1fca,0x1f74);
+test(0x1fcb,0x1f75);
+test(0x1fcc,0x1fc3);
+test(0x1fd0,0x1fd8);
+test(0x1fd1,0x1fd9);
+test(0x1fd8,0x1fd0);
+test(0x1fd9,0x1fd1);
+test(0x1fda,0x1f76);
+test(0x1fdb,0x1f77);
+test(0x1fe0,0x1fe8);
+test(0x1fe1,0x1fe9);
+test(0x1fe5,0x1fec);
+test(0x1fe8,0x1fe0);
+test(0x1fe9,0x1fe1);
+test(0x1fea,0x1f7a);
+test(0x1feb,0x1f7b);
+test(0x1fec,0x1fe5);
+test(0x1ff3,0x1ffc);
+test(0x1ff8,0x1f78);
+test(0x1ff9,0x1f79);
+test(0x1ffa,0x1f7c);
+test(0x1ffb,0x1f7d);
+test(0x1ffc,0x1ff3);
+test(0x2126,0x3c9,0x3a9);
+test(0x212a,0x6b,0x4b);
+test(0x212b,0xe5,0xc5);
+test(0x2132,0x214e);
+test(0x214e,0x2132);
+test(0x2160,0x2170);
+test(0x2161,0x2171);
+test(0x2162,0x2172);
+test(0x2163,0x2173);
+test(0x2164,0x2174);
+test(0x2165,0x2175);
+test(0x2166,0x2176);
+test(0x2167,0x2177);
+test(0x2168,0x2178);
+test(0x2169,0x2179);
+test(0x216a,0x217a);
+test(0x216b,0x217b);
+test(0x216c,0x217c);
+test(0x216d,0x217d);
+test(0x216e,0x217e);
+test(0x216f,0x217f);
+test(0x2170,0x2160);
+test(0x2171,0x2161);
+test(0x2172,0x2162);
+test(0x2173,0x2163);
+test(0x2174,0x2164);
+test(0x2175,0x2165);
+test(0x2176,0x2166);
+test(0x2177,0x2167);
+test(0x2178,0x2168);
+test(0x2179,0x2169);
+test(0x217a,0x216a);
+test(0x217b,0x216b);
+test(0x217c,0x216c);
+test(0x217d,0x216d);
+test(0x217e,0x216e);
+test(0x217f,0x216f);
+test(0x2183,0x2184);
+test(0x2184,0x2183);
+test(0x24b6,0x24d0);
+test(0x24b7,0x24d1);
+test(0x24b8,0x24d2);
+test(0x24b9,0x24d3);
+test(0x24ba,0x24d4);
+test(0x24bb,0x24d5);
+test(0x24bc,0x24d6);
+test(0x24bd,0x24d7);
+test(0x24be,0x24d8);
+test(0x24bf,0x24d9);
+test(0x24c0,0x24da);
+test(0x24c1,0x24db);
+test(0x24c2,0x24dc);
+test(0x24c3,0x24dd);
+test(0x24c4,0x24de);
+test(0x24c5,0x24df);
+test(0x24c6,0x24e0);
+test(0x24c7,0x24e1);
+test(0x24c8,0x24e2);
+test(0x24c9,0x24e3);
+test(0x24ca,0x24e4);
+test(0x24cb,0x24e5);
+test(0x24cc,0x24e6);
+test(0x24cd,0x24e7);
+test(0x24ce,0x24e8);
+test(0x24cf,0x24e9);
+test(0x24d0,0x24b6);
+test(0x24d1,0x24b7);
+test(0x24d2,0x24b8);
+test(0x24d3,0x24b9);
+test(0x24d4,0x24ba);
+test(0x24d5,0x24bb);
+test(0x24d6,0x24bc);
+test(0x24d7,0x24bd);
+test(0x24d8,0x24be);
+test(0x24d9,0x24bf);
+test(0x24da,0x24c0);
+test(0x24db,0x24c1);
+test(0x24dc,0x24c2);
+test(0x24dd,0x24c3);
+test(0x24de,0x24c4);
+test(0x24df,0x24c5);
+test(0x24e0,0x24c6);
+test(0x24e1,0x24c7);
+test(0x24e2,0x24c8);
+test(0x24e3,0x24c9);
+test(0x24e4,0x24ca);
+test(0x24e5,0x24cb);
+test(0x24e6,0x24cc);
+test(0x24e7,0x24cd);
+test(0x24e8,0x24ce);
+test(0x24e9,0x24cf);
+test(0x2c00,0x2c30);
+test(0x2c01,0x2c31);
+test(0x2c02,0x2c32);
+test(0x2c03,0x2c33);
+test(0x2c04,0x2c34);
+test(0x2c05,0x2c35);
+test(0x2c06,0x2c36);
+test(0x2c07,0x2c37);
+test(0x2c08,0x2c38);
+test(0x2c09,0x2c39);
+test(0x2c0a,0x2c3a);
+test(0x2c0b,0x2c3b);
+test(0x2c0c,0x2c3c);
+test(0x2c0d,0x2c3d);
+test(0x2c0e,0x2c3e);
+test(0x2c0f,0x2c3f);
+test(0x2c10,0x2c40);
+test(0x2c11,0x2c41);
+test(0x2c12,0x2c42);
+test(0x2c13,0x2c43);
+test(0x2c14,0x2c44);
+test(0x2c15,0x2c45);
+test(0x2c16,0x2c46);
+test(0x2c17,0x2c47);
+test(0x2c18,0x2c48);
+test(0x2c19,0x2c49);
+test(0x2c1a,0x2c4a);
+test(0x2c1b,0x2c4b);
+test(0x2c1c,0x2c4c);
+test(0x2c1d,0x2c4d);
+test(0x2c1e,0x2c4e);
+test(0x2c1f,0x2c4f);
+test(0x2c20,0x2c50);
+test(0x2c21,0x2c51);
+test(0x2c22,0x2c52);
+test(0x2c23,0x2c53);
+test(0x2c24,0x2c54);
+test(0x2c25,0x2c55);
+test(0x2c26,0x2c56);
+test(0x2c27,0x2c57);
+test(0x2c28,0x2c58);
+test(0x2c29,0x2c59);
+test(0x2c2a,0x2c5a);
+test(0x2c2b,0x2c5b);
+test(0x2c2c,0x2c5c);
+test(0x2c2d,0x2c5d);
+test(0x2c2e,0x2c5e);
+test(0x2c30,0x2c00);
+test(0x2c31,0x2c01);
+test(0x2c32,0x2c02);
+test(0x2c33,0x2c03);
+test(0x2c34,0x2c04);
+test(0x2c35,0x2c05);
+test(0x2c36,0x2c06);
+test(0x2c37,0x2c07);
+test(0x2c38,0x2c08);
+test(0x2c39,0x2c09);
+test(0x2c3a,0x2c0a);
+test(0x2c3b,0x2c0b);
+test(0x2c3c,0x2c0c);
+test(0x2c3d,0x2c0d);
+test(0x2c3e,0x2c0e);
+test(0x2c3f,0x2c0f);
+test(0x2c40,0x2c10);
+test(0x2c41,0x2c11);
+test(0x2c42,0x2c12);
+test(0x2c43,0x2c13);
+test(0x2c44,0x2c14);
+test(0x2c45,0x2c15);
+test(0x2c46,0x2c16);
+test(0x2c47,0x2c17);
+test(0x2c48,0x2c18);
+test(0x2c49,0x2c19);
+test(0x2c4a,0x2c1a);
+test(0x2c4b,0x2c1b);
+test(0x2c4c,0x2c1c);
+test(0x2c4d,0x2c1d);
+test(0x2c4e,0x2c1e);
+test(0x2c4f,0x2c1f);
+test(0x2c50,0x2c20);
+test(0x2c51,0x2c21);
+test(0x2c52,0x2c22);
+test(0x2c53,0x2c23);
+test(0x2c54,0x2c24);
+test(0x2c55,0x2c25);
+test(0x2c56,0x2c26);
+test(0x2c57,0x2c27);
+test(0x2c58,0x2c28);
+test(0x2c59,0x2c29);
+test(0x2c5a,0x2c2a);
+test(0x2c5b,0x2c2b);
+test(0x2c5c,0x2c2c);
+test(0x2c5d,0x2c2d);
+test(0x2c5e,0x2c2e);
+test(0x2c60,0x2c61);
+test(0x2c61,0x2c60);
+test(0x2c62,0x26b);
+test(0x2c63,0x1d7d);
+test(0x2c64,0x27d);
+test(0x2c65,0x23a);
+test(0x2c66,0x23e);
+test(0x2c67,0x2c68);
+test(0x2c68,0x2c67);
+test(0x2c69,0x2c6a);
+test(0x2c6a,0x2c69);
+test(0x2c6b,0x2c6c);
+test(0x2c6c,0x2c6b);
+test(0x2c6d,0x251);
+test(0x2c6e,0x271);
+test(0x2c6f,0x250);
+test(0x2c70,0x252);
+test(0x2c72,0x2c73);
+test(0x2c73,0x2c72);
+test(0x2c75,0x2c76);
+test(0x2c76,0x2c75);
+test(0x2c7e,0x23f);
+test(0x2c7f,0x240);
+test(0x2c80,0x2c81);
+test(0x2c81,0x2c80);
+test(0x2c82,0x2c83);
+test(0x2c83,0x2c82);
+test(0x2c84,0x2c85);
+test(0x2c85,0x2c84);
+test(0x2c86,0x2c87);
+test(0x2c87,0x2c86);
+test(0x2c88,0x2c89);
+test(0x2c89,0x2c88);
+test(0x2c8a,0x2c8b);
+test(0x2c8b,0x2c8a);
+test(0x2c8c,0x2c8d);
+test(0x2c8d,0x2c8c);
+test(0x2c8e,0x2c8f);
+test(0x2c8f,0x2c8e);
+test(0x2c90,0x2c91);
+test(0x2c91,0x2c90);
+test(0x2c92,0x2c93);
+test(0x2c93,0x2c92);
+test(0x2c94,0x2c95);
+test(0x2c95,0x2c94);
+test(0x2c96,0x2c97);
+test(0x2c97,0x2c96);
+test(0x2c98,0x2c99);
+test(0x2c99,0x2c98);
+test(0x2c9a,0x2c9b);
+test(0x2c9b,0x2c9a);
+test(0x2c9c,0x2c9d);
+test(0x2c9d,0x2c9c);
+test(0x2c9e,0x2c9f);
+test(0x2c9f,0x2c9e);
+test(0x2ca0,0x2ca1);
+test(0x2ca1,0x2ca0);
+test(0x2ca2,0x2ca3);
+test(0x2ca3,0x2ca2);
+test(0x2ca4,0x2ca5);
+test(0x2ca5,0x2ca4);
+test(0x2ca6,0x2ca7);
+test(0x2ca7,0x2ca6);
+test(0x2ca8,0x2ca9);
+test(0x2ca9,0x2ca8);
+test(0x2caa,0x2cab);
+test(0x2cab,0x2caa);
+test(0x2cac,0x2cad);
+test(0x2cad,0x2cac);
+test(0x2cae,0x2caf);
+test(0x2caf,0x2cae);
+test(0x2cb0,0x2cb1);
+test(0x2cb1,0x2cb0);
+test(0x2cb2,0x2cb3);
+test(0x2cb3,0x2cb2);
+test(0x2cb4,0x2cb5);
+test(0x2cb5,0x2cb4);
+test(0x2cb6,0x2cb7);
+test(0x2cb7,0x2cb6);
+test(0x2cb8,0x2cb9);
+test(0x2cb9,0x2cb8);
+test(0x2cba,0x2cbb);
+test(0x2cbb,0x2cba);
+test(0x2cbc,0x2cbd);
+test(0x2cbd,0x2cbc);
+test(0x2cbe,0x2cbf);
+test(0x2cbf,0x2cbe);
+test(0x2cc0,0x2cc1);
+test(0x2cc1,0x2cc0);
+test(0x2cc2,0x2cc3);
+test(0x2cc3,0x2cc2);
+test(0x2cc4,0x2cc5);
+test(0x2cc5,0x2cc4);
+test(0x2cc6,0x2cc7);
+test(0x2cc7,0x2cc6);
+test(0x2cc8,0x2cc9);
+test(0x2cc9,0x2cc8);
+test(0x2cca,0x2ccb);
+test(0x2ccb,0x2cca);
+test(0x2ccc,0x2ccd);
+test(0x2ccd,0x2ccc);
+test(0x2cce,0x2ccf);
+test(0x2ccf,0x2cce);
+test(0x2cd0,0x2cd1);
+test(0x2cd1,0x2cd0);
+test(0x2cd2,0x2cd3);
+test(0x2cd3,0x2cd2);
+test(0x2cd4,0x2cd5);
+test(0x2cd5,0x2cd4);
+test(0x2cd6,0x2cd7);
+test(0x2cd7,0x2cd6);
+test(0x2cd8,0x2cd9);
+test(0x2cd9,0x2cd8);
+test(0x2cda,0x2cdb);
+test(0x2cdb,0x2cda);
+test(0x2cdc,0x2cdd);
+test(0x2cdd,0x2cdc);
+test(0x2cde,0x2cdf);
+test(0x2cdf,0x2cde);
+test(0x2ce0,0x2ce1);
+test(0x2ce1,0x2ce0);
+test(0x2ce2,0x2ce3);
+test(0x2ce3,0x2ce2);
+test(0x2ceb,0x2cec);
+test(0x2cec,0x2ceb);
+test(0x2ced,0x2cee);
+test(0x2cee,0x2ced);
+test(0x2cf2,0x2cf3);
+test(0x2cf3,0x2cf2);
+test(0x2d00,0x10a0);
+test(0x2d01,0x10a1);
+test(0x2d02,0x10a2);
+test(0x2d03,0x10a3);
+test(0x2d04,0x10a4);
+test(0x2d05,0x10a5);
+test(0x2d06,0x10a6);
+test(0x2d07,0x10a7);
+test(0x2d08,0x10a8);
+test(0x2d09,0x10a9);
+test(0x2d0a,0x10aa);
+test(0x2d0b,0x10ab);
+test(0x2d0c,0x10ac);
+test(0x2d0d,0x10ad);
+test(0x2d0e,0x10ae);
+test(0x2d0f,0x10af);
+test(0x2d10,0x10b0);
+test(0x2d11,0x10b1);
+test(0x2d12,0x10b2);
+test(0x2d13,0x10b3);
+test(0x2d14,0x10b4);
+test(0x2d15,0x10b5);
+test(0x2d16,0x10b6);
+test(0x2d17,0x10b7);
+test(0x2d18,0x10b8);
+test(0x2d19,0x10b9);
+test(0x2d1a,0x10ba);
+test(0x2d1b,0x10bb);
+test(0x2d1c,0x10bc);
+test(0x2d1d,0x10bd);
+test(0x2d1e,0x10be);
+test(0x2d1f,0x10bf);
+test(0x2d20,0x10c0);
+test(0x2d21,0x10c1);
+test(0x2d22,0x10c2);
+test(0x2d23,0x10c3);
+test(0x2d24,0x10c4);
+test(0x2d25,0x10c5);
+test(0x2d27,0x10c7);
+test(0x2d2d,0x10cd);
+test(0xa640,0xa641);
+test(0xa641,0xa640);
+test(0xa642,0xa643);
+test(0xa643,0xa642);
+test(0xa644,0xa645);
+test(0xa645,0xa644);
+test(0xa646,0xa647);
+test(0xa647,0xa646);
+test(0xa648,0xa649);
+test(0xa649,0xa648);
+test(0xa64a,0xa64b,0x1c88);
+test(0xa64b,0x1c88,0xa64a);
+test(0xa64c,0xa64d);
+test(0xa64d,0xa64c);
+test(0xa64e,0xa64f);
+test(0xa64f,0xa64e);
+test(0xa650,0xa651);
+test(0xa651,0xa650);
+test(0xa652,0xa653);
+test(0xa653,0xa652);
+test(0xa654,0xa655);
+test(0xa655,0xa654);
+test(0xa656,0xa657);
+test(0xa657,0xa656);
+test(0xa658,0xa659);
+test(0xa659,0xa658);
+test(0xa65a,0xa65b);
+test(0xa65b,0xa65a);
+test(0xa65c,0xa65d);
+test(0xa65d,0xa65c);
+test(0xa65e,0xa65f);
+test(0xa65f,0xa65e);
+test(0xa660,0xa661);
+test(0xa661,0xa660);
+test(0xa662,0xa663);
+test(0xa663,0xa662);
+test(0xa664,0xa665);
+test(0xa665,0xa664);
+test(0xa666,0xa667);
+test(0xa667,0xa666);
+test(0xa668,0xa669);
+test(0xa669,0xa668);
+test(0xa66a,0xa66b);
+test(0xa66b,0xa66a);
+test(0xa66c,0xa66d);
+test(0xa66d,0xa66c);
+test(0xa680,0xa681);
+test(0xa681,0xa680);
+test(0xa682,0xa683);
+test(0xa683,0xa682);
+test(0xa684,0xa685);
+test(0xa685,0xa684);
+test(0xa686,0xa687);
+test(0xa687,0xa686);
+test(0xa688,0xa689);
+test(0xa689,0xa688);
+test(0xa68a,0xa68b);
+test(0xa68b,0xa68a);
+test(0xa68c,0xa68d);
+test(0xa68d,0xa68c);
+test(0xa68e,0xa68f);
+test(0xa68f,0xa68e);
+test(0xa690,0xa691);
+test(0xa691,0xa690);
+test(0xa692,0xa693);
+test(0xa693,0xa692);
+test(0xa694,0xa695);
+test(0xa695,0xa694);
+test(0xa696,0xa697);
+test(0xa697,0xa696);
+test(0xa698,0xa699);
+test(0xa699,0xa698);
+test(0xa69a,0xa69b);
+test(0xa69b,0xa69a);
+test(0xa722,0xa723);
+test(0xa723,0xa722);
+test(0xa724,0xa725);
+test(0xa725,0xa724);
+test(0xa726,0xa727);
+test(0xa727,0xa726);
+test(0xa728,0xa729);
+test(0xa729,0xa728);
+test(0xa72a,0xa72b);
+test(0xa72b,0xa72a);
+test(0xa72c,0xa72d);
+test(0xa72d,0xa72c);
+test(0xa72e,0xa72f);
+test(0xa72f,0xa72e);
+test(0xa732,0xa733);
+test(0xa733,0xa732);
+test(0xa734,0xa735);
+test(0xa735,0xa734);
+test(0xa736,0xa737);
+test(0xa737,0xa736);
+test(0xa738,0xa739);
+test(0xa739,0xa738);
+test(0xa73a,0xa73b);
+test(0xa73b,0xa73a);
+test(0xa73c,0xa73d);
+test(0xa73d,0xa73c);
+test(0xa73e,0xa73f);
+test(0xa73f,0xa73e);
+test(0xa740,0xa741);
+test(0xa741,0xa740);
+test(0xa742,0xa743);
+test(0xa743,0xa742);
+test(0xa744,0xa745);
+test(0xa745,0xa744);
+test(0xa746,0xa747);
+test(0xa747,0xa746);
+test(0xa748,0xa749);
+test(0xa749,0xa748);
+test(0xa74a,0xa74b);
+test(0xa74b,0xa74a);
+test(0xa74c,0xa74d);
+test(0xa74d,0xa74c);
+test(0xa74e,0xa74f);
+test(0xa74f,0xa74e);
+test(0xa750,0xa751);
+test(0xa751,0xa750);
+test(0xa752,0xa753);
+test(0xa753,0xa752);
+test(0xa754,0xa755);
+test(0xa755,0xa754);
+test(0xa756,0xa757);
+test(0xa757,0xa756);
+test(0xa758,0xa759);
+test(0xa759,0xa758);
+test(0xa75a,0xa75b);
+test(0xa75b,0xa75a);
+test(0xa75c,0xa75d);
+test(0xa75d,0xa75c);
+test(0xa75e,0xa75f);
+test(0xa75f,0xa75e);
+test(0xa760,0xa761);
+test(0xa761,0xa760);
+test(0xa762,0xa763);
+test(0xa763,0xa762);
+test(0xa764,0xa765);
+test(0xa765,0xa764);
+test(0xa766,0xa767);
+test(0xa767,0xa766);
+test(0xa768,0xa769);
+test(0xa769,0xa768);
+test(0xa76a,0xa76b);
+test(0xa76b,0xa76a);
+test(0xa76c,0xa76d);
+test(0xa76d,0xa76c);
+test(0xa76e,0xa76f);
+test(0xa76f,0xa76e);
+test(0xa779,0xa77a);
+test(0xa77a,0xa779);
+test(0xa77b,0xa77c);
+test(0xa77c,0xa77b);
+test(0xa77d,0x1d79);
+test(0xa77e,0xa77f);
+test(0xa77f,0xa77e);
+test(0xa780,0xa781);
+test(0xa781,0xa780);
+test(0xa782,0xa783);
+test(0xa783,0xa782);
+test(0xa784,0xa785);
+test(0xa785,0xa784);
+test(0xa786,0xa787);
+test(0xa787,0xa786);
+test(0xa78b,0xa78c);
+test(0xa78c,0xa78b);
+test(0xa78d,0x265);
+test(0xa790,0xa791);
+test(0xa791,0xa790);
+test(0xa792,0xa793);
+test(0xa793,0xa792);
+test(0xa796,0xa797);
+test(0xa797,0xa796);
+test(0xa798,0xa799);
+test(0xa799,0xa798);
+test(0xa79a,0xa79b);
+test(0xa79b,0xa79a);
+test(0xa79c,0xa79d);
+test(0xa79d,0xa79c);
+test(0xa79e,0xa79f);
+test(0xa79f,0xa79e);
+test(0xa7a0,0xa7a1);
+test(0xa7a1,0xa7a0);
+test(0xa7a2,0xa7a3);
+test(0xa7a3,0xa7a2);
+test(0xa7a4,0xa7a5);
+test(0xa7a5,0xa7a4);
+test(0xa7a6,0xa7a7);
+test(0xa7a7,0xa7a6);
+test(0xa7a8,0xa7a9);
+test(0xa7a9,0xa7a8);
+test(0xa7aa,0x266);
+test(0xa7ab,0x25c);
+test(0xa7ac,0x261);
+test(0xa7ad,0x26c);
+test(0xa7ae,0x26a);
+test(0xa7b0,0x29e);
+test(0xa7b1,0x287);
+test(0xa7b2,0x29d);
+test(0xa7b3,0xab53);
+test(0xa7b4,0xa7b5);
+test(0xa7b5,0xa7b4);
+test(0xa7b6,0xa7b7);
+test(0xa7b7,0xa7b6);
+test(0xab53,0xa7b3);
+test(0xab70,0x13a0);
+test(0xab71,0x13a1);
+test(0xab72,0x13a2);
+test(0xab73,0x13a3);
+test(0xab74,0x13a4);
+test(0xab75,0x13a5);
+test(0xab76,0x13a6);
+test(0xab77,0x13a7);
+test(0xab78,0x13a8);
+test(0xab79,0x13a9);
+test(0xab7a,0x13aa);
+test(0xab7b,0x13ab);
+test(0xab7c,0x13ac);
+test(0xab7d,0x13ad);
+test(0xab7e,0x13ae);
+test(0xab7f,0x13af);
+test(0xab80,0x13b0);
+test(0xab81,0x13b1);
+test(0xab82,0x13b2);
+test(0xab83,0x13b3);
+test(0xab84,0x13b4);
+test(0xab85,0x13b5);
+test(0xab86,0x13b6);
+test(0xab87,0x13b7);
+test(0xab88,0x13b8);
+test(0xab89,0x13b9);
+test(0xab8a,0x13ba);
+test(0xab8b,0x13bb);
+test(0xab8c,0x13bc);
+test(0xab8d,0x13bd);
+test(0xab8e,0x13be);
+test(0xab8f,0x13bf);
+test(0xab90,0x13c0);
+test(0xab91,0x13c1);
+test(0xab92,0x13c2);
+test(0xab93,0x13c3);
+test(0xab94,0x13c4);
+test(0xab95,0x13c5);
+test(0xab96,0x13c6);
+test(0xab97,0x13c7);
+test(0xab98,0x13c8);
+test(0xab99,0x13c9);
+test(0xab9a,0x13ca);
+test(0xab9b,0x13cb);
+test(0xab9c,0x13cc);
+test(0xab9d,0x13cd);
+test(0xab9e,0x13ce);
+test(0xab9f,0x13cf);
+test(0xaba0,0x13d0);
+test(0xaba1,0x13d1);
+test(0xaba2,0x13d2);
+test(0xaba3,0x13d3);
+test(0xaba4,0x13d4);
+test(0xaba5,0x13d5);
+test(0xaba6,0x13d6);
+test(0xaba7,0x13d7);
+test(0xaba8,0x13d8);
+test(0xaba9,0x13d9);
+test(0xabaa,0x13da);
+test(0xabab,0x13db);
+test(0xabac,0x13dc);
+test(0xabad,0x13dd);
+test(0xabae,0x13de);
+test(0xabaf,0x13df);
+test(0xabb0,0x13e0);
+test(0xabb1,0x13e1);
+test(0xabb2,0x13e2);
+test(0xabb3,0x13e3);
+test(0xabb4,0x13e4);
+test(0xabb5,0x13e5);
+test(0xabb6,0x13e6);
+test(0xabb7,0x13e7);
+test(0xabb8,0x13e8);
+test(0xabb9,0x13e9);
+test(0xabba,0x13ea);
+test(0xabbb,0x13eb);
+test(0xabbc,0x13ec);
+test(0xabbd,0x13ed);
+test(0xabbe,0x13ee);
+test(0xabbf,0x13ef);
+test(0xff21,0xff41);
+test(0xff22,0xff42);
+test(0xff23,0xff43);
+test(0xff24,0xff44);
+test(0xff25,0xff45);
+test(0xff26,0xff46);
+test(0xff27,0xff47);
+test(0xff28,0xff48);
+test(0xff29,0xff49);
+test(0xff2a,0xff4a);
+test(0xff2b,0xff4b);
+test(0xff2c,0xff4c);
+test(0xff2d,0xff4d);
+test(0xff2e,0xff4e);
+test(0xff2f,0xff4f);
+test(0xff30,0xff50);
+test(0xff31,0xff51);
+test(0xff32,0xff52);
+test(0xff33,0xff53);
+test(0xff34,0xff54);
+test(0xff35,0xff55);
+test(0xff36,0xff56);
+test(0xff37,0xff57);
+test(0xff38,0xff58);
+test(0xff39,0xff59);
+test(0xff3a,0xff5a);
+test(0xff41,0xff21);
+test(0xff42,0xff22);
+test(0xff43,0xff23);
+test(0xff44,0xff24);
+test(0xff45,0xff25);
+test(0xff46,0xff26);
+test(0xff47,0xff27);
+test(0xff48,0xff28);
+test(0xff49,0xff29);
+test(0xff4a,0xff2a);
+test(0xff4b,0xff2b);
+test(0xff4c,0xff2c);
+test(0xff4d,0xff2d);
+test(0xff4e,0xff2e);
+test(0xff4f,0xff2f);
+test(0xff50,0xff30);
+test(0xff51,0xff31);
+test(0xff52,0xff32);
+test(0xff53,0xff33);
+test(0xff54,0xff34);
+test(0xff55,0xff35);
+test(0xff56,0xff36);
+test(0xff57,0xff37);
+test(0xff58,0xff38);
+test(0xff59,0xff39);
+test(0xff5a,0xff3a);
+test(0x10400,0x10428);
+test(0x10401,0x10429);
+test(0x10402,0x1042a);
+test(0x10403,0x1042b);
+test(0x10404,0x1042c);
+test(0x10405,0x1042d);
+test(0x10406,0x1042e);
+test(0x10407,0x1042f);
+test(0x10408,0x10430);
+test(0x10409,0x10431);
+test(0x1040a,0x10432);
+test(0x1040b,0x10433);
+test(0x1040c,0x10434);
+test(0x1040d,0x10435);
+test(0x1040e,0x10436);
+test(0x1040f,0x10437);
+test(0x10410,0x10438);
+test(0x10411,0x10439);
+test(0x10412,0x1043a);
+test(0x10413,0x1043b);
+test(0x10414,0x1043c);
+test(0x10415,0x1043d);
+test(0x10416,0x1043e);
+test(0x10417,0x1043f);
+test(0x10418,0x10440);
+test(0x10419,0x10441);
+test(0x1041a,0x10442);
+test(0x1041b,0x10443);
+test(0x1041c,0x10444);
+test(0x1041d,0x10445);
+test(0x1041e,0x10446);
+test(0x1041f,0x10447);
+test(0x10420,0x10448);
+test(0x10421,0x10449);
+test(0x10422,0x1044a);
+test(0x10423,0x1044b);
+test(0x10424,0x1044c);
+test(0x10425,0x1044d);
+test(0x10426,0x1044e);
+test(0x10427,0x1044f);
+test(0x10428,0x10400);
+test(0x10429,0x10401);
+test(0x1042a,0x10402);
+test(0x1042b,0x10403);
+test(0x1042c,0x10404);
+test(0x1042d,0x10405);
+test(0x1042e,0x10406);
+test(0x1042f,0x10407);
+test(0x10430,0x10408);
+test(0x10431,0x10409);
+test(0x10432,0x1040a);
+test(0x10433,0x1040b);
+test(0x10434,0x1040c);
+test(0x10435,0x1040d);
+test(0x10436,0x1040e);
+test(0x10437,0x1040f);
+test(0x10438,0x10410);
+test(0x10439,0x10411);
+test(0x1043a,0x10412);
+test(0x1043b,0x10413);
+test(0x1043c,0x10414);
+test(0x1043d,0x10415);
+test(0x1043e,0x10416);
+test(0x1043f,0x10417);
+test(0x10440,0x10418);
+test(0x10441,0x10419);
+test(0x10442,0x1041a);
+test(0x10443,0x1041b);
+test(0x10444,0x1041c);
+test(0x10445,0x1041d);
+test(0x10446,0x1041e);
+test(0x10447,0x1041f);
+test(0x10448,0x10420);
+test(0x10449,0x10421);
+test(0x1044a,0x10422);
+test(0x1044b,0x10423);
+test(0x1044c,0x10424);
+test(0x1044d,0x10425);
+test(0x1044e,0x10426);
+test(0x1044f,0x10427);
+test(0x104b0,0x104d8);
+test(0x104b1,0x104d9);
+test(0x104b2,0x104da);
+test(0x104b3,0x104db);
+test(0x104b4,0x104dc);
+test(0x104b5,0x104dd);
+test(0x104b6,0x104de);
+test(0x104b7,0x104df);
+test(0x104b8,0x104e0);
+test(0x104b9,0x104e1);
+test(0x104ba,0x104e2);
+test(0x104bb,0x104e3);
+test(0x104bc,0x104e4);
+test(0x104bd,0x104e5);
+test(0x104be,0x104e6);
+test(0x104bf,0x104e7);
+test(0x104c0,0x104e8);
+test(0x104c1,0x104e9);
+test(0x104c2,0x104ea);
+test(0x104c3,0x104eb);
+test(0x104c4,0x104ec);
+test(0x104c5,0x104ed);
+test(0x104c6,0x104ee);
+test(0x104c7,0x104ef);
+test(0x104c8,0x104f0);
+test(0x104c9,0x104f1);
+test(0x104ca,0x104f2);
+test(0x104cb,0x104f3);
+test(0x104cc,0x104f4);
+test(0x104cd,0x104f5);
+test(0x104ce,0x104f6);
+test(0x104cf,0x104f7);
+test(0x104d0,0x104f8);
+test(0x104d1,0x104f9);
+test(0x104d2,0x104fa);
+test(0x104d3,0x104fb);
+test(0x104d8,0x104b0);
+test(0x104d9,0x104b1);
+test(0x104da,0x104b2);
+test(0x104db,0x104b3);
+test(0x104dc,0x104b4);
+test(0x104dd,0x104b5);
+test(0x104de,0x104b6);
+test(0x104df,0x104b7);
+test(0x104e0,0x104b8);
+test(0x104e1,0x104b9);
+test(0x104e2,0x104ba);
+test(0x104e3,0x104bb);
+test(0x104e4,0x104bc);
+test(0x104e5,0x104bd);
+test(0x104e6,0x104be);
+test(0x104e7,0x104bf);
+test(0x104e8,0x104c0);
+test(0x104e9,0x104c1);
+test(0x104ea,0x104c2);
+test(0x104eb,0x104c3);
+test(0x104ec,0x104c4);
+test(0x104ed,0x104c5);
+test(0x104ee,0x104c6);
+test(0x104ef,0x104c7);
+test(0x104f0,0x104c8);
+test(0x104f1,0x104c9);
+test(0x104f2,0x104ca);
+test(0x104f3,0x104cb);
+test(0x104f4,0x104cc);
+test(0x104f5,0x104cd);
+test(0x104f6,0x104ce);
+test(0x104f7,0x104cf);
+test(0x104f8,0x104d0);
+test(0x104f9,0x104d1);
+test(0x104fa,0x104d2);
+test(0x104fb,0x104d3);
+test(0x10c80,0x10cc0);
+test(0x10c81,0x10cc1);
+test(0x10c82,0x10cc2);
+test(0x10c83,0x10cc3);
+test(0x10c84,0x10cc4);
+test(0x10c85,0x10cc5);
+test(0x10c86,0x10cc6);
+test(0x10c87,0x10cc7);
+test(0x10c88,0x10cc8);
+test(0x10c89,0x10cc9);
+test(0x10c8a,0x10cca);
+test(0x10c8b,0x10ccb);
+test(0x10c8c,0x10ccc);
+test(0x10c8d,0x10ccd);
+test(0x10c8e,0x10cce);
+test(0x10c8f,0x10ccf);
+test(0x10c90,0x10cd0);
+test(0x10c91,0x10cd1);
+test(0x10c92,0x10cd2);
+test(0x10c93,0x10cd3);
+test(0x10c94,0x10cd4);
+test(0x10c95,0x10cd5);
+test(0x10c96,0x10cd6);
+test(0x10c97,0x10cd7);
+test(0x10c98,0x10cd8);
+test(0x10c99,0x10cd9);
+test(0x10c9a,0x10cda);
+test(0x10c9b,0x10cdb);
+test(0x10c9c,0x10cdc);
+test(0x10c9d,0x10cdd);
+test(0x10c9e,0x10cde);
+test(0x10c9f,0x10cdf);
+test(0x10ca0,0x10ce0);
+test(0x10ca1,0x10ce1);
+test(0x10ca2,0x10ce2);
+test(0x10ca3,0x10ce3);
+test(0x10ca4,0x10ce4);
+test(0x10ca5,0x10ce5);
+test(0x10ca6,0x10ce6);
+test(0x10ca7,0x10ce7);
+test(0x10ca8,0x10ce8);
+test(0x10ca9,0x10ce9);
+test(0x10caa,0x10cea);
+test(0x10cab,0x10ceb);
+test(0x10cac,0x10cec);
+test(0x10cad,0x10ced);
+test(0x10cae,0x10cee);
+test(0x10caf,0x10cef);
+test(0x10cb0,0x10cf0);
+test(0x10cb1,0x10cf1);
+test(0x10cb2,0x10cf2);
+test(0x10cc0,0x10c80);
+test(0x10cc1,0x10c81);
+test(0x10cc2,0x10c82);
+test(0x10cc3,0x10c83);
+test(0x10cc4,0x10c84);
+test(0x10cc5,0x10c85);
+test(0x10cc6,0x10c86);
+test(0x10cc7,0x10c87);
+test(0x10cc8,0x10c88);
+test(0x10cc9,0x10c89);
+test(0x10cca,0x10c8a);
+test(0x10ccb,0x10c8b);
+test(0x10ccc,0x10c8c);
+test(0x10ccd,0x10c8d);
+test(0x10cce,0x10c8e);
+test(0x10ccf,0x10c8f);
+test(0x10cd0,0x10c90);
+test(0x10cd1,0x10c91);
+test(0x10cd2,0x10c92);
+test(0x10cd3,0x10c93);
+test(0x10cd4,0x10c94);
+test(0x10cd5,0x10c95);
+test(0x10cd6,0x10c96);
+test(0x10cd7,0x10c97);
+test(0x10cd8,0x10c98);
+test(0x10cd9,0x10c99);
+test(0x10cda,0x10c9a);
+test(0x10cdb,0x10c9b);
+test(0x10cdc,0x10c9c);
+test(0x10cdd,0x10c9d);
+test(0x10cde,0x10c9e);
+test(0x10cdf,0x10c9f);
+test(0x10ce0,0x10ca0);
+test(0x10ce1,0x10ca1);
+test(0x10ce2,0x10ca2);
+test(0x10ce3,0x10ca3);
+test(0x10ce4,0x10ca4);
+test(0x10ce5,0x10ca5);
+test(0x10ce6,0x10ca6);
+test(0x10ce7,0x10ca7);
+test(0x10ce8,0x10ca8);
+test(0x10ce9,0x10ca9);
+test(0x10cea,0x10caa);
+test(0x10ceb,0x10cab);
+test(0x10cec,0x10cac);
+test(0x10ced,0x10cad);
+test(0x10cee,0x10cae);
+test(0x10cef,0x10caf);
+test(0x10cf0,0x10cb0);
+test(0x10cf1,0x10cb1);
+test(0x10cf2,0x10cb2);
+test(0x118a0,0x118c0);
+test(0x118a1,0x118c1);
+test(0x118a2,0x118c2);
+test(0x118a3,0x118c3);
+test(0x118a4,0x118c4);
+test(0x118a5,0x118c5);
+test(0x118a6,0x118c6);
+test(0x118a7,0x118c7);
+test(0x118a8,0x118c8);
+test(0x118a9,0x118c9);
+test(0x118aa,0x118ca);
+test(0x118ab,0x118cb);
+test(0x118ac,0x118cc);
+test(0x118ad,0x118cd);
+test(0x118ae,0x118ce);
+test(0x118af,0x118cf);
+test(0x118b0,0x118d0);
+test(0x118b1,0x118d1);
+test(0x118b2,0x118d2);
+test(0x118b3,0x118d3);
+test(0x118b4,0x118d4);
+test(0x118b5,0x118d5);
+test(0x118b6,0x118d6);
+test(0x118b7,0x118d7);
+test(0x118b8,0x118d8);
+test(0x118b9,0x118d9);
+test(0x118ba,0x118da);
+test(0x118bb,0x118db);
+test(0x118bc,0x118dc);
+test(0x118bd,0x118dd);
+test(0x118be,0x118de);
+test(0x118bf,0x118df);
+test(0x118c0,0x118a0);
+test(0x118c1,0x118a1);
+test(0x118c2,0x118a2);
+test(0x118c3,0x118a3);
+test(0x118c4,0x118a4);
+test(0x118c5,0x118a5);
+test(0x118c6,0x118a6);
+test(0x118c7,0x118a7);
+test(0x118c8,0x118a8);
+test(0x118c9,0x118a9);
+test(0x118ca,0x118aa);
+test(0x118cb,0x118ab);
+test(0x118cc,0x118ac);
+test(0x118cd,0x118ad);
+test(0x118ce,0x118ae);
+test(0x118cf,0x118af);
+test(0x118d0,0x118b0);
+test(0x118d1,0x118b1);
+test(0x118d2,0x118b2);
+test(0x118d3,0x118b3);
+test(0x118d4,0x118b4);
+test(0x118d5,0x118b5);
+test(0x118d6,0x118b6);
+test(0x118d7,0x118b7);
+test(0x118d8,0x118b8);
+test(0x118d9,0x118b9);
+test(0x118da,0x118ba);
+test(0x118db,0x118bb);
+test(0x118dc,0x118bc);
+test(0x118dd,0x118bd);
+test(0x118de,0x118be);
+test(0x118df,0x118bf);
+test(0x1e900,0x1e922);
+test(0x1e901,0x1e923);
+test(0x1e902,0x1e924);
+test(0x1e903,0x1e925);
+test(0x1e904,0x1e926);
+test(0x1e905,0x1e927);
+test(0x1e906,0x1e928);
+test(0x1e907,0x1e929);
+test(0x1e908,0x1e92a);
+test(0x1e909,0x1e92b);
+test(0x1e90a,0x1e92c);
+test(0x1e90b,0x1e92d);
+test(0x1e90c,0x1e92e);
+test(0x1e90d,0x1e92f);
+test(0x1e90e,0x1e930);
+test(0x1e90f,0x1e931);
+test(0x1e910,0x1e932);
+test(0x1e911,0x1e933);
+test(0x1e912,0x1e934);
+test(0x1e913,0x1e935);
+test(0x1e914,0x1e936);
+test(0x1e915,0x1e937);
+test(0x1e916,0x1e938);
+test(0x1e917,0x1e939);
+test(0x1e918,0x1e93a);
+test(0x1e919,0x1e93b);
+test(0x1e91a,0x1e93c);
+test(0x1e91b,0x1e93d);
+test(0x1e91c,0x1e93e);
+test(0x1e91d,0x1e93f);
+test(0x1e91e,0x1e940);
+test(0x1e91f,0x1e941);
+test(0x1e920,0x1e942);
+test(0x1e921,0x1e943);
+test(0x1e922,0x1e900);
+test(0x1e923,0x1e901);
+test(0x1e924,0x1e902);
+test(0x1e925,0x1e903);
+test(0x1e926,0x1e904);
+test(0x1e927,0x1e905);
+test(0x1e928,0x1e906);
+test(0x1e929,0x1e907);
+test(0x1e92a,0x1e908);
+test(0x1e92b,0x1e909);
+test(0x1e92c,0x1e90a);
+test(0x1e92d,0x1e90b);
+test(0x1e92e,0x1e90c);
+test(0x1e92f,0x1e90d);
+test(0x1e930,0x1e90e);
+test(0x1e931,0x1e90f);
+test(0x1e932,0x1e910);
+test(0x1e933,0x1e911);
+test(0x1e934,0x1e912);
+test(0x1e935,0x1e913);
+test(0x1e936,0x1e914);
+test(0x1e937,0x1e915);
+test(0x1e938,0x1e916);
+test(0x1e939,0x1e917);
+test(0x1e93a,0x1e918);
+test(0x1e93b,0x1e919);
+test(0x1e93c,0x1e91a);
+test(0x1e93d,0x1e91b);
+test(0x1e93e,0x1e91c);
+test(0x1e93f,0x1e91d);
+test(0x1e940,0x1e91e);
+test(0x1e941,0x1e91f);
+test(0x1e942,0x1e920);
+test(0x1e943,0x1e921);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-index.js b/js/src/tests/ecma_6/RegExp/unicode-index.js
new file mode 100644
index 000000000..a4b2eb203
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-index.js
@@ -0,0 +1,17 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- Pattern match should start from lead surrogate when lastIndex points corresponding trail surrogate.";
+
+print(BUGNUMBER + ": " + summary);
+
+var r = /\uD83D\uDC38/ug;
+r.lastIndex = 1;
+var str = "\uD83D\uDC38";
+var result = r.exec(str);
+assertEq(result.length, 1);
+assertEq(result[0], "\uD83D\uDC38");
+
+// This does not match to ES6 spec, but the spec will be changed.
+assertEq(result.index, 0);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-lead-trail.js b/js/src/tests/ecma_6/RegExp/unicode-lead-trail.js
new file mode 100644
index 000000000..7ecdb9ace
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-lead-trail.js
@@ -0,0 +1,218 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- lead and trail patterns in RegExpUnicodeEscapeSequence.";
+
+print(BUGNUMBER + ": " + summary);
+
+// ==== standalone ====
+
+assertEqArray(/\uD83D\uDC38/u.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// no unicode flag
+assertEqArray(/\uD83D\uDC38/.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// RegExp constructor
+assertEqArray(new RegExp("\\uD83D\\uDC38", "u").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// RegExp constructor, no unicode flag
+assertEqArray(new RegExp("\\uD83D\\uDC38", "").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// ==== ? ====
+
+assertEqArray(/\uD83D\uDC38?/u.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/\uD83D\uDC38?/u.exec(""),
+ [""]);
+
+// lead-only target
+assertEqArray(/\uD83D\uDC38?/u.exec("\uD83D"),
+ [""]);
+
+// no unicode flag
+assertEqArray(/\uD83D\uDC38?/.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEq(/\uD83D\uDC38?/.exec(""),
+ null);
+
+assertEqArray(/\uD83D\uDC38?/.exec("\uD83D"),
+ ["\uD83D"]);
+
+// RegExp constructor
+assertEqArray(new RegExp("\\uD83D\\uDC38?", "u").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(new RegExp("\\uD83D\\uDC38?", "u").exec(""),
+ [""]);
+
+assertEqArray(new RegExp("\\uD83D\\uDC38?", "u").exec("\uD83D"),
+ [""]);
+
+// RegExp constructor, no unicode flag
+assertEqArray(new RegExp("\\uD83D\\uDC38?", "").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEq(new RegExp("\\uD83D\\uDC38?", "").exec(""),
+ null);
+
+assertEqArray(new RegExp("\\uD83D\\uDC38?", "").exec("\uD83D"),
+ ["\uD83D"]);
+
+// ==== + ====
+
+assertEqArray(/\uD83D\uDC38+/u.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/\uD83D\uDC38+/u.exec("\u{1F438}\u{1F438}"),
+ ["\u{1F438}\u{1F438}"]);
+assertEq(/\uD83D\uDC38+/u.exec(""),
+ null);
+
+// lead-only target
+assertEq(/\uD83D\uDC38+/u.exec("\uD83D"),
+ null);
+assertEqArray(/\uD83D\uDC38+/u.exec("\uD83D\uDC38\uDC38"),
+ ["\uD83D\uDC38"]);
+
+// no unicode flag
+assertEqArray(/\uD83D\uDC38+/.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/\uD83D\uDC38+/.exec("\u{1F438}\u{1F438}"),
+ ["\u{1F438}"]);
+assertEq(/\uD83D\uDC38+/.exec("\uD83D"),
+ null);
+assertEqArray(/\uD83D\uDC38+/.exec("\uD83D\uDC38\uDC38"),
+ ["\uD83D\uDC38\uDC38"]);
+assertEq(/\uD83D\uDC38+/.exec(""),
+ null);
+
+// ==== * ====
+
+assertEqArray(/\uD83D\uDC38*/u.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/\uD83D\uDC38*/u.exec("\u{1F438}\u{1F438}"),
+ ["\u{1F438}\u{1F438}"]);
+assertEqArray(/\uD83D\uDC38*/u.exec(""),
+ [""]);
+
+// lead-only target
+assertEqArray(/\uD83D\uDC38*/u.exec("\uD83D"),
+ [""]);
+assertEqArray(/\uD83D\uDC38*/u.exec("\uD83D\uDC38\uDC38"),
+ ["\uD83D\uDC38"]);
+
+// no unicode flag
+assertEqArray(/\uD83D\uDC38*/.exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/\uD83D\uDC38*/.exec("\u{1F438}\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(/\uD83D\uDC38*/.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/\uD83D\uDC38*/.exec("\uD83D\uDC38\uDC38"),
+ ["\uD83D\uDC38\uDC38"]);
+assertEq(/\uD83D\uDC38*/.exec(""),
+ null);
+
+// ==== lead-only ====
+
+// match only non-surrogate pair
+assertEqArray(/\uD83D/u.exec("\uD83D\uDBFF"),
+ ["\uD83D"]);
+assertEq(/\uD83D/u.exec("\uD83D\uDC00"),
+ null);
+assertEq(/\uD83D/u.exec("\uD83D\uDFFF"),
+ null);
+assertEqArray(/\uD83D/u.exec("\uD83D\uE000"),
+ ["\uD83D"]);
+
+// match before non-tail char
+assertEqArray(/\uD83D/u.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/\uD83D/u.exec("\uD83DA"),
+ ["\uD83D"]);
+
+// no unicode flag
+assertEqArray(/\uD83D/.exec("\uD83D\uDBFF"),
+ ["\uD83D"]);
+assertEqArray(/\uD83D/.exec("\uD83D\uDC00"),
+ ["\uD83D"]);
+assertEqArray(/\uD83D/.exec("\uD83D\uDFFF"),
+ ["\uD83D"]);
+assertEqArray(/\uD83D/.exec("\uD83D\uE000"),
+ ["\uD83D"]);
+assertEqArray(/\uD83D/.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/\uD83D/.exec("\uD83DA"),
+ ["\uD83D"]);
+
+// ==== trail-only ====
+
+// match only non-surrogate pair
+assertEqArray(/\uDC38/u.exec("\uD7FF\uDC38"),
+ ["\uDC38"]);
+assertEq(/\uDC38/u.exec("\uD800\uDC38"),
+ null);
+assertEq(/\uDC38/u.exec("\uDBFF\uDC38"),
+ null);
+assertEqArray(/\uDC38/u.exec("\uDC00\uDC38"),
+ ["\uDC38"]);
+
+// match after non-lead char
+assertEqArray(/\uDC38/u.exec("\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/\uDC38/u.exec("A\uDC38"),
+ ["\uDC38"]);
+
+// no unicode flag
+assertEqArray(/\uDC38/.exec("\uD7FF\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/\uDC38/.exec("\uD800\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/\uDC38/.exec("\uDBFF\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/\uDC38/.exec("\uDC00\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/\uDC38/.exec("\uDC38"),
+ ["\uDC38"]);
+assertEqArray(/\uDC38/.exec("A\uDC38"),
+ ["\uDC38"]);
+
+// ==== invalid trail ====
+
+assertEqArray(/\uD83D\u3042*/u.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/\uD83D\u3042*/u.exec("\uD83D\u3042"),
+ ["\uD83D\u3042"]);
+assertEqArray(/\uD83D\u3042*/u.exec("\uD83D\u3042\u3042"),
+ ["\uD83D\u3042\u3042"]);
+
+assertEqArray(/\uD83D\u{3042}*/u.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/\uD83D\u{3042}*/u.exec("\uD83D\u3042"),
+ ["\uD83D\u3042"]);
+assertEqArray(/\uD83D\u{3042}*/u.exec("\uD83D\u3042\u3042"),
+ ["\uD83D\u3042\u3042"]);
+
+assertEqArray(/\uD83DA*/u.exec("\uD83D"),
+ ["\uD83D"]);
+assertEqArray(/\uD83DA*/u.exec("\uD83DA"),
+ ["\uD83DA"]);
+assertEqArray(/\uD83DA*/u.exec("\uD83DAA"),
+ ["\uD83DAA"]);
+
+// ==== wrong patterns ====
+
+assertThrowsInstanceOf(() => eval(`/\\u/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u0/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u00/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u000/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u000G/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\u0.00/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\uD83D\\u/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\uD83D\\u0/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\uD83D\\u00/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\uD83D\\u000/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\uD83D\\u000G/u`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`/\\uD83D\\u0.00/u`), SyntaxError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/RegExp/unicode-raw.js b/js/src/tests/ecma_6/RegExp/unicode-raw.js
new file mode 100644
index 000000000..37b572cd8
--- /dev/null
+++ b/js/src/tests/ecma_6/RegExp/unicode-raw.js
@@ -0,0 +1,139 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- raw unicode.";
+
+print(BUGNUMBER + ": " + summary);
+
+// ==== standalone ====
+
+assertEqArray(eval(`/\uD83D\uDC38/u`).exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// no unicode flag
+assertEqArray(eval(`/\uD83D\uDC38/`).exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// escaped (lead)
+assertEq(eval(`/\\uD83D\uDC38/u`).exec("\u{1F438}"),
+ null);
+assertEq(eval(`/\\u{D83D}\uDC38/u`).exec("\u{1F438}"),
+ null);
+
+// escaped (trail)
+assertEq(eval(`/\uD83D\\uDC38/u`).exec("\u{1F438}"),
+ null);
+assertEq(eval(`/\uD83D\\u{DC38}/u`).exec("\u{1F438}"),
+ null);
+
+// escaped (lead), no unicode flag
+assertEqArray(eval(`/\\uD83D\uDC38/`).exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// escaped (trail), no unicode flag
+assertEqArray(eval(`/\uD83D\\uDC38/`).exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// ==== RegExp constructor ====
+
+assertEqArray(new RegExp("\uD83D\uDC38", "u").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// no unicode flag
+assertEqArray(new RegExp("\uD83D\uDC38", "").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// escaped(lead)
+assertEq(new RegExp("\\uD83D\uDC38", "u").exec("\u{1F438}"),
+ null);
+assertEq(new RegExp("\\u{D83D}\uDC38", "u").exec("\u{1F438}"),
+ null);
+
+// escaped(trail)
+assertEq(new RegExp("\uD83D\\uDC38", "u").exec("\u{1F438}"),
+ null);
+assertEq(new RegExp("\uD83D\\u{DC38}", "u").exec("\u{1F438}"),
+ null);
+
+// escaped(lead), no unicode flag
+assertEqArray(new RegExp("\\uD83D\uDC38", "").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// escaped(trail), no unicode flag
+assertEqArray(new RegExp("\uD83D\\uDC38", "").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+
+// ==== ? ====
+
+assertEqArray(eval(`/\uD83D\uDC38?/u`).exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(eval(`/\uD83D\uDC38?/u`).exec(""),
+ [""]);
+
+assertEqArray(eval(`/\uD83D\uDC38?/u`).exec("\uD83D"),
+ [""]);
+
+// no unicode flag
+assertEqArray(eval(`/\uD83D\uDC38?/`).exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEq(eval(`/\uD83D\uDC38?/`).exec(""),
+ null);
+
+assertEqArray(eval(`/\uD83D\uDC38?/`).exec("\uD83D"),
+ ["\uD83D"]);
+
+// escaped (lead)
+assertEq(eval(`/\\uD83D\uDC38?/u`).exec("\u{1F438}"),
+ null);
+assertEq(eval(`/\\uD83D\uDC38?/u`).exec(""),
+ null);
+
+assertEqArray(eval(`/\\uD83D\uDC38?/u`).exec("\uD83D"),
+ ["\uD83D"]);
+
+// escaped (trail)
+assertEq(eval(`/\uD83D\\uDC38?/u`).exec("\u{1F438}"),
+ null);
+assertEq(eval(`/\uD83D\\uDC38?/u`).exec(""),
+ null);
+
+assertEqArray(eval(`/\uD83D\\uDC38?/u`).exec("\uD83D"),
+ ["\uD83D"]);
+
+// escaped (lead), no unicode flag
+assertEqArray(eval(`/\\uD83D\uDC38?/`).exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEq(eval(`/\\uD83D\uDC38?/`).exec(""),
+ null);
+
+assertEqArray(eval(`/\\uD83D\uDC38?/`).exec("\uD83D"),
+ ["\uD83D"]);
+
+// escaped (trail), no unicode flag
+assertEqArray(eval(`/\uD83D\\uDC38?/`).exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEq(eval(`/\uD83D\\uDC38?/`).exec(""),
+ null);
+
+assertEqArray(eval(`/\uD83D\\uDC38?/`).exec("\uD83D"),
+ ["\uD83D"]);
+
+// ==== RegExp constructor, ? ====
+
+assertEqArray(new RegExp("\uD83D\uDC38?", "u").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEqArray(new RegExp("\uD83D\uDC38?", "u").exec(""),
+ [""]);
+
+assertEqArray(new RegExp("\uD83D\uDC38?", "u").exec("\uD83D"),
+ [""]);
+
+// no unicode flag
+assertEqArray(new RegExp("\uD83D\uDC38?", "").exec("\u{1F438}"),
+ ["\u{1F438}"]);
+assertEq(new RegExp("\uD83D\uDC38?", "").exec(""),
+ null);
+
+assertEqArray(new RegExp("\uD83D\uDC38?", "").exec("\uD83D"),
+ ["\uD83D"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Set/NaN-as-key.js b/js/src/tests/ecma_6/Set/NaN-as-key.js
new file mode 100644
index 000000000..8c9207e88
--- /dev/null
+++ b/js/src/tests/ecma_6/Set/NaN-as-key.js
@@ -0,0 +1,56 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 722260;
+var summary = 'All NaNs must be treated as identical keys for Set';
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+/* Avoid constant-folding that would happen were |undefined| to be used. */
+var key = -/a/g.missingProperty;
+
+var s = new Set();
+s.add(key, 17);
+assertEq(s.has(key), true);
+assertEq(s.has(-key), true);
+assertEq(s.has(NaN), true);
+
+s.delete(-key);
+assertEq(s.has(key), false);
+assertEq(s.has(-key), false);
+assertEq(s.has(NaN), false);
+
+s.add(-key, 17);
+assertEq(s.has(key), true);
+assertEq(s.has(-key), true);
+assertEq(s.has(NaN), true);
+
+s.delete(NaN);
+assertEq(s.has(key), false);
+assertEq(s.has(-key), false);
+assertEq(s.has(NaN), false);
+
+s.add(NaN, 17);
+assertEq(s.has(key), true);
+assertEq(s.has(-key), true);
+assertEq(s.has(NaN), true);
+
+s.delete(key);
+assertEq(s.has(key), false);
+assertEq(s.has(-key), false);
+assertEq(s.has(NaN), false);
+
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Set/browser.js b/js/src/tests/ecma_6/Set/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Set/browser.js
diff --git a/js/src/tests/ecma_6/Set/forEach-selfhosted-behavior.js b/js/src/tests/ecma_6/Set/forEach-selfhosted-behavior.js
new file mode 100644
index 000000000..37c87feef
--- /dev/null
+++ b/js/src/tests/ecma_6/Set/forEach-selfhosted-behavior.js
@@ -0,0 +1,51 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 987243;
+var summary = "Don't use .call(...) in the self-hosted Set.prototype.forEach";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var functionCall = Function.prototype.call;
+
+function throwSyntaxError()
+{
+ throw new SyntaxError("Function.prototype.call incorrectly called");
+}
+
+function lalala() {}
+
+Function.prototype.call = throwSyntaxError;
+
+new Set().forEach(throwSyntaxError);
+new Set([1]).forEach(lalala);
+new Set([{}, 4]).forEach(lalala);
+
+Function.prototype.call = function() { this.add(3.141592654); };
+
+new Set().forEach(throwSyntaxError);
+new Set(["foo"]).forEach(lalala);
+new Set([undefined, NaN]).forEach(lalala);
+
+var callCount = 0;
+Function.prototype.call = function() { callCount++; };
+
+new Set().forEach(throwSyntaxError);
+new Set([new Number]).forEach(lalala);
+new Set([true, new Boolean(false)]).forEach(lalala);
+
+assertEq(callCount, 0);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Set/getter-name.js b/js/src/tests/ecma_6/Set/getter-name.js
new file mode 100644
index 000000000..9a3e84fa4
--- /dev/null
+++ b/js/src/tests/ecma_6/Set/getter-name.js
@@ -0,0 +1,10 @@
+var BUGNUMBER = 1180290;
+var summary = 'Set getters should have get prefix';
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(Object.getOwnPropertyDescriptor(Set, Symbol.species).get.name, "get [Symbol.species]");
+assertEq(Object.getOwnPropertyDescriptor(Set.prototype, "size").get.name, "get size");
+
+if (typeof reportCompare === 'function')
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Set/shell.js b/js/src/tests/ecma_6/Set/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Set/shell.js
diff --git a/js/src/tests/ecma_6/Set/symbols.js b/js/src/tests/ecma_6/Set/symbols.js
new file mode 100644
index 000000000..364b3155c
--- /dev/null
+++ b/js/src/tests/ecma_6/Set/symbols.js
@@ -0,0 +1,27 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+var s = new Set;
+
+// Symbols can be stored in Sets.
+var sym = Symbol();
+s.add(sym);
+assertEq(s.has(sym), true);
+assertEq(s.has(Symbol()), false);
+assertEq([...s][0], sym);
+s.add(sym);
+assertEq(s.has(sym), true);
+assertEq(s.size, 1);
+s.delete(sym);
+assertEq(s.has(sym), false);
+assertEq(s.size, 0);
+
+// Symbols returned by Symbol.for() can be in Sets.
+var str = "how much wood would a woodchuck chuck if a woodchuck could chuck wood";
+var s2 = "how much wood would a woodchuck chuck if could";
+var arr = [for (word of str.split(" ")) Symbol.for(word)];
+s = new Set(arr);
+assertDeepEq([...s], [for (word of s2.split(" ")) Symbol.for(word)]);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Statements/arrow-function-at-end-of-for-statement-head.js b/js/src/tests/ecma_6/Statements/arrow-function-at-end-of-for-statement-head.js
new file mode 100644
index 000000000..9043b818c
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/arrow-function-at-end-of-for-statement-head.js
@@ -0,0 +1,64 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var gTestfile = "arrow-function-in-for-statement-head.js";
+var BUGNUMBER = 1302994;
+var summary =
+ "Don't assert when an arrow function occurs at the end of a declaration " +
+ "init-component of a for(;;) loop head";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function f1()
+{
+ for (var x = a => b; false; false)
+ {}
+}
+f1();
+
+function f2()
+{
+ for (var x = a => b, y = c => d; false; false)
+ {}
+}
+f2();
+
+function f3()
+{
+ for (var x = a => {}; false; false)
+ {}
+}
+f3();
+
+function f4()
+{
+ for (var x = a => {}, y = b => {}; false; false)
+ {}
+}
+f4();
+
+function g1()
+{
+ for (a => b; false; false)
+ {}
+}
+g1();
+
+function g2()
+{
+ for (a => {}; false; false)
+ {}
+}
+g2();
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Statements/arrow-function-in-for-statement-head.js b/js/src/tests/ecma_6/Statements/arrow-function-in-for-statement-head.js
new file mode 100644
index 000000000..4b636d3ac
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/arrow-function-in-for-statement-head.js
@@ -0,0 +1,33 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var gTestfile = "arrow-function-in-for-statement-head.js";
+var BUGNUMBER = 1163851;
+var summary =
+ "|for (x => 0 in 1;;) break;| must be a syntax error per ES6, not an " +
+ "elaborate nop";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+try
+{
+ Function("for (x => 0 in 1;;) break;");
+ throw new Error("didn't throw");
+}
+catch (e)
+{
+ assertEq(e instanceof SyntaxError, true,
+ "expected syntax error, got " + e);
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Statements/browser.js b/js/src/tests/ecma_6/Statements/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/browser.js
diff --git a/js/src/tests/ecma_6/Statements/for-in-with-declaration.js b/js/src/tests/ecma_6/Statements/for-in-with-declaration.js
new file mode 100644
index 000000000..13c71b19c
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/for-in-with-declaration.js
@@ -0,0 +1,31 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var gTestfile = "for-in-with-declaration.js";
+var BUGNUMBER = 1163851;
+var summary =
+ "Declarations in for-in loop heads must not contain |in|-expression " +
+ "initializers";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+assertThrowsInstanceOf(() => Function("for (var x = 3 in {}; ; ) break;"), SyntaxError);
+assertThrowsInstanceOf(() => Function("for (var x, y = 3 in {}; ; ) break;"), SyntaxError);
+assertThrowsInstanceOf(() => Function("for (var x = 5, y = 3 in {}; ; ) break;"), SyntaxError);
+assertThrowsInstanceOf(() => Function("for (const x = 3 in {}; ; ) break;"), SyntaxError);
+assertThrowsInstanceOf(() => Function("for (const x = 5, y = 3 in {}; ; ) break;"), SyntaxError);
+assertThrowsInstanceOf(() => Function("for (let x = 3 in {}; ; ) break;"), SyntaxError);
+assertThrowsInstanceOf(() => Function("for (let x, y = 3 in {}; ; ) break;"), SyntaxError);
+assertThrowsInstanceOf(() => Function("for (let x = 2, y = 3 in {}; ; ) break;"), SyntaxError);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Statements/for-in-with-destructuring-assignments.js b/js/src/tests/ecma_6/Statements/for-in-with-destructuring-assignments.js
new file mode 100644
index 000000000..6741c885e
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/for-in-with-destructuring-assignments.js
@@ -0,0 +1,130 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "for-in-with-destructuring-assignments.js";
+var BUGNUMBER = 1164741;
+var summary = "|for (var <pat> = ... in ...)| is invalid syntax";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// This is a total grab-bag of junk originally in tests changed when this
+// syntax was removed. Avert your eyes!
+
+assertThrowsInstanceOf(() => eval(`
+ for (var [x] = x>>x in [[]<[]])
+ {
+ [];
+ }`),
+ SyntaxError);
+
+/******************************************************************************/
+
+assertThrowsInstanceOf(function() {
+ // Abandon all hope, ye who try to read this.
+ eval(`
+ (function () {
+ for
+ (var [x] = function(){}
+ in
+ (function m(a) {
+ if (a < 1) {
+ x;
+ return;
+ }
+ return m(a - 1) + m(a - 2);
+ })(7)(eval(""))
+ )
+ {
+ [];
+ }
+ })
+ `)();
+}, SyntaxError);
+
+/******************************************************************************/
+
+assertThrowsInstanceOf(() => eval(`
+ for (var [e] = [] in (eval("for (b = 0; b < 6; ++b) gc()"))) {}
+`), SyntaxError);
+
+/******************************************************************************/
+
+assertThrowsInstanceOf(() => eval("for (var [ v , c ] = 0 in undefined) { }"),
+ SyntaxError);
+
+/******************************************************************************/
+
+assertThrowsInstanceOf(() => eval("var b = e; for (var [e] = b in w) c"),
+ SyntaxError);
+
+/******************************************************************************/
+
+assertThrowsInstanceOf(() => eval("for (var {a: []} = 2 in []) { }"),
+ SyntaxError);
+
+/******************************************************************************/
+
+assertThrowsInstanceOf(() => eval(`try
+ {
+ for (var [,{y}] = 1 in []) {}
+ }
+ catch(ex)
+ {
+ }`),
+SyntaxError);
+
+/******************************************************************************/
+
+assertThrowsInstanceOf(() => eval("for (var [x] = [] in null);"),
+ SyntaxError);
+
+/******************************************************************************/
+
+assertThrowsInstanceOf(() => eval("for (var [x] = x in y) var x;"),
+ SyntaxError);
+
+/******************************************************************************/
+
+assertThrowsInstanceOf(() => eval(`
+ for (var [arguments] = ({ get y(){} }) in y ) (x);
+`),
+SyntaxError);
+
+/******************************************************************************/
+
+if (typeof evalcx == 'function') {
+ var src = 'try {\n' +
+ ' for (var [e] = /x/ in d) {\n' +
+ ' (function () {});\n' +
+ ' }\n' +
+ '} catch (e) {}\n' +
+ 'try {\n' +
+ ' let(x = Object.freeze(this, /x/))\n' +
+ ' e = {}.toString\n' +
+ ' function y() {}\n' +
+ '} catch (e) {}';
+
+ try
+ {
+ evalcx(src);
+ throw new Error("didn't throw");
+ }
+ catch (e)
+ {
+ assertEq(e.name === "SyntaxError", true,
+ "expected invalid syntax, got " + e);
+ }
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Statements/for-inof-coverinitname-destr-assign.js b/js/src/tests/ecma_6/Statements/for-inof-coverinitname-destr-assign.js
new file mode 100644
index 000000000..ba9e40959
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/for-inof-coverinitname-destr-assign.js
@@ -0,0 +1,55 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const defaultValue = "default-value";
+const unreachable = () => { throw "unreachable"; };
+
+// for-in statement, object destructuring.
+var forIn;
+for ({forIn = defaultValue} in {"": null});
+assertEq(forIn, defaultValue);
+
+forIn = undefined;
+String.prototype.forIn = defaultValue;
+for ({forIn = unreachable()} in {"": null});
+delete String.prototype.forIn;
+assertEq(forIn, defaultValue);
+
+// for-in statement, array destructuring.
+forIn = undefined;
+for ([forIn = defaultValue] in {"": null});
+assertEq(forIn, defaultValue);
+
+forIn = undefined;
+for ([forIn = unreachable()] in {"ABC": null});
+assertEq(forIn, "A");
+
+
+// for-of statement, object destructuring.
+var forOf;
+for ({forOf = defaultValue} of [{}]);
+assertEq(forOf, defaultValue);
+
+forOf = undefined;
+for ({forOf = unreachable()} of [{forOf: defaultValue}]);
+assertEq(forOf, defaultValue);
+
+// for-of statement, array destructuring.
+forOf = undefined;
+for ([forOf = defaultValue] of [[]]);
+assertEq(forOf, defaultValue);
+
+forOf = undefined;
+for ([forOf = unreachable()] of [[defaultValue]]);
+assertEq(forOf, defaultValue);
+
+
+// for-statement, object destructuring.
+assertThrowsInstanceOf(() => eval(`
+ for ({invalid = 0};;);
+`), SyntaxError);
+
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Statements/for-inof-loop-const-declaration.js b/js/src/tests/ecma_6/Statements/for-inof-loop-const-declaration.js
new file mode 100644
index 000000000..e8daa343b
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/for-inof-loop-const-declaration.js
@@ -0,0 +1,94 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "for-inof-loop-const-declaration.js";
+var BUGNUMBER = 1278150;
+var summary = "Support const declarations in for-of loop heads";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var count;
+
+count = 0;
+for (const x in "abcdef")
+{
+ assertEq(x, "" + count++);
+
+ try
+ {
+ x = 3;
+ throw new Error("didn't throw");
+ }
+ catch (e)
+ {
+ assertEq(e instanceof TypeError, true,
+ "didn't get a TypeError, instead got: " + e);
+ }
+}
+
+count = 0;
+for (const x of "012345")
+{
+ assertEq(x, "" + count++);
+
+ try
+ {
+ x = 3;
+ throw new Error("didn't throw");
+ }
+ catch (e)
+ {
+ assertEq(e instanceof TypeError, true,
+ "didn't get a TypeError, instead got: " + e);
+ }
+}
+
+count = 0;
+for (const { length, 0: c } in "abcdef")
+{
+ assertEq(length, 1);
+ assertEq(c, "" + count++);
+
+
+ try
+ {
+ length = 1;
+ throw new Error("didn't throw");
+ }
+ catch (e)
+ {
+ assertEq(e instanceof TypeError, true,
+ "didn't get a TypeError, instead got: " + e);
+ }
+}
+
+count = 0;
+for (const { length, 0: c } of "012345")
+{
+ assertEq(length, 1);
+ assertEq(c, "" + count++);
+
+ try
+ {
+ c = 42;
+ throw new Error("didn't throw");
+ }
+ catch (e)
+ {
+ assertEq(e instanceof TypeError, true,
+ "didn't get a TypeError, instead got: " + e);
+ }
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Statements/for-inof-name-iteration-expression-contains-index-string.js b/js/src/tests/ecma_6/Statements/for-inof-name-iteration-expression-contains-index-string.js
new file mode 100644
index 000000000..212b34db9
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/for-inof-name-iteration-expression-contains-index-string.js
@@ -0,0 +1,43 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var gTestfile = "for-inof-name-iteration-expression-contains-index-string.js";
+var BUGNUMBER = 1235640;
+var summary =
+ "Don't assert parsing a for-in/of loop whose target is a name, where the " +
+ "expression being iterated over contains a string containing an index";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function f()
+{
+ var x;
+ for (x in "9")
+ continue;
+ assertEq(x, "0");
+}
+
+f();
+
+function g()
+{
+ "use strict";
+ var x = "unset";
+ for (x in arguments)
+ continue;
+ assertEq(x, "unset");
+}
+
+g();
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Statements/for-loop-declaration-contains-computed-name.js b/js/src/tests/ecma_6/Statements/for-loop-declaration-contains-computed-name.js
new file mode 100644
index 000000000..7928d049d
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/for-loop-declaration-contains-computed-name.js
@@ -0,0 +1,48 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "for-loop-declaration-contains-computed-name.js";
+var BUGNUMBER = 1233767;
+var summary =
+ "Support computed property names in destructuring declarations in " +
+ "for-in/of loop heads";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var count;
+
+count = 0;
+for (var { [5]: x, [x]: y } of [{ 5: 42, 42: "hi" }, { 5: 17, 17: 'fnord' }])
+{
+ if (count === 0) {
+ assertEq(x, 42);
+ assertEq(y, "hi");
+ } else {
+ assertEq(x, 17);
+ assertEq(y, "fnord");
+ }
+
+ count++;
+}
+
+count = 0;
+for (var { length: x, [x - 1]: y } in "foo")
+{
+ assertEq(x, 1);
+ assertEq("" + count, y);
+
+ count++;
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Statements/for-loop-declaration-contains-initializer.js b/js/src/tests/ecma_6/Statements/for-loop-declaration-contains-initializer.js
new file mode 100644
index 000000000..7010c9eba
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/for-loop-declaration-contains-initializer.js
@@ -0,0 +1,50 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "for-loop-declaration-contains-computed-name.js";
+var BUGNUMBER = 1233767;
+var summary =
+ "Support initializer defaults in destructuring declarations in for-in/of " +
+ "loop heads";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var count;
+var expr;
+
+expr = [{ z: 42, 42: "hi" }, { 7: 'fnord' }];
+count = 0;
+for (var { z: x = 7, [x]: y = 3 } of expr)
+{
+ if (count === 0) {
+ assertEq(x, 42);
+ assertEq(y, "hi");
+ } else {
+ assertEq(x, 7);
+ assertEq(y, "fnord");
+ }
+
+ count++;
+}
+
+count = 0;
+for (var { length: x, [x - 1 + count]: y = "psych" } in "foo")
+{
+ assertEq(x, 1);
+ assertEq(y, count === 0 ? "0" : "psych");
+
+ count++;
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Statements/for-of-iterator-primitive.js b/js/src/tests/ecma_6/Statements/for-of-iterator-primitive.js
new file mode 100644
index 000000000..6d69a1282
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/for-of-iterator-primitive.js
@@ -0,0 +1,28 @@
+var BUGNUMBER = 1021835;
+var summary = "Returning non-object from @@iterator should throw";
+
+print(BUGNUMBER + ": " + summary);
+
+let primitives = [
+ 1,
+ true,
+ undefined,
+ null,
+ "foo",
+ Symbol.iterator
+];
+
+for (let primitive of primitives) {
+ let obj = {
+ [Symbol.iterator]() {
+ return primitive;
+ }
+ };
+ assertThrowsInstanceOf(() => {
+ for (let x of obj) {
+ }
+ }, TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Statements/for-of-var-with-initializer.js b/js/src/tests/ecma_6/Statements/for-of-var-with-initializer.js
new file mode 100644
index 000000000..ae42e153b
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/for-of-var-with-initializer.js
@@ -0,0 +1,32 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "for-of-var-with-initializer.js";
+var BUGNUMBER = 1164741;
+var summary = "Don't assert parsing |for (var x = 3 of 42);|";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+try
+{
+ Function("for (var x = 3 of 42);");
+ throw new Error("didn't throw");
+}
+catch (e)
+{
+ assertEq(e instanceof SyntaxError, true,
+ "expected syntax error, got: " + e);
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Statements/if-constant-folding.js b/js/src/tests/ecma_6/Statements/if-constant-folding.js
new file mode 100644
index 000000000..0486ad56f
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/if-constant-folding.js
@@ -0,0 +1,35 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var gTestfile = "if-constant-folding.js";
+var BUGNUMBER = 1183400;
+var summary =
+ "Don't crash constant-folding an |if| governed by a truthy constant, whose " +
+ "alternative statement is another |if|";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// Perform |if| constant folding correctly when the condition is constantly
+// truthy and the alternative statement is another |if|.
+if (true)
+{
+ assertEq(true, true, "sanity");
+}
+else if (42)
+{
+ assertEq(false, true, "not reached");
+ assertEq(true, false, "also not reached");
+}
+
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Statements/property-reference-self-assignment.js b/js/src/tests/ecma_6/Statements/property-reference-self-assignment.js
new file mode 100644
index 000000000..81c95b9cf
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/property-reference-self-assignment.js
@@ -0,0 +1,38 @@
+var hits = 0;
+
+var p = { toString() { hits++; return "prop" } };
+var obj = { foo: 1 };
+
+
+var ops = [["obj[p]++", 2],
+ ["++obj[p]", 2],
+ ["--obj[p]", 0],
+ ["obj[p]--", 0],
+ ["obj[p] += 2", 3],
+ ["obj[p] -= 2", -1],
+ ["obj[p] *= 2", 2],
+ ["obj[p] /= 2", 0.5],
+ ["obj[p] %= 2", 1],
+ ["obj[p] >>>= 2", 0],
+ ["obj[p] >>= 2", 0],
+ ["obj[p] <<= 2", 4],
+ ["obj[p] |= 2", 3],
+ ["obj[p] ^= 2", 3],
+ ["obj[p] &= 2", 0]];
+
+var testHits = 0;
+for (let op of ops) {
+ // Seed the value for each test.
+ obj.prop = 1;
+
+ // Do the operation.
+ eval(op[0]);
+ assertEq(obj.prop, op[1]);
+
+ // We should always call toString once, for each operation.
+ testHits++;
+ assertEq(hits, testHits);
+}
+
+if (typeof reportCompare === 'function')
+ reportCompare(0,0,"OK");
diff --git a/js/src/tests/ecma_6/Statements/shell.js b/js/src/tests/ecma_6/Statements/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/shell.js
diff --git a/js/src/tests/ecma_6/Statements/try-completion.js b/js/src/tests/ecma_6/Statements/try-completion.js
new file mode 100644
index 000000000..f9bd1e149
--- /dev/null
+++ b/js/src/tests/ecma_6/Statements/try-completion.js
@@ -0,0 +1,482 @@
+var BUGNUMBER = 819125;
+var summary = "try block should return try value if finally returned normally";
+
+print(BUGNUMBER + ": " + summary);
+
+function expectTryValue(code, isUndefined) {
+ assertEq(eval(code), isUndefined ? undefined : 'try');
+}
+
+function expectCatchValue(code, isUndefined) {
+ assertEq(eval(code), isUndefined ? undefined : 'catch');
+}
+
+function expectFinallyValue(code, isUndefined) {
+ assertEq(eval(code), isUndefined ? undefined : 'finally');
+}
+
+// ==== finally: normal ====
+
+// try: normal
+// finally: normal
+expectTryValue(`
+try {
+ 'try';
+} finally {
+ 'finally';
+}
+`);
+
+// try: normal without value
+// finally: normal
+expectTryValue(`
+try {
+} finally {
+ 'finally';
+}
+`, true);
+
+// try: break
+// finally: normal
+expectTryValue(`
+while (true) {
+ try {
+ 'try';
+ break;
+ } finally {
+ 'finally';
+ }
+}
+`);
+
+// try: break without value
+// finally: normal
+expectTryValue(`
+while (true) {
+ try {
+ break;
+ } finally {
+ 'finally';
+ }
+}
+`, true);
+
+// try: continue
+// finally: normal
+expectTryValue(`
+do {
+ try {
+ 'try';
+ continue;
+ } finally {
+ 'finally';
+ }
+} while (false);
+`);
+
+// try: continue without value
+// finally: normal
+expectTryValue(`
+do {
+ try {
+ continue;
+ } finally {
+ 'finally';
+ }
+} while (false);
+`, true);
+
+// try: throw
+// catch: normal
+// finally: normal
+expectCatchValue(`
+try {
+ 'try';
+ throw 'exception';
+} catch (e) {
+ 'catch';
+} finally {
+ 'finally';
+}
+`);
+
+// try: throw
+// catch: normal
+// finally: normal
+expectCatchValue(`
+try {
+ 'try';
+ throw 'exception';
+} catch (e) {
+ 'catch';
+} finally {
+ 'finally';
+}
+`);
+
+// try: throw
+// catch: normal without value
+// finally: normal
+expectCatchValue(`
+try {
+ 'try';
+ throw 'exception';
+} catch (e) {
+} finally {
+ 'finally';
+}
+`, true);
+
+// try: throw
+// catch: normal without value
+// finally: normal
+expectCatchValue(`
+try {
+ 'try';
+ throw 'exception';
+} catch (e) {
+} finally {
+ 'finally';
+}
+`, true);
+
+// try: throw
+// catch: break
+// finally: normal
+expectCatchValue(`
+while (true) {
+ try {
+ 'try';
+ throw 'exception';
+ } catch (e) {
+ 'catch';
+ break;
+ } finally {
+ 'finally';
+ }
+}
+`);
+
+// try: throw
+// catch: break without value
+// finally: normal
+expectCatchValue(`
+while (true) {
+ try {
+ 'try';
+ throw 'exception';
+ } catch (e) {
+ break;
+ } finally {
+ 'finally';
+ }
+}
+`, true);
+
+// try: throw
+// catch: continue
+// finally: normal
+expectCatchValue(`
+do {
+ try {
+ 'try';
+ throw 'exception';
+ } catch (e) {
+ 'catch';
+ continue;
+ } finally {
+ 'finally';
+ }
+} while (false);
+`);
+
+// try: throw
+// catch: continue without value
+// finally: normal
+expectCatchValue(`
+do {
+ try {
+ 'try';
+ throw 'exception';
+ } catch (e) {
+ continue;
+ } finally {
+ 'finally';
+ }
+} while (false);
+`, true);
+
+// ==== finally: break ====
+
+// try: normal
+// finally: break
+expectFinallyValue(`
+while (true) {
+ try {
+ 'try';
+ } finally {
+ 'finally';
+ break;
+ }
+}
+`);
+
+// try: normal
+// finally: break without value
+expectFinallyValue(`
+while (true) {
+ try {
+ 'try';
+ } finally {
+ break;
+ }
+}
+`, true);
+
+// try: break
+// finally: break
+expectFinallyValue(`
+while (true) {
+ try {
+ 'try';
+ break;
+ } finally {
+ 'finally';
+ break;
+ }
+}
+`);
+
+// try: break
+// finally: break without value
+expectFinallyValue(`
+while (true) {
+ try {
+ 'try';
+ break;
+ } finally {
+ break;
+ }
+}
+`, true);
+
+// try: continue
+// finally: break
+expectFinallyValue(`
+do {
+ try {
+ 'try';
+ continue;
+ } finally {
+ 'finally';
+ break;
+ }
+} while (false);
+`);
+
+// try: continue
+// finally: break without value
+expectFinallyValue(`
+do {
+ try {
+ 'try';
+ continue;
+ } finally {
+ break;
+ }
+} while (false);
+`, true);
+
+// try: throw
+// catch: normal
+// finally: break
+expectFinallyValue(`
+while (true) {
+ try {
+ 'try';
+ throw 'exception';
+ } catch (e) {
+ 'catch';
+ } finally {
+ 'finally';
+ break;
+ }
+}
+`, false);
+
+// try: throw
+// catch: normal
+// finally: break without value
+expectFinallyValue(`
+while (true) {
+ try {
+ 'try';
+ throw 'exception';
+ } catch (e) {
+ 'catch';
+ } finally {
+ break;
+ }
+}
+`, true);
+
+// ==== finally: continue ====
+
+// try: normal
+// finally: continue
+expectFinallyValue(`
+do {
+ try {
+ 'try';
+ } finally {
+ 'finally';
+ continue;
+ }
+} while (false);
+`);
+
+// try: normal
+// finally: continue without value
+expectFinallyValue(`
+do {
+ try {
+ 'try';
+ } finally {
+ continue;
+ }
+} while (false);
+`, true);
+
+// try: break
+// finally: continue
+expectFinallyValue(`
+do {
+ try {
+ 'try';
+ break;
+ } finally {
+ 'finally';
+ continue;
+ }
+} while (false);
+`);
+
+// try: break
+// finally: continue without value
+expectFinallyValue(`
+do {
+ try {
+ 'try';
+ break;
+ } finally {
+ continue;
+ }
+} while (false);
+`, true);
+
+// try: continue
+// finally: continue
+expectFinallyValue(`
+do {
+ try {
+ 'try';
+ continue;
+ } finally {
+ 'finally';
+ continue;
+ }
+} while (false);
+`);
+
+// try: continue
+// finally: continue without value
+expectFinallyValue(`
+do {
+ try {
+ 'try';
+ continue;
+ } finally {
+ continue;
+ }
+} while (false);
+`, true);
+
+// ==== without finally ====
+
+// try: throw
+// catch: normal
+expectCatchValue(`
+try {
+ 'try';
+ throw 'exception';
+} catch (e) {
+ 'catch';
+}
+`);
+
+// try: throw
+// catch: normal without value
+expectCatchValue(`
+try {
+ 'try';
+ throw 'exception';
+} catch (e) {
+}
+`, true);
+
+// try: throw
+// catch: break
+expectCatchValue(`
+while (true) {
+ try {
+ 'try';
+ throw 'exception';
+ } catch (e) {
+ 'catch';
+ break;
+ }
+}
+`);
+
+// try: throw
+// catch: break without value
+expectCatchValue(`
+while (true) {
+ try {
+ 'try';
+ throw 'exception';
+ } catch (e) {
+ break;
+ }
+}
+`, true);
+
+// try: throw
+// catch: continue
+expectCatchValue(`
+do {
+ try {
+ 'try';
+ throw 'exception';
+ } catch (e) {
+ 'catch';
+ continue;
+ }
+} while (false);
+`);
+
+// try: throw
+// catch: continue without value
+expectCatchValue(`
+do {
+ try {
+ 'try';
+ throw 'exception';
+ } catch (e) {
+ continue;
+ }
+} while (false);
+`, true);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/AdvanceStringIndex.js b/js/src/tests/ecma_6/String/AdvanceStringIndex.js
new file mode 100644
index 000000000..fc4046603
--- /dev/null
+++ b/js/src/tests/ecma_6/String/AdvanceStringIndex.js
@@ -0,0 +1,43 @@
+var BUGNUMBER = 1135377;
+var summary = "Implement RegExp unicode flag -- AdvanceStringIndex in global match and replace.";
+
+print(BUGNUMBER + ": " + summary);
+
+// ==== String.prototype.match ====
+
+assertEqArray("\uD83D\uDC38\uD83D\uDC39X\uD83D\uDC3A".match(/\uD83D|X|/gu),
+ ["", "", "X", "", ""]);
+assertEqArray("\uD83D\uDC38\uD83D\uDC39X\uD83D\uDC3A".match(/\uDC38|X|/gu),
+ ["", "", "X", "", ""]);
+assertEqArray("\uD83D\uDC38\uD83D\uDC39X\uD83D\uDC3A".match(/\uD83D\uDC38|X|/gu),
+ ["\uD83D\uDC38", "", "X", "", ""]);
+
+// ==== String.prototype.replace ====
+
+// empty string replacement (optimized)
+assertEqArray("\uD83D\uDC38\uD83D\uDC39X\uD83D\uDC3A".replace(/\uD83D|X|/gu, ""),
+ "\uD83D\uDC38\uD83D\uDC39\uD83D\uDC3A");
+assertEqArray("\uD83D\uDC38\uD83D\uDC39X\uD83D\uDC3A".replace(/\uDC38|X|/gu, ""),
+ "\uD83D\uDC38\uD83D\uDC39\uD83D\uDC3A");
+assertEqArray("\uD83D\uDC38\uD83D\uDC39X\uD83D\uDC3A".replace(/\uD83D\uDC38|X|/gu, ""),
+ "\uD83D\uDC39\uD83D\uDC3A");
+
+// non-empty string replacement
+assertEqArray("\uD83D\uDC38\uD83D\uDC39X\uD83D\uDC3A".replace(/\uD83D|X|/gu, "x"),
+ "x\uD83D\uDC38x\uD83D\uDC39xx\uD83D\uDC3Ax");
+assertEqArray("\uD83D\uDC38\uD83D\uDC39X\uD83D\uDC3A".replace(/\uDC38|X|/gu, "x"),
+ "x\uD83D\uDC38x\uD83D\uDC39xx\uD83D\uDC3Ax");
+assertEqArray("\uD83D\uDC38\uD83D\uDC39X\uD83D\uDC3A".replace(/\uD83D\uDC38|X|/gu, "x"),
+ "xx\uD83D\uDC39xx\uD83D\uDC3Ax");
+
+// ==== String.prototype.split ====
+
+assertEqArray("\uD83D\uDC38\uD83D\uDC39X\uD83D\uDC3A".split(/\uD83D|X|/u),
+ ["\uD83D\uDC38", "\uD83D\uDC39", "\uD83D\uDC3A"]);
+assertEqArray("\uD83D\uDC38\uD83D\uDC39X\uD83D\uDC3A".split(/\uDC38|X|/u),
+ ["\uD83D\uDC38", "\uD83D\uDC39", "\uD83D\uDC3A"]);
+assertEqArray("\uD83D\uDC38\uD83D\uDC39X\uD83D\uDC3A".split(/\uD83D\uDC38|X|/u),
+ ["", "\uD83D\uDC39", "\uD83D\uDC3A"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/IsRegExp.js b/js/src/tests/ecma_6/String/IsRegExp.js
new file mode 100644
index 000000000..f8f4d3fb1
--- /dev/null
+++ b/js/src/tests/ecma_6/String/IsRegExp.js
@@ -0,0 +1,24 @@
+var BUGNUMBER = 1054755;
+var summary = 'String.prototype.{startsWith,endsWith,includes} should call IsRegExp.';
+
+print(BUGNUMBER + ": " + summary);
+
+for (var method of ["startsWith", "endsWith", "includes"]) {
+ for (var re of [/foo/, new RegExp()]) {
+ assertThrowsInstanceOf(() => "foo"[method](re), TypeError);
+
+ re[Symbol.match] = false;
+ "foo"[method](re);
+ }
+
+ for (var v1 of [true, 1, "bar", [], {}, Symbol.iterator]) {
+ assertThrowsInstanceOf(() => "foo"[method]({ [Symbol.match]: v1 }), TypeError);
+ }
+
+ for (var v2 of [false, 0, undefined, ""]) {
+ "foo"[method]({ [Symbol.match]: v2 });
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/browser.js b/js/src/tests/ecma_6/String/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/String/browser.js
diff --git a/js/src/tests/ecma_6/String/codePointAt.js b/js/src/tests/ecma_6/String/codePointAt.js
new file mode 100644
index 000000000..5b1496939
--- /dev/null
+++ b/js/src/tests/ecma_6/String/codePointAt.js
@@ -0,0 +1,84 @@
+var BUGNUMBER = 918879;
+var summary = 'String.prototype.codePointAt';
+
+print(BUGNUMBER + ": " + summary);
+
+// Tests taken from:
+// https://github.com/mathiasbynens/String.prototype.codePointAt/blob/master/tests/tests.js
+assertEq(String.prototype.codePointAt.length, 1);
+assertEq(String.prototype.propertyIsEnumerable('codePointAt'), false);
+
+// String that starts with a BMP symbol
+assertEq('abc\uD834\uDF06def'.codePointAt(''), 0x61);
+assertEq('abc\uD834\uDF06def'.codePointAt('_'), 0x61);
+assertEq('abc\uD834\uDF06def'.codePointAt(), 0x61);
+assertEq('abc\uD834\uDF06def'.codePointAt(-Infinity), undefined);
+assertEq('abc\uD834\uDF06def'.codePointAt(-1), undefined);
+assertEq('abc\uD834\uDF06def'.codePointAt(-0), 0x61);
+assertEq('abc\uD834\uDF06def'.codePointAt(0), 0x61);
+assertEq('abc\uD834\uDF06def'.codePointAt(3), 0x1D306);
+assertEq('abc\uD834\uDF06def'.codePointAt(4), 0xDF06);
+assertEq('abc\uD834\uDF06def'.codePointAt(5), 0x64);
+assertEq('abc\uD834\uDF06def'.codePointAt(42), undefined);
+assertEq('abc\uD834\uDF06def'.codePointAt(Infinity), undefined);
+assertEq('abc\uD834\uDF06def'.codePointAt(Infinity), undefined);
+assertEq('abc\uD834\uDF06def'.codePointAt(NaN), 0x61);
+assertEq('abc\uD834\uDF06def'.codePointAt(false), 0x61);
+assertEq('abc\uD834\uDF06def'.codePointAt(null), 0x61);
+assertEq('abc\uD834\uDF06def'.codePointAt(undefined), 0x61);
+
+// String that starts with an astral symbol
+assertEq('\uD834\uDF06def'.codePointAt(''), 0x1D306);
+assertEq('\uD834\uDF06def'.codePointAt('1'), 0xDF06);
+assertEq('\uD834\uDF06def'.codePointAt('_'), 0x1D306);
+assertEq('\uD834\uDF06def'.codePointAt(), 0x1D306);
+assertEq('\uD834\uDF06def'.codePointAt(-1), undefined);
+assertEq('\uD834\uDF06def'.codePointAt(-0), 0x1D306);
+assertEq('\uD834\uDF06def'.codePointAt(0), 0x1D306);
+assertEq('\uD834\uDF06def'.codePointAt(1), 0xDF06);
+assertEq('\uD834\uDF06def'.codePointAt(42), undefined);
+assertEq('\uD834\uDF06def'.codePointAt(false), 0x1D306);
+assertEq('\uD834\uDF06def'.codePointAt(null), 0x1D306);
+assertEq('\uD834\uDF06def'.codePointAt(undefined), 0x1D306);
+
+// Lone high surrogates
+assertEq('\uD834abc'.codePointAt(''), 0xD834);
+assertEq('\uD834abc'.codePointAt('_'), 0xD834);
+assertEq('\uD834abc'.codePointAt(), 0xD834);
+assertEq('\uD834abc'.codePointAt(-1), undefined);
+assertEq('\uD834abc'.codePointAt(-0), 0xD834);
+assertEq('\uD834abc'.codePointAt(0), 0xD834);
+assertEq('\uD834abc'.codePointAt(false), 0xD834);
+assertEq('\uD834abc'.codePointAt(NaN), 0xD834);
+assertEq('\uD834abc'.codePointAt(null), 0xD834);
+assertEq('\uD834abc'.codePointAt(undefined), 0xD834);
+
+// Lone low surrogates
+assertEq('\uDF06abc'.codePointAt(''), 0xDF06);
+assertEq('\uDF06abc'.codePointAt('_'), 0xDF06);
+assertEq('\uDF06abc'.codePointAt(), 0xDF06);
+assertEq('\uDF06abc'.codePointAt(-1), undefined);
+assertEq('\uDF06abc'.codePointAt(-0), 0xDF06);
+assertEq('\uDF06abc'.codePointAt(0), 0xDF06);
+assertEq('\uDF06abc'.codePointAt(false), 0xDF06);
+assertEq('\uDF06abc'.codePointAt(NaN), 0xDF06);
+assertEq('\uDF06abc'.codePointAt(null), 0xDF06);
+assertEq('\uDF06abc'.codePointAt(undefined), 0xDF06);
+
+(function() { String.prototype.codePointAt.call(undefined); }, TypeError);
+assertThrowsInstanceOf(function() { String.prototype.codePointAt.call(undefined, 4); }, TypeError);
+assertThrowsInstanceOf(function() { String.prototype.codePointAt.call(null); }, TypeError);
+assertThrowsInstanceOf(function() { String.prototype.codePointAt.call(null, 4); }, TypeError);
+assertEq(String.prototype.codePointAt.call(42, 0), 0x34);
+assertEq(String.prototype.codePointAt.call(42, 1), 0x32);
+assertEq(String.prototype.codePointAt.call({ 'toString': function() { return 'abc'; } }, 2), 0x63);
+
+assertThrowsInstanceOf(function() { String.prototype.codePointAt.apply(undefined); }, TypeError);
+assertThrowsInstanceOf(function() { String.prototype.codePointAt.apply(undefined, [4]); }, TypeError);
+assertThrowsInstanceOf(function() { String.prototype.codePointAt.apply(null); }, TypeError);
+assertThrowsInstanceOf(function() { String.prototype.codePointAt.apply(null, [4]); }, TypeError);
+assertEq(String.prototype.codePointAt.apply(42, [0]), 0x34);
+assertEq(String.prototype.codePointAt.apply(42, [1]), 0x32);
+assertEq(String.prototype.codePointAt.apply({ 'toString': function() { return 'abc'; } }, [2]), 0x63);
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/String/fromCodePoint.js b/js/src/tests/ecma_6/String/fromCodePoint.js
new file mode 100644
index 000000000..dad61663f
--- /dev/null
+++ b/js/src/tests/ecma_6/String/fromCodePoint.js
@@ -0,0 +1,60 @@
+var BUGNUMBER = 918879;
+var summary = 'String.fromCodePoint';
+
+print(BUGNUMBER + ": " + summary);
+
+// Tests taken from:
+// https://github.com/mathiasbynens/String.fromCodePoint/blob/master/tests/tests.js
+
+assertEq(String.fromCodePoint.length, 1);
+assertEq(String.fromCodePoint.name, 'fromCodePoint');
+assertEq(String.propertyIsEnumerable('fromCodePoint'), false);
+
+assertEq(String.fromCodePoint(''), '\0');
+assertEq(String.fromCodePoint(), '');
+assertEq(String.fromCodePoint(-0), '\0');
+assertEq(String.fromCodePoint(0), '\0');
+assertEq(String.fromCodePoint(0x1D306), '\uD834\uDF06');
+assertEq(String.fromCodePoint(0x1D306, 0x61, 0x1D307), '\uD834\uDF06a\uD834\uDF07');
+assertEq(String.fromCodePoint(0x61, 0x62, 0x1D307), 'ab\uD834\uDF07');
+assertEq(String.fromCodePoint(false), '\0');
+assertEq(String.fromCodePoint(null), '\0');
+
+assertThrowsInstanceOf(function() { String.fromCodePoint('_'); }, RangeError);
+assertThrowsInstanceOf(function() { String.fromCodePoint('+Infinity'); }, RangeError);
+assertThrowsInstanceOf(function() { String.fromCodePoint('-Infinity'); }, RangeError);
+assertThrowsInstanceOf(function() { String.fromCodePoint(-1); }, RangeError);
+assertThrowsInstanceOf(function() { String.fromCodePoint(0x10FFFF + 1); }, RangeError);
+assertThrowsInstanceOf(function() { String.fromCodePoint(3.14); }, RangeError);
+assertThrowsInstanceOf(function() { String.fromCodePoint(3e-2); }, RangeError);
+assertThrowsInstanceOf(function() { String.fromCodePoint(Infinity); }, RangeError);
+assertThrowsInstanceOf(function() { String.fromCodePoint(NaN); }, RangeError);
+assertThrowsInstanceOf(function() { String.fromCodePoint(undefined); }, RangeError);
+assertThrowsInstanceOf(function() { String.fromCodePoint({}); }, RangeError);
+
+var counter = Math.pow(2, 15) * 3 / 2;
+var result = [];
+while (--counter >= 0) {
+ result.push(0); // one code unit per symbol
+}
+String.fromCodePoint.apply(null, result); // must not throw
+
+var counter = Math.pow(2, 15) * 3 / 2;
+var result = [];
+while (--counter >= 0) {
+ result.push(0xFFFF + 1); // two code units per symbol
+}
+String.fromCodePoint.apply(null, result); // must not throw
+
+// str_fromCodePoint_one_arg (single argument, creates an inline string)
+assertEq(String.fromCodePoint(0x31), '1');
+// str_fromCodePoint_few_args (few arguments, creates an inline string)
+// JSFatInlineString::MAX_LENGTH_TWO_BYTE / 2 = floor(11 / 2) = 5
+assertEq(String.fromCodePoint(0x31, 0x32), '12');
+assertEq(String.fromCodePoint(0x31, 0x32, 0x33), '123');
+assertEq(String.fromCodePoint(0x31, 0x32, 0x33, 0x34), '1234');
+assertEq(String.fromCodePoint(0x31, 0x32, 0x33, 0x34, 0x35), '12345');
+// str_fromCodePoint (many arguments, creates a malloc string)
+assertEq(String.fromCodePoint(0x31, 0x32, 0x33, 0x34, 0x35, 0x36), '123456');
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/String/internalUsage.js b/js/src/tests/ecma_6/String/internalUsage.js
new file mode 100644
index 000000000..6ee8d5a58
--- /dev/null
+++ b/js/src/tests/ecma_6/String/internalUsage.js
@@ -0,0 +1,30 @@
+var BUGNUMBER = 1268138;
+var summary = 'Internal usage of split should not be affected by prototpe change';
+
+print(BUGNUMBER + ": " + summary);
+
+function test() {
+ var t = 24*60*60*1000;
+ var possibleAnswer = ["1.1.1970", "2.1.1970", "3.1.1970"];
+
+ String.prototype[Symbol.split] = function(s, limit) { return [""]; };
+ var s = Intl.DateTimeFormat("de", {}).format(t);
+ assertEq(possibleAnswer.includes(s), true);
+
+ String.prototype[Symbol.split] = function(s, limit) { return ["x-foo"]; };
+ s = Intl.DateTimeFormat("de", {}).format(t);
+ assertEq(possibleAnswer.includes(s), true);
+
+ String.prototype[Symbol.split] = function(s, limit) { return ["de-u-co"]; };
+ s = Intl.DateTimeFormat("de", {}).format(t);
+ assertEq(possibleAnswer.includes(s), true);
+
+ String.prototype[Symbol.split] = function(s, limit) { return ["en-US"]; };
+ s = Intl.DateTimeFormat("de", {}).format(t);
+ assertEq(possibleAnswer.includes(s), true);
+}
+
+if (this.hasOwnProperty("Intl"))
+ test();
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/String/iterator_edge_cases.js b/js/src/tests/ecma_6/String/iterator_edge_cases.js
new file mode 100644
index 000000000..15fe6d0fb
--- /dev/null
+++ b/js/src/tests/ecma_6/String/iterator_edge_cases.js
@@ -0,0 +1,27 @@
+// Test that we can't confuse %StringIteratorPrototype% for a
+// StringIterator object.
+function TestStringIteratorPrototypeConfusion() {
+ var iter = ""[Symbol.iterator]();
+ try {
+ iter.next.call(Object.getPrototypeOf(iter))
+ throw new Error("Call did not throw");
+ } catch (e) {
+ assertEq(e instanceof TypeError, true);
+ assertEq(e.message, "next method called on incompatible String Iterator");
+ }
+}
+TestStringIteratorPrototypeConfusion();
+
+// Tests that we can use %StringIteratorPrototype%.next on a
+// cross-compartment iterator.
+function TestStringIteratorWrappers() {
+ var iter = ""[Symbol.iterator]();
+ assertDeepEq(iter.next.call(newGlobal().eval('"x"[Symbol.iterator]()')),
+ { value: "x", done: false })
+}
+if (typeof newGlobal === "function") {
+ TestStringIteratorWrappers();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/make-normalize-generateddata-input.py b/js/src/tests/ecma_6/String/make-normalize-generateddata-input.py
new file mode 100644
index 000000000..c1983dbd1
--- /dev/null
+++ b/js/src/tests/ecma_6/String/make-normalize-generateddata-input.py
@@ -0,0 +1,70 @@
+#!/usr/bin/python -B
+
+""" Usage: make-normalize-generateddata-input.py PATH_TO_MOZILLA_CENTRAL
+
+ This script generates test input data for String.prototype.normalize
+ from intl/icu/source/data/unidata/NormalizationTest.txt
+ to js/src/tests/ecma_6/String/normalize-generateddata-input.js
+"""
+
+from __future__ import print_function
+import re, sys
+
+sep_pat = re.compile(' +')
+def to_code_list(codes):
+ return '[' + ', '.join(map(lambda x: '0x{0}'.format(x), re.split(sep_pat, codes))) + ']'
+
+def convert(dir):
+ ver_pat = re.compile('NormalizationTest-([0-9\.]+)\.txt')
+ part_pat = re.compile('^@(Part([0-9]+) .+)$')
+ test_pat = re.compile('^([0-9A-Fa-f ]+);([0-9A-Fa-f ]+);([0-9A-Fa-f ]+);([0-9A-Fa-f ]+);([0-9A-Fa-f ]+);$')
+ ignore_pat = re.compile('^#|^$')
+ js_path = 'js/src/tests/ecma_6/String/normalize-generateddata-input.js'
+ txt_path = 'intl/icu/source/data/unidata/NormalizationTest.txt'
+
+ part_opened = False
+ not_empty = False
+ with open('{dir}/{path}'.format(dir=dir, path=txt_path), 'r') as f:
+ with open('{dir}/{path}'.format(dir=dir, path=js_path), 'w') as outf:
+ for line in f:
+ m = test_pat.search(line)
+ if m:
+ if not_empty:
+ outf.write(',')
+ outf.write('\n')
+ pat = '{{ source: {source}, NFC: {NFC}, NFD: {NFD}, NFKC: {NFKC}, NFKD: {NFKD} }}'
+ outf.write(pat.format(source=to_code_list(m.group(1)),
+ NFC=to_code_list(m.group(2)),
+ NFD=to_code_list(m.group(3)),
+ NFKC=to_code_list(m.group(4)),
+ NFKD=to_code_list(m.group(5))))
+ not_empty = True
+ continue
+ m = part_pat.search(line)
+ if m:
+ desc = m.group(1)
+ part = m.group(2)
+ if part_opened:
+ outf.write('\n];\n')
+ outf.write('/* {desc} */\n'.format(desc=desc))
+ outf.write('var tests_part{part} = ['.format(part=part))
+ part_opened = True
+ not_empty = False
+ continue
+ m = ver_pat.search(line)
+ if m:
+ ver = m.group(1)
+ outf.write('/* created from NormalizationTest-{ver}.txt */\n'.format(ver=ver))
+ continue
+ m = ignore_pat.search(line)
+ if m:
+ continue
+ print("Unknown line: {0}".format(line), file=sys.stderr)
+ if part_opened:
+ outf.write('\n];\n')
+
+if __name__ == '__main__':
+ if len(sys.argv) < 2:
+ print("Usage: make-normalize-generateddata-input.py PATH_TO_MOZILLA_CENTRAL", file=sys.stderr)
+ sys.exit(1)
+ convert(sys.argv[1])
diff --git a/js/src/tests/ecma_6/String/match-GetMethod.js b/js/src/tests/ecma_6/String/match-GetMethod.js
new file mode 100644
index 000000000..70e89bb7e
--- /dev/null
+++ b/js/src/tests/ecma_6/String/match-GetMethod.js
@@ -0,0 +1,28 @@
+var BUGNUMBER = 1290655;
+var summary = "String.prototype.match should call GetMethod.";
+
+print(BUGNUMBER + ": " + summary);
+
+function create(value) {
+ return {
+ [Symbol.match]: value,
+ toString() {
+ return "-";
+ }
+ };
+}
+
+var expected = ["-"];
+expected.index = 1;
+expected.input = "a-a";
+
+for (let v of [null, undefined]) {
+ assertDeepEq("a-a".match(create(v)), expected);
+}
+
+for (let v of [1, true, Symbol.iterator, "", {}, []]) {
+ assertThrowsInstanceOf(() => "a-a".match(create(v)), TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/match.js b/js/src/tests/ecma_6/String/match.js
new file mode 100644
index 000000000..b9b0d27a6
--- /dev/null
+++ b/js/src/tests/ecma_6/String/match.js
@@ -0,0 +1,31 @@
+var BUGNUMBER = 887016;
+var summary = "Call RegExp.prototype[@@match] from String.prototype.match.";
+
+print(BUGNUMBER + ": " + summary);
+
+var called = 0;
+var myRegExp = {
+ [Symbol.match](S) {
+ assertEq(S, "abcAbcABC");
+ called++;
+ return 42;
+ }
+};
+assertEq("abcAbcABC".match(myRegExp), 42);
+assertEq(called, 1);
+
+var origMatch = RegExp.prototype[Symbol.match];
+
+called = 0;
+RegExp.prototype[Symbol.match] = function(S) {
+ assertEq(S, "abcAbcABC");
+ called++;
+ return 43;
+};
+assertEq("abcAbcABC".match("abc"), 43);
+assertEq(called, 1);
+
+RegExp.prototype[Symbol.match] = origMatch;
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/normalize-form-non-atom.js b/js/src/tests/ecma_6/String/normalize-form-non-atom.js
new file mode 100644
index 000000000..ee6e12c37
--- /dev/null
+++ b/js/src/tests/ecma_6/String/normalize-form-non-atom.js
@@ -0,0 +1,18 @@
+var BUGNUMBER = 1145326;
+var summary = 'String.prototype.normalize error when normalization form parameter is not an atom';
+
+print(BUGNUMBER + ": " + summary);
+
+function test() {
+ assertEq("abc".normalize("NFKC".split("").join("")), "abc");
+ assertEq("abc".normalize("NFKCabc".replace("abc", "")), "abc");
+ assertEq("abc".normalize("N" + "F" + "K" + "C"), "abc");
+}
+
+if ("normalize" in String.prototype) {
+ // String.prototype.normalize is not enabled in all builds.
+ test();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/normalize-generateddata-input.js b/js/src/tests/ecma_6/String/normalize-generateddata-input.js
new file mode 100644
index 000000000..a968a4655
--- /dev/null
+++ b/js/src/tests/ecma_6/String/normalize-generateddata-input.js
@@ -0,0 +1,18735 @@
+/* created from NormalizationTest-9.0.0.txt */
+/* Part0 # Specific cases */
+var tests_part0 = [
+{ source: [0x1E0A], NFC: [0x1E0A], NFD: [0x0044, 0x0307], NFKC: [0x1E0A], NFKD: [0x0044, 0x0307] },
+{ source: [0x1E0C], NFC: [0x1E0C], NFD: [0x0044, 0x0323], NFKC: [0x1E0C], NFKD: [0x0044, 0x0323] },
+{ source: [0x1E0A, 0x0323], NFC: [0x1E0C, 0x0307], NFD: [0x0044, 0x0323, 0x0307], NFKC: [0x1E0C, 0x0307], NFKD: [0x0044, 0x0323, 0x0307] },
+{ source: [0x1E0C, 0x0307], NFC: [0x1E0C, 0x0307], NFD: [0x0044, 0x0323, 0x0307], NFKC: [0x1E0C, 0x0307], NFKD: [0x0044, 0x0323, 0x0307] },
+{ source: [0x0044, 0x0307, 0x0323], NFC: [0x1E0C, 0x0307], NFD: [0x0044, 0x0323, 0x0307], NFKC: [0x1E0C, 0x0307], NFKD: [0x0044, 0x0323, 0x0307] },
+{ source: [0x0044, 0x0323, 0x0307], NFC: [0x1E0C, 0x0307], NFD: [0x0044, 0x0323, 0x0307], NFKC: [0x1E0C, 0x0307], NFKD: [0x0044, 0x0323, 0x0307] },
+{ source: [0x1E0A, 0x031B], NFC: [0x1E0A, 0x031B], NFD: [0x0044, 0x031B, 0x0307], NFKC: [0x1E0A, 0x031B], NFKD: [0x0044, 0x031B, 0x0307] },
+{ source: [0x1E0C, 0x031B], NFC: [0x1E0C, 0x031B], NFD: [0x0044, 0x031B, 0x0323], NFKC: [0x1E0C, 0x031B], NFKD: [0x0044, 0x031B, 0x0323] },
+{ source: [0x1E0A, 0x031B, 0x0323], NFC: [0x1E0C, 0x031B, 0x0307], NFD: [0x0044, 0x031B, 0x0323, 0x0307], NFKC: [0x1E0C, 0x031B, 0x0307], NFKD: [0x0044, 0x031B, 0x0323, 0x0307] },
+{ source: [0x1E0C, 0x031B, 0x0307], NFC: [0x1E0C, 0x031B, 0x0307], NFD: [0x0044, 0x031B, 0x0323, 0x0307], NFKC: [0x1E0C, 0x031B, 0x0307], NFKD: [0x0044, 0x031B, 0x0323, 0x0307] },
+{ source: [0x0044, 0x031B, 0x0307, 0x0323], NFC: [0x1E0C, 0x031B, 0x0307], NFD: [0x0044, 0x031B, 0x0323, 0x0307], NFKC: [0x1E0C, 0x031B, 0x0307], NFKD: [0x0044, 0x031B, 0x0323, 0x0307] },
+{ source: [0x0044, 0x031B, 0x0323, 0x0307], NFC: [0x1E0C, 0x031B, 0x0307], NFD: [0x0044, 0x031B, 0x0323, 0x0307], NFKC: [0x1E0C, 0x031B, 0x0307], NFKD: [0x0044, 0x031B, 0x0323, 0x0307] },
+{ source: [0x00C8], NFC: [0x00C8], NFD: [0x0045, 0x0300], NFKC: [0x00C8], NFKD: [0x0045, 0x0300] },
+{ source: [0x0112], NFC: [0x0112], NFD: [0x0045, 0x0304], NFKC: [0x0112], NFKD: [0x0045, 0x0304] },
+{ source: [0x0045, 0x0300], NFC: [0x00C8], NFD: [0x0045, 0x0300], NFKC: [0x00C8], NFKD: [0x0045, 0x0300] },
+{ source: [0x0045, 0x0304], NFC: [0x0112], NFD: [0x0045, 0x0304], NFKC: [0x0112], NFKD: [0x0045, 0x0304] },
+{ source: [0x1E14], NFC: [0x1E14], NFD: [0x0045, 0x0304, 0x0300], NFKC: [0x1E14], NFKD: [0x0045, 0x0304, 0x0300] },
+{ source: [0x0112, 0x0300], NFC: [0x1E14], NFD: [0x0045, 0x0304, 0x0300], NFKC: [0x1E14], NFKD: [0x0045, 0x0304, 0x0300] },
+{ source: [0x1E14, 0x0304], NFC: [0x1E14, 0x0304], NFD: [0x0045, 0x0304, 0x0300, 0x0304], NFKC: [0x1E14, 0x0304], NFKD: [0x0045, 0x0304, 0x0300, 0x0304] },
+{ source: [0x0045, 0x0304, 0x0300], NFC: [0x1E14], NFD: [0x0045, 0x0304, 0x0300], NFKC: [0x1E14], NFKD: [0x0045, 0x0304, 0x0300] },
+{ source: [0x0045, 0x0300, 0x0304], NFC: [0x00C8, 0x0304], NFD: [0x0045, 0x0300, 0x0304], NFKC: [0x00C8, 0x0304], NFKD: [0x0045, 0x0300, 0x0304] },
+{ source: [0x05B8, 0x05B9, 0x05B1, 0x0591, 0x05C3, 0x05B0, 0x05AC, 0x059F], NFC: [0x05B1, 0x05B8, 0x05B9, 0x0591, 0x05C3, 0x05B0, 0x05AC, 0x059F], NFD: [0x05B1, 0x05B8, 0x05B9, 0x0591, 0x05C3, 0x05B0, 0x05AC, 0x059F], NFKC: [0x05B1, 0x05B8, 0x05B9, 0x0591, 0x05C3, 0x05B0, 0x05AC, 0x059F], NFKD: [0x05B1, 0x05B8, 0x05B9, 0x0591, 0x05C3, 0x05B0, 0x05AC, 0x059F] },
+{ source: [0x0592, 0x05B7, 0x05BC, 0x05A5, 0x05B0, 0x05C0, 0x05C4, 0x05AD], NFC: [0x05B0, 0x05B7, 0x05BC, 0x05A5, 0x0592, 0x05C0, 0x05AD, 0x05C4], NFD: [0x05B0, 0x05B7, 0x05BC, 0x05A5, 0x0592, 0x05C0, 0x05AD, 0x05C4], NFKC: [0x05B0, 0x05B7, 0x05BC, 0x05A5, 0x0592, 0x05C0, 0x05AD, 0x05C4], NFKD: [0x05B0, 0x05B7, 0x05BC, 0x05A5, 0x0592, 0x05C0, 0x05AD, 0x05C4] },
+{ source: [0x1100, 0xAC00, 0x11A8], NFC: [0x1100, 0xAC01], NFD: [0x1100, 0x1100, 0x1161, 0x11A8], NFKC: [0x1100, 0xAC01], NFKD: [0x1100, 0x1100, 0x1161, 0x11A8] },
+{ source: [0x1100, 0xAC00, 0x11A8, 0x11A8], NFC: [0x1100, 0xAC01, 0x11A8], NFD: [0x1100, 0x1100, 0x1161, 0x11A8, 0x11A8], NFKC: [0x1100, 0xAC01, 0x11A8], NFKD: [0x1100, 0x1100, 0x1161, 0x11A8, 0x11A8] }
+];
+/* Part1 # Character by character test */
+var tests_part1 = [
+{ source: [0x00A0], NFC: [0x00A0], NFD: [0x00A0], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x00A8], NFC: [0x00A8], NFD: [0x00A8], NFKC: [0x0020, 0x0308], NFKD: [0x0020, 0x0308] },
+{ source: [0x00AA], NFC: [0x00AA], NFD: [0x00AA], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x00AF], NFC: [0x00AF], NFD: [0x00AF], NFKC: [0x0020, 0x0304], NFKD: [0x0020, 0x0304] },
+{ source: [0x00B2], NFC: [0x00B2], NFD: [0x00B2], NFKC: [0x0032], NFKD: [0x0032] },
+{ source: [0x00B3], NFC: [0x00B3], NFD: [0x00B3], NFKC: [0x0033], NFKD: [0x0033] },
+{ source: [0x00B4], NFC: [0x00B4], NFD: [0x00B4], NFKC: [0x0020, 0x0301], NFKD: [0x0020, 0x0301] },
+{ source: [0x00B5], NFC: [0x00B5], NFD: [0x00B5], NFKC: [0x03BC], NFKD: [0x03BC] },
+{ source: [0x00B8], NFC: [0x00B8], NFD: [0x00B8], NFKC: [0x0020, 0x0327], NFKD: [0x0020, 0x0327] },
+{ source: [0x00B9], NFC: [0x00B9], NFD: [0x00B9], NFKC: [0x0031], NFKD: [0x0031] },
+{ source: [0x00BA], NFC: [0x00BA], NFD: [0x00BA], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x00BC], NFC: [0x00BC], NFD: [0x00BC], NFKC: [0x0031, 0x2044, 0x0034], NFKD: [0x0031, 0x2044, 0x0034] },
+{ source: [0x00BD], NFC: [0x00BD], NFD: [0x00BD], NFKC: [0x0031, 0x2044, 0x0032], NFKD: [0x0031, 0x2044, 0x0032] },
+{ source: [0x00BE], NFC: [0x00BE], NFD: [0x00BE], NFKC: [0x0033, 0x2044, 0x0034], NFKD: [0x0033, 0x2044, 0x0034] },
+{ source: [0x00C0], NFC: [0x00C0], NFD: [0x0041, 0x0300], NFKC: [0x00C0], NFKD: [0x0041, 0x0300] },
+{ source: [0x00C1], NFC: [0x00C1], NFD: [0x0041, 0x0301], NFKC: [0x00C1], NFKD: [0x0041, 0x0301] },
+{ source: [0x00C2], NFC: [0x00C2], NFD: [0x0041, 0x0302], NFKC: [0x00C2], NFKD: [0x0041, 0x0302] },
+{ source: [0x00C3], NFC: [0x00C3], NFD: [0x0041, 0x0303], NFKC: [0x00C3], NFKD: [0x0041, 0x0303] },
+{ source: [0x00C4], NFC: [0x00C4], NFD: [0x0041, 0x0308], NFKC: [0x00C4], NFKD: [0x0041, 0x0308] },
+{ source: [0x00C5], NFC: [0x00C5], NFD: [0x0041, 0x030A], NFKC: [0x00C5], NFKD: [0x0041, 0x030A] },
+{ source: [0x00C7], NFC: [0x00C7], NFD: [0x0043, 0x0327], NFKC: [0x00C7], NFKD: [0x0043, 0x0327] },
+{ source: [0x00C8], NFC: [0x00C8], NFD: [0x0045, 0x0300], NFKC: [0x00C8], NFKD: [0x0045, 0x0300] },
+{ source: [0x00C9], NFC: [0x00C9], NFD: [0x0045, 0x0301], NFKC: [0x00C9], NFKD: [0x0045, 0x0301] },
+{ source: [0x00CA], NFC: [0x00CA], NFD: [0x0045, 0x0302], NFKC: [0x00CA], NFKD: [0x0045, 0x0302] },
+{ source: [0x00CB], NFC: [0x00CB], NFD: [0x0045, 0x0308], NFKC: [0x00CB], NFKD: [0x0045, 0x0308] },
+{ source: [0x00CC], NFC: [0x00CC], NFD: [0x0049, 0x0300], NFKC: [0x00CC], NFKD: [0x0049, 0x0300] },
+{ source: [0x00CD], NFC: [0x00CD], NFD: [0x0049, 0x0301], NFKC: [0x00CD], NFKD: [0x0049, 0x0301] },
+{ source: [0x00CE], NFC: [0x00CE], NFD: [0x0049, 0x0302], NFKC: [0x00CE], NFKD: [0x0049, 0x0302] },
+{ source: [0x00CF], NFC: [0x00CF], NFD: [0x0049, 0x0308], NFKC: [0x00CF], NFKD: [0x0049, 0x0308] },
+{ source: [0x00D1], NFC: [0x00D1], NFD: [0x004E, 0x0303], NFKC: [0x00D1], NFKD: [0x004E, 0x0303] },
+{ source: [0x00D2], NFC: [0x00D2], NFD: [0x004F, 0x0300], NFKC: [0x00D2], NFKD: [0x004F, 0x0300] },
+{ source: [0x00D3], NFC: [0x00D3], NFD: [0x004F, 0x0301], NFKC: [0x00D3], NFKD: [0x004F, 0x0301] },
+{ source: [0x00D4], NFC: [0x00D4], NFD: [0x004F, 0x0302], NFKC: [0x00D4], NFKD: [0x004F, 0x0302] },
+{ source: [0x00D5], NFC: [0x00D5], NFD: [0x004F, 0x0303], NFKC: [0x00D5], NFKD: [0x004F, 0x0303] },
+{ source: [0x00D6], NFC: [0x00D6], NFD: [0x004F, 0x0308], NFKC: [0x00D6], NFKD: [0x004F, 0x0308] },
+{ source: [0x00D9], NFC: [0x00D9], NFD: [0x0055, 0x0300], NFKC: [0x00D9], NFKD: [0x0055, 0x0300] },
+{ source: [0x00DA], NFC: [0x00DA], NFD: [0x0055, 0x0301], NFKC: [0x00DA], NFKD: [0x0055, 0x0301] },
+{ source: [0x00DB], NFC: [0x00DB], NFD: [0x0055, 0x0302], NFKC: [0x00DB], NFKD: [0x0055, 0x0302] },
+{ source: [0x00DC], NFC: [0x00DC], NFD: [0x0055, 0x0308], NFKC: [0x00DC], NFKD: [0x0055, 0x0308] },
+{ source: [0x00DD], NFC: [0x00DD], NFD: [0x0059, 0x0301], NFKC: [0x00DD], NFKD: [0x0059, 0x0301] },
+{ source: [0x00E0], NFC: [0x00E0], NFD: [0x0061, 0x0300], NFKC: [0x00E0], NFKD: [0x0061, 0x0300] },
+{ source: [0x00E1], NFC: [0x00E1], NFD: [0x0061, 0x0301], NFKC: [0x00E1], NFKD: [0x0061, 0x0301] },
+{ source: [0x00E2], NFC: [0x00E2], NFD: [0x0061, 0x0302], NFKC: [0x00E2], NFKD: [0x0061, 0x0302] },
+{ source: [0x00E3], NFC: [0x00E3], NFD: [0x0061, 0x0303], NFKC: [0x00E3], NFKD: [0x0061, 0x0303] },
+{ source: [0x00E4], NFC: [0x00E4], NFD: [0x0061, 0x0308], NFKC: [0x00E4], NFKD: [0x0061, 0x0308] },
+{ source: [0x00E5], NFC: [0x00E5], NFD: [0x0061, 0x030A], NFKC: [0x00E5], NFKD: [0x0061, 0x030A] },
+{ source: [0x00E7], NFC: [0x00E7], NFD: [0x0063, 0x0327], NFKC: [0x00E7], NFKD: [0x0063, 0x0327] },
+{ source: [0x00E8], NFC: [0x00E8], NFD: [0x0065, 0x0300], NFKC: [0x00E8], NFKD: [0x0065, 0x0300] },
+{ source: [0x00E9], NFC: [0x00E9], NFD: [0x0065, 0x0301], NFKC: [0x00E9], NFKD: [0x0065, 0x0301] },
+{ source: [0x00EA], NFC: [0x00EA], NFD: [0x0065, 0x0302], NFKC: [0x00EA], NFKD: [0x0065, 0x0302] },
+{ source: [0x00EB], NFC: [0x00EB], NFD: [0x0065, 0x0308], NFKC: [0x00EB], NFKD: [0x0065, 0x0308] },
+{ source: [0x00EC], NFC: [0x00EC], NFD: [0x0069, 0x0300], NFKC: [0x00EC], NFKD: [0x0069, 0x0300] },
+{ source: [0x00ED], NFC: [0x00ED], NFD: [0x0069, 0x0301], NFKC: [0x00ED], NFKD: [0x0069, 0x0301] },
+{ source: [0x00EE], NFC: [0x00EE], NFD: [0x0069, 0x0302], NFKC: [0x00EE], NFKD: [0x0069, 0x0302] },
+{ source: [0x00EF], NFC: [0x00EF], NFD: [0x0069, 0x0308], NFKC: [0x00EF], NFKD: [0x0069, 0x0308] },
+{ source: [0x00F1], NFC: [0x00F1], NFD: [0x006E, 0x0303], NFKC: [0x00F1], NFKD: [0x006E, 0x0303] },
+{ source: [0x00F2], NFC: [0x00F2], NFD: [0x006F, 0x0300], NFKC: [0x00F2], NFKD: [0x006F, 0x0300] },
+{ source: [0x00F3], NFC: [0x00F3], NFD: [0x006F, 0x0301], NFKC: [0x00F3], NFKD: [0x006F, 0x0301] },
+{ source: [0x00F4], NFC: [0x00F4], NFD: [0x006F, 0x0302], NFKC: [0x00F4], NFKD: [0x006F, 0x0302] },
+{ source: [0x00F5], NFC: [0x00F5], NFD: [0x006F, 0x0303], NFKC: [0x00F5], NFKD: [0x006F, 0x0303] },
+{ source: [0x00F6], NFC: [0x00F6], NFD: [0x006F, 0x0308], NFKC: [0x00F6], NFKD: [0x006F, 0x0308] },
+{ source: [0x00F9], NFC: [0x00F9], NFD: [0x0075, 0x0300], NFKC: [0x00F9], NFKD: [0x0075, 0x0300] },
+{ source: [0x00FA], NFC: [0x00FA], NFD: [0x0075, 0x0301], NFKC: [0x00FA], NFKD: [0x0075, 0x0301] },
+{ source: [0x00FB], NFC: [0x00FB], NFD: [0x0075, 0x0302], NFKC: [0x00FB], NFKD: [0x0075, 0x0302] },
+{ source: [0x00FC], NFC: [0x00FC], NFD: [0x0075, 0x0308], NFKC: [0x00FC], NFKD: [0x0075, 0x0308] },
+{ source: [0x00FD], NFC: [0x00FD], NFD: [0x0079, 0x0301], NFKC: [0x00FD], NFKD: [0x0079, 0x0301] },
+{ source: [0x00FF], NFC: [0x00FF], NFD: [0x0079, 0x0308], NFKC: [0x00FF], NFKD: [0x0079, 0x0308] },
+{ source: [0x0100], NFC: [0x0100], NFD: [0x0041, 0x0304], NFKC: [0x0100], NFKD: [0x0041, 0x0304] },
+{ source: [0x0101], NFC: [0x0101], NFD: [0x0061, 0x0304], NFKC: [0x0101], NFKD: [0x0061, 0x0304] },
+{ source: [0x0102], NFC: [0x0102], NFD: [0x0041, 0x0306], NFKC: [0x0102], NFKD: [0x0041, 0x0306] },
+{ source: [0x0103], NFC: [0x0103], NFD: [0x0061, 0x0306], NFKC: [0x0103], NFKD: [0x0061, 0x0306] },
+{ source: [0x0104], NFC: [0x0104], NFD: [0x0041, 0x0328], NFKC: [0x0104], NFKD: [0x0041, 0x0328] },
+{ source: [0x0105], NFC: [0x0105], NFD: [0x0061, 0x0328], NFKC: [0x0105], NFKD: [0x0061, 0x0328] },
+{ source: [0x0106], NFC: [0x0106], NFD: [0x0043, 0x0301], NFKC: [0x0106], NFKD: [0x0043, 0x0301] },
+{ source: [0x0107], NFC: [0x0107], NFD: [0x0063, 0x0301], NFKC: [0x0107], NFKD: [0x0063, 0x0301] },
+{ source: [0x0108], NFC: [0x0108], NFD: [0x0043, 0x0302], NFKC: [0x0108], NFKD: [0x0043, 0x0302] },
+{ source: [0x0109], NFC: [0x0109], NFD: [0x0063, 0x0302], NFKC: [0x0109], NFKD: [0x0063, 0x0302] },
+{ source: [0x010A], NFC: [0x010A], NFD: [0x0043, 0x0307], NFKC: [0x010A], NFKD: [0x0043, 0x0307] },
+{ source: [0x010B], NFC: [0x010B], NFD: [0x0063, 0x0307], NFKC: [0x010B], NFKD: [0x0063, 0x0307] },
+{ source: [0x010C], NFC: [0x010C], NFD: [0x0043, 0x030C], NFKC: [0x010C], NFKD: [0x0043, 0x030C] },
+{ source: [0x010D], NFC: [0x010D], NFD: [0x0063, 0x030C], NFKC: [0x010D], NFKD: [0x0063, 0x030C] },
+{ source: [0x010E], NFC: [0x010E], NFD: [0x0044, 0x030C], NFKC: [0x010E], NFKD: [0x0044, 0x030C] },
+{ source: [0x010F], NFC: [0x010F], NFD: [0x0064, 0x030C], NFKC: [0x010F], NFKD: [0x0064, 0x030C] },
+{ source: [0x0112], NFC: [0x0112], NFD: [0x0045, 0x0304], NFKC: [0x0112], NFKD: [0x0045, 0x0304] },
+{ source: [0x0113], NFC: [0x0113], NFD: [0x0065, 0x0304], NFKC: [0x0113], NFKD: [0x0065, 0x0304] },
+{ source: [0x0114], NFC: [0x0114], NFD: [0x0045, 0x0306], NFKC: [0x0114], NFKD: [0x0045, 0x0306] },
+{ source: [0x0115], NFC: [0x0115], NFD: [0x0065, 0x0306], NFKC: [0x0115], NFKD: [0x0065, 0x0306] },
+{ source: [0x0116], NFC: [0x0116], NFD: [0x0045, 0x0307], NFKC: [0x0116], NFKD: [0x0045, 0x0307] },
+{ source: [0x0117], NFC: [0x0117], NFD: [0x0065, 0x0307], NFKC: [0x0117], NFKD: [0x0065, 0x0307] },
+{ source: [0x0118], NFC: [0x0118], NFD: [0x0045, 0x0328], NFKC: [0x0118], NFKD: [0x0045, 0x0328] },
+{ source: [0x0119], NFC: [0x0119], NFD: [0x0065, 0x0328], NFKC: [0x0119], NFKD: [0x0065, 0x0328] },
+{ source: [0x011A], NFC: [0x011A], NFD: [0x0045, 0x030C], NFKC: [0x011A], NFKD: [0x0045, 0x030C] },
+{ source: [0x011B], NFC: [0x011B], NFD: [0x0065, 0x030C], NFKC: [0x011B], NFKD: [0x0065, 0x030C] },
+{ source: [0x011C], NFC: [0x011C], NFD: [0x0047, 0x0302], NFKC: [0x011C], NFKD: [0x0047, 0x0302] },
+{ source: [0x011D], NFC: [0x011D], NFD: [0x0067, 0x0302], NFKC: [0x011D], NFKD: [0x0067, 0x0302] },
+{ source: [0x011E], NFC: [0x011E], NFD: [0x0047, 0x0306], NFKC: [0x011E], NFKD: [0x0047, 0x0306] },
+{ source: [0x011F], NFC: [0x011F], NFD: [0x0067, 0x0306], NFKC: [0x011F], NFKD: [0x0067, 0x0306] },
+{ source: [0x0120], NFC: [0x0120], NFD: [0x0047, 0x0307], NFKC: [0x0120], NFKD: [0x0047, 0x0307] },
+{ source: [0x0121], NFC: [0x0121], NFD: [0x0067, 0x0307], NFKC: [0x0121], NFKD: [0x0067, 0x0307] },
+{ source: [0x0122], NFC: [0x0122], NFD: [0x0047, 0x0327], NFKC: [0x0122], NFKD: [0x0047, 0x0327] },
+{ source: [0x0123], NFC: [0x0123], NFD: [0x0067, 0x0327], NFKC: [0x0123], NFKD: [0x0067, 0x0327] },
+{ source: [0x0124], NFC: [0x0124], NFD: [0x0048, 0x0302], NFKC: [0x0124], NFKD: [0x0048, 0x0302] },
+{ source: [0x0125], NFC: [0x0125], NFD: [0x0068, 0x0302], NFKC: [0x0125], NFKD: [0x0068, 0x0302] },
+{ source: [0x0128], NFC: [0x0128], NFD: [0x0049, 0x0303], NFKC: [0x0128], NFKD: [0x0049, 0x0303] },
+{ source: [0x0129], NFC: [0x0129], NFD: [0x0069, 0x0303], NFKC: [0x0129], NFKD: [0x0069, 0x0303] },
+{ source: [0x012A], NFC: [0x012A], NFD: [0x0049, 0x0304], NFKC: [0x012A], NFKD: [0x0049, 0x0304] },
+{ source: [0x012B], NFC: [0x012B], NFD: [0x0069, 0x0304], NFKC: [0x012B], NFKD: [0x0069, 0x0304] },
+{ source: [0x012C], NFC: [0x012C], NFD: [0x0049, 0x0306], NFKC: [0x012C], NFKD: [0x0049, 0x0306] },
+{ source: [0x012D], NFC: [0x012D], NFD: [0x0069, 0x0306], NFKC: [0x012D], NFKD: [0x0069, 0x0306] },
+{ source: [0x012E], NFC: [0x012E], NFD: [0x0049, 0x0328], NFKC: [0x012E], NFKD: [0x0049, 0x0328] },
+{ source: [0x012F], NFC: [0x012F], NFD: [0x0069, 0x0328], NFKC: [0x012F], NFKD: [0x0069, 0x0328] },
+{ source: [0x0130], NFC: [0x0130], NFD: [0x0049, 0x0307], NFKC: [0x0130], NFKD: [0x0049, 0x0307] },
+{ source: [0x0132], NFC: [0x0132], NFD: [0x0132], NFKC: [0x0049, 0x004A], NFKD: [0x0049, 0x004A] },
+{ source: [0x0133], NFC: [0x0133], NFD: [0x0133], NFKC: [0x0069, 0x006A], NFKD: [0x0069, 0x006A] },
+{ source: [0x0134], NFC: [0x0134], NFD: [0x004A, 0x0302], NFKC: [0x0134], NFKD: [0x004A, 0x0302] },
+{ source: [0x0135], NFC: [0x0135], NFD: [0x006A, 0x0302], NFKC: [0x0135], NFKD: [0x006A, 0x0302] },
+{ source: [0x0136], NFC: [0x0136], NFD: [0x004B, 0x0327], NFKC: [0x0136], NFKD: [0x004B, 0x0327] },
+{ source: [0x0137], NFC: [0x0137], NFD: [0x006B, 0x0327], NFKC: [0x0137], NFKD: [0x006B, 0x0327] },
+{ source: [0x0139], NFC: [0x0139], NFD: [0x004C, 0x0301], NFKC: [0x0139], NFKD: [0x004C, 0x0301] },
+{ source: [0x013A], NFC: [0x013A], NFD: [0x006C, 0x0301], NFKC: [0x013A], NFKD: [0x006C, 0x0301] },
+{ source: [0x013B], NFC: [0x013B], NFD: [0x004C, 0x0327], NFKC: [0x013B], NFKD: [0x004C, 0x0327] },
+{ source: [0x013C], NFC: [0x013C], NFD: [0x006C, 0x0327], NFKC: [0x013C], NFKD: [0x006C, 0x0327] },
+{ source: [0x013D], NFC: [0x013D], NFD: [0x004C, 0x030C], NFKC: [0x013D], NFKD: [0x004C, 0x030C] },
+{ source: [0x013E], NFC: [0x013E], NFD: [0x006C, 0x030C], NFKC: [0x013E], NFKD: [0x006C, 0x030C] },
+{ source: [0x013F], NFC: [0x013F], NFD: [0x013F], NFKC: [0x004C, 0x00B7], NFKD: [0x004C, 0x00B7] },
+{ source: [0x0140], NFC: [0x0140], NFD: [0x0140], NFKC: [0x006C, 0x00B7], NFKD: [0x006C, 0x00B7] },
+{ source: [0x0143], NFC: [0x0143], NFD: [0x004E, 0x0301], NFKC: [0x0143], NFKD: [0x004E, 0x0301] },
+{ source: [0x0144], NFC: [0x0144], NFD: [0x006E, 0x0301], NFKC: [0x0144], NFKD: [0x006E, 0x0301] },
+{ source: [0x0145], NFC: [0x0145], NFD: [0x004E, 0x0327], NFKC: [0x0145], NFKD: [0x004E, 0x0327] },
+{ source: [0x0146], NFC: [0x0146], NFD: [0x006E, 0x0327], NFKC: [0x0146], NFKD: [0x006E, 0x0327] },
+{ source: [0x0147], NFC: [0x0147], NFD: [0x004E, 0x030C], NFKC: [0x0147], NFKD: [0x004E, 0x030C] },
+{ source: [0x0148], NFC: [0x0148], NFD: [0x006E, 0x030C], NFKC: [0x0148], NFKD: [0x006E, 0x030C] },
+{ source: [0x0149], NFC: [0x0149], NFD: [0x0149], NFKC: [0x02BC, 0x006E], NFKD: [0x02BC, 0x006E] },
+{ source: [0x014C], NFC: [0x014C], NFD: [0x004F, 0x0304], NFKC: [0x014C], NFKD: [0x004F, 0x0304] },
+{ source: [0x014D], NFC: [0x014D], NFD: [0x006F, 0x0304], NFKC: [0x014D], NFKD: [0x006F, 0x0304] },
+{ source: [0x014E], NFC: [0x014E], NFD: [0x004F, 0x0306], NFKC: [0x014E], NFKD: [0x004F, 0x0306] },
+{ source: [0x014F], NFC: [0x014F], NFD: [0x006F, 0x0306], NFKC: [0x014F], NFKD: [0x006F, 0x0306] },
+{ source: [0x0150], NFC: [0x0150], NFD: [0x004F, 0x030B], NFKC: [0x0150], NFKD: [0x004F, 0x030B] },
+{ source: [0x0151], NFC: [0x0151], NFD: [0x006F, 0x030B], NFKC: [0x0151], NFKD: [0x006F, 0x030B] },
+{ source: [0x0154], NFC: [0x0154], NFD: [0x0052, 0x0301], NFKC: [0x0154], NFKD: [0x0052, 0x0301] },
+{ source: [0x0155], NFC: [0x0155], NFD: [0x0072, 0x0301], NFKC: [0x0155], NFKD: [0x0072, 0x0301] },
+{ source: [0x0156], NFC: [0x0156], NFD: [0x0052, 0x0327], NFKC: [0x0156], NFKD: [0x0052, 0x0327] },
+{ source: [0x0157], NFC: [0x0157], NFD: [0x0072, 0x0327], NFKC: [0x0157], NFKD: [0x0072, 0x0327] },
+{ source: [0x0158], NFC: [0x0158], NFD: [0x0052, 0x030C], NFKC: [0x0158], NFKD: [0x0052, 0x030C] },
+{ source: [0x0159], NFC: [0x0159], NFD: [0x0072, 0x030C], NFKC: [0x0159], NFKD: [0x0072, 0x030C] },
+{ source: [0x015A], NFC: [0x015A], NFD: [0x0053, 0x0301], NFKC: [0x015A], NFKD: [0x0053, 0x0301] },
+{ source: [0x015B], NFC: [0x015B], NFD: [0x0073, 0x0301], NFKC: [0x015B], NFKD: [0x0073, 0x0301] },
+{ source: [0x015C], NFC: [0x015C], NFD: [0x0053, 0x0302], NFKC: [0x015C], NFKD: [0x0053, 0x0302] },
+{ source: [0x015D], NFC: [0x015D], NFD: [0x0073, 0x0302], NFKC: [0x015D], NFKD: [0x0073, 0x0302] },
+{ source: [0x015E], NFC: [0x015E], NFD: [0x0053, 0x0327], NFKC: [0x015E], NFKD: [0x0053, 0x0327] },
+{ source: [0x015F], NFC: [0x015F], NFD: [0x0073, 0x0327], NFKC: [0x015F], NFKD: [0x0073, 0x0327] },
+{ source: [0x0160], NFC: [0x0160], NFD: [0x0053, 0x030C], NFKC: [0x0160], NFKD: [0x0053, 0x030C] },
+{ source: [0x0161], NFC: [0x0161], NFD: [0x0073, 0x030C], NFKC: [0x0161], NFKD: [0x0073, 0x030C] },
+{ source: [0x0162], NFC: [0x0162], NFD: [0x0054, 0x0327], NFKC: [0x0162], NFKD: [0x0054, 0x0327] },
+{ source: [0x0163], NFC: [0x0163], NFD: [0x0074, 0x0327], NFKC: [0x0163], NFKD: [0x0074, 0x0327] },
+{ source: [0x0164], NFC: [0x0164], NFD: [0x0054, 0x030C], NFKC: [0x0164], NFKD: [0x0054, 0x030C] },
+{ source: [0x0165], NFC: [0x0165], NFD: [0x0074, 0x030C], NFKC: [0x0165], NFKD: [0x0074, 0x030C] },
+{ source: [0x0168], NFC: [0x0168], NFD: [0x0055, 0x0303], NFKC: [0x0168], NFKD: [0x0055, 0x0303] },
+{ source: [0x0169], NFC: [0x0169], NFD: [0x0075, 0x0303], NFKC: [0x0169], NFKD: [0x0075, 0x0303] },
+{ source: [0x016A], NFC: [0x016A], NFD: [0x0055, 0x0304], NFKC: [0x016A], NFKD: [0x0055, 0x0304] },
+{ source: [0x016B], NFC: [0x016B], NFD: [0x0075, 0x0304], NFKC: [0x016B], NFKD: [0x0075, 0x0304] },
+{ source: [0x016C], NFC: [0x016C], NFD: [0x0055, 0x0306], NFKC: [0x016C], NFKD: [0x0055, 0x0306] },
+{ source: [0x016D], NFC: [0x016D], NFD: [0x0075, 0x0306], NFKC: [0x016D], NFKD: [0x0075, 0x0306] },
+{ source: [0x016E], NFC: [0x016E], NFD: [0x0055, 0x030A], NFKC: [0x016E], NFKD: [0x0055, 0x030A] },
+{ source: [0x016F], NFC: [0x016F], NFD: [0x0075, 0x030A], NFKC: [0x016F], NFKD: [0x0075, 0x030A] },
+{ source: [0x0170], NFC: [0x0170], NFD: [0x0055, 0x030B], NFKC: [0x0170], NFKD: [0x0055, 0x030B] },
+{ source: [0x0171], NFC: [0x0171], NFD: [0x0075, 0x030B], NFKC: [0x0171], NFKD: [0x0075, 0x030B] },
+{ source: [0x0172], NFC: [0x0172], NFD: [0x0055, 0x0328], NFKC: [0x0172], NFKD: [0x0055, 0x0328] },
+{ source: [0x0173], NFC: [0x0173], NFD: [0x0075, 0x0328], NFKC: [0x0173], NFKD: [0x0075, 0x0328] },
+{ source: [0x0174], NFC: [0x0174], NFD: [0x0057, 0x0302], NFKC: [0x0174], NFKD: [0x0057, 0x0302] },
+{ source: [0x0175], NFC: [0x0175], NFD: [0x0077, 0x0302], NFKC: [0x0175], NFKD: [0x0077, 0x0302] },
+{ source: [0x0176], NFC: [0x0176], NFD: [0x0059, 0x0302], NFKC: [0x0176], NFKD: [0x0059, 0x0302] },
+{ source: [0x0177], NFC: [0x0177], NFD: [0x0079, 0x0302], NFKC: [0x0177], NFKD: [0x0079, 0x0302] },
+{ source: [0x0178], NFC: [0x0178], NFD: [0x0059, 0x0308], NFKC: [0x0178], NFKD: [0x0059, 0x0308] },
+{ source: [0x0179], NFC: [0x0179], NFD: [0x005A, 0x0301], NFKC: [0x0179], NFKD: [0x005A, 0x0301] },
+{ source: [0x017A], NFC: [0x017A], NFD: [0x007A, 0x0301], NFKC: [0x017A], NFKD: [0x007A, 0x0301] },
+{ source: [0x017B], NFC: [0x017B], NFD: [0x005A, 0x0307], NFKC: [0x017B], NFKD: [0x005A, 0x0307] },
+{ source: [0x017C], NFC: [0x017C], NFD: [0x007A, 0x0307], NFKC: [0x017C], NFKD: [0x007A, 0x0307] },
+{ source: [0x017D], NFC: [0x017D], NFD: [0x005A, 0x030C], NFKC: [0x017D], NFKD: [0x005A, 0x030C] },
+{ source: [0x017E], NFC: [0x017E], NFD: [0x007A, 0x030C], NFKC: [0x017E], NFKD: [0x007A, 0x030C] },
+{ source: [0x017F], NFC: [0x017F], NFD: [0x017F], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x01A0], NFC: [0x01A0], NFD: [0x004F, 0x031B], NFKC: [0x01A0], NFKD: [0x004F, 0x031B] },
+{ source: [0x01A1], NFC: [0x01A1], NFD: [0x006F, 0x031B], NFKC: [0x01A1], NFKD: [0x006F, 0x031B] },
+{ source: [0x01AF], NFC: [0x01AF], NFD: [0x0055, 0x031B], NFKC: [0x01AF], NFKD: [0x0055, 0x031B] },
+{ source: [0x01B0], NFC: [0x01B0], NFD: [0x0075, 0x031B], NFKC: [0x01B0], NFKD: [0x0075, 0x031B] },
+{ source: [0x01C4], NFC: [0x01C4], NFD: [0x01C4], NFKC: [0x0044, 0x017D], NFKD: [0x0044, 0x005A, 0x030C] },
+{ source: [0x01C5], NFC: [0x01C5], NFD: [0x01C5], NFKC: [0x0044, 0x017E], NFKD: [0x0044, 0x007A, 0x030C] },
+{ source: [0x01C6], NFC: [0x01C6], NFD: [0x01C6], NFKC: [0x0064, 0x017E], NFKD: [0x0064, 0x007A, 0x030C] },
+{ source: [0x01C7], NFC: [0x01C7], NFD: [0x01C7], NFKC: [0x004C, 0x004A], NFKD: [0x004C, 0x004A] },
+{ source: [0x01C8], NFC: [0x01C8], NFD: [0x01C8], NFKC: [0x004C, 0x006A], NFKD: [0x004C, 0x006A] },
+{ source: [0x01C9], NFC: [0x01C9], NFD: [0x01C9], NFKC: [0x006C, 0x006A], NFKD: [0x006C, 0x006A] },
+{ source: [0x01CA], NFC: [0x01CA], NFD: [0x01CA], NFKC: [0x004E, 0x004A], NFKD: [0x004E, 0x004A] },
+{ source: [0x01CB], NFC: [0x01CB], NFD: [0x01CB], NFKC: [0x004E, 0x006A], NFKD: [0x004E, 0x006A] },
+{ source: [0x01CC], NFC: [0x01CC], NFD: [0x01CC], NFKC: [0x006E, 0x006A], NFKD: [0x006E, 0x006A] },
+{ source: [0x01CD], NFC: [0x01CD], NFD: [0x0041, 0x030C], NFKC: [0x01CD], NFKD: [0x0041, 0x030C] },
+{ source: [0x01CE], NFC: [0x01CE], NFD: [0x0061, 0x030C], NFKC: [0x01CE], NFKD: [0x0061, 0x030C] },
+{ source: [0x01CF], NFC: [0x01CF], NFD: [0x0049, 0x030C], NFKC: [0x01CF], NFKD: [0x0049, 0x030C] },
+{ source: [0x01D0], NFC: [0x01D0], NFD: [0x0069, 0x030C], NFKC: [0x01D0], NFKD: [0x0069, 0x030C] },
+{ source: [0x01D1], NFC: [0x01D1], NFD: [0x004F, 0x030C], NFKC: [0x01D1], NFKD: [0x004F, 0x030C] },
+{ source: [0x01D2], NFC: [0x01D2], NFD: [0x006F, 0x030C], NFKC: [0x01D2], NFKD: [0x006F, 0x030C] },
+{ source: [0x01D3], NFC: [0x01D3], NFD: [0x0055, 0x030C], NFKC: [0x01D3], NFKD: [0x0055, 0x030C] },
+{ source: [0x01D4], NFC: [0x01D4], NFD: [0x0075, 0x030C], NFKC: [0x01D4], NFKD: [0x0075, 0x030C] },
+{ source: [0x01D5], NFC: [0x01D5], NFD: [0x0055, 0x0308, 0x0304], NFKC: [0x01D5], NFKD: [0x0055, 0x0308, 0x0304] },
+{ source: [0x01D6], NFC: [0x01D6], NFD: [0x0075, 0x0308, 0x0304], NFKC: [0x01D6], NFKD: [0x0075, 0x0308, 0x0304] },
+{ source: [0x01D7], NFC: [0x01D7], NFD: [0x0055, 0x0308, 0x0301], NFKC: [0x01D7], NFKD: [0x0055, 0x0308, 0x0301] },
+{ source: [0x01D8], NFC: [0x01D8], NFD: [0x0075, 0x0308, 0x0301], NFKC: [0x01D8], NFKD: [0x0075, 0x0308, 0x0301] },
+{ source: [0x01D9], NFC: [0x01D9], NFD: [0x0055, 0x0308, 0x030C], NFKC: [0x01D9], NFKD: [0x0055, 0x0308, 0x030C] },
+{ source: [0x01DA], NFC: [0x01DA], NFD: [0x0075, 0x0308, 0x030C], NFKC: [0x01DA], NFKD: [0x0075, 0x0308, 0x030C] },
+{ source: [0x01DB], NFC: [0x01DB], NFD: [0x0055, 0x0308, 0x0300], NFKC: [0x01DB], NFKD: [0x0055, 0x0308, 0x0300] },
+{ source: [0x01DC], NFC: [0x01DC], NFD: [0x0075, 0x0308, 0x0300], NFKC: [0x01DC], NFKD: [0x0075, 0x0308, 0x0300] },
+{ source: [0x01DE], NFC: [0x01DE], NFD: [0x0041, 0x0308, 0x0304], NFKC: [0x01DE], NFKD: [0x0041, 0x0308, 0x0304] },
+{ source: [0x01DF], NFC: [0x01DF], NFD: [0x0061, 0x0308, 0x0304], NFKC: [0x01DF], NFKD: [0x0061, 0x0308, 0x0304] },
+{ source: [0x01E0], NFC: [0x01E0], NFD: [0x0041, 0x0307, 0x0304], NFKC: [0x01E0], NFKD: [0x0041, 0x0307, 0x0304] },
+{ source: [0x01E1], NFC: [0x01E1], NFD: [0x0061, 0x0307, 0x0304], NFKC: [0x01E1], NFKD: [0x0061, 0x0307, 0x0304] },
+{ source: [0x01E2], NFC: [0x01E2], NFD: [0x00C6, 0x0304], NFKC: [0x01E2], NFKD: [0x00C6, 0x0304] },
+{ source: [0x01E3], NFC: [0x01E3], NFD: [0x00E6, 0x0304], NFKC: [0x01E3], NFKD: [0x00E6, 0x0304] },
+{ source: [0x01E6], NFC: [0x01E6], NFD: [0x0047, 0x030C], NFKC: [0x01E6], NFKD: [0x0047, 0x030C] },
+{ source: [0x01E7], NFC: [0x01E7], NFD: [0x0067, 0x030C], NFKC: [0x01E7], NFKD: [0x0067, 0x030C] },
+{ source: [0x01E8], NFC: [0x01E8], NFD: [0x004B, 0x030C], NFKC: [0x01E8], NFKD: [0x004B, 0x030C] },
+{ source: [0x01E9], NFC: [0x01E9], NFD: [0x006B, 0x030C], NFKC: [0x01E9], NFKD: [0x006B, 0x030C] },
+{ source: [0x01EA], NFC: [0x01EA], NFD: [0x004F, 0x0328], NFKC: [0x01EA], NFKD: [0x004F, 0x0328] },
+{ source: [0x01EB], NFC: [0x01EB], NFD: [0x006F, 0x0328], NFKC: [0x01EB], NFKD: [0x006F, 0x0328] },
+{ source: [0x01EC], NFC: [0x01EC], NFD: [0x004F, 0x0328, 0x0304], NFKC: [0x01EC], NFKD: [0x004F, 0x0328, 0x0304] },
+{ source: [0x01ED], NFC: [0x01ED], NFD: [0x006F, 0x0328, 0x0304], NFKC: [0x01ED], NFKD: [0x006F, 0x0328, 0x0304] },
+{ source: [0x01EE], NFC: [0x01EE], NFD: [0x01B7, 0x030C], NFKC: [0x01EE], NFKD: [0x01B7, 0x030C] },
+{ source: [0x01EF], NFC: [0x01EF], NFD: [0x0292, 0x030C], NFKC: [0x01EF], NFKD: [0x0292, 0x030C] },
+{ source: [0x01F0], NFC: [0x01F0], NFD: [0x006A, 0x030C], NFKC: [0x01F0], NFKD: [0x006A, 0x030C] },
+{ source: [0x01F1], NFC: [0x01F1], NFD: [0x01F1], NFKC: [0x0044, 0x005A], NFKD: [0x0044, 0x005A] },
+{ source: [0x01F2], NFC: [0x01F2], NFD: [0x01F2], NFKC: [0x0044, 0x007A], NFKD: [0x0044, 0x007A] },
+{ source: [0x01F3], NFC: [0x01F3], NFD: [0x01F3], NFKC: [0x0064, 0x007A], NFKD: [0x0064, 0x007A] },
+{ source: [0x01F4], NFC: [0x01F4], NFD: [0x0047, 0x0301], NFKC: [0x01F4], NFKD: [0x0047, 0x0301] },
+{ source: [0x01F5], NFC: [0x01F5], NFD: [0x0067, 0x0301], NFKC: [0x01F5], NFKD: [0x0067, 0x0301] },
+{ source: [0x01F8], NFC: [0x01F8], NFD: [0x004E, 0x0300], NFKC: [0x01F8], NFKD: [0x004E, 0x0300] },
+{ source: [0x01F9], NFC: [0x01F9], NFD: [0x006E, 0x0300], NFKC: [0x01F9], NFKD: [0x006E, 0x0300] },
+{ source: [0x01FA], NFC: [0x01FA], NFD: [0x0041, 0x030A, 0x0301], NFKC: [0x01FA], NFKD: [0x0041, 0x030A, 0x0301] },
+{ source: [0x01FB], NFC: [0x01FB], NFD: [0x0061, 0x030A, 0x0301], NFKC: [0x01FB], NFKD: [0x0061, 0x030A, 0x0301] },
+{ source: [0x01FC], NFC: [0x01FC], NFD: [0x00C6, 0x0301], NFKC: [0x01FC], NFKD: [0x00C6, 0x0301] },
+{ source: [0x01FD], NFC: [0x01FD], NFD: [0x00E6, 0x0301], NFKC: [0x01FD], NFKD: [0x00E6, 0x0301] },
+{ source: [0x01FE], NFC: [0x01FE], NFD: [0x00D8, 0x0301], NFKC: [0x01FE], NFKD: [0x00D8, 0x0301] },
+{ source: [0x01FF], NFC: [0x01FF], NFD: [0x00F8, 0x0301], NFKC: [0x01FF], NFKD: [0x00F8, 0x0301] },
+{ source: [0x0200], NFC: [0x0200], NFD: [0x0041, 0x030F], NFKC: [0x0200], NFKD: [0x0041, 0x030F] },
+{ source: [0x0201], NFC: [0x0201], NFD: [0x0061, 0x030F], NFKC: [0x0201], NFKD: [0x0061, 0x030F] },
+{ source: [0x0202], NFC: [0x0202], NFD: [0x0041, 0x0311], NFKC: [0x0202], NFKD: [0x0041, 0x0311] },
+{ source: [0x0203], NFC: [0x0203], NFD: [0x0061, 0x0311], NFKC: [0x0203], NFKD: [0x0061, 0x0311] },
+{ source: [0x0204], NFC: [0x0204], NFD: [0x0045, 0x030F], NFKC: [0x0204], NFKD: [0x0045, 0x030F] },
+{ source: [0x0205], NFC: [0x0205], NFD: [0x0065, 0x030F], NFKC: [0x0205], NFKD: [0x0065, 0x030F] },
+{ source: [0x0206], NFC: [0x0206], NFD: [0x0045, 0x0311], NFKC: [0x0206], NFKD: [0x0045, 0x0311] },
+{ source: [0x0207], NFC: [0x0207], NFD: [0x0065, 0x0311], NFKC: [0x0207], NFKD: [0x0065, 0x0311] },
+{ source: [0x0208], NFC: [0x0208], NFD: [0x0049, 0x030F], NFKC: [0x0208], NFKD: [0x0049, 0x030F] },
+{ source: [0x0209], NFC: [0x0209], NFD: [0x0069, 0x030F], NFKC: [0x0209], NFKD: [0x0069, 0x030F] },
+{ source: [0x020A], NFC: [0x020A], NFD: [0x0049, 0x0311], NFKC: [0x020A], NFKD: [0x0049, 0x0311] },
+{ source: [0x020B], NFC: [0x020B], NFD: [0x0069, 0x0311], NFKC: [0x020B], NFKD: [0x0069, 0x0311] },
+{ source: [0x020C], NFC: [0x020C], NFD: [0x004F, 0x030F], NFKC: [0x020C], NFKD: [0x004F, 0x030F] },
+{ source: [0x020D], NFC: [0x020D], NFD: [0x006F, 0x030F], NFKC: [0x020D], NFKD: [0x006F, 0x030F] },
+{ source: [0x020E], NFC: [0x020E], NFD: [0x004F, 0x0311], NFKC: [0x020E], NFKD: [0x004F, 0x0311] },
+{ source: [0x020F], NFC: [0x020F], NFD: [0x006F, 0x0311], NFKC: [0x020F], NFKD: [0x006F, 0x0311] },
+{ source: [0x0210], NFC: [0x0210], NFD: [0x0052, 0x030F], NFKC: [0x0210], NFKD: [0x0052, 0x030F] },
+{ source: [0x0211], NFC: [0x0211], NFD: [0x0072, 0x030F], NFKC: [0x0211], NFKD: [0x0072, 0x030F] },
+{ source: [0x0212], NFC: [0x0212], NFD: [0x0052, 0x0311], NFKC: [0x0212], NFKD: [0x0052, 0x0311] },
+{ source: [0x0213], NFC: [0x0213], NFD: [0x0072, 0x0311], NFKC: [0x0213], NFKD: [0x0072, 0x0311] },
+{ source: [0x0214], NFC: [0x0214], NFD: [0x0055, 0x030F], NFKC: [0x0214], NFKD: [0x0055, 0x030F] },
+{ source: [0x0215], NFC: [0x0215], NFD: [0x0075, 0x030F], NFKC: [0x0215], NFKD: [0x0075, 0x030F] },
+{ source: [0x0216], NFC: [0x0216], NFD: [0x0055, 0x0311], NFKC: [0x0216], NFKD: [0x0055, 0x0311] },
+{ source: [0x0217], NFC: [0x0217], NFD: [0x0075, 0x0311], NFKC: [0x0217], NFKD: [0x0075, 0x0311] },
+{ source: [0x0218], NFC: [0x0218], NFD: [0x0053, 0x0326], NFKC: [0x0218], NFKD: [0x0053, 0x0326] },
+{ source: [0x0219], NFC: [0x0219], NFD: [0x0073, 0x0326], NFKC: [0x0219], NFKD: [0x0073, 0x0326] },
+{ source: [0x021A], NFC: [0x021A], NFD: [0x0054, 0x0326], NFKC: [0x021A], NFKD: [0x0054, 0x0326] },
+{ source: [0x021B], NFC: [0x021B], NFD: [0x0074, 0x0326], NFKC: [0x021B], NFKD: [0x0074, 0x0326] },
+{ source: [0x021E], NFC: [0x021E], NFD: [0x0048, 0x030C], NFKC: [0x021E], NFKD: [0x0048, 0x030C] },
+{ source: [0x021F], NFC: [0x021F], NFD: [0x0068, 0x030C], NFKC: [0x021F], NFKD: [0x0068, 0x030C] },
+{ source: [0x0226], NFC: [0x0226], NFD: [0x0041, 0x0307], NFKC: [0x0226], NFKD: [0x0041, 0x0307] },
+{ source: [0x0227], NFC: [0x0227], NFD: [0x0061, 0x0307], NFKC: [0x0227], NFKD: [0x0061, 0x0307] },
+{ source: [0x0228], NFC: [0x0228], NFD: [0x0045, 0x0327], NFKC: [0x0228], NFKD: [0x0045, 0x0327] },
+{ source: [0x0229], NFC: [0x0229], NFD: [0x0065, 0x0327], NFKC: [0x0229], NFKD: [0x0065, 0x0327] },
+{ source: [0x022A], NFC: [0x022A], NFD: [0x004F, 0x0308, 0x0304], NFKC: [0x022A], NFKD: [0x004F, 0x0308, 0x0304] },
+{ source: [0x022B], NFC: [0x022B], NFD: [0x006F, 0x0308, 0x0304], NFKC: [0x022B], NFKD: [0x006F, 0x0308, 0x0304] },
+{ source: [0x022C], NFC: [0x022C], NFD: [0x004F, 0x0303, 0x0304], NFKC: [0x022C], NFKD: [0x004F, 0x0303, 0x0304] },
+{ source: [0x022D], NFC: [0x022D], NFD: [0x006F, 0x0303, 0x0304], NFKC: [0x022D], NFKD: [0x006F, 0x0303, 0x0304] },
+{ source: [0x022E], NFC: [0x022E], NFD: [0x004F, 0x0307], NFKC: [0x022E], NFKD: [0x004F, 0x0307] },
+{ source: [0x022F], NFC: [0x022F], NFD: [0x006F, 0x0307], NFKC: [0x022F], NFKD: [0x006F, 0x0307] },
+{ source: [0x0230], NFC: [0x0230], NFD: [0x004F, 0x0307, 0x0304], NFKC: [0x0230], NFKD: [0x004F, 0x0307, 0x0304] },
+{ source: [0x0231], NFC: [0x0231], NFD: [0x006F, 0x0307, 0x0304], NFKC: [0x0231], NFKD: [0x006F, 0x0307, 0x0304] },
+{ source: [0x0232], NFC: [0x0232], NFD: [0x0059, 0x0304], NFKC: [0x0232], NFKD: [0x0059, 0x0304] },
+{ source: [0x0233], NFC: [0x0233], NFD: [0x0079, 0x0304], NFKC: [0x0233], NFKD: [0x0079, 0x0304] },
+{ source: [0x02B0], NFC: [0x02B0], NFD: [0x02B0], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x02B1], NFC: [0x02B1], NFD: [0x02B1], NFKC: [0x0266], NFKD: [0x0266] },
+{ source: [0x02B2], NFC: [0x02B2], NFD: [0x02B2], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x02B3], NFC: [0x02B3], NFD: [0x02B3], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x02B4], NFC: [0x02B4], NFD: [0x02B4], NFKC: [0x0279], NFKD: [0x0279] },
+{ source: [0x02B5], NFC: [0x02B5], NFD: [0x02B5], NFKC: [0x027B], NFKD: [0x027B] },
+{ source: [0x02B6], NFC: [0x02B6], NFD: [0x02B6], NFKC: [0x0281], NFKD: [0x0281] },
+{ source: [0x02B7], NFC: [0x02B7], NFD: [0x02B7], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x02B8], NFC: [0x02B8], NFD: [0x02B8], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x02D8], NFC: [0x02D8], NFD: [0x02D8], NFKC: [0x0020, 0x0306], NFKD: [0x0020, 0x0306] },
+{ source: [0x02D9], NFC: [0x02D9], NFD: [0x02D9], NFKC: [0x0020, 0x0307], NFKD: [0x0020, 0x0307] },
+{ source: [0x02DA], NFC: [0x02DA], NFD: [0x02DA], NFKC: [0x0020, 0x030A], NFKD: [0x0020, 0x030A] },
+{ source: [0x02DB], NFC: [0x02DB], NFD: [0x02DB], NFKC: [0x0020, 0x0328], NFKD: [0x0020, 0x0328] },
+{ source: [0x02DC], NFC: [0x02DC], NFD: [0x02DC], NFKC: [0x0020, 0x0303], NFKD: [0x0020, 0x0303] },
+{ source: [0x02DD], NFC: [0x02DD], NFD: [0x02DD], NFKC: [0x0020, 0x030B], NFKD: [0x0020, 0x030B] },
+{ source: [0x02E0], NFC: [0x02E0], NFD: [0x02E0], NFKC: [0x0263], NFKD: [0x0263] },
+{ source: [0x02E1], NFC: [0x02E1], NFD: [0x02E1], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x02E2], NFC: [0x02E2], NFD: [0x02E2], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x02E3], NFC: [0x02E3], NFD: [0x02E3], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x02E4], NFC: [0x02E4], NFD: [0x02E4], NFKC: [0x0295], NFKD: [0x0295] },
+{ source: [0x0340], NFC: [0x0300], NFD: [0x0300], NFKC: [0x0300], NFKD: [0x0300] },
+{ source: [0x0341], NFC: [0x0301], NFD: [0x0301], NFKC: [0x0301], NFKD: [0x0301] },
+{ source: [0x0343], NFC: [0x0313], NFD: [0x0313], NFKC: [0x0313], NFKD: [0x0313] },
+{ source: [0x0344], NFC: [0x0308, 0x0301], NFD: [0x0308, 0x0301], NFKC: [0x0308, 0x0301], NFKD: [0x0308, 0x0301] },
+{ source: [0x0374], NFC: [0x02B9], NFD: [0x02B9], NFKC: [0x02B9], NFKD: [0x02B9] },
+{ source: [0x037A], NFC: [0x037A], NFD: [0x037A], NFKC: [0x0020, 0x0345], NFKD: [0x0020, 0x0345] },
+{ source: [0x037E], NFC: [0x003B], NFD: [0x003B], NFKC: [0x003B], NFKD: [0x003B] },
+{ source: [0x0384], NFC: [0x0384], NFD: [0x0384], NFKC: [0x0020, 0x0301], NFKD: [0x0020, 0x0301] },
+{ source: [0x0385], NFC: [0x0385], NFD: [0x00A8, 0x0301], NFKC: [0x0020, 0x0308, 0x0301], NFKD: [0x0020, 0x0308, 0x0301] },
+{ source: [0x0386], NFC: [0x0386], NFD: [0x0391, 0x0301], NFKC: [0x0386], NFKD: [0x0391, 0x0301] },
+{ source: [0x0387], NFC: [0x00B7], NFD: [0x00B7], NFKC: [0x00B7], NFKD: [0x00B7] },
+{ source: [0x0388], NFC: [0x0388], NFD: [0x0395, 0x0301], NFKC: [0x0388], NFKD: [0x0395, 0x0301] },
+{ source: [0x0389], NFC: [0x0389], NFD: [0x0397, 0x0301], NFKC: [0x0389], NFKD: [0x0397, 0x0301] },
+{ source: [0x038A], NFC: [0x038A], NFD: [0x0399, 0x0301], NFKC: [0x038A], NFKD: [0x0399, 0x0301] },
+{ source: [0x038C], NFC: [0x038C], NFD: [0x039F, 0x0301], NFKC: [0x038C], NFKD: [0x039F, 0x0301] },
+{ source: [0x038E], NFC: [0x038E], NFD: [0x03A5, 0x0301], NFKC: [0x038E], NFKD: [0x03A5, 0x0301] },
+{ source: [0x038F], NFC: [0x038F], NFD: [0x03A9, 0x0301], NFKC: [0x038F], NFKD: [0x03A9, 0x0301] },
+{ source: [0x0390], NFC: [0x0390], NFD: [0x03B9, 0x0308, 0x0301], NFKC: [0x0390], NFKD: [0x03B9, 0x0308, 0x0301] },
+{ source: [0x03AA], NFC: [0x03AA], NFD: [0x0399, 0x0308], NFKC: [0x03AA], NFKD: [0x0399, 0x0308] },
+{ source: [0x03AB], NFC: [0x03AB], NFD: [0x03A5, 0x0308], NFKC: [0x03AB], NFKD: [0x03A5, 0x0308] },
+{ source: [0x03AC], NFC: [0x03AC], NFD: [0x03B1, 0x0301], NFKC: [0x03AC], NFKD: [0x03B1, 0x0301] },
+{ source: [0x03AD], NFC: [0x03AD], NFD: [0x03B5, 0x0301], NFKC: [0x03AD], NFKD: [0x03B5, 0x0301] },
+{ source: [0x03AE], NFC: [0x03AE], NFD: [0x03B7, 0x0301], NFKC: [0x03AE], NFKD: [0x03B7, 0x0301] },
+{ source: [0x03AF], NFC: [0x03AF], NFD: [0x03B9, 0x0301], NFKC: [0x03AF], NFKD: [0x03B9, 0x0301] },
+{ source: [0x03B0], NFC: [0x03B0], NFD: [0x03C5, 0x0308, 0x0301], NFKC: [0x03B0], NFKD: [0x03C5, 0x0308, 0x0301] },
+{ source: [0x03CA], NFC: [0x03CA], NFD: [0x03B9, 0x0308], NFKC: [0x03CA], NFKD: [0x03B9, 0x0308] },
+{ source: [0x03CB], NFC: [0x03CB], NFD: [0x03C5, 0x0308], NFKC: [0x03CB], NFKD: [0x03C5, 0x0308] },
+{ source: [0x03CC], NFC: [0x03CC], NFD: [0x03BF, 0x0301], NFKC: [0x03CC], NFKD: [0x03BF, 0x0301] },
+{ source: [0x03CD], NFC: [0x03CD], NFD: [0x03C5, 0x0301], NFKC: [0x03CD], NFKD: [0x03C5, 0x0301] },
+{ source: [0x03CE], NFC: [0x03CE], NFD: [0x03C9, 0x0301], NFKC: [0x03CE], NFKD: [0x03C9, 0x0301] },
+{ source: [0x03D0], NFC: [0x03D0], NFD: [0x03D0], NFKC: [0x03B2], NFKD: [0x03B2] },
+{ source: [0x03D1], NFC: [0x03D1], NFD: [0x03D1], NFKC: [0x03B8], NFKD: [0x03B8] },
+{ source: [0x03D2], NFC: [0x03D2], NFD: [0x03D2], NFKC: [0x03A5], NFKD: [0x03A5] },
+{ source: [0x03D3], NFC: [0x03D3], NFD: [0x03D2, 0x0301], NFKC: [0x038E], NFKD: [0x03A5, 0x0301] },
+{ source: [0x03D4], NFC: [0x03D4], NFD: [0x03D2, 0x0308], NFKC: [0x03AB], NFKD: [0x03A5, 0x0308] },
+{ source: [0x03D5], NFC: [0x03D5], NFD: [0x03D5], NFKC: [0x03C6], NFKD: [0x03C6] },
+{ source: [0x03D6], NFC: [0x03D6], NFD: [0x03D6], NFKC: [0x03C0], NFKD: [0x03C0] },
+{ source: [0x03F0], NFC: [0x03F0], NFD: [0x03F0], NFKC: [0x03BA], NFKD: [0x03BA] },
+{ source: [0x03F1], NFC: [0x03F1], NFD: [0x03F1], NFKC: [0x03C1], NFKD: [0x03C1] },
+{ source: [0x03F2], NFC: [0x03F2], NFD: [0x03F2], NFKC: [0x03C2], NFKD: [0x03C2] },
+{ source: [0x03F4], NFC: [0x03F4], NFD: [0x03F4], NFKC: [0x0398], NFKD: [0x0398] },
+{ source: [0x03F5], NFC: [0x03F5], NFD: [0x03F5], NFKC: [0x03B5], NFKD: [0x03B5] },
+{ source: [0x03F9], NFC: [0x03F9], NFD: [0x03F9], NFKC: [0x03A3], NFKD: [0x03A3] },
+{ source: [0x0400], NFC: [0x0400], NFD: [0x0415, 0x0300], NFKC: [0x0400], NFKD: [0x0415, 0x0300] },
+{ source: [0x0401], NFC: [0x0401], NFD: [0x0415, 0x0308], NFKC: [0x0401], NFKD: [0x0415, 0x0308] },
+{ source: [0x0403], NFC: [0x0403], NFD: [0x0413, 0x0301], NFKC: [0x0403], NFKD: [0x0413, 0x0301] },
+{ source: [0x0407], NFC: [0x0407], NFD: [0x0406, 0x0308], NFKC: [0x0407], NFKD: [0x0406, 0x0308] },
+{ source: [0x040C], NFC: [0x040C], NFD: [0x041A, 0x0301], NFKC: [0x040C], NFKD: [0x041A, 0x0301] },
+{ source: [0x040D], NFC: [0x040D], NFD: [0x0418, 0x0300], NFKC: [0x040D], NFKD: [0x0418, 0x0300] },
+{ source: [0x040E], NFC: [0x040E], NFD: [0x0423, 0x0306], NFKC: [0x040E], NFKD: [0x0423, 0x0306] },
+{ source: [0x0419], NFC: [0x0419], NFD: [0x0418, 0x0306], NFKC: [0x0419], NFKD: [0x0418, 0x0306] },
+{ source: [0x0439], NFC: [0x0439], NFD: [0x0438, 0x0306], NFKC: [0x0439], NFKD: [0x0438, 0x0306] },
+{ source: [0x0450], NFC: [0x0450], NFD: [0x0435, 0x0300], NFKC: [0x0450], NFKD: [0x0435, 0x0300] },
+{ source: [0x0451], NFC: [0x0451], NFD: [0x0435, 0x0308], NFKC: [0x0451], NFKD: [0x0435, 0x0308] },
+{ source: [0x0453], NFC: [0x0453], NFD: [0x0433, 0x0301], NFKC: [0x0453], NFKD: [0x0433, 0x0301] },
+{ source: [0x0457], NFC: [0x0457], NFD: [0x0456, 0x0308], NFKC: [0x0457], NFKD: [0x0456, 0x0308] },
+{ source: [0x045C], NFC: [0x045C], NFD: [0x043A, 0x0301], NFKC: [0x045C], NFKD: [0x043A, 0x0301] },
+{ source: [0x045D], NFC: [0x045D], NFD: [0x0438, 0x0300], NFKC: [0x045D], NFKD: [0x0438, 0x0300] },
+{ source: [0x045E], NFC: [0x045E], NFD: [0x0443, 0x0306], NFKC: [0x045E], NFKD: [0x0443, 0x0306] },
+{ source: [0x0476], NFC: [0x0476], NFD: [0x0474, 0x030F], NFKC: [0x0476], NFKD: [0x0474, 0x030F] },
+{ source: [0x0477], NFC: [0x0477], NFD: [0x0475, 0x030F], NFKC: [0x0477], NFKD: [0x0475, 0x030F] },
+{ source: [0x04C1], NFC: [0x04C1], NFD: [0x0416, 0x0306], NFKC: [0x04C1], NFKD: [0x0416, 0x0306] },
+{ source: [0x04C2], NFC: [0x04C2], NFD: [0x0436, 0x0306], NFKC: [0x04C2], NFKD: [0x0436, 0x0306] },
+{ source: [0x04D0], NFC: [0x04D0], NFD: [0x0410, 0x0306], NFKC: [0x04D0], NFKD: [0x0410, 0x0306] },
+{ source: [0x04D1], NFC: [0x04D1], NFD: [0x0430, 0x0306], NFKC: [0x04D1], NFKD: [0x0430, 0x0306] },
+{ source: [0x04D2], NFC: [0x04D2], NFD: [0x0410, 0x0308], NFKC: [0x04D2], NFKD: [0x0410, 0x0308] },
+{ source: [0x04D3], NFC: [0x04D3], NFD: [0x0430, 0x0308], NFKC: [0x04D3], NFKD: [0x0430, 0x0308] },
+{ source: [0x04D6], NFC: [0x04D6], NFD: [0x0415, 0x0306], NFKC: [0x04D6], NFKD: [0x0415, 0x0306] },
+{ source: [0x04D7], NFC: [0x04D7], NFD: [0x0435, 0x0306], NFKC: [0x04D7], NFKD: [0x0435, 0x0306] },
+{ source: [0x04DA], NFC: [0x04DA], NFD: [0x04D8, 0x0308], NFKC: [0x04DA], NFKD: [0x04D8, 0x0308] },
+{ source: [0x04DB], NFC: [0x04DB], NFD: [0x04D9, 0x0308], NFKC: [0x04DB], NFKD: [0x04D9, 0x0308] },
+{ source: [0x04DC], NFC: [0x04DC], NFD: [0x0416, 0x0308], NFKC: [0x04DC], NFKD: [0x0416, 0x0308] },
+{ source: [0x04DD], NFC: [0x04DD], NFD: [0x0436, 0x0308], NFKC: [0x04DD], NFKD: [0x0436, 0x0308] },
+{ source: [0x04DE], NFC: [0x04DE], NFD: [0x0417, 0x0308], NFKC: [0x04DE], NFKD: [0x0417, 0x0308] },
+{ source: [0x04DF], NFC: [0x04DF], NFD: [0x0437, 0x0308], NFKC: [0x04DF], NFKD: [0x0437, 0x0308] },
+{ source: [0x04E2], NFC: [0x04E2], NFD: [0x0418, 0x0304], NFKC: [0x04E2], NFKD: [0x0418, 0x0304] },
+{ source: [0x04E3], NFC: [0x04E3], NFD: [0x0438, 0x0304], NFKC: [0x04E3], NFKD: [0x0438, 0x0304] },
+{ source: [0x04E4], NFC: [0x04E4], NFD: [0x0418, 0x0308], NFKC: [0x04E4], NFKD: [0x0418, 0x0308] },
+{ source: [0x04E5], NFC: [0x04E5], NFD: [0x0438, 0x0308], NFKC: [0x04E5], NFKD: [0x0438, 0x0308] },
+{ source: [0x04E6], NFC: [0x04E6], NFD: [0x041E, 0x0308], NFKC: [0x04E6], NFKD: [0x041E, 0x0308] },
+{ source: [0x04E7], NFC: [0x04E7], NFD: [0x043E, 0x0308], NFKC: [0x04E7], NFKD: [0x043E, 0x0308] },
+{ source: [0x04EA], NFC: [0x04EA], NFD: [0x04E8, 0x0308], NFKC: [0x04EA], NFKD: [0x04E8, 0x0308] },
+{ source: [0x04EB], NFC: [0x04EB], NFD: [0x04E9, 0x0308], NFKC: [0x04EB], NFKD: [0x04E9, 0x0308] },
+{ source: [0x04EC], NFC: [0x04EC], NFD: [0x042D, 0x0308], NFKC: [0x04EC], NFKD: [0x042D, 0x0308] },
+{ source: [0x04ED], NFC: [0x04ED], NFD: [0x044D, 0x0308], NFKC: [0x04ED], NFKD: [0x044D, 0x0308] },
+{ source: [0x04EE], NFC: [0x04EE], NFD: [0x0423, 0x0304], NFKC: [0x04EE], NFKD: [0x0423, 0x0304] },
+{ source: [0x04EF], NFC: [0x04EF], NFD: [0x0443, 0x0304], NFKC: [0x04EF], NFKD: [0x0443, 0x0304] },
+{ source: [0x04F0], NFC: [0x04F0], NFD: [0x0423, 0x0308], NFKC: [0x04F0], NFKD: [0x0423, 0x0308] },
+{ source: [0x04F1], NFC: [0x04F1], NFD: [0x0443, 0x0308], NFKC: [0x04F1], NFKD: [0x0443, 0x0308] },
+{ source: [0x04F2], NFC: [0x04F2], NFD: [0x0423, 0x030B], NFKC: [0x04F2], NFKD: [0x0423, 0x030B] },
+{ source: [0x04F3], NFC: [0x04F3], NFD: [0x0443, 0x030B], NFKC: [0x04F3], NFKD: [0x0443, 0x030B] },
+{ source: [0x04F4], NFC: [0x04F4], NFD: [0x0427, 0x0308], NFKC: [0x04F4], NFKD: [0x0427, 0x0308] },
+{ source: [0x04F5], NFC: [0x04F5], NFD: [0x0447, 0x0308], NFKC: [0x04F5], NFKD: [0x0447, 0x0308] },
+{ source: [0x04F8], NFC: [0x04F8], NFD: [0x042B, 0x0308], NFKC: [0x04F8], NFKD: [0x042B, 0x0308] },
+{ source: [0x04F9], NFC: [0x04F9], NFD: [0x044B, 0x0308], NFKC: [0x04F9], NFKD: [0x044B, 0x0308] },
+{ source: [0x0587], NFC: [0x0587], NFD: [0x0587], NFKC: [0x0565, 0x0582], NFKD: [0x0565, 0x0582] },
+{ source: [0x0622], NFC: [0x0622], NFD: [0x0627, 0x0653], NFKC: [0x0622], NFKD: [0x0627, 0x0653] },
+{ source: [0x0623], NFC: [0x0623], NFD: [0x0627, 0x0654], NFKC: [0x0623], NFKD: [0x0627, 0x0654] },
+{ source: [0x0624], NFC: [0x0624], NFD: [0x0648, 0x0654], NFKC: [0x0624], NFKD: [0x0648, 0x0654] },
+{ source: [0x0625], NFC: [0x0625], NFD: [0x0627, 0x0655], NFKC: [0x0625], NFKD: [0x0627, 0x0655] },
+{ source: [0x0626], NFC: [0x0626], NFD: [0x064A, 0x0654], NFKC: [0x0626], NFKD: [0x064A, 0x0654] },
+{ source: [0x0675], NFC: [0x0675], NFD: [0x0675], NFKC: [0x0627, 0x0674], NFKD: [0x0627, 0x0674] },
+{ source: [0x0676], NFC: [0x0676], NFD: [0x0676], NFKC: [0x0648, 0x0674], NFKD: [0x0648, 0x0674] },
+{ source: [0x0677], NFC: [0x0677], NFD: [0x0677], NFKC: [0x06C7, 0x0674], NFKD: [0x06C7, 0x0674] },
+{ source: [0x0678], NFC: [0x0678], NFD: [0x0678], NFKC: [0x064A, 0x0674], NFKD: [0x064A, 0x0674] },
+{ source: [0x06C0], NFC: [0x06C0], NFD: [0x06D5, 0x0654], NFKC: [0x06C0], NFKD: [0x06D5, 0x0654] },
+{ source: [0x06C2], NFC: [0x06C2], NFD: [0x06C1, 0x0654], NFKC: [0x06C2], NFKD: [0x06C1, 0x0654] },
+{ source: [0x06D3], NFC: [0x06D3], NFD: [0x06D2, 0x0654], NFKC: [0x06D3], NFKD: [0x06D2, 0x0654] },
+{ source: [0x0929], NFC: [0x0929], NFD: [0x0928, 0x093C], NFKC: [0x0929], NFKD: [0x0928, 0x093C] },
+{ source: [0x0931], NFC: [0x0931], NFD: [0x0930, 0x093C], NFKC: [0x0931], NFKD: [0x0930, 0x093C] },
+{ source: [0x0934], NFC: [0x0934], NFD: [0x0933, 0x093C], NFKC: [0x0934], NFKD: [0x0933, 0x093C] },
+{ source: [0x0958], NFC: [0x0915, 0x093C], NFD: [0x0915, 0x093C], NFKC: [0x0915, 0x093C], NFKD: [0x0915, 0x093C] },
+{ source: [0x0959], NFC: [0x0916, 0x093C], NFD: [0x0916, 0x093C], NFKC: [0x0916, 0x093C], NFKD: [0x0916, 0x093C] },
+{ source: [0x095A], NFC: [0x0917, 0x093C], NFD: [0x0917, 0x093C], NFKC: [0x0917, 0x093C], NFKD: [0x0917, 0x093C] },
+{ source: [0x095B], NFC: [0x091C, 0x093C], NFD: [0x091C, 0x093C], NFKC: [0x091C, 0x093C], NFKD: [0x091C, 0x093C] },
+{ source: [0x095C], NFC: [0x0921, 0x093C], NFD: [0x0921, 0x093C], NFKC: [0x0921, 0x093C], NFKD: [0x0921, 0x093C] },
+{ source: [0x095D], NFC: [0x0922, 0x093C], NFD: [0x0922, 0x093C], NFKC: [0x0922, 0x093C], NFKD: [0x0922, 0x093C] },
+{ source: [0x095E], NFC: [0x092B, 0x093C], NFD: [0x092B, 0x093C], NFKC: [0x092B, 0x093C], NFKD: [0x092B, 0x093C] },
+{ source: [0x095F], NFC: [0x092F, 0x093C], NFD: [0x092F, 0x093C], NFKC: [0x092F, 0x093C], NFKD: [0x092F, 0x093C] },
+{ source: [0x09CB], NFC: [0x09CB], NFD: [0x09C7, 0x09BE], NFKC: [0x09CB], NFKD: [0x09C7, 0x09BE] },
+{ source: [0x09CC], NFC: [0x09CC], NFD: [0x09C7, 0x09D7], NFKC: [0x09CC], NFKD: [0x09C7, 0x09D7] },
+{ source: [0x09DC], NFC: [0x09A1, 0x09BC], NFD: [0x09A1, 0x09BC], NFKC: [0x09A1, 0x09BC], NFKD: [0x09A1, 0x09BC] },
+{ source: [0x09DD], NFC: [0x09A2, 0x09BC], NFD: [0x09A2, 0x09BC], NFKC: [0x09A2, 0x09BC], NFKD: [0x09A2, 0x09BC] },
+{ source: [0x09DF], NFC: [0x09AF, 0x09BC], NFD: [0x09AF, 0x09BC], NFKC: [0x09AF, 0x09BC], NFKD: [0x09AF, 0x09BC] },
+{ source: [0x0A33], NFC: [0x0A32, 0x0A3C], NFD: [0x0A32, 0x0A3C], NFKC: [0x0A32, 0x0A3C], NFKD: [0x0A32, 0x0A3C] },
+{ source: [0x0A36], NFC: [0x0A38, 0x0A3C], NFD: [0x0A38, 0x0A3C], NFKC: [0x0A38, 0x0A3C], NFKD: [0x0A38, 0x0A3C] },
+{ source: [0x0A59], NFC: [0x0A16, 0x0A3C], NFD: [0x0A16, 0x0A3C], NFKC: [0x0A16, 0x0A3C], NFKD: [0x0A16, 0x0A3C] },
+{ source: [0x0A5A], NFC: [0x0A17, 0x0A3C], NFD: [0x0A17, 0x0A3C], NFKC: [0x0A17, 0x0A3C], NFKD: [0x0A17, 0x0A3C] },
+{ source: [0x0A5B], NFC: [0x0A1C, 0x0A3C], NFD: [0x0A1C, 0x0A3C], NFKC: [0x0A1C, 0x0A3C], NFKD: [0x0A1C, 0x0A3C] },
+{ source: [0x0A5E], NFC: [0x0A2B, 0x0A3C], NFD: [0x0A2B, 0x0A3C], NFKC: [0x0A2B, 0x0A3C], NFKD: [0x0A2B, 0x0A3C] },
+{ source: [0x0B48], NFC: [0x0B48], NFD: [0x0B47, 0x0B56], NFKC: [0x0B48], NFKD: [0x0B47, 0x0B56] },
+{ source: [0x0B4B], NFC: [0x0B4B], NFD: [0x0B47, 0x0B3E], NFKC: [0x0B4B], NFKD: [0x0B47, 0x0B3E] },
+{ source: [0x0B4C], NFC: [0x0B4C], NFD: [0x0B47, 0x0B57], NFKC: [0x0B4C], NFKD: [0x0B47, 0x0B57] },
+{ source: [0x0B5C], NFC: [0x0B21, 0x0B3C], NFD: [0x0B21, 0x0B3C], NFKC: [0x0B21, 0x0B3C], NFKD: [0x0B21, 0x0B3C] },
+{ source: [0x0B5D], NFC: [0x0B22, 0x0B3C], NFD: [0x0B22, 0x0B3C], NFKC: [0x0B22, 0x0B3C], NFKD: [0x0B22, 0x0B3C] },
+{ source: [0x0B94], NFC: [0x0B94], NFD: [0x0B92, 0x0BD7], NFKC: [0x0B94], NFKD: [0x0B92, 0x0BD7] },
+{ source: [0x0BCA], NFC: [0x0BCA], NFD: [0x0BC6, 0x0BBE], NFKC: [0x0BCA], NFKD: [0x0BC6, 0x0BBE] },
+{ source: [0x0BCB], NFC: [0x0BCB], NFD: [0x0BC7, 0x0BBE], NFKC: [0x0BCB], NFKD: [0x0BC7, 0x0BBE] },
+{ source: [0x0BCC], NFC: [0x0BCC], NFD: [0x0BC6, 0x0BD7], NFKC: [0x0BCC], NFKD: [0x0BC6, 0x0BD7] },
+{ source: [0x0C48], NFC: [0x0C48], NFD: [0x0C46, 0x0C56], NFKC: [0x0C48], NFKD: [0x0C46, 0x0C56] },
+{ source: [0x0CC0], NFC: [0x0CC0], NFD: [0x0CBF, 0x0CD5], NFKC: [0x0CC0], NFKD: [0x0CBF, 0x0CD5] },
+{ source: [0x0CC7], NFC: [0x0CC7], NFD: [0x0CC6, 0x0CD5], NFKC: [0x0CC7], NFKD: [0x0CC6, 0x0CD5] },
+{ source: [0x0CC8], NFC: [0x0CC8], NFD: [0x0CC6, 0x0CD6], NFKC: [0x0CC8], NFKD: [0x0CC6, 0x0CD6] },
+{ source: [0x0CCA], NFC: [0x0CCA], NFD: [0x0CC6, 0x0CC2], NFKC: [0x0CCA], NFKD: [0x0CC6, 0x0CC2] },
+{ source: [0x0CCB], NFC: [0x0CCB], NFD: [0x0CC6, 0x0CC2, 0x0CD5], NFKC: [0x0CCB], NFKD: [0x0CC6, 0x0CC2, 0x0CD5] },
+{ source: [0x0D4A], NFC: [0x0D4A], NFD: [0x0D46, 0x0D3E], NFKC: [0x0D4A], NFKD: [0x0D46, 0x0D3E] },
+{ source: [0x0D4B], NFC: [0x0D4B], NFD: [0x0D47, 0x0D3E], NFKC: [0x0D4B], NFKD: [0x0D47, 0x0D3E] },
+{ source: [0x0D4C], NFC: [0x0D4C], NFD: [0x0D46, 0x0D57], NFKC: [0x0D4C], NFKD: [0x0D46, 0x0D57] },
+{ source: [0x0DDA], NFC: [0x0DDA], NFD: [0x0DD9, 0x0DCA], NFKC: [0x0DDA], NFKD: [0x0DD9, 0x0DCA] },
+{ source: [0x0DDC], NFC: [0x0DDC], NFD: [0x0DD9, 0x0DCF], NFKC: [0x0DDC], NFKD: [0x0DD9, 0x0DCF] },
+{ source: [0x0DDD], NFC: [0x0DDD], NFD: [0x0DD9, 0x0DCF, 0x0DCA], NFKC: [0x0DDD], NFKD: [0x0DD9, 0x0DCF, 0x0DCA] },
+{ source: [0x0DDE], NFC: [0x0DDE], NFD: [0x0DD9, 0x0DDF], NFKC: [0x0DDE], NFKD: [0x0DD9, 0x0DDF] },
+{ source: [0x0E33], NFC: [0x0E33], NFD: [0x0E33], NFKC: [0x0E4D, 0x0E32], NFKD: [0x0E4D, 0x0E32] },
+{ source: [0x0EB3], NFC: [0x0EB3], NFD: [0x0EB3], NFKC: [0x0ECD, 0x0EB2], NFKD: [0x0ECD, 0x0EB2] },
+{ source: [0x0EDC], NFC: [0x0EDC], NFD: [0x0EDC], NFKC: [0x0EAB, 0x0E99], NFKD: [0x0EAB, 0x0E99] },
+{ source: [0x0EDD], NFC: [0x0EDD], NFD: [0x0EDD], NFKC: [0x0EAB, 0x0EA1], NFKD: [0x0EAB, 0x0EA1] },
+{ source: [0x0F0C], NFC: [0x0F0C], NFD: [0x0F0C], NFKC: [0x0F0B], NFKD: [0x0F0B] },
+{ source: [0x0F43], NFC: [0x0F42, 0x0FB7], NFD: [0x0F42, 0x0FB7], NFKC: [0x0F42, 0x0FB7], NFKD: [0x0F42, 0x0FB7] },
+{ source: [0x0F4D], NFC: [0x0F4C, 0x0FB7], NFD: [0x0F4C, 0x0FB7], NFKC: [0x0F4C, 0x0FB7], NFKD: [0x0F4C, 0x0FB7] },
+{ source: [0x0F52], NFC: [0x0F51, 0x0FB7], NFD: [0x0F51, 0x0FB7], NFKC: [0x0F51, 0x0FB7], NFKD: [0x0F51, 0x0FB7] },
+{ source: [0x0F57], NFC: [0x0F56, 0x0FB7], NFD: [0x0F56, 0x0FB7], NFKC: [0x0F56, 0x0FB7], NFKD: [0x0F56, 0x0FB7] },
+{ source: [0x0F5C], NFC: [0x0F5B, 0x0FB7], NFD: [0x0F5B, 0x0FB7], NFKC: [0x0F5B, 0x0FB7], NFKD: [0x0F5B, 0x0FB7] },
+{ source: [0x0F69], NFC: [0x0F40, 0x0FB5], NFD: [0x0F40, 0x0FB5], NFKC: [0x0F40, 0x0FB5], NFKD: [0x0F40, 0x0FB5] },
+{ source: [0x0F73], NFC: [0x0F71, 0x0F72], NFD: [0x0F71, 0x0F72], NFKC: [0x0F71, 0x0F72], NFKD: [0x0F71, 0x0F72] },
+{ source: [0x0F75], NFC: [0x0F71, 0x0F74], NFD: [0x0F71, 0x0F74], NFKC: [0x0F71, 0x0F74], NFKD: [0x0F71, 0x0F74] },
+{ source: [0x0F76], NFC: [0x0FB2, 0x0F80], NFD: [0x0FB2, 0x0F80], NFKC: [0x0FB2, 0x0F80], NFKD: [0x0FB2, 0x0F80] },
+{ source: [0x0F77], NFC: [0x0F77], NFD: [0x0F77], NFKC: [0x0FB2, 0x0F71, 0x0F80], NFKD: [0x0FB2, 0x0F71, 0x0F80] },
+{ source: [0x0F78], NFC: [0x0FB3, 0x0F80], NFD: [0x0FB3, 0x0F80], NFKC: [0x0FB3, 0x0F80], NFKD: [0x0FB3, 0x0F80] },
+{ source: [0x0F79], NFC: [0x0F79], NFD: [0x0F79], NFKC: [0x0FB3, 0x0F71, 0x0F80], NFKD: [0x0FB3, 0x0F71, 0x0F80] },
+{ source: [0x0F81], NFC: [0x0F71, 0x0F80], NFD: [0x0F71, 0x0F80], NFKC: [0x0F71, 0x0F80], NFKD: [0x0F71, 0x0F80] },
+{ source: [0x0F93], NFC: [0x0F92, 0x0FB7], NFD: [0x0F92, 0x0FB7], NFKC: [0x0F92, 0x0FB7], NFKD: [0x0F92, 0x0FB7] },
+{ source: [0x0F9D], NFC: [0x0F9C, 0x0FB7], NFD: [0x0F9C, 0x0FB7], NFKC: [0x0F9C, 0x0FB7], NFKD: [0x0F9C, 0x0FB7] },
+{ source: [0x0FA2], NFC: [0x0FA1, 0x0FB7], NFD: [0x0FA1, 0x0FB7], NFKC: [0x0FA1, 0x0FB7], NFKD: [0x0FA1, 0x0FB7] },
+{ source: [0x0FA7], NFC: [0x0FA6, 0x0FB7], NFD: [0x0FA6, 0x0FB7], NFKC: [0x0FA6, 0x0FB7], NFKD: [0x0FA6, 0x0FB7] },
+{ source: [0x0FAC], NFC: [0x0FAB, 0x0FB7], NFD: [0x0FAB, 0x0FB7], NFKC: [0x0FAB, 0x0FB7], NFKD: [0x0FAB, 0x0FB7] },
+{ source: [0x0FB9], NFC: [0x0F90, 0x0FB5], NFD: [0x0F90, 0x0FB5], NFKC: [0x0F90, 0x0FB5], NFKD: [0x0F90, 0x0FB5] },
+{ source: [0x1026], NFC: [0x1026], NFD: [0x1025, 0x102E], NFKC: [0x1026], NFKD: [0x1025, 0x102E] },
+{ source: [0x10FC], NFC: [0x10FC], NFD: [0x10FC], NFKC: [0x10DC], NFKD: [0x10DC] },
+{ source: [0x1B06], NFC: [0x1B06], NFD: [0x1B05, 0x1B35], NFKC: [0x1B06], NFKD: [0x1B05, 0x1B35] },
+{ source: [0x1B08], NFC: [0x1B08], NFD: [0x1B07, 0x1B35], NFKC: [0x1B08], NFKD: [0x1B07, 0x1B35] },
+{ source: [0x1B0A], NFC: [0x1B0A], NFD: [0x1B09, 0x1B35], NFKC: [0x1B0A], NFKD: [0x1B09, 0x1B35] },
+{ source: [0x1B0C], NFC: [0x1B0C], NFD: [0x1B0B, 0x1B35], NFKC: [0x1B0C], NFKD: [0x1B0B, 0x1B35] },
+{ source: [0x1B0E], NFC: [0x1B0E], NFD: [0x1B0D, 0x1B35], NFKC: [0x1B0E], NFKD: [0x1B0D, 0x1B35] },
+{ source: [0x1B12], NFC: [0x1B12], NFD: [0x1B11, 0x1B35], NFKC: [0x1B12], NFKD: [0x1B11, 0x1B35] },
+{ source: [0x1B3B], NFC: [0x1B3B], NFD: [0x1B3A, 0x1B35], NFKC: [0x1B3B], NFKD: [0x1B3A, 0x1B35] },
+{ source: [0x1B3D], NFC: [0x1B3D], NFD: [0x1B3C, 0x1B35], NFKC: [0x1B3D], NFKD: [0x1B3C, 0x1B35] },
+{ source: [0x1B40], NFC: [0x1B40], NFD: [0x1B3E, 0x1B35], NFKC: [0x1B40], NFKD: [0x1B3E, 0x1B35] },
+{ source: [0x1B41], NFC: [0x1B41], NFD: [0x1B3F, 0x1B35], NFKC: [0x1B41], NFKD: [0x1B3F, 0x1B35] },
+{ source: [0x1B43], NFC: [0x1B43], NFD: [0x1B42, 0x1B35], NFKC: [0x1B43], NFKD: [0x1B42, 0x1B35] },
+{ source: [0x1D2C], NFC: [0x1D2C], NFD: [0x1D2C], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D2D], NFC: [0x1D2D], NFD: [0x1D2D], NFKC: [0x00C6], NFKD: [0x00C6] },
+{ source: [0x1D2E], NFC: [0x1D2E], NFD: [0x1D2E], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1D30], NFC: [0x1D30], NFD: [0x1D30], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D31], NFC: [0x1D31], NFD: [0x1D31], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1D32], NFC: [0x1D32], NFD: [0x1D32], NFKC: [0x018E], NFKD: [0x018E] },
+{ source: [0x1D33], NFC: [0x1D33], NFD: [0x1D33], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D34], NFC: [0x1D34], NFD: [0x1D34], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x1D35], NFC: [0x1D35], NFD: [0x1D35], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x1D36], NFC: [0x1D36], NFD: [0x1D36], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D37], NFC: [0x1D37], NFD: [0x1D37], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D38], NFC: [0x1D38], NFD: [0x1D38], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1D39], NFC: [0x1D39], NFD: [0x1D39], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1D3A], NFC: [0x1D3A], NFD: [0x1D3A], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1D3C], NFC: [0x1D3C], NFD: [0x1D3C], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D3D], NFC: [0x1D3D], NFD: [0x1D3D], NFKC: [0x0222], NFKD: [0x0222] },
+{ source: [0x1D3E], NFC: [0x1D3E], NFD: [0x1D3E], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1D3F], NFC: [0x1D3F], NFD: [0x1D3F], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x1D40], NFC: [0x1D40], NFD: [0x1D40], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D41], NFC: [0x1D41], NFD: [0x1D41], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D42], NFC: [0x1D42], NFD: [0x1D42], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D43], NFC: [0x1D43], NFD: [0x1D43], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D44], NFC: [0x1D44], NFD: [0x1D44], NFKC: [0x0250], NFKD: [0x0250] },
+{ source: [0x1D45], NFC: [0x1D45], NFD: [0x1D45], NFKC: [0x0251], NFKD: [0x0251] },
+{ source: [0x1D46], NFC: [0x1D46], NFD: [0x1D46], NFKC: [0x1D02], NFKD: [0x1D02] },
+{ source: [0x1D47], NFC: [0x1D47], NFD: [0x1D47], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D48], NFC: [0x1D48], NFD: [0x1D48], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D49], NFC: [0x1D49], NFD: [0x1D49], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x1D4A], NFC: [0x1D4A], NFD: [0x1D4A], NFKC: [0x0259], NFKD: [0x0259] },
+{ source: [0x1D4B], NFC: [0x1D4B], NFD: [0x1D4B], NFKC: [0x025B], NFKD: [0x025B] },
+{ source: [0x1D4C], NFC: [0x1D4C], NFD: [0x1D4C], NFKC: [0x025C], NFKD: [0x025C] },
+{ source: [0x1D4D], NFC: [0x1D4D], NFD: [0x1D4D], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x1D4F], NFC: [0x1D4F], NFD: [0x1D4F], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D50], NFC: [0x1D50], NFD: [0x1D50], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D51], NFC: [0x1D51], NFD: [0x1D51], NFKC: [0x014B], NFKD: [0x014B] },
+{ source: [0x1D52], NFC: [0x1D52], NFD: [0x1D52], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x1D53], NFC: [0x1D53], NFD: [0x1D53], NFKC: [0x0254], NFKD: [0x0254] },
+{ source: [0x1D54], NFC: [0x1D54], NFD: [0x1D54], NFKC: [0x1D16], NFKD: [0x1D16] },
+{ source: [0x1D55], NFC: [0x1D55], NFD: [0x1D55], NFKC: [0x1D17], NFKD: [0x1D17] },
+{ source: [0x1D56], NFC: [0x1D56], NFD: [0x1D56], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D57], NFC: [0x1D57], NFD: [0x1D57], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D58], NFC: [0x1D58], NFD: [0x1D58], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D59], NFC: [0x1D59], NFD: [0x1D59], NFKC: [0x1D1D], NFKD: [0x1D1D] },
+{ source: [0x1D5A], NFC: [0x1D5A], NFD: [0x1D5A], NFKC: [0x026F], NFKD: [0x026F] },
+{ source: [0x1D5B], NFC: [0x1D5B], NFD: [0x1D5B], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D5C], NFC: [0x1D5C], NFD: [0x1D5C], NFKC: [0x1D25], NFKD: [0x1D25] },
+{ source: [0x1D5D], NFC: [0x1D5D], NFD: [0x1D5D], NFKC: [0x03B2], NFKD: [0x03B2] },
+{ source: [0x1D5E], NFC: [0x1D5E], NFD: [0x1D5E], NFKC: [0x03B3], NFKD: [0x03B3] },
+{ source: [0x1D5F], NFC: [0x1D5F], NFD: [0x1D5F], NFKC: [0x03B4], NFKD: [0x03B4] },
+{ source: [0x1D60], NFC: [0x1D60], NFD: [0x1D60], NFKC: [0x03C6], NFKD: [0x03C6] },
+{ source: [0x1D61], NFC: [0x1D61], NFD: [0x1D61], NFKC: [0x03C7], NFKD: [0x03C7] },
+{ source: [0x1D62], NFC: [0x1D62], NFD: [0x1D62], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D63], NFC: [0x1D63], NFD: [0x1D63], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D64], NFC: [0x1D64], NFD: [0x1D64], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D65], NFC: [0x1D65], NFD: [0x1D65], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D66], NFC: [0x1D66], NFD: [0x1D66], NFKC: [0x03B2], NFKD: [0x03B2] },
+{ source: [0x1D67], NFC: [0x1D67], NFD: [0x1D67], NFKC: [0x03B3], NFKD: [0x03B3] },
+{ source: [0x1D68], NFC: [0x1D68], NFD: [0x1D68], NFKC: [0x03C1], NFKD: [0x03C1] },
+{ source: [0x1D69], NFC: [0x1D69], NFD: [0x1D69], NFKC: [0x03C6], NFKD: [0x03C6] },
+{ source: [0x1D6A], NFC: [0x1D6A], NFD: [0x1D6A], NFKC: [0x03C7], NFKD: [0x03C7] },
+{ source: [0x1D78], NFC: [0x1D78], NFD: [0x1D78], NFKC: [0x043D], NFKD: [0x043D] },
+{ source: [0x1D9B], NFC: [0x1D9B], NFD: [0x1D9B], NFKC: [0x0252], NFKD: [0x0252] },
+{ source: [0x1D9C], NFC: [0x1D9C], NFD: [0x1D9C], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D9D], NFC: [0x1D9D], NFD: [0x1D9D], NFKC: [0x0255], NFKD: [0x0255] },
+{ source: [0x1D9E], NFC: [0x1D9E], NFD: [0x1D9E], NFKC: [0x00F0], NFKD: [0x00F0] },
+{ source: [0x1D9F], NFC: [0x1D9F], NFD: [0x1D9F], NFKC: [0x025C], NFKD: [0x025C] },
+{ source: [0x1DA0], NFC: [0x1DA0], NFD: [0x1DA0], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1DA1], NFC: [0x1DA1], NFD: [0x1DA1], NFKC: [0x025F], NFKD: [0x025F] },
+{ source: [0x1DA2], NFC: [0x1DA2], NFD: [0x1DA2], NFKC: [0x0261], NFKD: [0x0261] },
+{ source: [0x1DA3], NFC: [0x1DA3], NFD: [0x1DA3], NFKC: [0x0265], NFKD: [0x0265] },
+{ source: [0x1DA4], NFC: [0x1DA4], NFD: [0x1DA4], NFKC: [0x0268], NFKD: [0x0268] },
+{ source: [0x1DA5], NFC: [0x1DA5], NFD: [0x1DA5], NFKC: [0x0269], NFKD: [0x0269] },
+{ source: [0x1DA6], NFC: [0x1DA6], NFD: [0x1DA6], NFKC: [0x026A], NFKD: [0x026A] },
+{ source: [0x1DA7], NFC: [0x1DA7], NFD: [0x1DA7], NFKC: [0x1D7B], NFKD: [0x1D7B] },
+{ source: [0x1DA8], NFC: [0x1DA8], NFD: [0x1DA8], NFKC: [0x029D], NFKD: [0x029D] },
+{ source: [0x1DA9], NFC: [0x1DA9], NFD: [0x1DA9], NFKC: [0x026D], NFKD: [0x026D] },
+{ source: [0x1DAA], NFC: [0x1DAA], NFD: [0x1DAA], NFKC: [0x1D85], NFKD: [0x1D85] },
+{ source: [0x1DAB], NFC: [0x1DAB], NFD: [0x1DAB], NFKC: [0x029F], NFKD: [0x029F] },
+{ source: [0x1DAC], NFC: [0x1DAC], NFD: [0x1DAC], NFKC: [0x0271], NFKD: [0x0271] },
+{ source: [0x1DAD], NFC: [0x1DAD], NFD: [0x1DAD], NFKC: [0x0270], NFKD: [0x0270] },
+{ source: [0x1DAE], NFC: [0x1DAE], NFD: [0x1DAE], NFKC: [0x0272], NFKD: [0x0272] },
+{ source: [0x1DAF], NFC: [0x1DAF], NFD: [0x1DAF], NFKC: [0x0273], NFKD: [0x0273] },
+{ source: [0x1DB0], NFC: [0x1DB0], NFD: [0x1DB0], NFKC: [0x0274], NFKD: [0x0274] },
+{ source: [0x1DB1], NFC: [0x1DB1], NFD: [0x1DB1], NFKC: [0x0275], NFKD: [0x0275] },
+{ source: [0x1DB2], NFC: [0x1DB2], NFD: [0x1DB2], NFKC: [0x0278], NFKD: [0x0278] },
+{ source: [0x1DB3], NFC: [0x1DB3], NFD: [0x1DB3], NFKC: [0x0282], NFKD: [0x0282] },
+{ source: [0x1DB4], NFC: [0x1DB4], NFD: [0x1DB4], NFKC: [0x0283], NFKD: [0x0283] },
+{ source: [0x1DB5], NFC: [0x1DB5], NFD: [0x1DB5], NFKC: [0x01AB], NFKD: [0x01AB] },
+{ source: [0x1DB6], NFC: [0x1DB6], NFD: [0x1DB6], NFKC: [0x0289], NFKD: [0x0289] },
+{ source: [0x1DB7], NFC: [0x1DB7], NFD: [0x1DB7], NFKC: [0x028A], NFKD: [0x028A] },
+{ source: [0x1DB8], NFC: [0x1DB8], NFD: [0x1DB8], NFKC: [0x1D1C], NFKD: [0x1D1C] },
+{ source: [0x1DB9], NFC: [0x1DB9], NFD: [0x1DB9], NFKC: [0x028B], NFKD: [0x028B] },
+{ source: [0x1DBA], NFC: [0x1DBA], NFD: [0x1DBA], NFKC: [0x028C], NFKD: [0x028C] },
+{ source: [0x1DBB], NFC: [0x1DBB], NFD: [0x1DBB], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1DBC], NFC: [0x1DBC], NFD: [0x1DBC], NFKC: [0x0290], NFKD: [0x0290] },
+{ source: [0x1DBD], NFC: [0x1DBD], NFD: [0x1DBD], NFKC: [0x0291], NFKD: [0x0291] },
+{ source: [0x1DBE], NFC: [0x1DBE], NFD: [0x1DBE], NFKC: [0x0292], NFKD: [0x0292] },
+{ source: [0x1DBF], NFC: [0x1DBF], NFD: [0x1DBF], NFKC: [0x03B8], NFKD: [0x03B8] },
+{ source: [0x1E00], NFC: [0x1E00], NFD: [0x0041, 0x0325], NFKC: [0x1E00], NFKD: [0x0041, 0x0325] },
+{ source: [0x1E01], NFC: [0x1E01], NFD: [0x0061, 0x0325], NFKC: [0x1E01], NFKD: [0x0061, 0x0325] },
+{ source: [0x1E02], NFC: [0x1E02], NFD: [0x0042, 0x0307], NFKC: [0x1E02], NFKD: [0x0042, 0x0307] },
+{ source: [0x1E03], NFC: [0x1E03], NFD: [0x0062, 0x0307], NFKC: [0x1E03], NFKD: [0x0062, 0x0307] },
+{ source: [0x1E04], NFC: [0x1E04], NFD: [0x0042, 0x0323], NFKC: [0x1E04], NFKD: [0x0042, 0x0323] },
+{ source: [0x1E05], NFC: [0x1E05], NFD: [0x0062, 0x0323], NFKC: [0x1E05], NFKD: [0x0062, 0x0323] },
+{ source: [0x1E06], NFC: [0x1E06], NFD: [0x0042, 0x0331], NFKC: [0x1E06], NFKD: [0x0042, 0x0331] },
+{ source: [0x1E07], NFC: [0x1E07], NFD: [0x0062, 0x0331], NFKC: [0x1E07], NFKD: [0x0062, 0x0331] },
+{ source: [0x1E08], NFC: [0x1E08], NFD: [0x0043, 0x0327, 0x0301], NFKC: [0x1E08], NFKD: [0x0043, 0x0327, 0x0301] },
+{ source: [0x1E09], NFC: [0x1E09], NFD: [0x0063, 0x0327, 0x0301], NFKC: [0x1E09], NFKD: [0x0063, 0x0327, 0x0301] },
+{ source: [0x1E0A], NFC: [0x1E0A], NFD: [0x0044, 0x0307], NFKC: [0x1E0A], NFKD: [0x0044, 0x0307] },
+{ source: [0x1E0B], NFC: [0x1E0B], NFD: [0x0064, 0x0307], NFKC: [0x1E0B], NFKD: [0x0064, 0x0307] },
+{ source: [0x1E0C], NFC: [0x1E0C], NFD: [0x0044, 0x0323], NFKC: [0x1E0C], NFKD: [0x0044, 0x0323] },
+{ source: [0x1E0D], NFC: [0x1E0D], NFD: [0x0064, 0x0323], NFKC: [0x1E0D], NFKD: [0x0064, 0x0323] },
+{ source: [0x1E0E], NFC: [0x1E0E], NFD: [0x0044, 0x0331], NFKC: [0x1E0E], NFKD: [0x0044, 0x0331] },
+{ source: [0x1E0F], NFC: [0x1E0F], NFD: [0x0064, 0x0331], NFKC: [0x1E0F], NFKD: [0x0064, 0x0331] },
+{ source: [0x1E10], NFC: [0x1E10], NFD: [0x0044, 0x0327], NFKC: [0x1E10], NFKD: [0x0044, 0x0327] },
+{ source: [0x1E11], NFC: [0x1E11], NFD: [0x0064, 0x0327], NFKC: [0x1E11], NFKD: [0x0064, 0x0327] },
+{ source: [0x1E12], NFC: [0x1E12], NFD: [0x0044, 0x032D], NFKC: [0x1E12], NFKD: [0x0044, 0x032D] },
+{ source: [0x1E13], NFC: [0x1E13], NFD: [0x0064, 0x032D], NFKC: [0x1E13], NFKD: [0x0064, 0x032D] },
+{ source: [0x1E14], NFC: [0x1E14], NFD: [0x0045, 0x0304, 0x0300], NFKC: [0x1E14], NFKD: [0x0045, 0x0304, 0x0300] },
+{ source: [0x1E15], NFC: [0x1E15], NFD: [0x0065, 0x0304, 0x0300], NFKC: [0x1E15], NFKD: [0x0065, 0x0304, 0x0300] },
+{ source: [0x1E16], NFC: [0x1E16], NFD: [0x0045, 0x0304, 0x0301], NFKC: [0x1E16], NFKD: [0x0045, 0x0304, 0x0301] },
+{ source: [0x1E17], NFC: [0x1E17], NFD: [0x0065, 0x0304, 0x0301], NFKC: [0x1E17], NFKD: [0x0065, 0x0304, 0x0301] },
+{ source: [0x1E18], NFC: [0x1E18], NFD: [0x0045, 0x032D], NFKC: [0x1E18], NFKD: [0x0045, 0x032D] },
+{ source: [0x1E19], NFC: [0x1E19], NFD: [0x0065, 0x032D], NFKC: [0x1E19], NFKD: [0x0065, 0x032D] },
+{ source: [0x1E1A], NFC: [0x1E1A], NFD: [0x0045, 0x0330], NFKC: [0x1E1A], NFKD: [0x0045, 0x0330] },
+{ source: [0x1E1B], NFC: [0x1E1B], NFD: [0x0065, 0x0330], NFKC: [0x1E1B], NFKD: [0x0065, 0x0330] },
+{ source: [0x1E1C], NFC: [0x1E1C], NFD: [0x0045, 0x0327, 0x0306], NFKC: [0x1E1C], NFKD: [0x0045, 0x0327, 0x0306] },
+{ source: [0x1E1D], NFC: [0x1E1D], NFD: [0x0065, 0x0327, 0x0306], NFKC: [0x1E1D], NFKD: [0x0065, 0x0327, 0x0306] },
+{ source: [0x1E1E], NFC: [0x1E1E], NFD: [0x0046, 0x0307], NFKC: [0x1E1E], NFKD: [0x0046, 0x0307] },
+{ source: [0x1E1F], NFC: [0x1E1F], NFD: [0x0066, 0x0307], NFKC: [0x1E1F], NFKD: [0x0066, 0x0307] },
+{ source: [0x1E20], NFC: [0x1E20], NFD: [0x0047, 0x0304], NFKC: [0x1E20], NFKD: [0x0047, 0x0304] },
+{ source: [0x1E21], NFC: [0x1E21], NFD: [0x0067, 0x0304], NFKC: [0x1E21], NFKD: [0x0067, 0x0304] },
+{ source: [0x1E22], NFC: [0x1E22], NFD: [0x0048, 0x0307], NFKC: [0x1E22], NFKD: [0x0048, 0x0307] },
+{ source: [0x1E23], NFC: [0x1E23], NFD: [0x0068, 0x0307], NFKC: [0x1E23], NFKD: [0x0068, 0x0307] },
+{ source: [0x1E24], NFC: [0x1E24], NFD: [0x0048, 0x0323], NFKC: [0x1E24], NFKD: [0x0048, 0x0323] },
+{ source: [0x1E25], NFC: [0x1E25], NFD: [0x0068, 0x0323], NFKC: [0x1E25], NFKD: [0x0068, 0x0323] },
+{ source: [0x1E26], NFC: [0x1E26], NFD: [0x0048, 0x0308], NFKC: [0x1E26], NFKD: [0x0048, 0x0308] },
+{ source: [0x1E27], NFC: [0x1E27], NFD: [0x0068, 0x0308], NFKC: [0x1E27], NFKD: [0x0068, 0x0308] },
+{ source: [0x1E28], NFC: [0x1E28], NFD: [0x0048, 0x0327], NFKC: [0x1E28], NFKD: [0x0048, 0x0327] },
+{ source: [0x1E29], NFC: [0x1E29], NFD: [0x0068, 0x0327], NFKC: [0x1E29], NFKD: [0x0068, 0x0327] },
+{ source: [0x1E2A], NFC: [0x1E2A], NFD: [0x0048, 0x032E], NFKC: [0x1E2A], NFKD: [0x0048, 0x032E] },
+{ source: [0x1E2B], NFC: [0x1E2B], NFD: [0x0068, 0x032E], NFKC: [0x1E2B], NFKD: [0x0068, 0x032E] },
+{ source: [0x1E2C], NFC: [0x1E2C], NFD: [0x0049, 0x0330], NFKC: [0x1E2C], NFKD: [0x0049, 0x0330] },
+{ source: [0x1E2D], NFC: [0x1E2D], NFD: [0x0069, 0x0330], NFKC: [0x1E2D], NFKD: [0x0069, 0x0330] },
+{ source: [0x1E2E], NFC: [0x1E2E], NFD: [0x0049, 0x0308, 0x0301], NFKC: [0x1E2E], NFKD: [0x0049, 0x0308, 0x0301] },
+{ source: [0x1E2F], NFC: [0x1E2F], NFD: [0x0069, 0x0308, 0x0301], NFKC: [0x1E2F], NFKD: [0x0069, 0x0308, 0x0301] },
+{ source: [0x1E30], NFC: [0x1E30], NFD: [0x004B, 0x0301], NFKC: [0x1E30], NFKD: [0x004B, 0x0301] },
+{ source: [0x1E31], NFC: [0x1E31], NFD: [0x006B, 0x0301], NFKC: [0x1E31], NFKD: [0x006B, 0x0301] },
+{ source: [0x1E32], NFC: [0x1E32], NFD: [0x004B, 0x0323], NFKC: [0x1E32], NFKD: [0x004B, 0x0323] },
+{ source: [0x1E33], NFC: [0x1E33], NFD: [0x006B, 0x0323], NFKC: [0x1E33], NFKD: [0x006B, 0x0323] },
+{ source: [0x1E34], NFC: [0x1E34], NFD: [0x004B, 0x0331], NFKC: [0x1E34], NFKD: [0x004B, 0x0331] },
+{ source: [0x1E35], NFC: [0x1E35], NFD: [0x006B, 0x0331], NFKC: [0x1E35], NFKD: [0x006B, 0x0331] },
+{ source: [0x1E36], NFC: [0x1E36], NFD: [0x004C, 0x0323], NFKC: [0x1E36], NFKD: [0x004C, 0x0323] },
+{ source: [0x1E37], NFC: [0x1E37], NFD: [0x006C, 0x0323], NFKC: [0x1E37], NFKD: [0x006C, 0x0323] },
+{ source: [0x1E38], NFC: [0x1E38], NFD: [0x004C, 0x0323, 0x0304], NFKC: [0x1E38], NFKD: [0x004C, 0x0323, 0x0304] },
+{ source: [0x1E39], NFC: [0x1E39], NFD: [0x006C, 0x0323, 0x0304], NFKC: [0x1E39], NFKD: [0x006C, 0x0323, 0x0304] },
+{ source: [0x1E3A], NFC: [0x1E3A], NFD: [0x004C, 0x0331], NFKC: [0x1E3A], NFKD: [0x004C, 0x0331] },
+{ source: [0x1E3B], NFC: [0x1E3B], NFD: [0x006C, 0x0331], NFKC: [0x1E3B], NFKD: [0x006C, 0x0331] },
+{ source: [0x1E3C], NFC: [0x1E3C], NFD: [0x004C, 0x032D], NFKC: [0x1E3C], NFKD: [0x004C, 0x032D] },
+{ source: [0x1E3D], NFC: [0x1E3D], NFD: [0x006C, 0x032D], NFKC: [0x1E3D], NFKD: [0x006C, 0x032D] },
+{ source: [0x1E3E], NFC: [0x1E3E], NFD: [0x004D, 0x0301], NFKC: [0x1E3E], NFKD: [0x004D, 0x0301] },
+{ source: [0x1E3F], NFC: [0x1E3F], NFD: [0x006D, 0x0301], NFKC: [0x1E3F], NFKD: [0x006D, 0x0301] },
+{ source: [0x1E40], NFC: [0x1E40], NFD: [0x004D, 0x0307], NFKC: [0x1E40], NFKD: [0x004D, 0x0307] },
+{ source: [0x1E41], NFC: [0x1E41], NFD: [0x006D, 0x0307], NFKC: [0x1E41], NFKD: [0x006D, 0x0307] },
+{ source: [0x1E42], NFC: [0x1E42], NFD: [0x004D, 0x0323], NFKC: [0x1E42], NFKD: [0x004D, 0x0323] },
+{ source: [0x1E43], NFC: [0x1E43], NFD: [0x006D, 0x0323], NFKC: [0x1E43], NFKD: [0x006D, 0x0323] },
+{ source: [0x1E44], NFC: [0x1E44], NFD: [0x004E, 0x0307], NFKC: [0x1E44], NFKD: [0x004E, 0x0307] },
+{ source: [0x1E45], NFC: [0x1E45], NFD: [0x006E, 0x0307], NFKC: [0x1E45], NFKD: [0x006E, 0x0307] },
+{ source: [0x1E46], NFC: [0x1E46], NFD: [0x004E, 0x0323], NFKC: [0x1E46], NFKD: [0x004E, 0x0323] },
+{ source: [0x1E47], NFC: [0x1E47], NFD: [0x006E, 0x0323], NFKC: [0x1E47], NFKD: [0x006E, 0x0323] },
+{ source: [0x1E48], NFC: [0x1E48], NFD: [0x004E, 0x0331], NFKC: [0x1E48], NFKD: [0x004E, 0x0331] },
+{ source: [0x1E49], NFC: [0x1E49], NFD: [0x006E, 0x0331], NFKC: [0x1E49], NFKD: [0x006E, 0x0331] },
+{ source: [0x1E4A], NFC: [0x1E4A], NFD: [0x004E, 0x032D], NFKC: [0x1E4A], NFKD: [0x004E, 0x032D] },
+{ source: [0x1E4B], NFC: [0x1E4B], NFD: [0x006E, 0x032D], NFKC: [0x1E4B], NFKD: [0x006E, 0x032D] },
+{ source: [0x1E4C], NFC: [0x1E4C], NFD: [0x004F, 0x0303, 0x0301], NFKC: [0x1E4C], NFKD: [0x004F, 0x0303, 0x0301] },
+{ source: [0x1E4D], NFC: [0x1E4D], NFD: [0x006F, 0x0303, 0x0301], NFKC: [0x1E4D], NFKD: [0x006F, 0x0303, 0x0301] },
+{ source: [0x1E4E], NFC: [0x1E4E], NFD: [0x004F, 0x0303, 0x0308], NFKC: [0x1E4E], NFKD: [0x004F, 0x0303, 0x0308] },
+{ source: [0x1E4F], NFC: [0x1E4F], NFD: [0x006F, 0x0303, 0x0308], NFKC: [0x1E4F], NFKD: [0x006F, 0x0303, 0x0308] },
+{ source: [0x1E50], NFC: [0x1E50], NFD: [0x004F, 0x0304, 0x0300], NFKC: [0x1E50], NFKD: [0x004F, 0x0304, 0x0300] },
+{ source: [0x1E51], NFC: [0x1E51], NFD: [0x006F, 0x0304, 0x0300], NFKC: [0x1E51], NFKD: [0x006F, 0x0304, 0x0300] },
+{ source: [0x1E52], NFC: [0x1E52], NFD: [0x004F, 0x0304, 0x0301], NFKC: [0x1E52], NFKD: [0x004F, 0x0304, 0x0301] },
+{ source: [0x1E53], NFC: [0x1E53], NFD: [0x006F, 0x0304, 0x0301], NFKC: [0x1E53], NFKD: [0x006F, 0x0304, 0x0301] },
+{ source: [0x1E54], NFC: [0x1E54], NFD: [0x0050, 0x0301], NFKC: [0x1E54], NFKD: [0x0050, 0x0301] },
+{ source: [0x1E55], NFC: [0x1E55], NFD: [0x0070, 0x0301], NFKC: [0x1E55], NFKD: [0x0070, 0x0301] },
+{ source: [0x1E56], NFC: [0x1E56], NFD: [0x0050, 0x0307], NFKC: [0x1E56], NFKD: [0x0050, 0x0307] },
+{ source: [0x1E57], NFC: [0x1E57], NFD: [0x0070, 0x0307], NFKC: [0x1E57], NFKD: [0x0070, 0x0307] },
+{ source: [0x1E58], NFC: [0x1E58], NFD: [0x0052, 0x0307], NFKC: [0x1E58], NFKD: [0x0052, 0x0307] },
+{ source: [0x1E59], NFC: [0x1E59], NFD: [0x0072, 0x0307], NFKC: [0x1E59], NFKD: [0x0072, 0x0307] },
+{ source: [0x1E5A], NFC: [0x1E5A], NFD: [0x0052, 0x0323], NFKC: [0x1E5A], NFKD: [0x0052, 0x0323] },
+{ source: [0x1E5B], NFC: [0x1E5B], NFD: [0x0072, 0x0323], NFKC: [0x1E5B], NFKD: [0x0072, 0x0323] },
+{ source: [0x1E5C], NFC: [0x1E5C], NFD: [0x0052, 0x0323, 0x0304], NFKC: [0x1E5C], NFKD: [0x0052, 0x0323, 0x0304] },
+{ source: [0x1E5D], NFC: [0x1E5D], NFD: [0x0072, 0x0323, 0x0304], NFKC: [0x1E5D], NFKD: [0x0072, 0x0323, 0x0304] },
+{ source: [0x1E5E], NFC: [0x1E5E], NFD: [0x0052, 0x0331], NFKC: [0x1E5E], NFKD: [0x0052, 0x0331] },
+{ source: [0x1E5F], NFC: [0x1E5F], NFD: [0x0072, 0x0331], NFKC: [0x1E5F], NFKD: [0x0072, 0x0331] },
+{ source: [0x1E60], NFC: [0x1E60], NFD: [0x0053, 0x0307], NFKC: [0x1E60], NFKD: [0x0053, 0x0307] },
+{ source: [0x1E61], NFC: [0x1E61], NFD: [0x0073, 0x0307], NFKC: [0x1E61], NFKD: [0x0073, 0x0307] },
+{ source: [0x1E62], NFC: [0x1E62], NFD: [0x0053, 0x0323], NFKC: [0x1E62], NFKD: [0x0053, 0x0323] },
+{ source: [0x1E63], NFC: [0x1E63], NFD: [0x0073, 0x0323], NFKC: [0x1E63], NFKD: [0x0073, 0x0323] },
+{ source: [0x1E64], NFC: [0x1E64], NFD: [0x0053, 0x0301, 0x0307], NFKC: [0x1E64], NFKD: [0x0053, 0x0301, 0x0307] },
+{ source: [0x1E65], NFC: [0x1E65], NFD: [0x0073, 0x0301, 0x0307], NFKC: [0x1E65], NFKD: [0x0073, 0x0301, 0x0307] },
+{ source: [0x1E66], NFC: [0x1E66], NFD: [0x0053, 0x030C, 0x0307], NFKC: [0x1E66], NFKD: [0x0053, 0x030C, 0x0307] },
+{ source: [0x1E67], NFC: [0x1E67], NFD: [0x0073, 0x030C, 0x0307], NFKC: [0x1E67], NFKD: [0x0073, 0x030C, 0x0307] },
+{ source: [0x1E68], NFC: [0x1E68], NFD: [0x0053, 0x0323, 0x0307], NFKC: [0x1E68], NFKD: [0x0053, 0x0323, 0x0307] },
+{ source: [0x1E69], NFC: [0x1E69], NFD: [0x0073, 0x0323, 0x0307], NFKC: [0x1E69], NFKD: [0x0073, 0x0323, 0x0307] },
+{ source: [0x1E6A], NFC: [0x1E6A], NFD: [0x0054, 0x0307], NFKC: [0x1E6A], NFKD: [0x0054, 0x0307] },
+{ source: [0x1E6B], NFC: [0x1E6B], NFD: [0x0074, 0x0307], NFKC: [0x1E6B], NFKD: [0x0074, 0x0307] },
+{ source: [0x1E6C], NFC: [0x1E6C], NFD: [0x0054, 0x0323], NFKC: [0x1E6C], NFKD: [0x0054, 0x0323] },
+{ source: [0x1E6D], NFC: [0x1E6D], NFD: [0x0074, 0x0323], NFKC: [0x1E6D], NFKD: [0x0074, 0x0323] },
+{ source: [0x1E6E], NFC: [0x1E6E], NFD: [0x0054, 0x0331], NFKC: [0x1E6E], NFKD: [0x0054, 0x0331] },
+{ source: [0x1E6F], NFC: [0x1E6F], NFD: [0x0074, 0x0331], NFKC: [0x1E6F], NFKD: [0x0074, 0x0331] },
+{ source: [0x1E70], NFC: [0x1E70], NFD: [0x0054, 0x032D], NFKC: [0x1E70], NFKD: [0x0054, 0x032D] },
+{ source: [0x1E71], NFC: [0x1E71], NFD: [0x0074, 0x032D], NFKC: [0x1E71], NFKD: [0x0074, 0x032D] },
+{ source: [0x1E72], NFC: [0x1E72], NFD: [0x0055, 0x0324], NFKC: [0x1E72], NFKD: [0x0055, 0x0324] },
+{ source: [0x1E73], NFC: [0x1E73], NFD: [0x0075, 0x0324], NFKC: [0x1E73], NFKD: [0x0075, 0x0324] },
+{ source: [0x1E74], NFC: [0x1E74], NFD: [0x0055, 0x0330], NFKC: [0x1E74], NFKD: [0x0055, 0x0330] },
+{ source: [0x1E75], NFC: [0x1E75], NFD: [0x0075, 0x0330], NFKC: [0x1E75], NFKD: [0x0075, 0x0330] },
+{ source: [0x1E76], NFC: [0x1E76], NFD: [0x0055, 0x032D], NFKC: [0x1E76], NFKD: [0x0055, 0x032D] },
+{ source: [0x1E77], NFC: [0x1E77], NFD: [0x0075, 0x032D], NFKC: [0x1E77], NFKD: [0x0075, 0x032D] },
+{ source: [0x1E78], NFC: [0x1E78], NFD: [0x0055, 0x0303, 0x0301], NFKC: [0x1E78], NFKD: [0x0055, 0x0303, 0x0301] },
+{ source: [0x1E79], NFC: [0x1E79], NFD: [0x0075, 0x0303, 0x0301], NFKC: [0x1E79], NFKD: [0x0075, 0x0303, 0x0301] },
+{ source: [0x1E7A], NFC: [0x1E7A], NFD: [0x0055, 0x0304, 0x0308], NFKC: [0x1E7A], NFKD: [0x0055, 0x0304, 0x0308] },
+{ source: [0x1E7B], NFC: [0x1E7B], NFD: [0x0075, 0x0304, 0x0308], NFKC: [0x1E7B], NFKD: [0x0075, 0x0304, 0x0308] },
+{ source: [0x1E7C], NFC: [0x1E7C], NFD: [0x0056, 0x0303], NFKC: [0x1E7C], NFKD: [0x0056, 0x0303] },
+{ source: [0x1E7D], NFC: [0x1E7D], NFD: [0x0076, 0x0303], NFKC: [0x1E7D], NFKD: [0x0076, 0x0303] },
+{ source: [0x1E7E], NFC: [0x1E7E], NFD: [0x0056, 0x0323], NFKC: [0x1E7E], NFKD: [0x0056, 0x0323] },
+{ source: [0x1E7F], NFC: [0x1E7F], NFD: [0x0076, 0x0323], NFKC: [0x1E7F], NFKD: [0x0076, 0x0323] },
+{ source: [0x1E80], NFC: [0x1E80], NFD: [0x0057, 0x0300], NFKC: [0x1E80], NFKD: [0x0057, 0x0300] },
+{ source: [0x1E81], NFC: [0x1E81], NFD: [0x0077, 0x0300], NFKC: [0x1E81], NFKD: [0x0077, 0x0300] },
+{ source: [0x1E82], NFC: [0x1E82], NFD: [0x0057, 0x0301], NFKC: [0x1E82], NFKD: [0x0057, 0x0301] },
+{ source: [0x1E83], NFC: [0x1E83], NFD: [0x0077, 0x0301], NFKC: [0x1E83], NFKD: [0x0077, 0x0301] },
+{ source: [0x1E84], NFC: [0x1E84], NFD: [0x0057, 0x0308], NFKC: [0x1E84], NFKD: [0x0057, 0x0308] },
+{ source: [0x1E85], NFC: [0x1E85], NFD: [0x0077, 0x0308], NFKC: [0x1E85], NFKD: [0x0077, 0x0308] },
+{ source: [0x1E86], NFC: [0x1E86], NFD: [0x0057, 0x0307], NFKC: [0x1E86], NFKD: [0x0057, 0x0307] },
+{ source: [0x1E87], NFC: [0x1E87], NFD: [0x0077, 0x0307], NFKC: [0x1E87], NFKD: [0x0077, 0x0307] },
+{ source: [0x1E88], NFC: [0x1E88], NFD: [0x0057, 0x0323], NFKC: [0x1E88], NFKD: [0x0057, 0x0323] },
+{ source: [0x1E89], NFC: [0x1E89], NFD: [0x0077, 0x0323], NFKC: [0x1E89], NFKD: [0x0077, 0x0323] },
+{ source: [0x1E8A], NFC: [0x1E8A], NFD: [0x0058, 0x0307], NFKC: [0x1E8A], NFKD: [0x0058, 0x0307] },
+{ source: [0x1E8B], NFC: [0x1E8B], NFD: [0x0078, 0x0307], NFKC: [0x1E8B], NFKD: [0x0078, 0x0307] },
+{ source: [0x1E8C], NFC: [0x1E8C], NFD: [0x0058, 0x0308], NFKC: [0x1E8C], NFKD: [0x0058, 0x0308] },
+{ source: [0x1E8D], NFC: [0x1E8D], NFD: [0x0078, 0x0308], NFKC: [0x1E8D], NFKD: [0x0078, 0x0308] },
+{ source: [0x1E8E], NFC: [0x1E8E], NFD: [0x0059, 0x0307], NFKC: [0x1E8E], NFKD: [0x0059, 0x0307] },
+{ source: [0x1E8F], NFC: [0x1E8F], NFD: [0x0079, 0x0307], NFKC: [0x1E8F], NFKD: [0x0079, 0x0307] },
+{ source: [0x1E90], NFC: [0x1E90], NFD: [0x005A, 0x0302], NFKC: [0x1E90], NFKD: [0x005A, 0x0302] },
+{ source: [0x1E91], NFC: [0x1E91], NFD: [0x007A, 0x0302], NFKC: [0x1E91], NFKD: [0x007A, 0x0302] },
+{ source: [0x1E92], NFC: [0x1E92], NFD: [0x005A, 0x0323], NFKC: [0x1E92], NFKD: [0x005A, 0x0323] },
+{ source: [0x1E93], NFC: [0x1E93], NFD: [0x007A, 0x0323], NFKC: [0x1E93], NFKD: [0x007A, 0x0323] },
+{ source: [0x1E94], NFC: [0x1E94], NFD: [0x005A, 0x0331], NFKC: [0x1E94], NFKD: [0x005A, 0x0331] },
+{ source: [0x1E95], NFC: [0x1E95], NFD: [0x007A, 0x0331], NFKC: [0x1E95], NFKD: [0x007A, 0x0331] },
+{ source: [0x1E96], NFC: [0x1E96], NFD: [0x0068, 0x0331], NFKC: [0x1E96], NFKD: [0x0068, 0x0331] },
+{ source: [0x1E97], NFC: [0x1E97], NFD: [0x0074, 0x0308], NFKC: [0x1E97], NFKD: [0x0074, 0x0308] },
+{ source: [0x1E98], NFC: [0x1E98], NFD: [0x0077, 0x030A], NFKC: [0x1E98], NFKD: [0x0077, 0x030A] },
+{ source: [0x1E99], NFC: [0x1E99], NFD: [0x0079, 0x030A], NFKC: [0x1E99], NFKD: [0x0079, 0x030A] },
+{ source: [0x1E9A], NFC: [0x1E9A], NFD: [0x1E9A], NFKC: [0x0061, 0x02BE], NFKD: [0x0061, 0x02BE] },
+{ source: [0x1E9B], NFC: [0x1E9B], NFD: [0x017F, 0x0307], NFKC: [0x1E61], NFKD: [0x0073, 0x0307] },
+{ source: [0x1EA0], NFC: [0x1EA0], NFD: [0x0041, 0x0323], NFKC: [0x1EA0], NFKD: [0x0041, 0x0323] },
+{ source: [0x1EA1], NFC: [0x1EA1], NFD: [0x0061, 0x0323], NFKC: [0x1EA1], NFKD: [0x0061, 0x0323] },
+{ source: [0x1EA2], NFC: [0x1EA2], NFD: [0x0041, 0x0309], NFKC: [0x1EA2], NFKD: [0x0041, 0x0309] },
+{ source: [0x1EA3], NFC: [0x1EA3], NFD: [0x0061, 0x0309], NFKC: [0x1EA3], NFKD: [0x0061, 0x0309] },
+{ source: [0x1EA4], NFC: [0x1EA4], NFD: [0x0041, 0x0302, 0x0301], NFKC: [0x1EA4], NFKD: [0x0041, 0x0302, 0x0301] },
+{ source: [0x1EA5], NFC: [0x1EA5], NFD: [0x0061, 0x0302, 0x0301], NFKC: [0x1EA5], NFKD: [0x0061, 0x0302, 0x0301] },
+{ source: [0x1EA6], NFC: [0x1EA6], NFD: [0x0041, 0x0302, 0x0300], NFKC: [0x1EA6], NFKD: [0x0041, 0x0302, 0x0300] },
+{ source: [0x1EA7], NFC: [0x1EA7], NFD: [0x0061, 0x0302, 0x0300], NFKC: [0x1EA7], NFKD: [0x0061, 0x0302, 0x0300] },
+{ source: [0x1EA8], NFC: [0x1EA8], NFD: [0x0041, 0x0302, 0x0309], NFKC: [0x1EA8], NFKD: [0x0041, 0x0302, 0x0309] },
+{ source: [0x1EA9], NFC: [0x1EA9], NFD: [0x0061, 0x0302, 0x0309], NFKC: [0x1EA9], NFKD: [0x0061, 0x0302, 0x0309] },
+{ source: [0x1EAA], NFC: [0x1EAA], NFD: [0x0041, 0x0302, 0x0303], NFKC: [0x1EAA], NFKD: [0x0041, 0x0302, 0x0303] },
+{ source: [0x1EAB], NFC: [0x1EAB], NFD: [0x0061, 0x0302, 0x0303], NFKC: [0x1EAB], NFKD: [0x0061, 0x0302, 0x0303] },
+{ source: [0x1EAC], NFC: [0x1EAC], NFD: [0x0041, 0x0323, 0x0302], NFKC: [0x1EAC], NFKD: [0x0041, 0x0323, 0x0302] },
+{ source: [0x1EAD], NFC: [0x1EAD], NFD: [0x0061, 0x0323, 0x0302], NFKC: [0x1EAD], NFKD: [0x0061, 0x0323, 0x0302] },
+{ source: [0x1EAE], NFC: [0x1EAE], NFD: [0x0041, 0x0306, 0x0301], NFKC: [0x1EAE], NFKD: [0x0041, 0x0306, 0x0301] },
+{ source: [0x1EAF], NFC: [0x1EAF], NFD: [0x0061, 0x0306, 0x0301], NFKC: [0x1EAF], NFKD: [0x0061, 0x0306, 0x0301] },
+{ source: [0x1EB0], NFC: [0x1EB0], NFD: [0x0041, 0x0306, 0x0300], NFKC: [0x1EB0], NFKD: [0x0041, 0x0306, 0x0300] },
+{ source: [0x1EB1], NFC: [0x1EB1], NFD: [0x0061, 0x0306, 0x0300], NFKC: [0x1EB1], NFKD: [0x0061, 0x0306, 0x0300] },
+{ source: [0x1EB2], NFC: [0x1EB2], NFD: [0x0041, 0x0306, 0x0309], NFKC: [0x1EB2], NFKD: [0x0041, 0x0306, 0x0309] },
+{ source: [0x1EB3], NFC: [0x1EB3], NFD: [0x0061, 0x0306, 0x0309], NFKC: [0x1EB3], NFKD: [0x0061, 0x0306, 0x0309] },
+{ source: [0x1EB4], NFC: [0x1EB4], NFD: [0x0041, 0x0306, 0x0303], NFKC: [0x1EB4], NFKD: [0x0041, 0x0306, 0x0303] },
+{ source: [0x1EB5], NFC: [0x1EB5], NFD: [0x0061, 0x0306, 0x0303], NFKC: [0x1EB5], NFKD: [0x0061, 0x0306, 0x0303] },
+{ source: [0x1EB6], NFC: [0x1EB6], NFD: [0x0041, 0x0323, 0x0306], NFKC: [0x1EB6], NFKD: [0x0041, 0x0323, 0x0306] },
+{ source: [0x1EB7], NFC: [0x1EB7], NFD: [0x0061, 0x0323, 0x0306], NFKC: [0x1EB7], NFKD: [0x0061, 0x0323, 0x0306] },
+{ source: [0x1EB8], NFC: [0x1EB8], NFD: [0x0045, 0x0323], NFKC: [0x1EB8], NFKD: [0x0045, 0x0323] },
+{ source: [0x1EB9], NFC: [0x1EB9], NFD: [0x0065, 0x0323], NFKC: [0x1EB9], NFKD: [0x0065, 0x0323] },
+{ source: [0x1EBA], NFC: [0x1EBA], NFD: [0x0045, 0x0309], NFKC: [0x1EBA], NFKD: [0x0045, 0x0309] },
+{ source: [0x1EBB], NFC: [0x1EBB], NFD: [0x0065, 0x0309], NFKC: [0x1EBB], NFKD: [0x0065, 0x0309] },
+{ source: [0x1EBC], NFC: [0x1EBC], NFD: [0x0045, 0x0303], NFKC: [0x1EBC], NFKD: [0x0045, 0x0303] },
+{ source: [0x1EBD], NFC: [0x1EBD], NFD: [0x0065, 0x0303], NFKC: [0x1EBD], NFKD: [0x0065, 0x0303] },
+{ source: [0x1EBE], NFC: [0x1EBE], NFD: [0x0045, 0x0302, 0x0301], NFKC: [0x1EBE], NFKD: [0x0045, 0x0302, 0x0301] },
+{ source: [0x1EBF], NFC: [0x1EBF], NFD: [0x0065, 0x0302, 0x0301], NFKC: [0x1EBF], NFKD: [0x0065, 0x0302, 0x0301] },
+{ source: [0x1EC0], NFC: [0x1EC0], NFD: [0x0045, 0x0302, 0x0300], NFKC: [0x1EC0], NFKD: [0x0045, 0x0302, 0x0300] },
+{ source: [0x1EC1], NFC: [0x1EC1], NFD: [0x0065, 0x0302, 0x0300], NFKC: [0x1EC1], NFKD: [0x0065, 0x0302, 0x0300] },
+{ source: [0x1EC2], NFC: [0x1EC2], NFD: [0x0045, 0x0302, 0x0309], NFKC: [0x1EC2], NFKD: [0x0045, 0x0302, 0x0309] },
+{ source: [0x1EC3], NFC: [0x1EC3], NFD: [0x0065, 0x0302, 0x0309], NFKC: [0x1EC3], NFKD: [0x0065, 0x0302, 0x0309] },
+{ source: [0x1EC4], NFC: [0x1EC4], NFD: [0x0045, 0x0302, 0x0303], NFKC: [0x1EC4], NFKD: [0x0045, 0x0302, 0x0303] },
+{ source: [0x1EC5], NFC: [0x1EC5], NFD: [0x0065, 0x0302, 0x0303], NFKC: [0x1EC5], NFKD: [0x0065, 0x0302, 0x0303] },
+{ source: [0x1EC6], NFC: [0x1EC6], NFD: [0x0045, 0x0323, 0x0302], NFKC: [0x1EC6], NFKD: [0x0045, 0x0323, 0x0302] },
+{ source: [0x1EC7], NFC: [0x1EC7], NFD: [0x0065, 0x0323, 0x0302], NFKC: [0x1EC7], NFKD: [0x0065, 0x0323, 0x0302] },
+{ source: [0x1EC8], NFC: [0x1EC8], NFD: [0x0049, 0x0309], NFKC: [0x1EC8], NFKD: [0x0049, 0x0309] },
+{ source: [0x1EC9], NFC: [0x1EC9], NFD: [0x0069, 0x0309], NFKC: [0x1EC9], NFKD: [0x0069, 0x0309] },
+{ source: [0x1ECA], NFC: [0x1ECA], NFD: [0x0049, 0x0323], NFKC: [0x1ECA], NFKD: [0x0049, 0x0323] },
+{ source: [0x1ECB], NFC: [0x1ECB], NFD: [0x0069, 0x0323], NFKC: [0x1ECB], NFKD: [0x0069, 0x0323] },
+{ source: [0x1ECC], NFC: [0x1ECC], NFD: [0x004F, 0x0323], NFKC: [0x1ECC], NFKD: [0x004F, 0x0323] },
+{ source: [0x1ECD], NFC: [0x1ECD], NFD: [0x006F, 0x0323], NFKC: [0x1ECD], NFKD: [0x006F, 0x0323] },
+{ source: [0x1ECE], NFC: [0x1ECE], NFD: [0x004F, 0x0309], NFKC: [0x1ECE], NFKD: [0x004F, 0x0309] },
+{ source: [0x1ECF], NFC: [0x1ECF], NFD: [0x006F, 0x0309], NFKC: [0x1ECF], NFKD: [0x006F, 0x0309] },
+{ source: [0x1ED0], NFC: [0x1ED0], NFD: [0x004F, 0x0302, 0x0301], NFKC: [0x1ED0], NFKD: [0x004F, 0x0302, 0x0301] },
+{ source: [0x1ED1], NFC: [0x1ED1], NFD: [0x006F, 0x0302, 0x0301], NFKC: [0x1ED1], NFKD: [0x006F, 0x0302, 0x0301] },
+{ source: [0x1ED2], NFC: [0x1ED2], NFD: [0x004F, 0x0302, 0x0300], NFKC: [0x1ED2], NFKD: [0x004F, 0x0302, 0x0300] },
+{ source: [0x1ED3], NFC: [0x1ED3], NFD: [0x006F, 0x0302, 0x0300], NFKC: [0x1ED3], NFKD: [0x006F, 0x0302, 0x0300] },
+{ source: [0x1ED4], NFC: [0x1ED4], NFD: [0x004F, 0x0302, 0x0309], NFKC: [0x1ED4], NFKD: [0x004F, 0x0302, 0x0309] },
+{ source: [0x1ED5], NFC: [0x1ED5], NFD: [0x006F, 0x0302, 0x0309], NFKC: [0x1ED5], NFKD: [0x006F, 0x0302, 0x0309] },
+{ source: [0x1ED6], NFC: [0x1ED6], NFD: [0x004F, 0x0302, 0x0303], NFKC: [0x1ED6], NFKD: [0x004F, 0x0302, 0x0303] },
+{ source: [0x1ED7], NFC: [0x1ED7], NFD: [0x006F, 0x0302, 0x0303], NFKC: [0x1ED7], NFKD: [0x006F, 0x0302, 0x0303] },
+{ source: [0x1ED8], NFC: [0x1ED8], NFD: [0x004F, 0x0323, 0x0302], NFKC: [0x1ED8], NFKD: [0x004F, 0x0323, 0x0302] },
+{ source: [0x1ED9], NFC: [0x1ED9], NFD: [0x006F, 0x0323, 0x0302], NFKC: [0x1ED9], NFKD: [0x006F, 0x0323, 0x0302] },
+{ source: [0x1EDA], NFC: [0x1EDA], NFD: [0x004F, 0x031B, 0x0301], NFKC: [0x1EDA], NFKD: [0x004F, 0x031B, 0x0301] },
+{ source: [0x1EDB], NFC: [0x1EDB], NFD: [0x006F, 0x031B, 0x0301], NFKC: [0x1EDB], NFKD: [0x006F, 0x031B, 0x0301] },
+{ source: [0x1EDC], NFC: [0x1EDC], NFD: [0x004F, 0x031B, 0x0300], NFKC: [0x1EDC], NFKD: [0x004F, 0x031B, 0x0300] },
+{ source: [0x1EDD], NFC: [0x1EDD], NFD: [0x006F, 0x031B, 0x0300], NFKC: [0x1EDD], NFKD: [0x006F, 0x031B, 0x0300] },
+{ source: [0x1EDE], NFC: [0x1EDE], NFD: [0x004F, 0x031B, 0x0309], NFKC: [0x1EDE], NFKD: [0x004F, 0x031B, 0x0309] },
+{ source: [0x1EDF], NFC: [0x1EDF], NFD: [0x006F, 0x031B, 0x0309], NFKC: [0x1EDF], NFKD: [0x006F, 0x031B, 0x0309] },
+{ source: [0x1EE0], NFC: [0x1EE0], NFD: [0x004F, 0x031B, 0x0303], NFKC: [0x1EE0], NFKD: [0x004F, 0x031B, 0x0303] },
+{ source: [0x1EE1], NFC: [0x1EE1], NFD: [0x006F, 0x031B, 0x0303], NFKC: [0x1EE1], NFKD: [0x006F, 0x031B, 0x0303] },
+{ source: [0x1EE2], NFC: [0x1EE2], NFD: [0x004F, 0x031B, 0x0323], NFKC: [0x1EE2], NFKD: [0x004F, 0x031B, 0x0323] },
+{ source: [0x1EE3], NFC: [0x1EE3], NFD: [0x006F, 0x031B, 0x0323], NFKC: [0x1EE3], NFKD: [0x006F, 0x031B, 0x0323] },
+{ source: [0x1EE4], NFC: [0x1EE4], NFD: [0x0055, 0x0323], NFKC: [0x1EE4], NFKD: [0x0055, 0x0323] },
+{ source: [0x1EE5], NFC: [0x1EE5], NFD: [0x0075, 0x0323], NFKC: [0x1EE5], NFKD: [0x0075, 0x0323] },
+{ source: [0x1EE6], NFC: [0x1EE6], NFD: [0x0055, 0x0309], NFKC: [0x1EE6], NFKD: [0x0055, 0x0309] },
+{ source: [0x1EE7], NFC: [0x1EE7], NFD: [0x0075, 0x0309], NFKC: [0x1EE7], NFKD: [0x0075, 0x0309] },
+{ source: [0x1EE8], NFC: [0x1EE8], NFD: [0x0055, 0x031B, 0x0301], NFKC: [0x1EE8], NFKD: [0x0055, 0x031B, 0x0301] },
+{ source: [0x1EE9], NFC: [0x1EE9], NFD: [0x0075, 0x031B, 0x0301], NFKC: [0x1EE9], NFKD: [0x0075, 0x031B, 0x0301] },
+{ source: [0x1EEA], NFC: [0x1EEA], NFD: [0x0055, 0x031B, 0x0300], NFKC: [0x1EEA], NFKD: [0x0055, 0x031B, 0x0300] },
+{ source: [0x1EEB], NFC: [0x1EEB], NFD: [0x0075, 0x031B, 0x0300], NFKC: [0x1EEB], NFKD: [0x0075, 0x031B, 0x0300] },
+{ source: [0x1EEC], NFC: [0x1EEC], NFD: [0x0055, 0x031B, 0x0309], NFKC: [0x1EEC], NFKD: [0x0055, 0x031B, 0x0309] },
+{ source: [0x1EED], NFC: [0x1EED], NFD: [0x0075, 0x031B, 0x0309], NFKC: [0x1EED], NFKD: [0x0075, 0x031B, 0x0309] },
+{ source: [0x1EEE], NFC: [0x1EEE], NFD: [0x0055, 0x031B, 0x0303], NFKC: [0x1EEE], NFKD: [0x0055, 0x031B, 0x0303] },
+{ source: [0x1EEF], NFC: [0x1EEF], NFD: [0x0075, 0x031B, 0x0303], NFKC: [0x1EEF], NFKD: [0x0075, 0x031B, 0x0303] },
+{ source: [0x1EF0], NFC: [0x1EF0], NFD: [0x0055, 0x031B, 0x0323], NFKC: [0x1EF0], NFKD: [0x0055, 0x031B, 0x0323] },
+{ source: [0x1EF1], NFC: [0x1EF1], NFD: [0x0075, 0x031B, 0x0323], NFKC: [0x1EF1], NFKD: [0x0075, 0x031B, 0x0323] },
+{ source: [0x1EF2], NFC: [0x1EF2], NFD: [0x0059, 0x0300], NFKC: [0x1EF2], NFKD: [0x0059, 0x0300] },
+{ source: [0x1EF3], NFC: [0x1EF3], NFD: [0x0079, 0x0300], NFKC: [0x1EF3], NFKD: [0x0079, 0x0300] },
+{ source: [0x1EF4], NFC: [0x1EF4], NFD: [0x0059, 0x0323], NFKC: [0x1EF4], NFKD: [0x0059, 0x0323] },
+{ source: [0x1EF5], NFC: [0x1EF5], NFD: [0x0079, 0x0323], NFKC: [0x1EF5], NFKD: [0x0079, 0x0323] },
+{ source: [0x1EF6], NFC: [0x1EF6], NFD: [0x0059, 0x0309], NFKC: [0x1EF6], NFKD: [0x0059, 0x0309] },
+{ source: [0x1EF7], NFC: [0x1EF7], NFD: [0x0079, 0x0309], NFKC: [0x1EF7], NFKD: [0x0079, 0x0309] },
+{ source: [0x1EF8], NFC: [0x1EF8], NFD: [0x0059, 0x0303], NFKC: [0x1EF8], NFKD: [0x0059, 0x0303] },
+{ source: [0x1EF9], NFC: [0x1EF9], NFD: [0x0079, 0x0303], NFKC: [0x1EF9], NFKD: [0x0079, 0x0303] },
+{ source: [0x1F00], NFC: [0x1F00], NFD: [0x03B1, 0x0313], NFKC: [0x1F00], NFKD: [0x03B1, 0x0313] },
+{ source: [0x1F01], NFC: [0x1F01], NFD: [0x03B1, 0x0314], NFKC: [0x1F01], NFKD: [0x03B1, 0x0314] },
+{ source: [0x1F02], NFC: [0x1F02], NFD: [0x03B1, 0x0313, 0x0300], NFKC: [0x1F02], NFKD: [0x03B1, 0x0313, 0x0300] },
+{ source: [0x1F03], NFC: [0x1F03], NFD: [0x03B1, 0x0314, 0x0300], NFKC: [0x1F03], NFKD: [0x03B1, 0x0314, 0x0300] },
+{ source: [0x1F04], NFC: [0x1F04], NFD: [0x03B1, 0x0313, 0x0301], NFKC: [0x1F04], NFKD: [0x03B1, 0x0313, 0x0301] },
+{ source: [0x1F05], NFC: [0x1F05], NFD: [0x03B1, 0x0314, 0x0301], NFKC: [0x1F05], NFKD: [0x03B1, 0x0314, 0x0301] },
+{ source: [0x1F06], NFC: [0x1F06], NFD: [0x03B1, 0x0313, 0x0342], NFKC: [0x1F06], NFKD: [0x03B1, 0x0313, 0x0342] },
+{ source: [0x1F07], NFC: [0x1F07], NFD: [0x03B1, 0x0314, 0x0342], NFKC: [0x1F07], NFKD: [0x03B1, 0x0314, 0x0342] },
+{ source: [0x1F08], NFC: [0x1F08], NFD: [0x0391, 0x0313], NFKC: [0x1F08], NFKD: [0x0391, 0x0313] },
+{ source: [0x1F09], NFC: [0x1F09], NFD: [0x0391, 0x0314], NFKC: [0x1F09], NFKD: [0x0391, 0x0314] },
+{ source: [0x1F0A], NFC: [0x1F0A], NFD: [0x0391, 0x0313, 0x0300], NFKC: [0x1F0A], NFKD: [0x0391, 0x0313, 0x0300] },
+{ source: [0x1F0B], NFC: [0x1F0B], NFD: [0x0391, 0x0314, 0x0300], NFKC: [0x1F0B], NFKD: [0x0391, 0x0314, 0x0300] },
+{ source: [0x1F0C], NFC: [0x1F0C], NFD: [0x0391, 0x0313, 0x0301], NFKC: [0x1F0C], NFKD: [0x0391, 0x0313, 0x0301] },
+{ source: [0x1F0D], NFC: [0x1F0D], NFD: [0x0391, 0x0314, 0x0301], NFKC: [0x1F0D], NFKD: [0x0391, 0x0314, 0x0301] },
+{ source: [0x1F0E], NFC: [0x1F0E], NFD: [0x0391, 0x0313, 0x0342], NFKC: [0x1F0E], NFKD: [0x0391, 0x0313, 0x0342] },
+{ source: [0x1F0F], NFC: [0x1F0F], NFD: [0x0391, 0x0314, 0x0342], NFKC: [0x1F0F], NFKD: [0x0391, 0x0314, 0x0342] },
+{ source: [0x1F10], NFC: [0x1F10], NFD: [0x03B5, 0x0313], NFKC: [0x1F10], NFKD: [0x03B5, 0x0313] },
+{ source: [0x1F11], NFC: [0x1F11], NFD: [0x03B5, 0x0314], NFKC: [0x1F11], NFKD: [0x03B5, 0x0314] },
+{ source: [0x1F12], NFC: [0x1F12], NFD: [0x03B5, 0x0313, 0x0300], NFKC: [0x1F12], NFKD: [0x03B5, 0x0313, 0x0300] },
+{ source: [0x1F13], NFC: [0x1F13], NFD: [0x03B5, 0x0314, 0x0300], NFKC: [0x1F13], NFKD: [0x03B5, 0x0314, 0x0300] },
+{ source: [0x1F14], NFC: [0x1F14], NFD: [0x03B5, 0x0313, 0x0301], NFKC: [0x1F14], NFKD: [0x03B5, 0x0313, 0x0301] },
+{ source: [0x1F15], NFC: [0x1F15], NFD: [0x03B5, 0x0314, 0x0301], NFKC: [0x1F15], NFKD: [0x03B5, 0x0314, 0x0301] },
+{ source: [0x1F18], NFC: [0x1F18], NFD: [0x0395, 0x0313], NFKC: [0x1F18], NFKD: [0x0395, 0x0313] },
+{ source: [0x1F19], NFC: [0x1F19], NFD: [0x0395, 0x0314], NFKC: [0x1F19], NFKD: [0x0395, 0x0314] },
+{ source: [0x1F1A], NFC: [0x1F1A], NFD: [0x0395, 0x0313, 0x0300], NFKC: [0x1F1A], NFKD: [0x0395, 0x0313, 0x0300] },
+{ source: [0x1F1B], NFC: [0x1F1B], NFD: [0x0395, 0x0314, 0x0300], NFKC: [0x1F1B], NFKD: [0x0395, 0x0314, 0x0300] },
+{ source: [0x1F1C], NFC: [0x1F1C], NFD: [0x0395, 0x0313, 0x0301], NFKC: [0x1F1C], NFKD: [0x0395, 0x0313, 0x0301] },
+{ source: [0x1F1D], NFC: [0x1F1D], NFD: [0x0395, 0x0314, 0x0301], NFKC: [0x1F1D], NFKD: [0x0395, 0x0314, 0x0301] },
+{ source: [0x1F20], NFC: [0x1F20], NFD: [0x03B7, 0x0313], NFKC: [0x1F20], NFKD: [0x03B7, 0x0313] },
+{ source: [0x1F21], NFC: [0x1F21], NFD: [0x03B7, 0x0314], NFKC: [0x1F21], NFKD: [0x03B7, 0x0314] },
+{ source: [0x1F22], NFC: [0x1F22], NFD: [0x03B7, 0x0313, 0x0300], NFKC: [0x1F22], NFKD: [0x03B7, 0x0313, 0x0300] },
+{ source: [0x1F23], NFC: [0x1F23], NFD: [0x03B7, 0x0314, 0x0300], NFKC: [0x1F23], NFKD: [0x03B7, 0x0314, 0x0300] },
+{ source: [0x1F24], NFC: [0x1F24], NFD: [0x03B7, 0x0313, 0x0301], NFKC: [0x1F24], NFKD: [0x03B7, 0x0313, 0x0301] },
+{ source: [0x1F25], NFC: [0x1F25], NFD: [0x03B7, 0x0314, 0x0301], NFKC: [0x1F25], NFKD: [0x03B7, 0x0314, 0x0301] },
+{ source: [0x1F26], NFC: [0x1F26], NFD: [0x03B7, 0x0313, 0x0342], NFKC: [0x1F26], NFKD: [0x03B7, 0x0313, 0x0342] },
+{ source: [0x1F27], NFC: [0x1F27], NFD: [0x03B7, 0x0314, 0x0342], NFKC: [0x1F27], NFKD: [0x03B7, 0x0314, 0x0342] },
+{ source: [0x1F28], NFC: [0x1F28], NFD: [0x0397, 0x0313], NFKC: [0x1F28], NFKD: [0x0397, 0x0313] },
+{ source: [0x1F29], NFC: [0x1F29], NFD: [0x0397, 0x0314], NFKC: [0x1F29], NFKD: [0x0397, 0x0314] },
+{ source: [0x1F2A], NFC: [0x1F2A], NFD: [0x0397, 0x0313, 0x0300], NFKC: [0x1F2A], NFKD: [0x0397, 0x0313, 0x0300] },
+{ source: [0x1F2B], NFC: [0x1F2B], NFD: [0x0397, 0x0314, 0x0300], NFKC: [0x1F2B], NFKD: [0x0397, 0x0314, 0x0300] },
+{ source: [0x1F2C], NFC: [0x1F2C], NFD: [0x0397, 0x0313, 0x0301], NFKC: [0x1F2C], NFKD: [0x0397, 0x0313, 0x0301] },
+{ source: [0x1F2D], NFC: [0x1F2D], NFD: [0x0397, 0x0314, 0x0301], NFKC: [0x1F2D], NFKD: [0x0397, 0x0314, 0x0301] },
+{ source: [0x1F2E], NFC: [0x1F2E], NFD: [0x0397, 0x0313, 0x0342], NFKC: [0x1F2E], NFKD: [0x0397, 0x0313, 0x0342] },
+{ source: [0x1F2F], NFC: [0x1F2F], NFD: [0x0397, 0x0314, 0x0342], NFKC: [0x1F2F], NFKD: [0x0397, 0x0314, 0x0342] },
+{ source: [0x1F30], NFC: [0x1F30], NFD: [0x03B9, 0x0313], NFKC: [0x1F30], NFKD: [0x03B9, 0x0313] },
+{ source: [0x1F31], NFC: [0x1F31], NFD: [0x03B9, 0x0314], NFKC: [0x1F31], NFKD: [0x03B9, 0x0314] },
+{ source: [0x1F32], NFC: [0x1F32], NFD: [0x03B9, 0x0313, 0x0300], NFKC: [0x1F32], NFKD: [0x03B9, 0x0313, 0x0300] },
+{ source: [0x1F33], NFC: [0x1F33], NFD: [0x03B9, 0x0314, 0x0300], NFKC: [0x1F33], NFKD: [0x03B9, 0x0314, 0x0300] },
+{ source: [0x1F34], NFC: [0x1F34], NFD: [0x03B9, 0x0313, 0x0301], NFKC: [0x1F34], NFKD: [0x03B9, 0x0313, 0x0301] },
+{ source: [0x1F35], NFC: [0x1F35], NFD: [0x03B9, 0x0314, 0x0301], NFKC: [0x1F35], NFKD: [0x03B9, 0x0314, 0x0301] },
+{ source: [0x1F36], NFC: [0x1F36], NFD: [0x03B9, 0x0313, 0x0342], NFKC: [0x1F36], NFKD: [0x03B9, 0x0313, 0x0342] },
+{ source: [0x1F37], NFC: [0x1F37], NFD: [0x03B9, 0x0314, 0x0342], NFKC: [0x1F37], NFKD: [0x03B9, 0x0314, 0x0342] },
+{ source: [0x1F38], NFC: [0x1F38], NFD: [0x0399, 0x0313], NFKC: [0x1F38], NFKD: [0x0399, 0x0313] },
+{ source: [0x1F39], NFC: [0x1F39], NFD: [0x0399, 0x0314], NFKC: [0x1F39], NFKD: [0x0399, 0x0314] },
+{ source: [0x1F3A], NFC: [0x1F3A], NFD: [0x0399, 0x0313, 0x0300], NFKC: [0x1F3A], NFKD: [0x0399, 0x0313, 0x0300] },
+{ source: [0x1F3B], NFC: [0x1F3B], NFD: [0x0399, 0x0314, 0x0300], NFKC: [0x1F3B], NFKD: [0x0399, 0x0314, 0x0300] },
+{ source: [0x1F3C], NFC: [0x1F3C], NFD: [0x0399, 0x0313, 0x0301], NFKC: [0x1F3C], NFKD: [0x0399, 0x0313, 0x0301] },
+{ source: [0x1F3D], NFC: [0x1F3D], NFD: [0x0399, 0x0314, 0x0301], NFKC: [0x1F3D], NFKD: [0x0399, 0x0314, 0x0301] },
+{ source: [0x1F3E], NFC: [0x1F3E], NFD: [0x0399, 0x0313, 0x0342], NFKC: [0x1F3E], NFKD: [0x0399, 0x0313, 0x0342] },
+{ source: [0x1F3F], NFC: [0x1F3F], NFD: [0x0399, 0x0314, 0x0342], NFKC: [0x1F3F], NFKD: [0x0399, 0x0314, 0x0342] },
+{ source: [0x1F40], NFC: [0x1F40], NFD: [0x03BF, 0x0313], NFKC: [0x1F40], NFKD: [0x03BF, 0x0313] },
+{ source: [0x1F41], NFC: [0x1F41], NFD: [0x03BF, 0x0314], NFKC: [0x1F41], NFKD: [0x03BF, 0x0314] },
+{ source: [0x1F42], NFC: [0x1F42], NFD: [0x03BF, 0x0313, 0x0300], NFKC: [0x1F42], NFKD: [0x03BF, 0x0313, 0x0300] },
+{ source: [0x1F43], NFC: [0x1F43], NFD: [0x03BF, 0x0314, 0x0300], NFKC: [0x1F43], NFKD: [0x03BF, 0x0314, 0x0300] },
+{ source: [0x1F44], NFC: [0x1F44], NFD: [0x03BF, 0x0313, 0x0301], NFKC: [0x1F44], NFKD: [0x03BF, 0x0313, 0x0301] },
+{ source: [0x1F45], NFC: [0x1F45], NFD: [0x03BF, 0x0314, 0x0301], NFKC: [0x1F45], NFKD: [0x03BF, 0x0314, 0x0301] },
+{ source: [0x1F48], NFC: [0x1F48], NFD: [0x039F, 0x0313], NFKC: [0x1F48], NFKD: [0x039F, 0x0313] },
+{ source: [0x1F49], NFC: [0x1F49], NFD: [0x039F, 0x0314], NFKC: [0x1F49], NFKD: [0x039F, 0x0314] },
+{ source: [0x1F4A], NFC: [0x1F4A], NFD: [0x039F, 0x0313, 0x0300], NFKC: [0x1F4A], NFKD: [0x039F, 0x0313, 0x0300] },
+{ source: [0x1F4B], NFC: [0x1F4B], NFD: [0x039F, 0x0314, 0x0300], NFKC: [0x1F4B], NFKD: [0x039F, 0x0314, 0x0300] },
+{ source: [0x1F4C], NFC: [0x1F4C], NFD: [0x039F, 0x0313, 0x0301], NFKC: [0x1F4C], NFKD: [0x039F, 0x0313, 0x0301] },
+{ source: [0x1F4D], NFC: [0x1F4D], NFD: [0x039F, 0x0314, 0x0301], NFKC: [0x1F4D], NFKD: [0x039F, 0x0314, 0x0301] },
+{ source: [0x1F50], NFC: [0x1F50], NFD: [0x03C5, 0x0313], NFKC: [0x1F50], NFKD: [0x03C5, 0x0313] },
+{ source: [0x1F51], NFC: [0x1F51], NFD: [0x03C5, 0x0314], NFKC: [0x1F51], NFKD: [0x03C5, 0x0314] },
+{ source: [0x1F52], NFC: [0x1F52], NFD: [0x03C5, 0x0313, 0x0300], NFKC: [0x1F52], NFKD: [0x03C5, 0x0313, 0x0300] },
+{ source: [0x1F53], NFC: [0x1F53], NFD: [0x03C5, 0x0314, 0x0300], NFKC: [0x1F53], NFKD: [0x03C5, 0x0314, 0x0300] },
+{ source: [0x1F54], NFC: [0x1F54], NFD: [0x03C5, 0x0313, 0x0301], NFKC: [0x1F54], NFKD: [0x03C5, 0x0313, 0x0301] },
+{ source: [0x1F55], NFC: [0x1F55], NFD: [0x03C5, 0x0314, 0x0301], NFKC: [0x1F55], NFKD: [0x03C5, 0x0314, 0x0301] },
+{ source: [0x1F56], NFC: [0x1F56], NFD: [0x03C5, 0x0313, 0x0342], NFKC: [0x1F56], NFKD: [0x03C5, 0x0313, 0x0342] },
+{ source: [0x1F57], NFC: [0x1F57], NFD: [0x03C5, 0x0314, 0x0342], NFKC: [0x1F57], NFKD: [0x03C5, 0x0314, 0x0342] },
+{ source: [0x1F59], NFC: [0x1F59], NFD: [0x03A5, 0x0314], NFKC: [0x1F59], NFKD: [0x03A5, 0x0314] },
+{ source: [0x1F5B], NFC: [0x1F5B], NFD: [0x03A5, 0x0314, 0x0300], NFKC: [0x1F5B], NFKD: [0x03A5, 0x0314, 0x0300] },
+{ source: [0x1F5D], NFC: [0x1F5D], NFD: [0x03A5, 0x0314, 0x0301], NFKC: [0x1F5D], NFKD: [0x03A5, 0x0314, 0x0301] },
+{ source: [0x1F5F], NFC: [0x1F5F], NFD: [0x03A5, 0x0314, 0x0342], NFKC: [0x1F5F], NFKD: [0x03A5, 0x0314, 0x0342] },
+{ source: [0x1F60], NFC: [0x1F60], NFD: [0x03C9, 0x0313], NFKC: [0x1F60], NFKD: [0x03C9, 0x0313] },
+{ source: [0x1F61], NFC: [0x1F61], NFD: [0x03C9, 0x0314], NFKC: [0x1F61], NFKD: [0x03C9, 0x0314] },
+{ source: [0x1F62], NFC: [0x1F62], NFD: [0x03C9, 0x0313, 0x0300], NFKC: [0x1F62], NFKD: [0x03C9, 0x0313, 0x0300] },
+{ source: [0x1F63], NFC: [0x1F63], NFD: [0x03C9, 0x0314, 0x0300], NFKC: [0x1F63], NFKD: [0x03C9, 0x0314, 0x0300] },
+{ source: [0x1F64], NFC: [0x1F64], NFD: [0x03C9, 0x0313, 0x0301], NFKC: [0x1F64], NFKD: [0x03C9, 0x0313, 0x0301] },
+{ source: [0x1F65], NFC: [0x1F65], NFD: [0x03C9, 0x0314, 0x0301], NFKC: [0x1F65], NFKD: [0x03C9, 0x0314, 0x0301] },
+{ source: [0x1F66], NFC: [0x1F66], NFD: [0x03C9, 0x0313, 0x0342], NFKC: [0x1F66], NFKD: [0x03C9, 0x0313, 0x0342] },
+{ source: [0x1F67], NFC: [0x1F67], NFD: [0x03C9, 0x0314, 0x0342], NFKC: [0x1F67], NFKD: [0x03C9, 0x0314, 0x0342] },
+{ source: [0x1F68], NFC: [0x1F68], NFD: [0x03A9, 0x0313], NFKC: [0x1F68], NFKD: [0x03A9, 0x0313] },
+{ source: [0x1F69], NFC: [0x1F69], NFD: [0x03A9, 0x0314], NFKC: [0x1F69], NFKD: [0x03A9, 0x0314] },
+{ source: [0x1F6A], NFC: [0x1F6A], NFD: [0x03A9, 0x0313, 0x0300], NFKC: [0x1F6A], NFKD: [0x03A9, 0x0313, 0x0300] },
+{ source: [0x1F6B], NFC: [0x1F6B], NFD: [0x03A9, 0x0314, 0x0300], NFKC: [0x1F6B], NFKD: [0x03A9, 0x0314, 0x0300] },
+{ source: [0x1F6C], NFC: [0x1F6C], NFD: [0x03A9, 0x0313, 0x0301], NFKC: [0x1F6C], NFKD: [0x03A9, 0x0313, 0x0301] },
+{ source: [0x1F6D], NFC: [0x1F6D], NFD: [0x03A9, 0x0314, 0x0301], NFKC: [0x1F6D], NFKD: [0x03A9, 0x0314, 0x0301] },
+{ source: [0x1F6E], NFC: [0x1F6E], NFD: [0x03A9, 0x0313, 0x0342], NFKC: [0x1F6E], NFKD: [0x03A9, 0x0313, 0x0342] },
+{ source: [0x1F6F], NFC: [0x1F6F], NFD: [0x03A9, 0x0314, 0x0342], NFKC: [0x1F6F], NFKD: [0x03A9, 0x0314, 0x0342] },
+{ source: [0x1F70], NFC: [0x1F70], NFD: [0x03B1, 0x0300], NFKC: [0x1F70], NFKD: [0x03B1, 0x0300] },
+{ source: [0x1F71], NFC: [0x03AC], NFD: [0x03B1, 0x0301], NFKC: [0x03AC], NFKD: [0x03B1, 0x0301] },
+{ source: [0x1F72], NFC: [0x1F72], NFD: [0x03B5, 0x0300], NFKC: [0x1F72], NFKD: [0x03B5, 0x0300] },
+{ source: [0x1F73], NFC: [0x03AD], NFD: [0x03B5, 0x0301], NFKC: [0x03AD], NFKD: [0x03B5, 0x0301] },
+{ source: [0x1F74], NFC: [0x1F74], NFD: [0x03B7, 0x0300], NFKC: [0x1F74], NFKD: [0x03B7, 0x0300] },
+{ source: [0x1F75], NFC: [0x03AE], NFD: [0x03B7, 0x0301], NFKC: [0x03AE], NFKD: [0x03B7, 0x0301] },
+{ source: [0x1F76], NFC: [0x1F76], NFD: [0x03B9, 0x0300], NFKC: [0x1F76], NFKD: [0x03B9, 0x0300] },
+{ source: [0x1F77], NFC: [0x03AF], NFD: [0x03B9, 0x0301], NFKC: [0x03AF], NFKD: [0x03B9, 0x0301] },
+{ source: [0x1F78], NFC: [0x1F78], NFD: [0x03BF, 0x0300], NFKC: [0x1F78], NFKD: [0x03BF, 0x0300] },
+{ source: [0x1F79], NFC: [0x03CC], NFD: [0x03BF, 0x0301], NFKC: [0x03CC], NFKD: [0x03BF, 0x0301] },
+{ source: [0x1F7A], NFC: [0x1F7A], NFD: [0x03C5, 0x0300], NFKC: [0x1F7A], NFKD: [0x03C5, 0x0300] },
+{ source: [0x1F7B], NFC: [0x03CD], NFD: [0x03C5, 0x0301], NFKC: [0x03CD], NFKD: [0x03C5, 0x0301] },
+{ source: [0x1F7C], NFC: [0x1F7C], NFD: [0x03C9, 0x0300], NFKC: [0x1F7C], NFKD: [0x03C9, 0x0300] },
+{ source: [0x1F7D], NFC: [0x03CE], NFD: [0x03C9, 0x0301], NFKC: [0x03CE], NFKD: [0x03C9, 0x0301] },
+{ source: [0x1F80], NFC: [0x1F80], NFD: [0x03B1, 0x0313, 0x0345], NFKC: [0x1F80], NFKD: [0x03B1, 0x0313, 0x0345] },
+{ source: [0x1F81], NFC: [0x1F81], NFD: [0x03B1, 0x0314, 0x0345], NFKC: [0x1F81], NFKD: [0x03B1, 0x0314, 0x0345] },
+{ source: [0x1F82], NFC: [0x1F82], NFD: [0x03B1, 0x0313, 0x0300, 0x0345], NFKC: [0x1F82], NFKD: [0x03B1, 0x0313, 0x0300, 0x0345] },
+{ source: [0x1F83], NFC: [0x1F83], NFD: [0x03B1, 0x0314, 0x0300, 0x0345], NFKC: [0x1F83], NFKD: [0x03B1, 0x0314, 0x0300, 0x0345] },
+{ source: [0x1F84], NFC: [0x1F84], NFD: [0x03B1, 0x0313, 0x0301, 0x0345], NFKC: [0x1F84], NFKD: [0x03B1, 0x0313, 0x0301, 0x0345] },
+{ source: [0x1F85], NFC: [0x1F85], NFD: [0x03B1, 0x0314, 0x0301, 0x0345], NFKC: [0x1F85], NFKD: [0x03B1, 0x0314, 0x0301, 0x0345] },
+{ source: [0x1F86], NFC: [0x1F86], NFD: [0x03B1, 0x0313, 0x0342, 0x0345], NFKC: [0x1F86], NFKD: [0x03B1, 0x0313, 0x0342, 0x0345] },
+{ source: [0x1F87], NFC: [0x1F87], NFD: [0x03B1, 0x0314, 0x0342, 0x0345], NFKC: [0x1F87], NFKD: [0x03B1, 0x0314, 0x0342, 0x0345] },
+{ source: [0x1F88], NFC: [0x1F88], NFD: [0x0391, 0x0313, 0x0345], NFKC: [0x1F88], NFKD: [0x0391, 0x0313, 0x0345] },
+{ source: [0x1F89], NFC: [0x1F89], NFD: [0x0391, 0x0314, 0x0345], NFKC: [0x1F89], NFKD: [0x0391, 0x0314, 0x0345] },
+{ source: [0x1F8A], NFC: [0x1F8A], NFD: [0x0391, 0x0313, 0x0300, 0x0345], NFKC: [0x1F8A], NFKD: [0x0391, 0x0313, 0x0300, 0x0345] },
+{ source: [0x1F8B], NFC: [0x1F8B], NFD: [0x0391, 0x0314, 0x0300, 0x0345], NFKC: [0x1F8B], NFKD: [0x0391, 0x0314, 0x0300, 0x0345] },
+{ source: [0x1F8C], NFC: [0x1F8C], NFD: [0x0391, 0x0313, 0x0301, 0x0345], NFKC: [0x1F8C], NFKD: [0x0391, 0x0313, 0x0301, 0x0345] },
+{ source: [0x1F8D], NFC: [0x1F8D], NFD: [0x0391, 0x0314, 0x0301, 0x0345], NFKC: [0x1F8D], NFKD: [0x0391, 0x0314, 0x0301, 0x0345] },
+{ source: [0x1F8E], NFC: [0x1F8E], NFD: [0x0391, 0x0313, 0x0342, 0x0345], NFKC: [0x1F8E], NFKD: [0x0391, 0x0313, 0x0342, 0x0345] },
+{ source: [0x1F8F], NFC: [0x1F8F], NFD: [0x0391, 0x0314, 0x0342, 0x0345], NFKC: [0x1F8F], NFKD: [0x0391, 0x0314, 0x0342, 0x0345] },
+{ source: [0x1F90], NFC: [0x1F90], NFD: [0x03B7, 0x0313, 0x0345], NFKC: [0x1F90], NFKD: [0x03B7, 0x0313, 0x0345] },
+{ source: [0x1F91], NFC: [0x1F91], NFD: [0x03B7, 0x0314, 0x0345], NFKC: [0x1F91], NFKD: [0x03B7, 0x0314, 0x0345] },
+{ source: [0x1F92], NFC: [0x1F92], NFD: [0x03B7, 0x0313, 0x0300, 0x0345], NFKC: [0x1F92], NFKD: [0x03B7, 0x0313, 0x0300, 0x0345] },
+{ source: [0x1F93], NFC: [0x1F93], NFD: [0x03B7, 0x0314, 0x0300, 0x0345], NFKC: [0x1F93], NFKD: [0x03B7, 0x0314, 0x0300, 0x0345] },
+{ source: [0x1F94], NFC: [0x1F94], NFD: [0x03B7, 0x0313, 0x0301, 0x0345], NFKC: [0x1F94], NFKD: [0x03B7, 0x0313, 0x0301, 0x0345] },
+{ source: [0x1F95], NFC: [0x1F95], NFD: [0x03B7, 0x0314, 0x0301, 0x0345], NFKC: [0x1F95], NFKD: [0x03B7, 0x0314, 0x0301, 0x0345] },
+{ source: [0x1F96], NFC: [0x1F96], NFD: [0x03B7, 0x0313, 0x0342, 0x0345], NFKC: [0x1F96], NFKD: [0x03B7, 0x0313, 0x0342, 0x0345] },
+{ source: [0x1F97], NFC: [0x1F97], NFD: [0x03B7, 0x0314, 0x0342, 0x0345], NFKC: [0x1F97], NFKD: [0x03B7, 0x0314, 0x0342, 0x0345] },
+{ source: [0x1F98], NFC: [0x1F98], NFD: [0x0397, 0x0313, 0x0345], NFKC: [0x1F98], NFKD: [0x0397, 0x0313, 0x0345] },
+{ source: [0x1F99], NFC: [0x1F99], NFD: [0x0397, 0x0314, 0x0345], NFKC: [0x1F99], NFKD: [0x0397, 0x0314, 0x0345] },
+{ source: [0x1F9A], NFC: [0x1F9A], NFD: [0x0397, 0x0313, 0x0300, 0x0345], NFKC: [0x1F9A], NFKD: [0x0397, 0x0313, 0x0300, 0x0345] },
+{ source: [0x1F9B], NFC: [0x1F9B], NFD: [0x0397, 0x0314, 0x0300, 0x0345], NFKC: [0x1F9B], NFKD: [0x0397, 0x0314, 0x0300, 0x0345] },
+{ source: [0x1F9C], NFC: [0x1F9C], NFD: [0x0397, 0x0313, 0x0301, 0x0345], NFKC: [0x1F9C], NFKD: [0x0397, 0x0313, 0x0301, 0x0345] },
+{ source: [0x1F9D], NFC: [0x1F9D], NFD: [0x0397, 0x0314, 0x0301, 0x0345], NFKC: [0x1F9D], NFKD: [0x0397, 0x0314, 0x0301, 0x0345] },
+{ source: [0x1F9E], NFC: [0x1F9E], NFD: [0x0397, 0x0313, 0x0342, 0x0345], NFKC: [0x1F9E], NFKD: [0x0397, 0x0313, 0x0342, 0x0345] },
+{ source: [0x1F9F], NFC: [0x1F9F], NFD: [0x0397, 0x0314, 0x0342, 0x0345], NFKC: [0x1F9F], NFKD: [0x0397, 0x0314, 0x0342, 0x0345] },
+{ source: [0x1FA0], NFC: [0x1FA0], NFD: [0x03C9, 0x0313, 0x0345], NFKC: [0x1FA0], NFKD: [0x03C9, 0x0313, 0x0345] },
+{ source: [0x1FA1], NFC: [0x1FA1], NFD: [0x03C9, 0x0314, 0x0345], NFKC: [0x1FA1], NFKD: [0x03C9, 0x0314, 0x0345] },
+{ source: [0x1FA2], NFC: [0x1FA2], NFD: [0x03C9, 0x0313, 0x0300, 0x0345], NFKC: [0x1FA2], NFKD: [0x03C9, 0x0313, 0x0300, 0x0345] },
+{ source: [0x1FA3], NFC: [0x1FA3], NFD: [0x03C9, 0x0314, 0x0300, 0x0345], NFKC: [0x1FA3], NFKD: [0x03C9, 0x0314, 0x0300, 0x0345] },
+{ source: [0x1FA4], NFC: [0x1FA4], NFD: [0x03C9, 0x0313, 0x0301, 0x0345], NFKC: [0x1FA4], NFKD: [0x03C9, 0x0313, 0x0301, 0x0345] },
+{ source: [0x1FA5], NFC: [0x1FA5], NFD: [0x03C9, 0x0314, 0x0301, 0x0345], NFKC: [0x1FA5], NFKD: [0x03C9, 0x0314, 0x0301, 0x0345] },
+{ source: [0x1FA6], NFC: [0x1FA6], NFD: [0x03C9, 0x0313, 0x0342, 0x0345], NFKC: [0x1FA6], NFKD: [0x03C9, 0x0313, 0x0342, 0x0345] },
+{ source: [0x1FA7], NFC: [0x1FA7], NFD: [0x03C9, 0x0314, 0x0342, 0x0345], NFKC: [0x1FA7], NFKD: [0x03C9, 0x0314, 0x0342, 0x0345] },
+{ source: [0x1FA8], NFC: [0x1FA8], NFD: [0x03A9, 0x0313, 0x0345], NFKC: [0x1FA8], NFKD: [0x03A9, 0x0313, 0x0345] },
+{ source: [0x1FA9], NFC: [0x1FA9], NFD: [0x03A9, 0x0314, 0x0345], NFKC: [0x1FA9], NFKD: [0x03A9, 0x0314, 0x0345] },
+{ source: [0x1FAA], NFC: [0x1FAA], NFD: [0x03A9, 0x0313, 0x0300, 0x0345], NFKC: [0x1FAA], NFKD: [0x03A9, 0x0313, 0x0300, 0x0345] },
+{ source: [0x1FAB], NFC: [0x1FAB], NFD: [0x03A9, 0x0314, 0x0300, 0x0345], NFKC: [0x1FAB], NFKD: [0x03A9, 0x0314, 0x0300, 0x0345] },
+{ source: [0x1FAC], NFC: [0x1FAC], NFD: [0x03A9, 0x0313, 0x0301, 0x0345], NFKC: [0x1FAC], NFKD: [0x03A9, 0x0313, 0x0301, 0x0345] },
+{ source: [0x1FAD], NFC: [0x1FAD], NFD: [0x03A9, 0x0314, 0x0301, 0x0345], NFKC: [0x1FAD], NFKD: [0x03A9, 0x0314, 0x0301, 0x0345] },
+{ source: [0x1FAE], NFC: [0x1FAE], NFD: [0x03A9, 0x0313, 0x0342, 0x0345], NFKC: [0x1FAE], NFKD: [0x03A9, 0x0313, 0x0342, 0x0345] },
+{ source: [0x1FAF], NFC: [0x1FAF], NFD: [0x03A9, 0x0314, 0x0342, 0x0345], NFKC: [0x1FAF], NFKD: [0x03A9, 0x0314, 0x0342, 0x0345] },
+{ source: [0x1FB0], NFC: [0x1FB0], NFD: [0x03B1, 0x0306], NFKC: [0x1FB0], NFKD: [0x03B1, 0x0306] },
+{ source: [0x1FB1], NFC: [0x1FB1], NFD: [0x03B1, 0x0304], NFKC: [0x1FB1], NFKD: [0x03B1, 0x0304] },
+{ source: [0x1FB2], NFC: [0x1FB2], NFD: [0x03B1, 0x0300, 0x0345], NFKC: [0x1FB2], NFKD: [0x03B1, 0x0300, 0x0345] },
+{ source: [0x1FB3], NFC: [0x1FB3], NFD: [0x03B1, 0x0345], NFKC: [0x1FB3], NFKD: [0x03B1, 0x0345] },
+{ source: [0x1FB4], NFC: [0x1FB4], NFD: [0x03B1, 0x0301, 0x0345], NFKC: [0x1FB4], NFKD: [0x03B1, 0x0301, 0x0345] },
+{ source: [0x1FB6], NFC: [0x1FB6], NFD: [0x03B1, 0x0342], NFKC: [0x1FB6], NFKD: [0x03B1, 0x0342] },
+{ source: [0x1FB7], NFC: [0x1FB7], NFD: [0x03B1, 0x0342, 0x0345], NFKC: [0x1FB7], NFKD: [0x03B1, 0x0342, 0x0345] },
+{ source: [0x1FB8], NFC: [0x1FB8], NFD: [0x0391, 0x0306], NFKC: [0x1FB8], NFKD: [0x0391, 0x0306] },
+{ source: [0x1FB9], NFC: [0x1FB9], NFD: [0x0391, 0x0304], NFKC: [0x1FB9], NFKD: [0x0391, 0x0304] },
+{ source: [0x1FBA], NFC: [0x1FBA], NFD: [0x0391, 0x0300], NFKC: [0x1FBA], NFKD: [0x0391, 0x0300] },
+{ source: [0x1FBB], NFC: [0x0386], NFD: [0x0391, 0x0301], NFKC: [0x0386], NFKD: [0x0391, 0x0301] },
+{ source: [0x1FBC], NFC: [0x1FBC], NFD: [0x0391, 0x0345], NFKC: [0x1FBC], NFKD: [0x0391, 0x0345] },
+{ source: [0x1FBD], NFC: [0x1FBD], NFD: [0x1FBD], NFKC: [0x0020, 0x0313], NFKD: [0x0020, 0x0313] },
+{ source: [0x1FBE], NFC: [0x03B9], NFD: [0x03B9], NFKC: [0x03B9], NFKD: [0x03B9] },
+{ source: [0x1FBF], NFC: [0x1FBF], NFD: [0x1FBF], NFKC: [0x0020, 0x0313], NFKD: [0x0020, 0x0313] },
+{ source: [0x1FC0], NFC: [0x1FC0], NFD: [0x1FC0], NFKC: [0x0020, 0x0342], NFKD: [0x0020, 0x0342] },
+{ source: [0x1FC1], NFC: [0x1FC1], NFD: [0x00A8, 0x0342], NFKC: [0x0020, 0x0308, 0x0342], NFKD: [0x0020, 0x0308, 0x0342] },
+{ source: [0x1FC2], NFC: [0x1FC2], NFD: [0x03B7, 0x0300, 0x0345], NFKC: [0x1FC2], NFKD: [0x03B7, 0x0300, 0x0345] },
+{ source: [0x1FC3], NFC: [0x1FC3], NFD: [0x03B7, 0x0345], NFKC: [0x1FC3], NFKD: [0x03B7, 0x0345] },
+{ source: [0x1FC4], NFC: [0x1FC4], NFD: [0x03B7, 0x0301, 0x0345], NFKC: [0x1FC4], NFKD: [0x03B7, 0x0301, 0x0345] },
+{ source: [0x1FC6], NFC: [0x1FC6], NFD: [0x03B7, 0x0342], NFKC: [0x1FC6], NFKD: [0x03B7, 0x0342] },
+{ source: [0x1FC7], NFC: [0x1FC7], NFD: [0x03B7, 0x0342, 0x0345], NFKC: [0x1FC7], NFKD: [0x03B7, 0x0342, 0x0345] },
+{ source: [0x1FC8], NFC: [0x1FC8], NFD: [0x0395, 0x0300], NFKC: [0x1FC8], NFKD: [0x0395, 0x0300] },
+{ source: [0x1FC9], NFC: [0x0388], NFD: [0x0395, 0x0301], NFKC: [0x0388], NFKD: [0x0395, 0x0301] },
+{ source: [0x1FCA], NFC: [0x1FCA], NFD: [0x0397, 0x0300], NFKC: [0x1FCA], NFKD: [0x0397, 0x0300] },
+{ source: [0x1FCB], NFC: [0x0389], NFD: [0x0397, 0x0301], NFKC: [0x0389], NFKD: [0x0397, 0x0301] },
+{ source: [0x1FCC], NFC: [0x1FCC], NFD: [0x0397, 0x0345], NFKC: [0x1FCC], NFKD: [0x0397, 0x0345] },
+{ source: [0x1FCD], NFC: [0x1FCD], NFD: [0x1FBF, 0x0300], NFKC: [0x0020, 0x0313, 0x0300], NFKD: [0x0020, 0x0313, 0x0300] },
+{ source: [0x1FCE], NFC: [0x1FCE], NFD: [0x1FBF, 0x0301], NFKC: [0x0020, 0x0313, 0x0301], NFKD: [0x0020, 0x0313, 0x0301] },
+{ source: [0x1FCF], NFC: [0x1FCF], NFD: [0x1FBF, 0x0342], NFKC: [0x0020, 0x0313, 0x0342], NFKD: [0x0020, 0x0313, 0x0342] },
+{ source: [0x1FD0], NFC: [0x1FD0], NFD: [0x03B9, 0x0306], NFKC: [0x1FD0], NFKD: [0x03B9, 0x0306] },
+{ source: [0x1FD1], NFC: [0x1FD1], NFD: [0x03B9, 0x0304], NFKC: [0x1FD1], NFKD: [0x03B9, 0x0304] },
+{ source: [0x1FD2], NFC: [0x1FD2], NFD: [0x03B9, 0x0308, 0x0300], NFKC: [0x1FD2], NFKD: [0x03B9, 0x0308, 0x0300] },
+{ source: [0x1FD3], NFC: [0x0390], NFD: [0x03B9, 0x0308, 0x0301], NFKC: [0x0390], NFKD: [0x03B9, 0x0308, 0x0301] },
+{ source: [0x1FD6], NFC: [0x1FD6], NFD: [0x03B9, 0x0342], NFKC: [0x1FD6], NFKD: [0x03B9, 0x0342] },
+{ source: [0x1FD7], NFC: [0x1FD7], NFD: [0x03B9, 0x0308, 0x0342], NFKC: [0x1FD7], NFKD: [0x03B9, 0x0308, 0x0342] },
+{ source: [0x1FD8], NFC: [0x1FD8], NFD: [0x0399, 0x0306], NFKC: [0x1FD8], NFKD: [0x0399, 0x0306] },
+{ source: [0x1FD9], NFC: [0x1FD9], NFD: [0x0399, 0x0304], NFKC: [0x1FD9], NFKD: [0x0399, 0x0304] },
+{ source: [0x1FDA], NFC: [0x1FDA], NFD: [0x0399, 0x0300], NFKC: [0x1FDA], NFKD: [0x0399, 0x0300] },
+{ source: [0x1FDB], NFC: [0x038A], NFD: [0x0399, 0x0301], NFKC: [0x038A], NFKD: [0x0399, 0x0301] },
+{ source: [0x1FDD], NFC: [0x1FDD], NFD: [0x1FFE, 0x0300], NFKC: [0x0020, 0x0314, 0x0300], NFKD: [0x0020, 0x0314, 0x0300] },
+{ source: [0x1FDE], NFC: [0x1FDE], NFD: [0x1FFE, 0x0301], NFKC: [0x0020, 0x0314, 0x0301], NFKD: [0x0020, 0x0314, 0x0301] },
+{ source: [0x1FDF], NFC: [0x1FDF], NFD: [0x1FFE, 0x0342], NFKC: [0x0020, 0x0314, 0x0342], NFKD: [0x0020, 0x0314, 0x0342] },
+{ source: [0x1FE0], NFC: [0x1FE0], NFD: [0x03C5, 0x0306], NFKC: [0x1FE0], NFKD: [0x03C5, 0x0306] },
+{ source: [0x1FE1], NFC: [0x1FE1], NFD: [0x03C5, 0x0304], NFKC: [0x1FE1], NFKD: [0x03C5, 0x0304] },
+{ source: [0x1FE2], NFC: [0x1FE2], NFD: [0x03C5, 0x0308, 0x0300], NFKC: [0x1FE2], NFKD: [0x03C5, 0x0308, 0x0300] },
+{ source: [0x1FE3], NFC: [0x03B0], NFD: [0x03C5, 0x0308, 0x0301], NFKC: [0x03B0], NFKD: [0x03C5, 0x0308, 0x0301] },
+{ source: [0x1FE4], NFC: [0x1FE4], NFD: [0x03C1, 0x0313], NFKC: [0x1FE4], NFKD: [0x03C1, 0x0313] },
+{ source: [0x1FE5], NFC: [0x1FE5], NFD: [0x03C1, 0x0314], NFKC: [0x1FE5], NFKD: [0x03C1, 0x0314] },
+{ source: [0x1FE6], NFC: [0x1FE6], NFD: [0x03C5, 0x0342], NFKC: [0x1FE6], NFKD: [0x03C5, 0x0342] },
+{ source: [0x1FE7], NFC: [0x1FE7], NFD: [0x03C5, 0x0308, 0x0342], NFKC: [0x1FE7], NFKD: [0x03C5, 0x0308, 0x0342] },
+{ source: [0x1FE8], NFC: [0x1FE8], NFD: [0x03A5, 0x0306], NFKC: [0x1FE8], NFKD: [0x03A5, 0x0306] },
+{ source: [0x1FE9], NFC: [0x1FE9], NFD: [0x03A5, 0x0304], NFKC: [0x1FE9], NFKD: [0x03A5, 0x0304] },
+{ source: [0x1FEA], NFC: [0x1FEA], NFD: [0x03A5, 0x0300], NFKC: [0x1FEA], NFKD: [0x03A5, 0x0300] },
+{ source: [0x1FEB], NFC: [0x038E], NFD: [0x03A5, 0x0301], NFKC: [0x038E], NFKD: [0x03A5, 0x0301] },
+{ source: [0x1FEC], NFC: [0x1FEC], NFD: [0x03A1, 0x0314], NFKC: [0x1FEC], NFKD: [0x03A1, 0x0314] },
+{ source: [0x1FED], NFC: [0x1FED], NFD: [0x00A8, 0x0300], NFKC: [0x0020, 0x0308, 0x0300], NFKD: [0x0020, 0x0308, 0x0300] },
+{ source: [0x1FEE], NFC: [0x0385], NFD: [0x00A8, 0x0301], NFKC: [0x0020, 0x0308, 0x0301], NFKD: [0x0020, 0x0308, 0x0301] },
+{ source: [0x1FEF], NFC: [0x0060], NFD: [0x0060], NFKC: [0x0060], NFKD: [0x0060] },
+{ source: [0x1FF2], NFC: [0x1FF2], NFD: [0x03C9, 0x0300, 0x0345], NFKC: [0x1FF2], NFKD: [0x03C9, 0x0300, 0x0345] },
+{ source: [0x1FF3], NFC: [0x1FF3], NFD: [0x03C9, 0x0345], NFKC: [0x1FF3], NFKD: [0x03C9, 0x0345] },
+{ source: [0x1FF4], NFC: [0x1FF4], NFD: [0x03C9, 0x0301, 0x0345], NFKC: [0x1FF4], NFKD: [0x03C9, 0x0301, 0x0345] },
+{ source: [0x1FF6], NFC: [0x1FF6], NFD: [0x03C9, 0x0342], NFKC: [0x1FF6], NFKD: [0x03C9, 0x0342] },
+{ source: [0x1FF7], NFC: [0x1FF7], NFD: [0x03C9, 0x0342, 0x0345], NFKC: [0x1FF7], NFKD: [0x03C9, 0x0342, 0x0345] },
+{ source: [0x1FF8], NFC: [0x1FF8], NFD: [0x039F, 0x0300], NFKC: [0x1FF8], NFKD: [0x039F, 0x0300] },
+{ source: [0x1FF9], NFC: [0x038C], NFD: [0x039F, 0x0301], NFKC: [0x038C], NFKD: [0x039F, 0x0301] },
+{ source: [0x1FFA], NFC: [0x1FFA], NFD: [0x03A9, 0x0300], NFKC: [0x1FFA], NFKD: [0x03A9, 0x0300] },
+{ source: [0x1FFB], NFC: [0x038F], NFD: [0x03A9, 0x0301], NFKC: [0x038F], NFKD: [0x03A9, 0x0301] },
+{ source: [0x1FFC], NFC: [0x1FFC], NFD: [0x03A9, 0x0345], NFKC: [0x1FFC], NFKD: [0x03A9, 0x0345] },
+{ source: [0x1FFD], NFC: [0x00B4], NFD: [0x00B4], NFKC: [0x0020, 0x0301], NFKD: [0x0020, 0x0301] },
+{ source: [0x1FFE], NFC: [0x1FFE], NFD: [0x1FFE], NFKC: [0x0020, 0x0314], NFKD: [0x0020, 0x0314] },
+{ source: [0x2000], NFC: [0x2002], NFD: [0x2002], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x2001], NFC: [0x2003], NFD: [0x2003], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x2002], NFC: [0x2002], NFD: [0x2002], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x2003], NFC: [0x2003], NFD: [0x2003], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x2004], NFC: [0x2004], NFD: [0x2004], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x2005], NFC: [0x2005], NFD: [0x2005], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x2006], NFC: [0x2006], NFD: [0x2006], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x2007], NFC: [0x2007], NFD: [0x2007], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x2008], NFC: [0x2008], NFD: [0x2008], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x2009], NFC: [0x2009], NFD: [0x2009], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x200A], NFC: [0x200A], NFD: [0x200A], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x2011], NFC: [0x2011], NFD: [0x2011], NFKC: [0x2010], NFKD: [0x2010] },
+{ source: [0x2017], NFC: [0x2017], NFD: [0x2017], NFKC: [0x0020, 0x0333], NFKD: [0x0020, 0x0333] },
+{ source: [0x2024], NFC: [0x2024], NFD: [0x2024], NFKC: [0x002E], NFKD: [0x002E] },
+{ source: [0x2025], NFC: [0x2025], NFD: [0x2025], NFKC: [0x002E, 0x002E], NFKD: [0x002E, 0x002E] },
+{ source: [0x2026], NFC: [0x2026], NFD: [0x2026], NFKC: [0x002E, 0x002E, 0x002E], NFKD: [0x002E, 0x002E, 0x002E] },
+{ source: [0x202F], NFC: [0x202F], NFD: [0x202F], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x2033], NFC: [0x2033], NFD: [0x2033], NFKC: [0x2032, 0x2032], NFKD: [0x2032, 0x2032] },
+{ source: [0x2034], NFC: [0x2034], NFD: [0x2034], NFKC: [0x2032, 0x2032, 0x2032], NFKD: [0x2032, 0x2032, 0x2032] },
+{ source: [0x2036], NFC: [0x2036], NFD: [0x2036], NFKC: [0x2035, 0x2035], NFKD: [0x2035, 0x2035] },
+{ source: [0x2037], NFC: [0x2037], NFD: [0x2037], NFKC: [0x2035, 0x2035, 0x2035], NFKD: [0x2035, 0x2035, 0x2035] },
+{ source: [0x203C], NFC: [0x203C], NFD: [0x203C], NFKC: [0x0021, 0x0021], NFKD: [0x0021, 0x0021] },
+{ source: [0x203E], NFC: [0x203E], NFD: [0x203E], NFKC: [0x0020, 0x0305], NFKD: [0x0020, 0x0305] },
+{ source: [0x2047], NFC: [0x2047], NFD: [0x2047], NFKC: [0x003F, 0x003F], NFKD: [0x003F, 0x003F] },
+{ source: [0x2048], NFC: [0x2048], NFD: [0x2048], NFKC: [0x003F, 0x0021], NFKD: [0x003F, 0x0021] },
+{ source: [0x2049], NFC: [0x2049], NFD: [0x2049], NFKC: [0x0021, 0x003F], NFKD: [0x0021, 0x003F] },
+{ source: [0x2057], NFC: [0x2057], NFD: [0x2057], NFKC: [0x2032, 0x2032, 0x2032, 0x2032], NFKD: [0x2032, 0x2032, 0x2032, 0x2032] },
+{ source: [0x205F], NFC: [0x205F], NFD: [0x205F], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x2070], NFC: [0x2070], NFD: [0x2070], NFKC: [0x0030], NFKD: [0x0030] },
+{ source: [0x2071], NFC: [0x2071], NFD: [0x2071], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x2074], NFC: [0x2074], NFD: [0x2074], NFKC: [0x0034], NFKD: [0x0034] },
+{ source: [0x2075], NFC: [0x2075], NFD: [0x2075], NFKC: [0x0035], NFKD: [0x0035] },
+{ source: [0x2076], NFC: [0x2076], NFD: [0x2076], NFKC: [0x0036], NFKD: [0x0036] },
+{ source: [0x2077], NFC: [0x2077], NFD: [0x2077], NFKC: [0x0037], NFKD: [0x0037] },
+{ source: [0x2078], NFC: [0x2078], NFD: [0x2078], NFKC: [0x0038], NFKD: [0x0038] },
+{ source: [0x2079], NFC: [0x2079], NFD: [0x2079], NFKC: [0x0039], NFKD: [0x0039] },
+{ source: [0x207A], NFC: [0x207A], NFD: [0x207A], NFKC: [0x002B], NFKD: [0x002B] },
+{ source: [0x207B], NFC: [0x207B], NFD: [0x207B], NFKC: [0x2212], NFKD: [0x2212] },
+{ source: [0x207C], NFC: [0x207C], NFD: [0x207C], NFKC: [0x003D], NFKD: [0x003D] },
+{ source: [0x207D], NFC: [0x207D], NFD: [0x207D], NFKC: [0x0028], NFKD: [0x0028] },
+{ source: [0x207E], NFC: [0x207E], NFD: [0x207E], NFKC: [0x0029], NFKD: [0x0029] },
+{ source: [0x207F], NFC: [0x207F], NFD: [0x207F], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x2080], NFC: [0x2080], NFD: [0x2080], NFKC: [0x0030], NFKD: [0x0030] },
+{ source: [0x2081], NFC: [0x2081], NFD: [0x2081], NFKC: [0x0031], NFKD: [0x0031] },
+{ source: [0x2082], NFC: [0x2082], NFD: [0x2082], NFKC: [0x0032], NFKD: [0x0032] },
+{ source: [0x2083], NFC: [0x2083], NFD: [0x2083], NFKC: [0x0033], NFKD: [0x0033] },
+{ source: [0x2084], NFC: [0x2084], NFD: [0x2084], NFKC: [0x0034], NFKD: [0x0034] },
+{ source: [0x2085], NFC: [0x2085], NFD: [0x2085], NFKC: [0x0035], NFKD: [0x0035] },
+{ source: [0x2086], NFC: [0x2086], NFD: [0x2086], NFKC: [0x0036], NFKD: [0x0036] },
+{ source: [0x2087], NFC: [0x2087], NFD: [0x2087], NFKC: [0x0037], NFKD: [0x0037] },
+{ source: [0x2088], NFC: [0x2088], NFD: [0x2088], NFKC: [0x0038], NFKD: [0x0038] },
+{ source: [0x2089], NFC: [0x2089], NFD: [0x2089], NFKC: [0x0039], NFKD: [0x0039] },
+{ source: [0x208A], NFC: [0x208A], NFD: [0x208A], NFKC: [0x002B], NFKD: [0x002B] },
+{ source: [0x208B], NFC: [0x208B], NFD: [0x208B], NFKC: [0x2212], NFKD: [0x2212] },
+{ source: [0x208C], NFC: [0x208C], NFD: [0x208C], NFKC: [0x003D], NFKD: [0x003D] },
+{ source: [0x208D], NFC: [0x208D], NFD: [0x208D], NFKC: [0x0028], NFKD: [0x0028] },
+{ source: [0x208E], NFC: [0x208E], NFD: [0x208E], NFKC: [0x0029], NFKD: [0x0029] },
+{ source: [0x2090], NFC: [0x2090], NFD: [0x2090], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x2091], NFC: [0x2091], NFD: [0x2091], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x2092], NFC: [0x2092], NFD: [0x2092], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x2093], NFC: [0x2093], NFD: [0x2093], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x2094], NFC: [0x2094], NFD: [0x2094], NFKC: [0x0259], NFKD: [0x0259] },
+{ source: [0x2095], NFC: [0x2095], NFD: [0x2095], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x2096], NFC: [0x2096], NFD: [0x2096], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x2097], NFC: [0x2097], NFD: [0x2097], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x2098], NFC: [0x2098], NFD: [0x2098], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x2099], NFC: [0x2099], NFD: [0x2099], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x209A], NFC: [0x209A], NFD: [0x209A], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x209B], NFC: [0x209B], NFD: [0x209B], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x209C], NFC: [0x209C], NFD: [0x209C], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x20A8], NFC: [0x20A8], NFD: [0x20A8], NFKC: [0x0052, 0x0073], NFKD: [0x0052, 0x0073] },
+{ source: [0x2100], NFC: [0x2100], NFD: [0x2100], NFKC: [0x0061, 0x002F, 0x0063], NFKD: [0x0061, 0x002F, 0x0063] },
+{ source: [0x2101], NFC: [0x2101], NFD: [0x2101], NFKC: [0x0061, 0x002F, 0x0073], NFKD: [0x0061, 0x002F, 0x0073] },
+{ source: [0x2102], NFC: [0x2102], NFD: [0x2102], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x2103], NFC: [0x2103], NFD: [0x2103], NFKC: [0x00B0, 0x0043], NFKD: [0x00B0, 0x0043] },
+{ source: [0x2105], NFC: [0x2105], NFD: [0x2105], NFKC: [0x0063, 0x002F, 0x006F], NFKD: [0x0063, 0x002F, 0x006F] },
+{ source: [0x2106], NFC: [0x2106], NFD: [0x2106], NFKC: [0x0063, 0x002F, 0x0075], NFKD: [0x0063, 0x002F, 0x0075] },
+{ source: [0x2107], NFC: [0x2107], NFD: [0x2107], NFKC: [0x0190], NFKD: [0x0190] },
+{ source: [0x2109], NFC: [0x2109], NFD: [0x2109], NFKC: [0x00B0, 0x0046], NFKD: [0x00B0, 0x0046] },
+{ source: [0x210A], NFC: [0x210A], NFD: [0x210A], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x210B], NFC: [0x210B], NFD: [0x210B], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x210C], NFC: [0x210C], NFD: [0x210C], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x210D], NFC: [0x210D], NFD: [0x210D], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x210E], NFC: [0x210E], NFD: [0x210E], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x210F], NFC: [0x210F], NFD: [0x210F], NFKC: [0x0127], NFKD: [0x0127] },
+{ source: [0x2110], NFC: [0x2110], NFD: [0x2110], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x2111], NFC: [0x2111], NFD: [0x2111], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x2112], NFC: [0x2112], NFD: [0x2112], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x2113], NFC: [0x2113], NFD: [0x2113], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x2115], NFC: [0x2115], NFD: [0x2115], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x2116], NFC: [0x2116], NFD: [0x2116], NFKC: [0x004E, 0x006F], NFKD: [0x004E, 0x006F] },
+{ source: [0x2119], NFC: [0x2119], NFD: [0x2119], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x211A], NFC: [0x211A], NFD: [0x211A], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x211B], NFC: [0x211B], NFD: [0x211B], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x211C], NFC: [0x211C], NFD: [0x211C], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x211D], NFC: [0x211D], NFD: [0x211D], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x2120], NFC: [0x2120], NFD: [0x2120], NFKC: [0x0053, 0x004D], NFKD: [0x0053, 0x004D] },
+{ source: [0x2121], NFC: [0x2121], NFD: [0x2121], NFKC: [0x0054, 0x0045, 0x004C], NFKD: [0x0054, 0x0045, 0x004C] },
+{ source: [0x2122], NFC: [0x2122], NFD: [0x2122], NFKC: [0x0054, 0x004D], NFKD: [0x0054, 0x004D] },
+{ source: [0x2124], NFC: [0x2124], NFD: [0x2124], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x2126], NFC: [0x03A9], NFD: [0x03A9], NFKC: [0x03A9], NFKD: [0x03A9] },
+{ source: [0x2128], NFC: [0x2128], NFD: [0x2128], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x212A], NFC: [0x004B], NFD: [0x004B], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x212B], NFC: [0x00C5], NFD: [0x0041, 0x030A], NFKC: [0x00C5], NFKD: [0x0041, 0x030A] },
+{ source: [0x212C], NFC: [0x212C], NFD: [0x212C], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x212D], NFC: [0x212D], NFD: [0x212D], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x212F], NFC: [0x212F], NFD: [0x212F], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x2130], NFC: [0x2130], NFD: [0x2130], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x2131], NFC: [0x2131], NFD: [0x2131], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x2133], NFC: [0x2133], NFD: [0x2133], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x2134], NFC: [0x2134], NFD: [0x2134], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x2135], NFC: [0x2135], NFD: [0x2135], NFKC: [0x05D0], NFKD: [0x05D0] },
+{ source: [0x2136], NFC: [0x2136], NFD: [0x2136], NFKC: [0x05D1], NFKD: [0x05D1] },
+{ source: [0x2137], NFC: [0x2137], NFD: [0x2137], NFKC: [0x05D2], NFKD: [0x05D2] },
+{ source: [0x2138], NFC: [0x2138], NFD: [0x2138], NFKC: [0x05D3], NFKD: [0x05D3] },
+{ source: [0x2139], NFC: [0x2139], NFD: [0x2139], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x213B], NFC: [0x213B], NFD: [0x213B], NFKC: [0x0046, 0x0041, 0x0058], NFKD: [0x0046, 0x0041, 0x0058] },
+{ source: [0x213C], NFC: [0x213C], NFD: [0x213C], NFKC: [0x03C0], NFKD: [0x03C0] },
+{ source: [0x213D], NFC: [0x213D], NFD: [0x213D], NFKC: [0x03B3], NFKD: [0x03B3] },
+{ source: [0x213E], NFC: [0x213E], NFD: [0x213E], NFKC: [0x0393], NFKD: [0x0393] },
+{ source: [0x213F], NFC: [0x213F], NFD: [0x213F], NFKC: [0x03A0], NFKD: [0x03A0] },
+{ source: [0x2140], NFC: [0x2140], NFD: [0x2140], NFKC: [0x2211], NFKD: [0x2211] },
+{ source: [0x2145], NFC: [0x2145], NFD: [0x2145], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x2146], NFC: [0x2146], NFD: [0x2146], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x2147], NFC: [0x2147], NFD: [0x2147], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x2148], NFC: [0x2148], NFD: [0x2148], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x2149], NFC: [0x2149], NFD: [0x2149], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x2150], NFC: [0x2150], NFD: [0x2150], NFKC: [0x0031, 0x2044, 0x0037], NFKD: [0x0031, 0x2044, 0x0037] },
+{ source: [0x2151], NFC: [0x2151], NFD: [0x2151], NFKC: [0x0031, 0x2044, 0x0039], NFKD: [0x0031, 0x2044, 0x0039] },
+{ source: [0x2152], NFC: [0x2152], NFD: [0x2152], NFKC: [0x0031, 0x2044, 0x0031, 0x0030], NFKD: [0x0031, 0x2044, 0x0031, 0x0030] },
+{ source: [0x2153], NFC: [0x2153], NFD: [0x2153], NFKC: [0x0031, 0x2044, 0x0033], NFKD: [0x0031, 0x2044, 0x0033] },
+{ source: [0x2154], NFC: [0x2154], NFD: [0x2154], NFKC: [0x0032, 0x2044, 0x0033], NFKD: [0x0032, 0x2044, 0x0033] },
+{ source: [0x2155], NFC: [0x2155], NFD: [0x2155], NFKC: [0x0031, 0x2044, 0x0035], NFKD: [0x0031, 0x2044, 0x0035] },
+{ source: [0x2156], NFC: [0x2156], NFD: [0x2156], NFKC: [0x0032, 0x2044, 0x0035], NFKD: [0x0032, 0x2044, 0x0035] },
+{ source: [0x2157], NFC: [0x2157], NFD: [0x2157], NFKC: [0x0033, 0x2044, 0x0035], NFKD: [0x0033, 0x2044, 0x0035] },
+{ source: [0x2158], NFC: [0x2158], NFD: [0x2158], NFKC: [0x0034, 0x2044, 0x0035], NFKD: [0x0034, 0x2044, 0x0035] },
+{ source: [0x2159], NFC: [0x2159], NFD: [0x2159], NFKC: [0x0031, 0x2044, 0x0036], NFKD: [0x0031, 0x2044, 0x0036] },
+{ source: [0x215A], NFC: [0x215A], NFD: [0x215A], NFKC: [0x0035, 0x2044, 0x0036], NFKD: [0x0035, 0x2044, 0x0036] },
+{ source: [0x215B], NFC: [0x215B], NFD: [0x215B], NFKC: [0x0031, 0x2044, 0x0038], NFKD: [0x0031, 0x2044, 0x0038] },
+{ source: [0x215C], NFC: [0x215C], NFD: [0x215C], NFKC: [0x0033, 0x2044, 0x0038], NFKD: [0x0033, 0x2044, 0x0038] },
+{ source: [0x215D], NFC: [0x215D], NFD: [0x215D], NFKC: [0x0035, 0x2044, 0x0038], NFKD: [0x0035, 0x2044, 0x0038] },
+{ source: [0x215E], NFC: [0x215E], NFD: [0x215E], NFKC: [0x0037, 0x2044, 0x0038], NFKD: [0x0037, 0x2044, 0x0038] },
+{ source: [0x215F], NFC: [0x215F], NFD: [0x215F], NFKC: [0x0031, 0x2044], NFKD: [0x0031, 0x2044] },
+{ source: [0x2160], NFC: [0x2160], NFD: [0x2160], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x2161], NFC: [0x2161], NFD: [0x2161], NFKC: [0x0049, 0x0049], NFKD: [0x0049, 0x0049] },
+{ source: [0x2162], NFC: [0x2162], NFD: [0x2162], NFKC: [0x0049, 0x0049, 0x0049], NFKD: [0x0049, 0x0049, 0x0049] },
+{ source: [0x2163], NFC: [0x2163], NFD: [0x2163], NFKC: [0x0049, 0x0056], NFKD: [0x0049, 0x0056] },
+{ source: [0x2164], NFC: [0x2164], NFD: [0x2164], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x2165], NFC: [0x2165], NFD: [0x2165], NFKC: [0x0056, 0x0049], NFKD: [0x0056, 0x0049] },
+{ source: [0x2166], NFC: [0x2166], NFD: [0x2166], NFKC: [0x0056, 0x0049, 0x0049], NFKD: [0x0056, 0x0049, 0x0049] },
+{ source: [0x2167], NFC: [0x2167], NFD: [0x2167], NFKC: [0x0056, 0x0049, 0x0049, 0x0049], NFKD: [0x0056, 0x0049, 0x0049, 0x0049] },
+{ source: [0x2168], NFC: [0x2168], NFD: [0x2168], NFKC: [0x0049, 0x0058], NFKD: [0x0049, 0x0058] },
+{ source: [0x2169], NFC: [0x2169], NFD: [0x2169], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x216A], NFC: [0x216A], NFD: [0x216A], NFKC: [0x0058, 0x0049], NFKD: [0x0058, 0x0049] },
+{ source: [0x216B], NFC: [0x216B], NFD: [0x216B], NFKC: [0x0058, 0x0049, 0x0049], NFKD: [0x0058, 0x0049, 0x0049] },
+{ source: [0x216C], NFC: [0x216C], NFD: [0x216C], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x216D], NFC: [0x216D], NFD: [0x216D], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x216E], NFC: [0x216E], NFD: [0x216E], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x216F], NFC: [0x216F], NFD: [0x216F], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x2170], NFC: [0x2170], NFD: [0x2170], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x2171], NFC: [0x2171], NFD: [0x2171], NFKC: [0x0069, 0x0069], NFKD: [0x0069, 0x0069] },
+{ source: [0x2172], NFC: [0x2172], NFD: [0x2172], NFKC: [0x0069, 0x0069, 0x0069], NFKD: [0x0069, 0x0069, 0x0069] },
+{ source: [0x2173], NFC: [0x2173], NFD: [0x2173], NFKC: [0x0069, 0x0076], NFKD: [0x0069, 0x0076] },
+{ source: [0x2174], NFC: [0x2174], NFD: [0x2174], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x2175], NFC: [0x2175], NFD: [0x2175], NFKC: [0x0076, 0x0069], NFKD: [0x0076, 0x0069] },
+{ source: [0x2176], NFC: [0x2176], NFD: [0x2176], NFKC: [0x0076, 0x0069, 0x0069], NFKD: [0x0076, 0x0069, 0x0069] },
+{ source: [0x2177], NFC: [0x2177], NFD: [0x2177], NFKC: [0x0076, 0x0069, 0x0069, 0x0069], NFKD: [0x0076, 0x0069, 0x0069, 0x0069] },
+{ source: [0x2178], NFC: [0x2178], NFD: [0x2178], NFKC: [0x0069, 0x0078], NFKD: [0x0069, 0x0078] },
+{ source: [0x2179], NFC: [0x2179], NFD: [0x2179], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x217A], NFC: [0x217A], NFD: [0x217A], NFKC: [0x0078, 0x0069], NFKD: [0x0078, 0x0069] },
+{ source: [0x217B], NFC: [0x217B], NFD: [0x217B], NFKC: [0x0078, 0x0069, 0x0069], NFKD: [0x0078, 0x0069, 0x0069] },
+{ source: [0x217C], NFC: [0x217C], NFD: [0x217C], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x217D], NFC: [0x217D], NFD: [0x217D], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x217E], NFC: [0x217E], NFD: [0x217E], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x217F], NFC: [0x217F], NFD: [0x217F], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x2189], NFC: [0x2189], NFD: [0x2189], NFKC: [0x0030, 0x2044, 0x0033], NFKD: [0x0030, 0x2044, 0x0033] },
+{ source: [0x219A], NFC: [0x219A], NFD: [0x2190, 0x0338], NFKC: [0x219A], NFKD: [0x2190, 0x0338] },
+{ source: [0x219B], NFC: [0x219B], NFD: [0x2192, 0x0338], NFKC: [0x219B], NFKD: [0x2192, 0x0338] },
+{ source: [0x21AE], NFC: [0x21AE], NFD: [0x2194, 0x0338], NFKC: [0x21AE], NFKD: [0x2194, 0x0338] },
+{ source: [0x21CD], NFC: [0x21CD], NFD: [0x21D0, 0x0338], NFKC: [0x21CD], NFKD: [0x21D0, 0x0338] },
+{ source: [0x21CE], NFC: [0x21CE], NFD: [0x21D4, 0x0338], NFKC: [0x21CE], NFKD: [0x21D4, 0x0338] },
+{ source: [0x21CF], NFC: [0x21CF], NFD: [0x21D2, 0x0338], NFKC: [0x21CF], NFKD: [0x21D2, 0x0338] },
+{ source: [0x2204], NFC: [0x2204], NFD: [0x2203, 0x0338], NFKC: [0x2204], NFKD: [0x2203, 0x0338] },
+{ source: [0x2209], NFC: [0x2209], NFD: [0x2208, 0x0338], NFKC: [0x2209], NFKD: [0x2208, 0x0338] },
+{ source: [0x220C], NFC: [0x220C], NFD: [0x220B, 0x0338], NFKC: [0x220C], NFKD: [0x220B, 0x0338] },
+{ source: [0x2224], NFC: [0x2224], NFD: [0x2223, 0x0338], NFKC: [0x2224], NFKD: [0x2223, 0x0338] },
+{ source: [0x2226], NFC: [0x2226], NFD: [0x2225, 0x0338], NFKC: [0x2226], NFKD: [0x2225, 0x0338] },
+{ source: [0x222C], NFC: [0x222C], NFD: [0x222C], NFKC: [0x222B, 0x222B], NFKD: [0x222B, 0x222B] },
+{ source: [0x222D], NFC: [0x222D], NFD: [0x222D], NFKC: [0x222B, 0x222B, 0x222B], NFKD: [0x222B, 0x222B, 0x222B] },
+{ source: [0x222F], NFC: [0x222F], NFD: [0x222F], NFKC: [0x222E, 0x222E], NFKD: [0x222E, 0x222E] },
+{ source: [0x2230], NFC: [0x2230], NFD: [0x2230], NFKC: [0x222E, 0x222E, 0x222E], NFKD: [0x222E, 0x222E, 0x222E] },
+{ source: [0x2241], NFC: [0x2241], NFD: [0x223C, 0x0338], NFKC: [0x2241], NFKD: [0x223C, 0x0338] },
+{ source: [0x2244], NFC: [0x2244], NFD: [0x2243, 0x0338], NFKC: [0x2244], NFKD: [0x2243, 0x0338] },
+{ source: [0x2247], NFC: [0x2247], NFD: [0x2245, 0x0338], NFKC: [0x2247], NFKD: [0x2245, 0x0338] },
+{ source: [0x2249], NFC: [0x2249], NFD: [0x2248, 0x0338], NFKC: [0x2249], NFKD: [0x2248, 0x0338] },
+{ source: [0x2260], NFC: [0x2260], NFD: [0x003D, 0x0338], NFKC: [0x2260], NFKD: [0x003D, 0x0338] },
+{ source: [0x2262], NFC: [0x2262], NFD: [0x2261, 0x0338], NFKC: [0x2262], NFKD: [0x2261, 0x0338] },
+{ source: [0x226D], NFC: [0x226D], NFD: [0x224D, 0x0338], NFKC: [0x226D], NFKD: [0x224D, 0x0338] },
+{ source: [0x226E], NFC: [0x226E], NFD: [0x003C, 0x0338], NFKC: [0x226E], NFKD: [0x003C, 0x0338] },
+{ source: [0x226F], NFC: [0x226F], NFD: [0x003E, 0x0338], NFKC: [0x226F], NFKD: [0x003E, 0x0338] },
+{ source: [0x2270], NFC: [0x2270], NFD: [0x2264, 0x0338], NFKC: [0x2270], NFKD: [0x2264, 0x0338] },
+{ source: [0x2271], NFC: [0x2271], NFD: [0x2265, 0x0338], NFKC: [0x2271], NFKD: [0x2265, 0x0338] },
+{ source: [0x2274], NFC: [0x2274], NFD: [0x2272, 0x0338], NFKC: [0x2274], NFKD: [0x2272, 0x0338] },
+{ source: [0x2275], NFC: [0x2275], NFD: [0x2273, 0x0338], NFKC: [0x2275], NFKD: [0x2273, 0x0338] },
+{ source: [0x2278], NFC: [0x2278], NFD: [0x2276, 0x0338], NFKC: [0x2278], NFKD: [0x2276, 0x0338] },
+{ source: [0x2279], NFC: [0x2279], NFD: [0x2277, 0x0338], NFKC: [0x2279], NFKD: [0x2277, 0x0338] },
+{ source: [0x2280], NFC: [0x2280], NFD: [0x227A, 0x0338], NFKC: [0x2280], NFKD: [0x227A, 0x0338] },
+{ source: [0x2281], NFC: [0x2281], NFD: [0x227B, 0x0338], NFKC: [0x2281], NFKD: [0x227B, 0x0338] },
+{ source: [0x2284], NFC: [0x2284], NFD: [0x2282, 0x0338], NFKC: [0x2284], NFKD: [0x2282, 0x0338] },
+{ source: [0x2285], NFC: [0x2285], NFD: [0x2283, 0x0338], NFKC: [0x2285], NFKD: [0x2283, 0x0338] },
+{ source: [0x2288], NFC: [0x2288], NFD: [0x2286, 0x0338], NFKC: [0x2288], NFKD: [0x2286, 0x0338] },
+{ source: [0x2289], NFC: [0x2289], NFD: [0x2287, 0x0338], NFKC: [0x2289], NFKD: [0x2287, 0x0338] },
+{ source: [0x22AC], NFC: [0x22AC], NFD: [0x22A2, 0x0338], NFKC: [0x22AC], NFKD: [0x22A2, 0x0338] },
+{ source: [0x22AD], NFC: [0x22AD], NFD: [0x22A8, 0x0338], NFKC: [0x22AD], NFKD: [0x22A8, 0x0338] },
+{ source: [0x22AE], NFC: [0x22AE], NFD: [0x22A9, 0x0338], NFKC: [0x22AE], NFKD: [0x22A9, 0x0338] },
+{ source: [0x22AF], NFC: [0x22AF], NFD: [0x22AB, 0x0338], NFKC: [0x22AF], NFKD: [0x22AB, 0x0338] },
+{ source: [0x22E0], NFC: [0x22E0], NFD: [0x227C, 0x0338], NFKC: [0x22E0], NFKD: [0x227C, 0x0338] },
+{ source: [0x22E1], NFC: [0x22E1], NFD: [0x227D, 0x0338], NFKC: [0x22E1], NFKD: [0x227D, 0x0338] },
+{ source: [0x22E2], NFC: [0x22E2], NFD: [0x2291, 0x0338], NFKC: [0x22E2], NFKD: [0x2291, 0x0338] },
+{ source: [0x22E3], NFC: [0x22E3], NFD: [0x2292, 0x0338], NFKC: [0x22E3], NFKD: [0x2292, 0x0338] },
+{ source: [0x22EA], NFC: [0x22EA], NFD: [0x22B2, 0x0338], NFKC: [0x22EA], NFKD: [0x22B2, 0x0338] },
+{ source: [0x22EB], NFC: [0x22EB], NFD: [0x22B3, 0x0338], NFKC: [0x22EB], NFKD: [0x22B3, 0x0338] },
+{ source: [0x22EC], NFC: [0x22EC], NFD: [0x22B4, 0x0338], NFKC: [0x22EC], NFKD: [0x22B4, 0x0338] },
+{ source: [0x22ED], NFC: [0x22ED], NFD: [0x22B5, 0x0338], NFKC: [0x22ED], NFKD: [0x22B5, 0x0338] },
+{ source: [0x2329], NFC: [0x3008], NFD: [0x3008], NFKC: [0x3008], NFKD: [0x3008] },
+{ source: [0x232A], NFC: [0x3009], NFD: [0x3009], NFKC: [0x3009], NFKD: [0x3009] },
+{ source: [0x2460], NFC: [0x2460], NFD: [0x2460], NFKC: [0x0031], NFKD: [0x0031] },
+{ source: [0x2461], NFC: [0x2461], NFD: [0x2461], NFKC: [0x0032], NFKD: [0x0032] },
+{ source: [0x2462], NFC: [0x2462], NFD: [0x2462], NFKC: [0x0033], NFKD: [0x0033] },
+{ source: [0x2463], NFC: [0x2463], NFD: [0x2463], NFKC: [0x0034], NFKD: [0x0034] },
+{ source: [0x2464], NFC: [0x2464], NFD: [0x2464], NFKC: [0x0035], NFKD: [0x0035] },
+{ source: [0x2465], NFC: [0x2465], NFD: [0x2465], NFKC: [0x0036], NFKD: [0x0036] },
+{ source: [0x2466], NFC: [0x2466], NFD: [0x2466], NFKC: [0x0037], NFKD: [0x0037] },
+{ source: [0x2467], NFC: [0x2467], NFD: [0x2467], NFKC: [0x0038], NFKD: [0x0038] },
+{ source: [0x2468], NFC: [0x2468], NFD: [0x2468], NFKC: [0x0039], NFKD: [0x0039] },
+{ source: [0x2469], NFC: [0x2469], NFD: [0x2469], NFKC: [0x0031, 0x0030], NFKD: [0x0031, 0x0030] },
+{ source: [0x246A], NFC: [0x246A], NFD: [0x246A], NFKC: [0x0031, 0x0031], NFKD: [0x0031, 0x0031] },
+{ source: [0x246B], NFC: [0x246B], NFD: [0x246B], NFKC: [0x0031, 0x0032], NFKD: [0x0031, 0x0032] },
+{ source: [0x246C], NFC: [0x246C], NFD: [0x246C], NFKC: [0x0031, 0x0033], NFKD: [0x0031, 0x0033] },
+{ source: [0x246D], NFC: [0x246D], NFD: [0x246D], NFKC: [0x0031, 0x0034], NFKD: [0x0031, 0x0034] },
+{ source: [0x246E], NFC: [0x246E], NFD: [0x246E], NFKC: [0x0031, 0x0035], NFKD: [0x0031, 0x0035] },
+{ source: [0x246F], NFC: [0x246F], NFD: [0x246F], NFKC: [0x0031, 0x0036], NFKD: [0x0031, 0x0036] },
+{ source: [0x2470], NFC: [0x2470], NFD: [0x2470], NFKC: [0x0031, 0x0037], NFKD: [0x0031, 0x0037] },
+{ source: [0x2471], NFC: [0x2471], NFD: [0x2471], NFKC: [0x0031, 0x0038], NFKD: [0x0031, 0x0038] },
+{ source: [0x2472], NFC: [0x2472], NFD: [0x2472], NFKC: [0x0031, 0x0039], NFKD: [0x0031, 0x0039] },
+{ source: [0x2473], NFC: [0x2473], NFD: [0x2473], NFKC: [0x0032, 0x0030], NFKD: [0x0032, 0x0030] },
+{ source: [0x2474], NFC: [0x2474], NFD: [0x2474], NFKC: [0x0028, 0x0031, 0x0029], NFKD: [0x0028, 0x0031, 0x0029] },
+{ source: [0x2475], NFC: [0x2475], NFD: [0x2475], NFKC: [0x0028, 0x0032, 0x0029], NFKD: [0x0028, 0x0032, 0x0029] },
+{ source: [0x2476], NFC: [0x2476], NFD: [0x2476], NFKC: [0x0028, 0x0033, 0x0029], NFKD: [0x0028, 0x0033, 0x0029] },
+{ source: [0x2477], NFC: [0x2477], NFD: [0x2477], NFKC: [0x0028, 0x0034, 0x0029], NFKD: [0x0028, 0x0034, 0x0029] },
+{ source: [0x2478], NFC: [0x2478], NFD: [0x2478], NFKC: [0x0028, 0x0035, 0x0029], NFKD: [0x0028, 0x0035, 0x0029] },
+{ source: [0x2479], NFC: [0x2479], NFD: [0x2479], NFKC: [0x0028, 0x0036, 0x0029], NFKD: [0x0028, 0x0036, 0x0029] },
+{ source: [0x247A], NFC: [0x247A], NFD: [0x247A], NFKC: [0x0028, 0x0037, 0x0029], NFKD: [0x0028, 0x0037, 0x0029] },
+{ source: [0x247B], NFC: [0x247B], NFD: [0x247B], NFKC: [0x0028, 0x0038, 0x0029], NFKD: [0x0028, 0x0038, 0x0029] },
+{ source: [0x247C], NFC: [0x247C], NFD: [0x247C], NFKC: [0x0028, 0x0039, 0x0029], NFKD: [0x0028, 0x0039, 0x0029] },
+{ source: [0x247D], NFC: [0x247D], NFD: [0x247D], NFKC: [0x0028, 0x0031, 0x0030, 0x0029], NFKD: [0x0028, 0x0031, 0x0030, 0x0029] },
+{ source: [0x247E], NFC: [0x247E], NFD: [0x247E], NFKC: [0x0028, 0x0031, 0x0031, 0x0029], NFKD: [0x0028, 0x0031, 0x0031, 0x0029] },
+{ source: [0x247F], NFC: [0x247F], NFD: [0x247F], NFKC: [0x0028, 0x0031, 0x0032, 0x0029], NFKD: [0x0028, 0x0031, 0x0032, 0x0029] },
+{ source: [0x2480], NFC: [0x2480], NFD: [0x2480], NFKC: [0x0028, 0x0031, 0x0033, 0x0029], NFKD: [0x0028, 0x0031, 0x0033, 0x0029] },
+{ source: [0x2481], NFC: [0x2481], NFD: [0x2481], NFKC: [0x0028, 0x0031, 0x0034, 0x0029], NFKD: [0x0028, 0x0031, 0x0034, 0x0029] },
+{ source: [0x2482], NFC: [0x2482], NFD: [0x2482], NFKC: [0x0028, 0x0031, 0x0035, 0x0029], NFKD: [0x0028, 0x0031, 0x0035, 0x0029] },
+{ source: [0x2483], NFC: [0x2483], NFD: [0x2483], NFKC: [0x0028, 0x0031, 0x0036, 0x0029], NFKD: [0x0028, 0x0031, 0x0036, 0x0029] },
+{ source: [0x2484], NFC: [0x2484], NFD: [0x2484], NFKC: [0x0028, 0x0031, 0x0037, 0x0029], NFKD: [0x0028, 0x0031, 0x0037, 0x0029] },
+{ source: [0x2485], NFC: [0x2485], NFD: [0x2485], NFKC: [0x0028, 0x0031, 0x0038, 0x0029], NFKD: [0x0028, 0x0031, 0x0038, 0x0029] },
+{ source: [0x2486], NFC: [0x2486], NFD: [0x2486], NFKC: [0x0028, 0x0031, 0x0039, 0x0029], NFKD: [0x0028, 0x0031, 0x0039, 0x0029] },
+{ source: [0x2487], NFC: [0x2487], NFD: [0x2487], NFKC: [0x0028, 0x0032, 0x0030, 0x0029], NFKD: [0x0028, 0x0032, 0x0030, 0x0029] },
+{ source: [0x2488], NFC: [0x2488], NFD: [0x2488], NFKC: [0x0031, 0x002E], NFKD: [0x0031, 0x002E] },
+{ source: [0x2489], NFC: [0x2489], NFD: [0x2489], NFKC: [0x0032, 0x002E], NFKD: [0x0032, 0x002E] },
+{ source: [0x248A], NFC: [0x248A], NFD: [0x248A], NFKC: [0x0033, 0x002E], NFKD: [0x0033, 0x002E] },
+{ source: [0x248B], NFC: [0x248B], NFD: [0x248B], NFKC: [0x0034, 0x002E], NFKD: [0x0034, 0x002E] },
+{ source: [0x248C], NFC: [0x248C], NFD: [0x248C], NFKC: [0x0035, 0x002E], NFKD: [0x0035, 0x002E] },
+{ source: [0x248D], NFC: [0x248D], NFD: [0x248D], NFKC: [0x0036, 0x002E], NFKD: [0x0036, 0x002E] },
+{ source: [0x248E], NFC: [0x248E], NFD: [0x248E], NFKC: [0x0037, 0x002E], NFKD: [0x0037, 0x002E] },
+{ source: [0x248F], NFC: [0x248F], NFD: [0x248F], NFKC: [0x0038, 0x002E], NFKD: [0x0038, 0x002E] },
+{ source: [0x2490], NFC: [0x2490], NFD: [0x2490], NFKC: [0x0039, 0x002E], NFKD: [0x0039, 0x002E] },
+{ source: [0x2491], NFC: [0x2491], NFD: [0x2491], NFKC: [0x0031, 0x0030, 0x002E], NFKD: [0x0031, 0x0030, 0x002E] },
+{ source: [0x2492], NFC: [0x2492], NFD: [0x2492], NFKC: [0x0031, 0x0031, 0x002E], NFKD: [0x0031, 0x0031, 0x002E] },
+{ source: [0x2493], NFC: [0x2493], NFD: [0x2493], NFKC: [0x0031, 0x0032, 0x002E], NFKD: [0x0031, 0x0032, 0x002E] },
+{ source: [0x2494], NFC: [0x2494], NFD: [0x2494], NFKC: [0x0031, 0x0033, 0x002E], NFKD: [0x0031, 0x0033, 0x002E] },
+{ source: [0x2495], NFC: [0x2495], NFD: [0x2495], NFKC: [0x0031, 0x0034, 0x002E], NFKD: [0x0031, 0x0034, 0x002E] },
+{ source: [0x2496], NFC: [0x2496], NFD: [0x2496], NFKC: [0x0031, 0x0035, 0x002E], NFKD: [0x0031, 0x0035, 0x002E] },
+{ source: [0x2497], NFC: [0x2497], NFD: [0x2497], NFKC: [0x0031, 0x0036, 0x002E], NFKD: [0x0031, 0x0036, 0x002E] },
+{ source: [0x2498], NFC: [0x2498], NFD: [0x2498], NFKC: [0x0031, 0x0037, 0x002E], NFKD: [0x0031, 0x0037, 0x002E] },
+{ source: [0x2499], NFC: [0x2499], NFD: [0x2499], NFKC: [0x0031, 0x0038, 0x002E], NFKD: [0x0031, 0x0038, 0x002E] },
+{ source: [0x249A], NFC: [0x249A], NFD: [0x249A], NFKC: [0x0031, 0x0039, 0x002E], NFKD: [0x0031, 0x0039, 0x002E] },
+{ source: [0x249B], NFC: [0x249B], NFD: [0x249B], NFKC: [0x0032, 0x0030, 0x002E], NFKD: [0x0032, 0x0030, 0x002E] },
+{ source: [0x249C], NFC: [0x249C], NFD: [0x249C], NFKC: [0x0028, 0x0061, 0x0029], NFKD: [0x0028, 0x0061, 0x0029] },
+{ source: [0x249D], NFC: [0x249D], NFD: [0x249D], NFKC: [0x0028, 0x0062, 0x0029], NFKD: [0x0028, 0x0062, 0x0029] },
+{ source: [0x249E], NFC: [0x249E], NFD: [0x249E], NFKC: [0x0028, 0x0063, 0x0029], NFKD: [0x0028, 0x0063, 0x0029] },
+{ source: [0x249F], NFC: [0x249F], NFD: [0x249F], NFKC: [0x0028, 0x0064, 0x0029], NFKD: [0x0028, 0x0064, 0x0029] },
+{ source: [0x24A0], NFC: [0x24A0], NFD: [0x24A0], NFKC: [0x0028, 0x0065, 0x0029], NFKD: [0x0028, 0x0065, 0x0029] },
+{ source: [0x24A1], NFC: [0x24A1], NFD: [0x24A1], NFKC: [0x0028, 0x0066, 0x0029], NFKD: [0x0028, 0x0066, 0x0029] },
+{ source: [0x24A2], NFC: [0x24A2], NFD: [0x24A2], NFKC: [0x0028, 0x0067, 0x0029], NFKD: [0x0028, 0x0067, 0x0029] },
+{ source: [0x24A3], NFC: [0x24A3], NFD: [0x24A3], NFKC: [0x0028, 0x0068, 0x0029], NFKD: [0x0028, 0x0068, 0x0029] },
+{ source: [0x24A4], NFC: [0x24A4], NFD: [0x24A4], NFKC: [0x0028, 0x0069, 0x0029], NFKD: [0x0028, 0x0069, 0x0029] },
+{ source: [0x24A5], NFC: [0x24A5], NFD: [0x24A5], NFKC: [0x0028, 0x006A, 0x0029], NFKD: [0x0028, 0x006A, 0x0029] },
+{ source: [0x24A6], NFC: [0x24A6], NFD: [0x24A6], NFKC: [0x0028, 0x006B, 0x0029], NFKD: [0x0028, 0x006B, 0x0029] },
+{ source: [0x24A7], NFC: [0x24A7], NFD: [0x24A7], NFKC: [0x0028, 0x006C, 0x0029], NFKD: [0x0028, 0x006C, 0x0029] },
+{ source: [0x24A8], NFC: [0x24A8], NFD: [0x24A8], NFKC: [0x0028, 0x006D, 0x0029], NFKD: [0x0028, 0x006D, 0x0029] },
+{ source: [0x24A9], NFC: [0x24A9], NFD: [0x24A9], NFKC: [0x0028, 0x006E, 0x0029], NFKD: [0x0028, 0x006E, 0x0029] },
+{ source: [0x24AA], NFC: [0x24AA], NFD: [0x24AA], NFKC: [0x0028, 0x006F, 0x0029], NFKD: [0x0028, 0x006F, 0x0029] },
+{ source: [0x24AB], NFC: [0x24AB], NFD: [0x24AB], NFKC: [0x0028, 0x0070, 0x0029], NFKD: [0x0028, 0x0070, 0x0029] },
+{ source: [0x24AC], NFC: [0x24AC], NFD: [0x24AC], NFKC: [0x0028, 0x0071, 0x0029], NFKD: [0x0028, 0x0071, 0x0029] },
+{ source: [0x24AD], NFC: [0x24AD], NFD: [0x24AD], NFKC: [0x0028, 0x0072, 0x0029], NFKD: [0x0028, 0x0072, 0x0029] },
+{ source: [0x24AE], NFC: [0x24AE], NFD: [0x24AE], NFKC: [0x0028, 0x0073, 0x0029], NFKD: [0x0028, 0x0073, 0x0029] },
+{ source: [0x24AF], NFC: [0x24AF], NFD: [0x24AF], NFKC: [0x0028, 0x0074, 0x0029], NFKD: [0x0028, 0x0074, 0x0029] },
+{ source: [0x24B0], NFC: [0x24B0], NFD: [0x24B0], NFKC: [0x0028, 0x0075, 0x0029], NFKD: [0x0028, 0x0075, 0x0029] },
+{ source: [0x24B1], NFC: [0x24B1], NFD: [0x24B1], NFKC: [0x0028, 0x0076, 0x0029], NFKD: [0x0028, 0x0076, 0x0029] },
+{ source: [0x24B2], NFC: [0x24B2], NFD: [0x24B2], NFKC: [0x0028, 0x0077, 0x0029], NFKD: [0x0028, 0x0077, 0x0029] },
+{ source: [0x24B3], NFC: [0x24B3], NFD: [0x24B3], NFKC: [0x0028, 0x0078, 0x0029], NFKD: [0x0028, 0x0078, 0x0029] },
+{ source: [0x24B4], NFC: [0x24B4], NFD: [0x24B4], NFKC: [0x0028, 0x0079, 0x0029], NFKD: [0x0028, 0x0079, 0x0029] },
+{ source: [0x24B5], NFC: [0x24B5], NFD: [0x24B5], NFKC: [0x0028, 0x007A, 0x0029], NFKD: [0x0028, 0x007A, 0x0029] },
+{ source: [0x24B6], NFC: [0x24B6], NFD: [0x24B6], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x24B7], NFC: [0x24B7], NFD: [0x24B7], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x24B8], NFC: [0x24B8], NFD: [0x24B8], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x24B9], NFC: [0x24B9], NFD: [0x24B9], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x24BA], NFC: [0x24BA], NFD: [0x24BA], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x24BB], NFC: [0x24BB], NFD: [0x24BB], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x24BC], NFC: [0x24BC], NFD: [0x24BC], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x24BD], NFC: [0x24BD], NFD: [0x24BD], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x24BE], NFC: [0x24BE], NFD: [0x24BE], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x24BF], NFC: [0x24BF], NFD: [0x24BF], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x24C0], NFC: [0x24C0], NFD: [0x24C0], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x24C1], NFC: [0x24C1], NFD: [0x24C1], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x24C2], NFC: [0x24C2], NFD: [0x24C2], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x24C3], NFC: [0x24C3], NFD: [0x24C3], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x24C4], NFC: [0x24C4], NFD: [0x24C4], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x24C5], NFC: [0x24C5], NFD: [0x24C5], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x24C6], NFC: [0x24C6], NFD: [0x24C6], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x24C7], NFC: [0x24C7], NFD: [0x24C7], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x24C8], NFC: [0x24C8], NFD: [0x24C8], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x24C9], NFC: [0x24C9], NFD: [0x24C9], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x24CA], NFC: [0x24CA], NFD: [0x24CA], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x24CB], NFC: [0x24CB], NFD: [0x24CB], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x24CC], NFC: [0x24CC], NFD: [0x24CC], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x24CD], NFC: [0x24CD], NFD: [0x24CD], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x24CE], NFC: [0x24CE], NFD: [0x24CE], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x24CF], NFC: [0x24CF], NFD: [0x24CF], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x24D0], NFC: [0x24D0], NFD: [0x24D0], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x24D1], NFC: [0x24D1], NFD: [0x24D1], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x24D2], NFC: [0x24D2], NFD: [0x24D2], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x24D3], NFC: [0x24D3], NFD: [0x24D3], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x24D4], NFC: [0x24D4], NFD: [0x24D4], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x24D5], NFC: [0x24D5], NFD: [0x24D5], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x24D6], NFC: [0x24D6], NFD: [0x24D6], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x24D7], NFC: [0x24D7], NFD: [0x24D7], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x24D8], NFC: [0x24D8], NFD: [0x24D8], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x24D9], NFC: [0x24D9], NFD: [0x24D9], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x24DA], NFC: [0x24DA], NFD: [0x24DA], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x24DB], NFC: [0x24DB], NFD: [0x24DB], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x24DC], NFC: [0x24DC], NFD: [0x24DC], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x24DD], NFC: [0x24DD], NFD: [0x24DD], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x24DE], NFC: [0x24DE], NFD: [0x24DE], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x24DF], NFC: [0x24DF], NFD: [0x24DF], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x24E0], NFC: [0x24E0], NFD: [0x24E0], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x24E1], NFC: [0x24E1], NFD: [0x24E1], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x24E2], NFC: [0x24E2], NFD: [0x24E2], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x24E3], NFC: [0x24E3], NFD: [0x24E3], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x24E4], NFC: [0x24E4], NFD: [0x24E4], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x24E5], NFC: [0x24E5], NFD: [0x24E5], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x24E6], NFC: [0x24E6], NFD: [0x24E6], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x24E7], NFC: [0x24E7], NFD: [0x24E7], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x24E8], NFC: [0x24E8], NFD: [0x24E8], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x24E9], NFC: [0x24E9], NFD: [0x24E9], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x24EA], NFC: [0x24EA], NFD: [0x24EA], NFKC: [0x0030], NFKD: [0x0030] },
+{ source: [0x2A0C], NFC: [0x2A0C], NFD: [0x2A0C], NFKC: [0x222B, 0x222B, 0x222B, 0x222B], NFKD: [0x222B, 0x222B, 0x222B, 0x222B] },
+{ source: [0x2A74], NFC: [0x2A74], NFD: [0x2A74], NFKC: [0x003A, 0x003A, 0x003D], NFKD: [0x003A, 0x003A, 0x003D] },
+{ source: [0x2A75], NFC: [0x2A75], NFD: [0x2A75], NFKC: [0x003D, 0x003D], NFKD: [0x003D, 0x003D] },
+{ source: [0x2A76], NFC: [0x2A76], NFD: [0x2A76], NFKC: [0x003D, 0x003D, 0x003D], NFKD: [0x003D, 0x003D, 0x003D] },
+{ source: [0x2ADC], NFC: [0x2ADD, 0x0338], NFD: [0x2ADD, 0x0338], NFKC: [0x2ADD, 0x0338], NFKD: [0x2ADD, 0x0338] },
+{ source: [0x2C7C], NFC: [0x2C7C], NFD: [0x2C7C], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x2C7D], NFC: [0x2C7D], NFD: [0x2C7D], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x2D6F], NFC: [0x2D6F], NFD: [0x2D6F], NFKC: [0x2D61], NFKD: [0x2D61] },
+{ source: [0x2E9F], NFC: [0x2E9F], NFD: [0x2E9F], NFKC: [0x6BCD], NFKD: [0x6BCD] },
+{ source: [0x2EF3], NFC: [0x2EF3], NFD: [0x2EF3], NFKC: [0x9F9F], NFKD: [0x9F9F] },
+{ source: [0x2F00], NFC: [0x2F00], NFD: [0x2F00], NFKC: [0x4E00], NFKD: [0x4E00] },
+{ source: [0x2F01], NFC: [0x2F01], NFD: [0x2F01], NFKC: [0x4E28], NFKD: [0x4E28] },
+{ source: [0x2F02], NFC: [0x2F02], NFD: [0x2F02], NFKC: [0x4E36], NFKD: [0x4E36] },
+{ source: [0x2F03], NFC: [0x2F03], NFD: [0x2F03], NFKC: [0x4E3F], NFKD: [0x4E3F] },
+{ source: [0x2F04], NFC: [0x2F04], NFD: [0x2F04], NFKC: [0x4E59], NFKD: [0x4E59] },
+{ source: [0x2F05], NFC: [0x2F05], NFD: [0x2F05], NFKC: [0x4E85], NFKD: [0x4E85] },
+{ source: [0x2F06], NFC: [0x2F06], NFD: [0x2F06], NFKC: [0x4E8C], NFKD: [0x4E8C] },
+{ source: [0x2F07], NFC: [0x2F07], NFD: [0x2F07], NFKC: [0x4EA0], NFKD: [0x4EA0] },
+{ source: [0x2F08], NFC: [0x2F08], NFD: [0x2F08], NFKC: [0x4EBA], NFKD: [0x4EBA] },
+{ source: [0x2F09], NFC: [0x2F09], NFD: [0x2F09], NFKC: [0x513F], NFKD: [0x513F] },
+{ source: [0x2F0A], NFC: [0x2F0A], NFD: [0x2F0A], NFKC: [0x5165], NFKD: [0x5165] },
+{ source: [0x2F0B], NFC: [0x2F0B], NFD: [0x2F0B], NFKC: [0x516B], NFKD: [0x516B] },
+{ source: [0x2F0C], NFC: [0x2F0C], NFD: [0x2F0C], NFKC: [0x5182], NFKD: [0x5182] },
+{ source: [0x2F0D], NFC: [0x2F0D], NFD: [0x2F0D], NFKC: [0x5196], NFKD: [0x5196] },
+{ source: [0x2F0E], NFC: [0x2F0E], NFD: [0x2F0E], NFKC: [0x51AB], NFKD: [0x51AB] },
+{ source: [0x2F0F], NFC: [0x2F0F], NFD: [0x2F0F], NFKC: [0x51E0], NFKD: [0x51E0] },
+{ source: [0x2F10], NFC: [0x2F10], NFD: [0x2F10], NFKC: [0x51F5], NFKD: [0x51F5] },
+{ source: [0x2F11], NFC: [0x2F11], NFD: [0x2F11], NFKC: [0x5200], NFKD: [0x5200] },
+{ source: [0x2F12], NFC: [0x2F12], NFD: [0x2F12], NFKC: [0x529B], NFKD: [0x529B] },
+{ source: [0x2F13], NFC: [0x2F13], NFD: [0x2F13], NFKC: [0x52F9], NFKD: [0x52F9] },
+{ source: [0x2F14], NFC: [0x2F14], NFD: [0x2F14], NFKC: [0x5315], NFKD: [0x5315] },
+{ source: [0x2F15], NFC: [0x2F15], NFD: [0x2F15], NFKC: [0x531A], NFKD: [0x531A] },
+{ source: [0x2F16], NFC: [0x2F16], NFD: [0x2F16], NFKC: [0x5338], NFKD: [0x5338] },
+{ source: [0x2F17], NFC: [0x2F17], NFD: [0x2F17], NFKC: [0x5341], NFKD: [0x5341] },
+{ source: [0x2F18], NFC: [0x2F18], NFD: [0x2F18], NFKC: [0x535C], NFKD: [0x535C] },
+{ source: [0x2F19], NFC: [0x2F19], NFD: [0x2F19], NFKC: [0x5369], NFKD: [0x5369] },
+{ source: [0x2F1A], NFC: [0x2F1A], NFD: [0x2F1A], NFKC: [0x5382], NFKD: [0x5382] },
+{ source: [0x2F1B], NFC: [0x2F1B], NFD: [0x2F1B], NFKC: [0x53B6], NFKD: [0x53B6] },
+{ source: [0x2F1C], NFC: [0x2F1C], NFD: [0x2F1C], NFKC: [0x53C8], NFKD: [0x53C8] },
+{ source: [0x2F1D], NFC: [0x2F1D], NFD: [0x2F1D], NFKC: [0x53E3], NFKD: [0x53E3] },
+{ source: [0x2F1E], NFC: [0x2F1E], NFD: [0x2F1E], NFKC: [0x56D7], NFKD: [0x56D7] },
+{ source: [0x2F1F], NFC: [0x2F1F], NFD: [0x2F1F], NFKC: [0x571F], NFKD: [0x571F] },
+{ source: [0x2F20], NFC: [0x2F20], NFD: [0x2F20], NFKC: [0x58EB], NFKD: [0x58EB] },
+{ source: [0x2F21], NFC: [0x2F21], NFD: [0x2F21], NFKC: [0x5902], NFKD: [0x5902] },
+{ source: [0x2F22], NFC: [0x2F22], NFD: [0x2F22], NFKC: [0x590A], NFKD: [0x590A] },
+{ source: [0x2F23], NFC: [0x2F23], NFD: [0x2F23], NFKC: [0x5915], NFKD: [0x5915] },
+{ source: [0x2F24], NFC: [0x2F24], NFD: [0x2F24], NFKC: [0x5927], NFKD: [0x5927] },
+{ source: [0x2F25], NFC: [0x2F25], NFD: [0x2F25], NFKC: [0x5973], NFKD: [0x5973] },
+{ source: [0x2F26], NFC: [0x2F26], NFD: [0x2F26], NFKC: [0x5B50], NFKD: [0x5B50] },
+{ source: [0x2F27], NFC: [0x2F27], NFD: [0x2F27], NFKC: [0x5B80], NFKD: [0x5B80] },
+{ source: [0x2F28], NFC: [0x2F28], NFD: [0x2F28], NFKC: [0x5BF8], NFKD: [0x5BF8] },
+{ source: [0x2F29], NFC: [0x2F29], NFD: [0x2F29], NFKC: [0x5C0F], NFKD: [0x5C0F] },
+{ source: [0x2F2A], NFC: [0x2F2A], NFD: [0x2F2A], NFKC: [0x5C22], NFKD: [0x5C22] },
+{ source: [0x2F2B], NFC: [0x2F2B], NFD: [0x2F2B], NFKC: [0x5C38], NFKD: [0x5C38] },
+{ source: [0x2F2C], NFC: [0x2F2C], NFD: [0x2F2C], NFKC: [0x5C6E], NFKD: [0x5C6E] },
+{ source: [0x2F2D], NFC: [0x2F2D], NFD: [0x2F2D], NFKC: [0x5C71], NFKD: [0x5C71] },
+{ source: [0x2F2E], NFC: [0x2F2E], NFD: [0x2F2E], NFKC: [0x5DDB], NFKD: [0x5DDB] },
+{ source: [0x2F2F], NFC: [0x2F2F], NFD: [0x2F2F], NFKC: [0x5DE5], NFKD: [0x5DE5] },
+{ source: [0x2F30], NFC: [0x2F30], NFD: [0x2F30], NFKC: [0x5DF1], NFKD: [0x5DF1] },
+{ source: [0x2F31], NFC: [0x2F31], NFD: [0x2F31], NFKC: [0x5DFE], NFKD: [0x5DFE] },
+{ source: [0x2F32], NFC: [0x2F32], NFD: [0x2F32], NFKC: [0x5E72], NFKD: [0x5E72] },
+{ source: [0x2F33], NFC: [0x2F33], NFD: [0x2F33], NFKC: [0x5E7A], NFKD: [0x5E7A] },
+{ source: [0x2F34], NFC: [0x2F34], NFD: [0x2F34], NFKC: [0x5E7F], NFKD: [0x5E7F] },
+{ source: [0x2F35], NFC: [0x2F35], NFD: [0x2F35], NFKC: [0x5EF4], NFKD: [0x5EF4] },
+{ source: [0x2F36], NFC: [0x2F36], NFD: [0x2F36], NFKC: [0x5EFE], NFKD: [0x5EFE] },
+{ source: [0x2F37], NFC: [0x2F37], NFD: [0x2F37], NFKC: [0x5F0B], NFKD: [0x5F0B] },
+{ source: [0x2F38], NFC: [0x2F38], NFD: [0x2F38], NFKC: [0x5F13], NFKD: [0x5F13] },
+{ source: [0x2F39], NFC: [0x2F39], NFD: [0x2F39], NFKC: [0x5F50], NFKD: [0x5F50] },
+{ source: [0x2F3A], NFC: [0x2F3A], NFD: [0x2F3A], NFKC: [0x5F61], NFKD: [0x5F61] },
+{ source: [0x2F3B], NFC: [0x2F3B], NFD: [0x2F3B], NFKC: [0x5F73], NFKD: [0x5F73] },
+{ source: [0x2F3C], NFC: [0x2F3C], NFD: [0x2F3C], NFKC: [0x5FC3], NFKD: [0x5FC3] },
+{ source: [0x2F3D], NFC: [0x2F3D], NFD: [0x2F3D], NFKC: [0x6208], NFKD: [0x6208] },
+{ source: [0x2F3E], NFC: [0x2F3E], NFD: [0x2F3E], NFKC: [0x6236], NFKD: [0x6236] },
+{ source: [0x2F3F], NFC: [0x2F3F], NFD: [0x2F3F], NFKC: [0x624B], NFKD: [0x624B] },
+{ source: [0x2F40], NFC: [0x2F40], NFD: [0x2F40], NFKC: [0x652F], NFKD: [0x652F] },
+{ source: [0x2F41], NFC: [0x2F41], NFD: [0x2F41], NFKC: [0x6534], NFKD: [0x6534] },
+{ source: [0x2F42], NFC: [0x2F42], NFD: [0x2F42], NFKC: [0x6587], NFKD: [0x6587] },
+{ source: [0x2F43], NFC: [0x2F43], NFD: [0x2F43], NFKC: [0x6597], NFKD: [0x6597] },
+{ source: [0x2F44], NFC: [0x2F44], NFD: [0x2F44], NFKC: [0x65A4], NFKD: [0x65A4] },
+{ source: [0x2F45], NFC: [0x2F45], NFD: [0x2F45], NFKC: [0x65B9], NFKD: [0x65B9] },
+{ source: [0x2F46], NFC: [0x2F46], NFD: [0x2F46], NFKC: [0x65E0], NFKD: [0x65E0] },
+{ source: [0x2F47], NFC: [0x2F47], NFD: [0x2F47], NFKC: [0x65E5], NFKD: [0x65E5] },
+{ source: [0x2F48], NFC: [0x2F48], NFD: [0x2F48], NFKC: [0x66F0], NFKD: [0x66F0] },
+{ source: [0x2F49], NFC: [0x2F49], NFD: [0x2F49], NFKC: [0x6708], NFKD: [0x6708] },
+{ source: [0x2F4A], NFC: [0x2F4A], NFD: [0x2F4A], NFKC: [0x6728], NFKD: [0x6728] },
+{ source: [0x2F4B], NFC: [0x2F4B], NFD: [0x2F4B], NFKC: [0x6B20], NFKD: [0x6B20] },
+{ source: [0x2F4C], NFC: [0x2F4C], NFD: [0x2F4C], NFKC: [0x6B62], NFKD: [0x6B62] },
+{ source: [0x2F4D], NFC: [0x2F4D], NFD: [0x2F4D], NFKC: [0x6B79], NFKD: [0x6B79] },
+{ source: [0x2F4E], NFC: [0x2F4E], NFD: [0x2F4E], NFKC: [0x6BB3], NFKD: [0x6BB3] },
+{ source: [0x2F4F], NFC: [0x2F4F], NFD: [0x2F4F], NFKC: [0x6BCB], NFKD: [0x6BCB] },
+{ source: [0x2F50], NFC: [0x2F50], NFD: [0x2F50], NFKC: [0x6BD4], NFKD: [0x6BD4] },
+{ source: [0x2F51], NFC: [0x2F51], NFD: [0x2F51], NFKC: [0x6BDB], NFKD: [0x6BDB] },
+{ source: [0x2F52], NFC: [0x2F52], NFD: [0x2F52], NFKC: [0x6C0F], NFKD: [0x6C0F] },
+{ source: [0x2F53], NFC: [0x2F53], NFD: [0x2F53], NFKC: [0x6C14], NFKD: [0x6C14] },
+{ source: [0x2F54], NFC: [0x2F54], NFD: [0x2F54], NFKC: [0x6C34], NFKD: [0x6C34] },
+{ source: [0x2F55], NFC: [0x2F55], NFD: [0x2F55], NFKC: [0x706B], NFKD: [0x706B] },
+{ source: [0x2F56], NFC: [0x2F56], NFD: [0x2F56], NFKC: [0x722A], NFKD: [0x722A] },
+{ source: [0x2F57], NFC: [0x2F57], NFD: [0x2F57], NFKC: [0x7236], NFKD: [0x7236] },
+{ source: [0x2F58], NFC: [0x2F58], NFD: [0x2F58], NFKC: [0x723B], NFKD: [0x723B] },
+{ source: [0x2F59], NFC: [0x2F59], NFD: [0x2F59], NFKC: [0x723F], NFKD: [0x723F] },
+{ source: [0x2F5A], NFC: [0x2F5A], NFD: [0x2F5A], NFKC: [0x7247], NFKD: [0x7247] },
+{ source: [0x2F5B], NFC: [0x2F5B], NFD: [0x2F5B], NFKC: [0x7259], NFKD: [0x7259] },
+{ source: [0x2F5C], NFC: [0x2F5C], NFD: [0x2F5C], NFKC: [0x725B], NFKD: [0x725B] },
+{ source: [0x2F5D], NFC: [0x2F5D], NFD: [0x2F5D], NFKC: [0x72AC], NFKD: [0x72AC] },
+{ source: [0x2F5E], NFC: [0x2F5E], NFD: [0x2F5E], NFKC: [0x7384], NFKD: [0x7384] },
+{ source: [0x2F5F], NFC: [0x2F5F], NFD: [0x2F5F], NFKC: [0x7389], NFKD: [0x7389] },
+{ source: [0x2F60], NFC: [0x2F60], NFD: [0x2F60], NFKC: [0x74DC], NFKD: [0x74DC] },
+{ source: [0x2F61], NFC: [0x2F61], NFD: [0x2F61], NFKC: [0x74E6], NFKD: [0x74E6] },
+{ source: [0x2F62], NFC: [0x2F62], NFD: [0x2F62], NFKC: [0x7518], NFKD: [0x7518] },
+{ source: [0x2F63], NFC: [0x2F63], NFD: [0x2F63], NFKC: [0x751F], NFKD: [0x751F] },
+{ source: [0x2F64], NFC: [0x2F64], NFD: [0x2F64], NFKC: [0x7528], NFKD: [0x7528] },
+{ source: [0x2F65], NFC: [0x2F65], NFD: [0x2F65], NFKC: [0x7530], NFKD: [0x7530] },
+{ source: [0x2F66], NFC: [0x2F66], NFD: [0x2F66], NFKC: [0x758B], NFKD: [0x758B] },
+{ source: [0x2F67], NFC: [0x2F67], NFD: [0x2F67], NFKC: [0x7592], NFKD: [0x7592] },
+{ source: [0x2F68], NFC: [0x2F68], NFD: [0x2F68], NFKC: [0x7676], NFKD: [0x7676] },
+{ source: [0x2F69], NFC: [0x2F69], NFD: [0x2F69], NFKC: [0x767D], NFKD: [0x767D] },
+{ source: [0x2F6A], NFC: [0x2F6A], NFD: [0x2F6A], NFKC: [0x76AE], NFKD: [0x76AE] },
+{ source: [0x2F6B], NFC: [0x2F6B], NFD: [0x2F6B], NFKC: [0x76BF], NFKD: [0x76BF] },
+{ source: [0x2F6C], NFC: [0x2F6C], NFD: [0x2F6C], NFKC: [0x76EE], NFKD: [0x76EE] },
+{ source: [0x2F6D], NFC: [0x2F6D], NFD: [0x2F6D], NFKC: [0x77DB], NFKD: [0x77DB] },
+{ source: [0x2F6E], NFC: [0x2F6E], NFD: [0x2F6E], NFKC: [0x77E2], NFKD: [0x77E2] },
+{ source: [0x2F6F], NFC: [0x2F6F], NFD: [0x2F6F], NFKC: [0x77F3], NFKD: [0x77F3] },
+{ source: [0x2F70], NFC: [0x2F70], NFD: [0x2F70], NFKC: [0x793A], NFKD: [0x793A] },
+{ source: [0x2F71], NFC: [0x2F71], NFD: [0x2F71], NFKC: [0x79B8], NFKD: [0x79B8] },
+{ source: [0x2F72], NFC: [0x2F72], NFD: [0x2F72], NFKC: [0x79BE], NFKD: [0x79BE] },
+{ source: [0x2F73], NFC: [0x2F73], NFD: [0x2F73], NFKC: [0x7A74], NFKD: [0x7A74] },
+{ source: [0x2F74], NFC: [0x2F74], NFD: [0x2F74], NFKC: [0x7ACB], NFKD: [0x7ACB] },
+{ source: [0x2F75], NFC: [0x2F75], NFD: [0x2F75], NFKC: [0x7AF9], NFKD: [0x7AF9] },
+{ source: [0x2F76], NFC: [0x2F76], NFD: [0x2F76], NFKC: [0x7C73], NFKD: [0x7C73] },
+{ source: [0x2F77], NFC: [0x2F77], NFD: [0x2F77], NFKC: [0x7CF8], NFKD: [0x7CF8] },
+{ source: [0x2F78], NFC: [0x2F78], NFD: [0x2F78], NFKC: [0x7F36], NFKD: [0x7F36] },
+{ source: [0x2F79], NFC: [0x2F79], NFD: [0x2F79], NFKC: [0x7F51], NFKD: [0x7F51] },
+{ source: [0x2F7A], NFC: [0x2F7A], NFD: [0x2F7A], NFKC: [0x7F8A], NFKD: [0x7F8A] },
+{ source: [0x2F7B], NFC: [0x2F7B], NFD: [0x2F7B], NFKC: [0x7FBD], NFKD: [0x7FBD] },
+{ source: [0x2F7C], NFC: [0x2F7C], NFD: [0x2F7C], NFKC: [0x8001], NFKD: [0x8001] },
+{ source: [0x2F7D], NFC: [0x2F7D], NFD: [0x2F7D], NFKC: [0x800C], NFKD: [0x800C] },
+{ source: [0x2F7E], NFC: [0x2F7E], NFD: [0x2F7E], NFKC: [0x8012], NFKD: [0x8012] },
+{ source: [0x2F7F], NFC: [0x2F7F], NFD: [0x2F7F], NFKC: [0x8033], NFKD: [0x8033] },
+{ source: [0x2F80], NFC: [0x2F80], NFD: [0x2F80], NFKC: [0x807F], NFKD: [0x807F] },
+{ source: [0x2F81], NFC: [0x2F81], NFD: [0x2F81], NFKC: [0x8089], NFKD: [0x8089] },
+{ source: [0x2F82], NFC: [0x2F82], NFD: [0x2F82], NFKC: [0x81E3], NFKD: [0x81E3] },
+{ source: [0x2F83], NFC: [0x2F83], NFD: [0x2F83], NFKC: [0x81EA], NFKD: [0x81EA] },
+{ source: [0x2F84], NFC: [0x2F84], NFD: [0x2F84], NFKC: [0x81F3], NFKD: [0x81F3] },
+{ source: [0x2F85], NFC: [0x2F85], NFD: [0x2F85], NFKC: [0x81FC], NFKD: [0x81FC] },
+{ source: [0x2F86], NFC: [0x2F86], NFD: [0x2F86], NFKC: [0x820C], NFKD: [0x820C] },
+{ source: [0x2F87], NFC: [0x2F87], NFD: [0x2F87], NFKC: [0x821B], NFKD: [0x821B] },
+{ source: [0x2F88], NFC: [0x2F88], NFD: [0x2F88], NFKC: [0x821F], NFKD: [0x821F] },
+{ source: [0x2F89], NFC: [0x2F89], NFD: [0x2F89], NFKC: [0x826E], NFKD: [0x826E] },
+{ source: [0x2F8A], NFC: [0x2F8A], NFD: [0x2F8A], NFKC: [0x8272], NFKD: [0x8272] },
+{ source: [0x2F8B], NFC: [0x2F8B], NFD: [0x2F8B], NFKC: [0x8278], NFKD: [0x8278] },
+{ source: [0x2F8C], NFC: [0x2F8C], NFD: [0x2F8C], NFKC: [0x864D], NFKD: [0x864D] },
+{ source: [0x2F8D], NFC: [0x2F8D], NFD: [0x2F8D], NFKC: [0x866B], NFKD: [0x866B] },
+{ source: [0x2F8E], NFC: [0x2F8E], NFD: [0x2F8E], NFKC: [0x8840], NFKD: [0x8840] },
+{ source: [0x2F8F], NFC: [0x2F8F], NFD: [0x2F8F], NFKC: [0x884C], NFKD: [0x884C] },
+{ source: [0x2F90], NFC: [0x2F90], NFD: [0x2F90], NFKC: [0x8863], NFKD: [0x8863] },
+{ source: [0x2F91], NFC: [0x2F91], NFD: [0x2F91], NFKC: [0x897E], NFKD: [0x897E] },
+{ source: [0x2F92], NFC: [0x2F92], NFD: [0x2F92], NFKC: [0x898B], NFKD: [0x898B] },
+{ source: [0x2F93], NFC: [0x2F93], NFD: [0x2F93], NFKC: [0x89D2], NFKD: [0x89D2] },
+{ source: [0x2F94], NFC: [0x2F94], NFD: [0x2F94], NFKC: [0x8A00], NFKD: [0x8A00] },
+{ source: [0x2F95], NFC: [0x2F95], NFD: [0x2F95], NFKC: [0x8C37], NFKD: [0x8C37] },
+{ source: [0x2F96], NFC: [0x2F96], NFD: [0x2F96], NFKC: [0x8C46], NFKD: [0x8C46] },
+{ source: [0x2F97], NFC: [0x2F97], NFD: [0x2F97], NFKC: [0x8C55], NFKD: [0x8C55] },
+{ source: [0x2F98], NFC: [0x2F98], NFD: [0x2F98], NFKC: [0x8C78], NFKD: [0x8C78] },
+{ source: [0x2F99], NFC: [0x2F99], NFD: [0x2F99], NFKC: [0x8C9D], NFKD: [0x8C9D] },
+{ source: [0x2F9A], NFC: [0x2F9A], NFD: [0x2F9A], NFKC: [0x8D64], NFKD: [0x8D64] },
+{ source: [0x2F9B], NFC: [0x2F9B], NFD: [0x2F9B], NFKC: [0x8D70], NFKD: [0x8D70] },
+{ source: [0x2F9C], NFC: [0x2F9C], NFD: [0x2F9C], NFKC: [0x8DB3], NFKD: [0x8DB3] },
+{ source: [0x2F9D], NFC: [0x2F9D], NFD: [0x2F9D], NFKC: [0x8EAB], NFKD: [0x8EAB] },
+{ source: [0x2F9E], NFC: [0x2F9E], NFD: [0x2F9E], NFKC: [0x8ECA], NFKD: [0x8ECA] },
+{ source: [0x2F9F], NFC: [0x2F9F], NFD: [0x2F9F], NFKC: [0x8F9B], NFKD: [0x8F9B] },
+{ source: [0x2FA0], NFC: [0x2FA0], NFD: [0x2FA0], NFKC: [0x8FB0], NFKD: [0x8FB0] },
+{ source: [0x2FA1], NFC: [0x2FA1], NFD: [0x2FA1], NFKC: [0x8FB5], NFKD: [0x8FB5] },
+{ source: [0x2FA2], NFC: [0x2FA2], NFD: [0x2FA2], NFKC: [0x9091], NFKD: [0x9091] },
+{ source: [0x2FA3], NFC: [0x2FA3], NFD: [0x2FA3], NFKC: [0x9149], NFKD: [0x9149] },
+{ source: [0x2FA4], NFC: [0x2FA4], NFD: [0x2FA4], NFKC: [0x91C6], NFKD: [0x91C6] },
+{ source: [0x2FA5], NFC: [0x2FA5], NFD: [0x2FA5], NFKC: [0x91CC], NFKD: [0x91CC] },
+{ source: [0x2FA6], NFC: [0x2FA6], NFD: [0x2FA6], NFKC: [0x91D1], NFKD: [0x91D1] },
+{ source: [0x2FA7], NFC: [0x2FA7], NFD: [0x2FA7], NFKC: [0x9577], NFKD: [0x9577] },
+{ source: [0x2FA8], NFC: [0x2FA8], NFD: [0x2FA8], NFKC: [0x9580], NFKD: [0x9580] },
+{ source: [0x2FA9], NFC: [0x2FA9], NFD: [0x2FA9], NFKC: [0x961C], NFKD: [0x961C] },
+{ source: [0x2FAA], NFC: [0x2FAA], NFD: [0x2FAA], NFKC: [0x96B6], NFKD: [0x96B6] },
+{ source: [0x2FAB], NFC: [0x2FAB], NFD: [0x2FAB], NFKC: [0x96B9], NFKD: [0x96B9] },
+{ source: [0x2FAC], NFC: [0x2FAC], NFD: [0x2FAC], NFKC: [0x96E8], NFKD: [0x96E8] },
+{ source: [0x2FAD], NFC: [0x2FAD], NFD: [0x2FAD], NFKC: [0x9751], NFKD: [0x9751] },
+{ source: [0x2FAE], NFC: [0x2FAE], NFD: [0x2FAE], NFKC: [0x975E], NFKD: [0x975E] },
+{ source: [0x2FAF], NFC: [0x2FAF], NFD: [0x2FAF], NFKC: [0x9762], NFKD: [0x9762] },
+{ source: [0x2FB0], NFC: [0x2FB0], NFD: [0x2FB0], NFKC: [0x9769], NFKD: [0x9769] },
+{ source: [0x2FB1], NFC: [0x2FB1], NFD: [0x2FB1], NFKC: [0x97CB], NFKD: [0x97CB] },
+{ source: [0x2FB2], NFC: [0x2FB2], NFD: [0x2FB2], NFKC: [0x97ED], NFKD: [0x97ED] },
+{ source: [0x2FB3], NFC: [0x2FB3], NFD: [0x2FB3], NFKC: [0x97F3], NFKD: [0x97F3] },
+{ source: [0x2FB4], NFC: [0x2FB4], NFD: [0x2FB4], NFKC: [0x9801], NFKD: [0x9801] },
+{ source: [0x2FB5], NFC: [0x2FB5], NFD: [0x2FB5], NFKC: [0x98A8], NFKD: [0x98A8] },
+{ source: [0x2FB6], NFC: [0x2FB6], NFD: [0x2FB6], NFKC: [0x98DB], NFKD: [0x98DB] },
+{ source: [0x2FB7], NFC: [0x2FB7], NFD: [0x2FB7], NFKC: [0x98DF], NFKD: [0x98DF] },
+{ source: [0x2FB8], NFC: [0x2FB8], NFD: [0x2FB8], NFKC: [0x9996], NFKD: [0x9996] },
+{ source: [0x2FB9], NFC: [0x2FB9], NFD: [0x2FB9], NFKC: [0x9999], NFKD: [0x9999] },
+{ source: [0x2FBA], NFC: [0x2FBA], NFD: [0x2FBA], NFKC: [0x99AC], NFKD: [0x99AC] },
+{ source: [0x2FBB], NFC: [0x2FBB], NFD: [0x2FBB], NFKC: [0x9AA8], NFKD: [0x9AA8] },
+{ source: [0x2FBC], NFC: [0x2FBC], NFD: [0x2FBC], NFKC: [0x9AD8], NFKD: [0x9AD8] },
+{ source: [0x2FBD], NFC: [0x2FBD], NFD: [0x2FBD], NFKC: [0x9ADF], NFKD: [0x9ADF] },
+{ source: [0x2FBE], NFC: [0x2FBE], NFD: [0x2FBE], NFKC: [0x9B25], NFKD: [0x9B25] },
+{ source: [0x2FBF], NFC: [0x2FBF], NFD: [0x2FBF], NFKC: [0x9B2F], NFKD: [0x9B2F] },
+{ source: [0x2FC0], NFC: [0x2FC0], NFD: [0x2FC0], NFKC: [0x9B32], NFKD: [0x9B32] },
+{ source: [0x2FC1], NFC: [0x2FC1], NFD: [0x2FC1], NFKC: [0x9B3C], NFKD: [0x9B3C] },
+{ source: [0x2FC2], NFC: [0x2FC2], NFD: [0x2FC2], NFKC: [0x9B5A], NFKD: [0x9B5A] },
+{ source: [0x2FC3], NFC: [0x2FC3], NFD: [0x2FC3], NFKC: [0x9CE5], NFKD: [0x9CE5] },
+{ source: [0x2FC4], NFC: [0x2FC4], NFD: [0x2FC4], NFKC: [0x9E75], NFKD: [0x9E75] },
+{ source: [0x2FC5], NFC: [0x2FC5], NFD: [0x2FC5], NFKC: [0x9E7F], NFKD: [0x9E7F] },
+{ source: [0x2FC6], NFC: [0x2FC6], NFD: [0x2FC6], NFKC: [0x9EA5], NFKD: [0x9EA5] },
+{ source: [0x2FC7], NFC: [0x2FC7], NFD: [0x2FC7], NFKC: [0x9EBB], NFKD: [0x9EBB] },
+{ source: [0x2FC8], NFC: [0x2FC8], NFD: [0x2FC8], NFKC: [0x9EC3], NFKD: [0x9EC3] },
+{ source: [0x2FC9], NFC: [0x2FC9], NFD: [0x2FC9], NFKC: [0x9ECD], NFKD: [0x9ECD] },
+{ source: [0x2FCA], NFC: [0x2FCA], NFD: [0x2FCA], NFKC: [0x9ED1], NFKD: [0x9ED1] },
+{ source: [0x2FCB], NFC: [0x2FCB], NFD: [0x2FCB], NFKC: [0x9EF9], NFKD: [0x9EF9] },
+{ source: [0x2FCC], NFC: [0x2FCC], NFD: [0x2FCC], NFKC: [0x9EFD], NFKD: [0x9EFD] },
+{ source: [0x2FCD], NFC: [0x2FCD], NFD: [0x2FCD], NFKC: [0x9F0E], NFKD: [0x9F0E] },
+{ source: [0x2FCE], NFC: [0x2FCE], NFD: [0x2FCE], NFKC: [0x9F13], NFKD: [0x9F13] },
+{ source: [0x2FCF], NFC: [0x2FCF], NFD: [0x2FCF], NFKC: [0x9F20], NFKD: [0x9F20] },
+{ source: [0x2FD0], NFC: [0x2FD0], NFD: [0x2FD0], NFKC: [0x9F3B], NFKD: [0x9F3B] },
+{ source: [0x2FD1], NFC: [0x2FD1], NFD: [0x2FD1], NFKC: [0x9F4A], NFKD: [0x9F4A] },
+{ source: [0x2FD2], NFC: [0x2FD2], NFD: [0x2FD2], NFKC: [0x9F52], NFKD: [0x9F52] },
+{ source: [0x2FD3], NFC: [0x2FD3], NFD: [0x2FD3], NFKC: [0x9F8D], NFKD: [0x9F8D] },
+{ source: [0x2FD4], NFC: [0x2FD4], NFD: [0x2FD4], NFKC: [0x9F9C], NFKD: [0x9F9C] },
+{ source: [0x2FD5], NFC: [0x2FD5], NFD: [0x2FD5], NFKC: [0x9FA0], NFKD: [0x9FA0] },
+{ source: [0x3000], NFC: [0x3000], NFD: [0x3000], NFKC: [0x0020], NFKD: [0x0020] },
+{ source: [0x3036], NFC: [0x3036], NFD: [0x3036], NFKC: [0x3012], NFKD: [0x3012] },
+{ source: [0x3038], NFC: [0x3038], NFD: [0x3038], NFKC: [0x5341], NFKD: [0x5341] },
+{ source: [0x3039], NFC: [0x3039], NFD: [0x3039], NFKC: [0x5344], NFKD: [0x5344] },
+{ source: [0x303A], NFC: [0x303A], NFD: [0x303A], NFKC: [0x5345], NFKD: [0x5345] },
+{ source: [0x304C], NFC: [0x304C], NFD: [0x304B, 0x3099], NFKC: [0x304C], NFKD: [0x304B, 0x3099] },
+{ source: [0x304E], NFC: [0x304E], NFD: [0x304D, 0x3099], NFKC: [0x304E], NFKD: [0x304D, 0x3099] },
+{ source: [0x3050], NFC: [0x3050], NFD: [0x304F, 0x3099], NFKC: [0x3050], NFKD: [0x304F, 0x3099] },
+{ source: [0x3052], NFC: [0x3052], NFD: [0x3051, 0x3099], NFKC: [0x3052], NFKD: [0x3051, 0x3099] },
+{ source: [0x3054], NFC: [0x3054], NFD: [0x3053, 0x3099], NFKC: [0x3054], NFKD: [0x3053, 0x3099] },
+{ source: [0x3056], NFC: [0x3056], NFD: [0x3055, 0x3099], NFKC: [0x3056], NFKD: [0x3055, 0x3099] },
+{ source: [0x3058], NFC: [0x3058], NFD: [0x3057, 0x3099], NFKC: [0x3058], NFKD: [0x3057, 0x3099] },
+{ source: [0x305A], NFC: [0x305A], NFD: [0x3059, 0x3099], NFKC: [0x305A], NFKD: [0x3059, 0x3099] },
+{ source: [0x305C], NFC: [0x305C], NFD: [0x305B, 0x3099], NFKC: [0x305C], NFKD: [0x305B, 0x3099] },
+{ source: [0x305E], NFC: [0x305E], NFD: [0x305D, 0x3099], NFKC: [0x305E], NFKD: [0x305D, 0x3099] },
+{ source: [0x3060], NFC: [0x3060], NFD: [0x305F, 0x3099], NFKC: [0x3060], NFKD: [0x305F, 0x3099] },
+{ source: [0x3062], NFC: [0x3062], NFD: [0x3061, 0x3099], NFKC: [0x3062], NFKD: [0x3061, 0x3099] },
+{ source: [0x3065], NFC: [0x3065], NFD: [0x3064, 0x3099], NFKC: [0x3065], NFKD: [0x3064, 0x3099] },
+{ source: [0x3067], NFC: [0x3067], NFD: [0x3066, 0x3099], NFKC: [0x3067], NFKD: [0x3066, 0x3099] },
+{ source: [0x3069], NFC: [0x3069], NFD: [0x3068, 0x3099], NFKC: [0x3069], NFKD: [0x3068, 0x3099] },
+{ source: [0x3070], NFC: [0x3070], NFD: [0x306F, 0x3099], NFKC: [0x3070], NFKD: [0x306F, 0x3099] },
+{ source: [0x3071], NFC: [0x3071], NFD: [0x306F, 0x309A], NFKC: [0x3071], NFKD: [0x306F, 0x309A] },
+{ source: [0x3073], NFC: [0x3073], NFD: [0x3072, 0x3099], NFKC: [0x3073], NFKD: [0x3072, 0x3099] },
+{ source: [0x3074], NFC: [0x3074], NFD: [0x3072, 0x309A], NFKC: [0x3074], NFKD: [0x3072, 0x309A] },
+{ source: [0x3076], NFC: [0x3076], NFD: [0x3075, 0x3099], NFKC: [0x3076], NFKD: [0x3075, 0x3099] },
+{ source: [0x3077], NFC: [0x3077], NFD: [0x3075, 0x309A], NFKC: [0x3077], NFKD: [0x3075, 0x309A] },
+{ source: [0x3079], NFC: [0x3079], NFD: [0x3078, 0x3099], NFKC: [0x3079], NFKD: [0x3078, 0x3099] },
+{ source: [0x307A], NFC: [0x307A], NFD: [0x3078, 0x309A], NFKC: [0x307A], NFKD: [0x3078, 0x309A] },
+{ source: [0x307C], NFC: [0x307C], NFD: [0x307B, 0x3099], NFKC: [0x307C], NFKD: [0x307B, 0x3099] },
+{ source: [0x307D], NFC: [0x307D], NFD: [0x307B, 0x309A], NFKC: [0x307D], NFKD: [0x307B, 0x309A] },
+{ source: [0x3094], NFC: [0x3094], NFD: [0x3046, 0x3099], NFKC: [0x3094], NFKD: [0x3046, 0x3099] },
+{ source: [0x309B], NFC: [0x309B], NFD: [0x309B], NFKC: [0x0020, 0x3099], NFKD: [0x0020, 0x3099] },
+{ source: [0x309C], NFC: [0x309C], NFD: [0x309C], NFKC: [0x0020, 0x309A], NFKD: [0x0020, 0x309A] },
+{ source: [0x309E], NFC: [0x309E], NFD: [0x309D, 0x3099], NFKC: [0x309E], NFKD: [0x309D, 0x3099] },
+{ source: [0x309F], NFC: [0x309F], NFD: [0x309F], NFKC: [0x3088, 0x308A], NFKD: [0x3088, 0x308A] },
+{ source: [0x30AC], NFC: [0x30AC], NFD: [0x30AB, 0x3099], NFKC: [0x30AC], NFKD: [0x30AB, 0x3099] },
+{ source: [0x30AE], NFC: [0x30AE], NFD: [0x30AD, 0x3099], NFKC: [0x30AE], NFKD: [0x30AD, 0x3099] },
+{ source: [0x30B0], NFC: [0x30B0], NFD: [0x30AF, 0x3099], NFKC: [0x30B0], NFKD: [0x30AF, 0x3099] },
+{ source: [0x30B2], NFC: [0x30B2], NFD: [0x30B1, 0x3099], NFKC: [0x30B2], NFKD: [0x30B1, 0x3099] },
+{ source: [0x30B4], NFC: [0x30B4], NFD: [0x30B3, 0x3099], NFKC: [0x30B4], NFKD: [0x30B3, 0x3099] },
+{ source: [0x30B6], NFC: [0x30B6], NFD: [0x30B5, 0x3099], NFKC: [0x30B6], NFKD: [0x30B5, 0x3099] },
+{ source: [0x30B8], NFC: [0x30B8], NFD: [0x30B7, 0x3099], NFKC: [0x30B8], NFKD: [0x30B7, 0x3099] },
+{ source: [0x30BA], NFC: [0x30BA], NFD: [0x30B9, 0x3099], NFKC: [0x30BA], NFKD: [0x30B9, 0x3099] },
+{ source: [0x30BC], NFC: [0x30BC], NFD: [0x30BB, 0x3099], NFKC: [0x30BC], NFKD: [0x30BB, 0x3099] },
+{ source: [0x30BE], NFC: [0x30BE], NFD: [0x30BD, 0x3099], NFKC: [0x30BE], NFKD: [0x30BD, 0x3099] },
+{ source: [0x30C0], NFC: [0x30C0], NFD: [0x30BF, 0x3099], NFKC: [0x30C0], NFKD: [0x30BF, 0x3099] },
+{ source: [0x30C2], NFC: [0x30C2], NFD: [0x30C1, 0x3099], NFKC: [0x30C2], NFKD: [0x30C1, 0x3099] },
+{ source: [0x30C5], NFC: [0x30C5], NFD: [0x30C4, 0x3099], NFKC: [0x30C5], NFKD: [0x30C4, 0x3099] },
+{ source: [0x30C7], NFC: [0x30C7], NFD: [0x30C6, 0x3099], NFKC: [0x30C7], NFKD: [0x30C6, 0x3099] },
+{ source: [0x30C9], NFC: [0x30C9], NFD: [0x30C8, 0x3099], NFKC: [0x30C9], NFKD: [0x30C8, 0x3099] },
+{ source: [0x30D0], NFC: [0x30D0], NFD: [0x30CF, 0x3099], NFKC: [0x30D0], NFKD: [0x30CF, 0x3099] },
+{ source: [0x30D1], NFC: [0x30D1], NFD: [0x30CF, 0x309A], NFKC: [0x30D1], NFKD: [0x30CF, 0x309A] },
+{ source: [0x30D3], NFC: [0x30D3], NFD: [0x30D2, 0x3099], NFKC: [0x30D3], NFKD: [0x30D2, 0x3099] },
+{ source: [0x30D4], NFC: [0x30D4], NFD: [0x30D2, 0x309A], NFKC: [0x30D4], NFKD: [0x30D2, 0x309A] },
+{ source: [0x30D6], NFC: [0x30D6], NFD: [0x30D5, 0x3099], NFKC: [0x30D6], NFKD: [0x30D5, 0x3099] },
+{ source: [0x30D7], NFC: [0x30D7], NFD: [0x30D5, 0x309A], NFKC: [0x30D7], NFKD: [0x30D5, 0x309A] },
+{ source: [0x30D9], NFC: [0x30D9], NFD: [0x30D8, 0x3099], NFKC: [0x30D9], NFKD: [0x30D8, 0x3099] },
+{ source: [0x30DA], NFC: [0x30DA], NFD: [0x30D8, 0x309A], NFKC: [0x30DA], NFKD: [0x30D8, 0x309A] },
+{ source: [0x30DC], NFC: [0x30DC], NFD: [0x30DB, 0x3099], NFKC: [0x30DC], NFKD: [0x30DB, 0x3099] },
+{ source: [0x30DD], NFC: [0x30DD], NFD: [0x30DB, 0x309A], NFKC: [0x30DD], NFKD: [0x30DB, 0x309A] },
+{ source: [0x30F4], NFC: [0x30F4], NFD: [0x30A6, 0x3099], NFKC: [0x30F4], NFKD: [0x30A6, 0x3099] },
+{ source: [0x30F7], NFC: [0x30F7], NFD: [0x30EF, 0x3099], NFKC: [0x30F7], NFKD: [0x30EF, 0x3099] },
+{ source: [0x30F8], NFC: [0x30F8], NFD: [0x30F0, 0x3099], NFKC: [0x30F8], NFKD: [0x30F0, 0x3099] },
+{ source: [0x30F9], NFC: [0x30F9], NFD: [0x30F1, 0x3099], NFKC: [0x30F9], NFKD: [0x30F1, 0x3099] },
+{ source: [0x30FA], NFC: [0x30FA], NFD: [0x30F2, 0x3099], NFKC: [0x30FA], NFKD: [0x30F2, 0x3099] },
+{ source: [0x30FE], NFC: [0x30FE], NFD: [0x30FD, 0x3099], NFKC: [0x30FE], NFKD: [0x30FD, 0x3099] },
+{ source: [0x30FF], NFC: [0x30FF], NFD: [0x30FF], NFKC: [0x30B3, 0x30C8], NFKD: [0x30B3, 0x30C8] },
+{ source: [0x3131], NFC: [0x3131], NFD: [0x3131], NFKC: [0x1100], NFKD: [0x1100] },
+{ source: [0x3132], NFC: [0x3132], NFD: [0x3132], NFKC: [0x1101], NFKD: [0x1101] },
+{ source: [0x3133], NFC: [0x3133], NFD: [0x3133], NFKC: [0x11AA], NFKD: [0x11AA] },
+{ source: [0x3134], NFC: [0x3134], NFD: [0x3134], NFKC: [0x1102], NFKD: [0x1102] },
+{ source: [0x3135], NFC: [0x3135], NFD: [0x3135], NFKC: [0x11AC], NFKD: [0x11AC] },
+{ source: [0x3136], NFC: [0x3136], NFD: [0x3136], NFKC: [0x11AD], NFKD: [0x11AD] },
+{ source: [0x3137], NFC: [0x3137], NFD: [0x3137], NFKC: [0x1103], NFKD: [0x1103] },
+{ source: [0x3138], NFC: [0x3138], NFD: [0x3138], NFKC: [0x1104], NFKD: [0x1104] },
+{ source: [0x3139], NFC: [0x3139], NFD: [0x3139], NFKC: [0x1105], NFKD: [0x1105] },
+{ source: [0x313A], NFC: [0x313A], NFD: [0x313A], NFKC: [0x11B0], NFKD: [0x11B0] },
+{ source: [0x313B], NFC: [0x313B], NFD: [0x313B], NFKC: [0x11B1], NFKD: [0x11B1] },
+{ source: [0x313C], NFC: [0x313C], NFD: [0x313C], NFKC: [0x11B2], NFKD: [0x11B2] },
+{ source: [0x313D], NFC: [0x313D], NFD: [0x313D], NFKC: [0x11B3], NFKD: [0x11B3] },
+{ source: [0x313E], NFC: [0x313E], NFD: [0x313E], NFKC: [0x11B4], NFKD: [0x11B4] },
+{ source: [0x313F], NFC: [0x313F], NFD: [0x313F], NFKC: [0x11B5], NFKD: [0x11B5] },
+{ source: [0x3140], NFC: [0x3140], NFD: [0x3140], NFKC: [0x111A], NFKD: [0x111A] },
+{ source: [0x3141], NFC: [0x3141], NFD: [0x3141], NFKC: [0x1106], NFKD: [0x1106] },
+{ source: [0x3142], NFC: [0x3142], NFD: [0x3142], NFKC: [0x1107], NFKD: [0x1107] },
+{ source: [0x3143], NFC: [0x3143], NFD: [0x3143], NFKC: [0x1108], NFKD: [0x1108] },
+{ source: [0x3144], NFC: [0x3144], NFD: [0x3144], NFKC: [0x1121], NFKD: [0x1121] },
+{ source: [0x3145], NFC: [0x3145], NFD: [0x3145], NFKC: [0x1109], NFKD: [0x1109] },
+{ source: [0x3146], NFC: [0x3146], NFD: [0x3146], NFKC: [0x110A], NFKD: [0x110A] },
+{ source: [0x3147], NFC: [0x3147], NFD: [0x3147], NFKC: [0x110B], NFKD: [0x110B] },
+{ source: [0x3148], NFC: [0x3148], NFD: [0x3148], NFKC: [0x110C], NFKD: [0x110C] },
+{ source: [0x3149], NFC: [0x3149], NFD: [0x3149], NFKC: [0x110D], NFKD: [0x110D] },
+{ source: [0x314A], NFC: [0x314A], NFD: [0x314A], NFKC: [0x110E], NFKD: [0x110E] },
+{ source: [0x314B], NFC: [0x314B], NFD: [0x314B], NFKC: [0x110F], NFKD: [0x110F] },
+{ source: [0x314C], NFC: [0x314C], NFD: [0x314C], NFKC: [0x1110], NFKD: [0x1110] },
+{ source: [0x314D], NFC: [0x314D], NFD: [0x314D], NFKC: [0x1111], NFKD: [0x1111] },
+{ source: [0x314E], NFC: [0x314E], NFD: [0x314E], NFKC: [0x1112], NFKD: [0x1112] },
+{ source: [0x314F], NFC: [0x314F], NFD: [0x314F], NFKC: [0x1161], NFKD: [0x1161] },
+{ source: [0x3150], NFC: [0x3150], NFD: [0x3150], NFKC: [0x1162], NFKD: [0x1162] },
+{ source: [0x3151], NFC: [0x3151], NFD: [0x3151], NFKC: [0x1163], NFKD: [0x1163] },
+{ source: [0x3152], NFC: [0x3152], NFD: [0x3152], NFKC: [0x1164], NFKD: [0x1164] },
+{ source: [0x3153], NFC: [0x3153], NFD: [0x3153], NFKC: [0x1165], NFKD: [0x1165] },
+{ source: [0x3154], NFC: [0x3154], NFD: [0x3154], NFKC: [0x1166], NFKD: [0x1166] },
+{ source: [0x3155], NFC: [0x3155], NFD: [0x3155], NFKC: [0x1167], NFKD: [0x1167] },
+{ source: [0x3156], NFC: [0x3156], NFD: [0x3156], NFKC: [0x1168], NFKD: [0x1168] },
+{ source: [0x3157], NFC: [0x3157], NFD: [0x3157], NFKC: [0x1169], NFKD: [0x1169] },
+{ source: [0x3158], NFC: [0x3158], NFD: [0x3158], NFKC: [0x116A], NFKD: [0x116A] },
+{ source: [0x3159], NFC: [0x3159], NFD: [0x3159], NFKC: [0x116B], NFKD: [0x116B] },
+{ source: [0x315A], NFC: [0x315A], NFD: [0x315A], NFKC: [0x116C], NFKD: [0x116C] },
+{ source: [0x315B], NFC: [0x315B], NFD: [0x315B], NFKC: [0x116D], NFKD: [0x116D] },
+{ source: [0x315C], NFC: [0x315C], NFD: [0x315C], NFKC: [0x116E], NFKD: [0x116E] },
+{ source: [0x315D], NFC: [0x315D], NFD: [0x315D], NFKC: [0x116F], NFKD: [0x116F] },
+{ source: [0x315E], NFC: [0x315E], NFD: [0x315E], NFKC: [0x1170], NFKD: [0x1170] },
+{ source: [0x315F], NFC: [0x315F], NFD: [0x315F], NFKC: [0x1171], NFKD: [0x1171] },
+{ source: [0x3160], NFC: [0x3160], NFD: [0x3160], NFKC: [0x1172], NFKD: [0x1172] },
+{ source: [0x3161], NFC: [0x3161], NFD: [0x3161], NFKC: [0x1173], NFKD: [0x1173] },
+{ source: [0x3162], NFC: [0x3162], NFD: [0x3162], NFKC: [0x1174], NFKD: [0x1174] },
+{ source: [0x3163], NFC: [0x3163], NFD: [0x3163], NFKC: [0x1175], NFKD: [0x1175] },
+{ source: [0x3164], NFC: [0x3164], NFD: [0x3164], NFKC: [0x1160], NFKD: [0x1160] },
+{ source: [0x3165], NFC: [0x3165], NFD: [0x3165], NFKC: [0x1114], NFKD: [0x1114] },
+{ source: [0x3166], NFC: [0x3166], NFD: [0x3166], NFKC: [0x1115], NFKD: [0x1115] },
+{ source: [0x3167], NFC: [0x3167], NFD: [0x3167], NFKC: [0x11C7], NFKD: [0x11C7] },
+{ source: [0x3168], NFC: [0x3168], NFD: [0x3168], NFKC: [0x11C8], NFKD: [0x11C8] },
+{ source: [0x3169], NFC: [0x3169], NFD: [0x3169], NFKC: [0x11CC], NFKD: [0x11CC] },
+{ source: [0x316A], NFC: [0x316A], NFD: [0x316A], NFKC: [0x11CE], NFKD: [0x11CE] },
+{ source: [0x316B], NFC: [0x316B], NFD: [0x316B], NFKC: [0x11D3], NFKD: [0x11D3] },
+{ source: [0x316C], NFC: [0x316C], NFD: [0x316C], NFKC: [0x11D7], NFKD: [0x11D7] },
+{ source: [0x316D], NFC: [0x316D], NFD: [0x316D], NFKC: [0x11D9], NFKD: [0x11D9] },
+{ source: [0x316E], NFC: [0x316E], NFD: [0x316E], NFKC: [0x111C], NFKD: [0x111C] },
+{ source: [0x316F], NFC: [0x316F], NFD: [0x316F], NFKC: [0x11DD], NFKD: [0x11DD] },
+{ source: [0x3170], NFC: [0x3170], NFD: [0x3170], NFKC: [0x11DF], NFKD: [0x11DF] },
+{ source: [0x3171], NFC: [0x3171], NFD: [0x3171], NFKC: [0x111D], NFKD: [0x111D] },
+{ source: [0x3172], NFC: [0x3172], NFD: [0x3172], NFKC: [0x111E], NFKD: [0x111E] },
+{ source: [0x3173], NFC: [0x3173], NFD: [0x3173], NFKC: [0x1120], NFKD: [0x1120] },
+{ source: [0x3174], NFC: [0x3174], NFD: [0x3174], NFKC: [0x1122], NFKD: [0x1122] },
+{ source: [0x3175], NFC: [0x3175], NFD: [0x3175], NFKC: [0x1123], NFKD: [0x1123] },
+{ source: [0x3176], NFC: [0x3176], NFD: [0x3176], NFKC: [0x1127], NFKD: [0x1127] },
+{ source: [0x3177], NFC: [0x3177], NFD: [0x3177], NFKC: [0x1129], NFKD: [0x1129] },
+{ source: [0x3178], NFC: [0x3178], NFD: [0x3178], NFKC: [0x112B], NFKD: [0x112B] },
+{ source: [0x3179], NFC: [0x3179], NFD: [0x3179], NFKC: [0x112C], NFKD: [0x112C] },
+{ source: [0x317A], NFC: [0x317A], NFD: [0x317A], NFKC: [0x112D], NFKD: [0x112D] },
+{ source: [0x317B], NFC: [0x317B], NFD: [0x317B], NFKC: [0x112E], NFKD: [0x112E] },
+{ source: [0x317C], NFC: [0x317C], NFD: [0x317C], NFKC: [0x112F], NFKD: [0x112F] },
+{ source: [0x317D], NFC: [0x317D], NFD: [0x317D], NFKC: [0x1132], NFKD: [0x1132] },
+{ source: [0x317E], NFC: [0x317E], NFD: [0x317E], NFKC: [0x1136], NFKD: [0x1136] },
+{ source: [0x317F], NFC: [0x317F], NFD: [0x317F], NFKC: [0x1140], NFKD: [0x1140] },
+{ source: [0x3180], NFC: [0x3180], NFD: [0x3180], NFKC: [0x1147], NFKD: [0x1147] },
+{ source: [0x3181], NFC: [0x3181], NFD: [0x3181], NFKC: [0x114C], NFKD: [0x114C] },
+{ source: [0x3182], NFC: [0x3182], NFD: [0x3182], NFKC: [0x11F1], NFKD: [0x11F1] },
+{ source: [0x3183], NFC: [0x3183], NFD: [0x3183], NFKC: [0x11F2], NFKD: [0x11F2] },
+{ source: [0x3184], NFC: [0x3184], NFD: [0x3184], NFKC: [0x1157], NFKD: [0x1157] },
+{ source: [0x3185], NFC: [0x3185], NFD: [0x3185], NFKC: [0x1158], NFKD: [0x1158] },
+{ source: [0x3186], NFC: [0x3186], NFD: [0x3186], NFKC: [0x1159], NFKD: [0x1159] },
+{ source: [0x3187], NFC: [0x3187], NFD: [0x3187], NFKC: [0x1184], NFKD: [0x1184] },
+{ source: [0x3188], NFC: [0x3188], NFD: [0x3188], NFKC: [0x1185], NFKD: [0x1185] },
+{ source: [0x3189], NFC: [0x3189], NFD: [0x3189], NFKC: [0x1188], NFKD: [0x1188] },
+{ source: [0x318A], NFC: [0x318A], NFD: [0x318A], NFKC: [0x1191], NFKD: [0x1191] },
+{ source: [0x318B], NFC: [0x318B], NFD: [0x318B], NFKC: [0x1192], NFKD: [0x1192] },
+{ source: [0x318C], NFC: [0x318C], NFD: [0x318C], NFKC: [0x1194], NFKD: [0x1194] },
+{ source: [0x318D], NFC: [0x318D], NFD: [0x318D], NFKC: [0x119E], NFKD: [0x119E] },
+{ source: [0x318E], NFC: [0x318E], NFD: [0x318E], NFKC: [0x11A1], NFKD: [0x11A1] },
+{ source: [0x3192], NFC: [0x3192], NFD: [0x3192], NFKC: [0x4E00], NFKD: [0x4E00] },
+{ source: [0x3193], NFC: [0x3193], NFD: [0x3193], NFKC: [0x4E8C], NFKD: [0x4E8C] },
+{ source: [0x3194], NFC: [0x3194], NFD: [0x3194], NFKC: [0x4E09], NFKD: [0x4E09] },
+{ source: [0x3195], NFC: [0x3195], NFD: [0x3195], NFKC: [0x56DB], NFKD: [0x56DB] },
+{ source: [0x3196], NFC: [0x3196], NFD: [0x3196], NFKC: [0x4E0A], NFKD: [0x4E0A] },
+{ source: [0x3197], NFC: [0x3197], NFD: [0x3197], NFKC: [0x4E2D], NFKD: [0x4E2D] },
+{ source: [0x3198], NFC: [0x3198], NFD: [0x3198], NFKC: [0x4E0B], NFKD: [0x4E0B] },
+{ source: [0x3199], NFC: [0x3199], NFD: [0x3199], NFKC: [0x7532], NFKD: [0x7532] },
+{ source: [0x319A], NFC: [0x319A], NFD: [0x319A], NFKC: [0x4E59], NFKD: [0x4E59] },
+{ source: [0x319B], NFC: [0x319B], NFD: [0x319B], NFKC: [0x4E19], NFKD: [0x4E19] },
+{ source: [0x319C], NFC: [0x319C], NFD: [0x319C], NFKC: [0x4E01], NFKD: [0x4E01] },
+{ source: [0x319D], NFC: [0x319D], NFD: [0x319D], NFKC: [0x5929], NFKD: [0x5929] },
+{ source: [0x319E], NFC: [0x319E], NFD: [0x319E], NFKC: [0x5730], NFKD: [0x5730] },
+{ source: [0x319F], NFC: [0x319F], NFD: [0x319F], NFKC: [0x4EBA], NFKD: [0x4EBA] },
+{ source: [0x3200], NFC: [0x3200], NFD: [0x3200], NFKC: [0x0028, 0x1100, 0x0029], NFKD: [0x0028, 0x1100, 0x0029] },
+{ source: [0x3201], NFC: [0x3201], NFD: [0x3201], NFKC: [0x0028, 0x1102, 0x0029], NFKD: [0x0028, 0x1102, 0x0029] },
+{ source: [0x3202], NFC: [0x3202], NFD: [0x3202], NFKC: [0x0028, 0x1103, 0x0029], NFKD: [0x0028, 0x1103, 0x0029] },
+{ source: [0x3203], NFC: [0x3203], NFD: [0x3203], NFKC: [0x0028, 0x1105, 0x0029], NFKD: [0x0028, 0x1105, 0x0029] },
+{ source: [0x3204], NFC: [0x3204], NFD: [0x3204], NFKC: [0x0028, 0x1106, 0x0029], NFKD: [0x0028, 0x1106, 0x0029] },
+{ source: [0x3205], NFC: [0x3205], NFD: [0x3205], NFKC: [0x0028, 0x1107, 0x0029], NFKD: [0x0028, 0x1107, 0x0029] },
+{ source: [0x3206], NFC: [0x3206], NFD: [0x3206], NFKC: [0x0028, 0x1109, 0x0029], NFKD: [0x0028, 0x1109, 0x0029] },
+{ source: [0x3207], NFC: [0x3207], NFD: [0x3207], NFKC: [0x0028, 0x110B, 0x0029], NFKD: [0x0028, 0x110B, 0x0029] },
+{ source: [0x3208], NFC: [0x3208], NFD: [0x3208], NFKC: [0x0028, 0x110C, 0x0029], NFKD: [0x0028, 0x110C, 0x0029] },
+{ source: [0x3209], NFC: [0x3209], NFD: [0x3209], NFKC: [0x0028, 0x110E, 0x0029], NFKD: [0x0028, 0x110E, 0x0029] },
+{ source: [0x320A], NFC: [0x320A], NFD: [0x320A], NFKC: [0x0028, 0x110F, 0x0029], NFKD: [0x0028, 0x110F, 0x0029] },
+{ source: [0x320B], NFC: [0x320B], NFD: [0x320B], NFKC: [0x0028, 0x1110, 0x0029], NFKD: [0x0028, 0x1110, 0x0029] },
+{ source: [0x320C], NFC: [0x320C], NFD: [0x320C], NFKC: [0x0028, 0x1111, 0x0029], NFKD: [0x0028, 0x1111, 0x0029] },
+{ source: [0x320D], NFC: [0x320D], NFD: [0x320D], NFKC: [0x0028, 0x1112, 0x0029], NFKD: [0x0028, 0x1112, 0x0029] },
+{ source: [0x320E], NFC: [0x320E], NFD: [0x320E], NFKC: [0x0028, 0xAC00, 0x0029], NFKD: [0x0028, 0x1100, 0x1161, 0x0029] },
+{ source: [0x320F], NFC: [0x320F], NFD: [0x320F], NFKC: [0x0028, 0xB098, 0x0029], NFKD: [0x0028, 0x1102, 0x1161, 0x0029] },
+{ source: [0x3210], NFC: [0x3210], NFD: [0x3210], NFKC: [0x0028, 0xB2E4, 0x0029], NFKD: [0x0028, 0x1103, 0x1161, 0x0029] },
+{ source: [0x3211], NFC: [0x3211], NFD: [0x3211], NFKC: [0x0028, 0xB77C, 0x0029], NFKD: [0x0028, 0x1105, 0x1161, 0x0029] },
+{ source: [0x3212], NFC: [0x3212], NFD: [0x3212], NFKC: [0x0028, 0xB9C8, 0x0029], NFKD: [0x0028, 0x1106, 0x1161, 0x0029] },
+{ source: [0x3213], NFC: [0x3213], NFD: [0x3213], NFKC: [0x0028, 0xBC14, 0x0029], NFKD: [0x0028, 0x1107, 0x1161, 0x0029] },
+{ source: [0x3214], NFC: [0x3214], NFD: [0x3214], NFKC: [0x0028, 0xC0AC, 0x0029], NFKD: [0x0028, 0x1109, 0x1161, 0x0029] },
+{ source: [0x3215], NFC: [0x3215], NFD: [0x3215], NFKC: [0x0028, 0xC544, 0x0029], NFKD: [0x0028, 0x110B, 0x1161, 0x0029] },
+{ source: [0x3216], NFC: [0x3216], NFD: [0x3216], NFKC: [0x0028, 0xC790, 0x0029], NFKD: [0x0028, 0x110C, 0x1161, 0x0029] },
+{ source: [0x3217], NFC: [0x3217], NFD: [0x3217], NFKC: [0x0028, 0xCC28, 0x0029], NFKD: [0x0028, 0x110E, 0x1161, 0x0029] },
+{ source: [0x3218], NFC: [0x3218], NFD: [0x3218], NFKC: [0x0028, 0xCE74, 0x0029], NFKD: [0x0028, 0x110F, 0x1161, 0x0029] },
+{ source: [0x3219], NFC: [0x3219], NFD: [0x3219], NFKC: [0x0028, 0xD0C0, 0x0029], NFKD: [0x0028, 0x1110, 0x1161, 0x0029] },
+{ source: [0x321A], NFC: [0x321A], NFD: [0x321A], NFKC: [0x0028, 0xD30C, 0x0029], NFKD: [0x0028, 0x1111, 0x1161, 0x0029] },
+{ source: [0x321B], NFC: [0x321B], NFD: [0x321B], NFKC: [0x0028, 0xD558, 0x0029], NFKD: [0x0028, 0x1112, 0x1161, 0x0029] },
+{ source: [0x321C], NFC: [0x321C], NFD: [0x321C], NFKC: [0x0028, 0xC8FC, 0x0029], NFKD: [0x0028, 0x110C, 0x116E, 0x0029] },
+{ source: [0x321D], NFC: [0x321D], NFD: [0x321D], NFKC: [0x0028, 0xC624, 0xC804, 0x0029], NFKD: [0x0028, 0x110B, 0x1169, 0x110C, 0x1165, 0x11AB, 0x0029] },
+{ source: [0x321E], NFC: [0x321E], NFD: [0x321E], NFKC: [0x0028, 0xC624, 0xD6C4, 0x0029], NFKD: [0x0028, 0x110B, 0x1169, 0x1112, 0x116E, 0x0029] },
+{ source: [0x3220], NFC: [0x3220], NFD: [0x3220], NFKC: [0x0028, 0x4E00, 0x0029], NFKD: [0x0028, 0x4E00, 0x0029] },
+{ source: [0x3221], NFC: [0x3221], NFD: [0x3221], NFKC: [0x0028, 0x4E8C, 0x0029], NFKD: [0x0028, 0x4E8C, 0x0029] },
+{ source: [0x3222], NFC: [0x3222], NFD: [0x3222], NFKC: [0x0028, 0x4E09, 0x0029], NFKD: [0x0028, 0x4E09, 0x0029] },
+{ source: [0x3223], NFC: [0x3223], NFD: [0x3223], NFKC: [0x0028, 0x56DB, 0x0029], NFKD: [0x0028, 0x56DB, 0x0029] },
+{ source: [0x3224], NFC: [0x3224], NFD: [0x3224], NFKC: [0x0028, 0x4E94, 0x0029], NFKD: [0x0028, 0x4E94, 0x0029] },
+{ source: [0x3225], NFC: [0x3225], NFD: [0x3225], NFKC: [0x0028, 0x516D, 0x0029], NFKD: [0x0028, 0x516D, 0x0029] },
+{ source: [0x3226], NFC: [0x3226], NFD: [0x3226], NFKC: [0x0028, 0x4E03, 0x0029], NFKD: [0x0028, 0x4E03, 0x0029] },
+{ source: [0x3227], NFC: [0x3227], NFD: [0x3227], NFKC: [0x0028, 0x516B, 0x0029], NFKD: [0x0028, 0x516B, 0x0029] },
+{ source: [0x3228], NFC: [0x3228], NFD: [0x3228], NFKC: [0x0028, 0x4E5D, 0x0029], NFKD: [0x0028, 0x4E5D, 0x0029] },
+{ source: [0x3229], NFC: [0x3229], NFD: [0x3229], NFKC: [0x0028, 0x5341, 0x0029], NFKD: [0x0028, 0x5341, 0x0029] },
+{ source: [0x322A], NFC: [0x322A], NFD: [0x322A], NFKC: [0x0028, 0x6708, 0x0029], NFKD: [0x0028, 0x6708, 0x0029] },
+{ source: [0x322B], NFC: [0x322B], NFD: [0x322B], NFKC: [0x0028, 0x706B, 0x0029], NFKD: [0x0028, 0x706B, 0x0029] },
+{ source: [0x322C], NFC: [0x322C], NFD: [0x322C], NFKC: [0x0028, 0x6C34, 0x0029], NFKD: [0x0028, 0x6C34, 0x0029] },
+{ source: [0x322D], NFC: [0x322D], NFD: [0x322D], NFKC: [0x0028, 0x6728, 0x0029], NFKD: [0x0028, 0x6728, 0x0029] },
+{ source: [0x322E], NFC: [0x322E], NFD: [0x322E], NFKC: [0x0028, 0x91D1, 0x0029], NFKD: [0x0028, 0x91D1, 0x0029] },
+{ source: [0x322F], NFC: [0x322F], NFD: [0x322F], NFKC: [0x0028, 0x571F, 0x0029], NFKD: [0x0028, 0x571F, 0x0029] },
+{ source: [0x3230], NFC: [0x3230], NFD: [0x3230], NFKC: [0x0028, 0x65E5, 0x0029], NFKD: [0x0028, 0x65E5, 0x0029] },
+{ source: [0x3231], NFC: [0x3231], NFD: [0x3231], NFKC: [0x0028, 0x682A, 0x0029], NFKD: [0x0028, 0x682A, 0x0029] },
+{ source: [0x3232], NFC: [0x3232], NFD: [0x3232], NFKC: [0x0028, 0x6709, 0x0029], NFKD: [0x0028, 0x6709, 0x0029] },
+{ source: [0x3233], NFC: [0x3233], NFD: [0x3233], NFKC: [0x0028, 0x793E, 0x0029], NFKD: [0x0028, 0x793E, 0x0029] },
+{ source: [0x3234], NFC: [0x3234], NFD: [0x3234], NFKC: [0x0028, 0x540D, 0x0029], NFKD: [0x0028, 0x540D, 0x0029] },
+{ source: [0x3235], NFC: [0x3235], NFD: [0x3235], NFKC: [0x0028, 0x7279, 0x0029], NFKD: [0x0028, 0x7279, 0x0029] },
+{ source: [0x3236], NFC: [0x3236], NFD: [0x3236], NFKC: [0x0028, 0x8CA1, 0x0029], NFKD: [0x0028, 0x8CA1, 0x0029] },
+{ source: [0x3237], NFC: [0x3237], NFD: [0x3237], NFKC: [0x0028, 0x795D, 0x0029], NFKD: [0x0028, 0x795D, 0x0029] },
+{ source: [0x3238], NFC: [0x3238], NFD: [0x3238], NFKC: [0x0028, 0x52B4, 0x0029], NFKD: [0x0028, 0x52B4, 0x0029] },
+{ source: [0x3239], NFC: [0x3239], NFD: [0x3239], NFKC: [0x0028, 0x4EE3, 0x0029], NFKD: [0x0028, 0x4EE3, 0x0029] },
+{ source: [0x323A], NFC: [0x323A], NFD: [0x323A], NFKC: [0x0028, 0x547C, 0x0029], NFKD: [0x0028, 0x547C, 0x0029] },
+{ source: [0x323B], NFC: [0x323B], NFD: [0x323B], NFKC: [0x0028, 0x5B66, 0x0029], NFKD: [0x0028, 0x5B66, 0x0029] },
+{ source: [0x323C], NFC: [0x323C], NFD: [0x323C], NFKC: [0x0028, 0x76E3, 0x0029], NFKD: [0x0028, 0x76E3, 0x0029] },
+{ source: [0x323D], NFC: [0x323D], NFD: [0x323D], NFKC: [0x0028, 0x4F01, 0x0029], NFKD: [0x0028, 0x4F01, 0x0029] },
+{ source: [0x323E], NFC: [0x323E], NFD: [0x323E], NFKC: [0x0028, 0x8CC7, 0x0029], NFKD: [0x0028, 0x8CC7, 0x0029] },
+{ source: [0x323F], NFC: [0x323F], NFD: [0x323F], NFKC: [0x0028, 0x5354, 0x0029], NFKD: [0x0028, 0x5354, 0x0029] },
+{ source: [0x3240], NFC: [0x3240], NFD: [0x3240], NFKC: [0x0028, 0x796D, 0x0029], NFKD: [0x0028, 0x796D, 0x0029] },
+{ source: [0x3241], NFC: [0x3241], NFD: [0x3241], NFKC: [0x0028, 0x4F11, 0x0029], NFKD: [0x0028, 0x4F11, 0x0029] },
+{ source: [0x3242], NFC: [0x3242], NFD: [0x3242], NFKC: [0x0028, 0x81EA, 0x0029], NFKD: [0x0028, 0x81EA, 0x0029] },
+{ source: [0x3243], NFC: [0x3243], NFD: [0x3243], NFKC: [0x0028, 0x81F3, 0x0029], NFKD: [0x0028, 0x81F3, 0x0029] },
+{ source: [0x3244], NFC: [0x3244], NFD: [0x3244], NFKC: [0x554F], NFKD: [0x554F] },
+{ source: [0x3245], NFC: [0x3245], NFD: [0x3245], NFKC: [0x5E7C], NFKD: [0x5E7C] },
+{ source: [0x3246], NFC: [0x3246], NFD: [0x3246], NFKC: [0x6587], NFKD: [0x6587] },
+{ source: [0x3247], NFC: [0x3247], NFD: [0x3247], NFKC: [0x7B8F], NFKD: [0x7B8F] },
+{ source: [0x3250], NFC: [0x3250], NFD: [0x3250], NFKC: [0x0050, 0x0054, 0x0045], NFKD: [0x0050, 0x0054, 0x0045] },
+{ source: [0x3251], NFC: [0x3251], NFD: [0x3251], NFKC: [0x0032, 0x0031], NFKD: [0x0032, 0x0031] },
+{ source: [0x3252], NFC: [0x3252], NFD: [0x3252], NFKC: [0x0032, 0x0032], NFKD: [0x0032, 0x0032] },
+{ source: [0x3253], NFC: [0x3253], NFD: [0x3253], NFKC: [0x0032, 0x0033], NFKD: [0x0032, 0x0033] },
+{ source: [0x3254], NFC: [0x3254], NFD: [0x3254], NFKC: [0x0032, 0x0034], NFKD: [0x0032, 0x0034] },
+{ source: [0x3255], NFC: [0x3255], NFD: [0x3255], NFKC: [0x0032, 0x0035], NFKD: [0x0032, 0x0035] },
+{ source: [0x3256], NFC: [0x3256], NFD: [0x3256], NFKC: [0x0032, 0x0036], NFKD: [0x0032, 0x0036] },
+{ source: [0x3257], NFC: [0x3257], NFD: [0x3257], NFKC: [0x0032, 0x0037], NFKD: [0x0032, 0x0037] },
+{ source: [0x3258], NFC: [0x3258], NFD: [0x3258], NFKC: [0x0032, 0x0038], NFKD: [0x0032, 0x0038] },
+{ source: [0x3259], NFC: [0x3259], NFD: [0x3259], NFKC: [0x0032, 0x0039], NFKD: [0x0032, 0x0039] },
+{ source: [0x325A], NFC: [0x325A], NFD: [0x325A], NFKC: [0x0033, 0x0030], NFKD: [0x0033, 0x0030] },
+{ source: [0x325B], NFC: [0x325B], NFD: [0x325B], NFKC: [0x0033, 0x0031], NFKD: [0x0033, 0x0031] },
+{ source: [0x325C], NFC: [0x325C], NFD: [0x325C], NFKC: [0x0033, 0x0032], NFKD: [0x0033, 0x0032] },
+{ source: [0x325D], NFC: [0x325D], NFD: [0x325D], NFKC: [0x0033, 0x0033], NFKD: [0x0033, 0x0033] },
+{ source: [0x325E], NFC: [0x325E], NFD: [0x325E], NFKC: [0x0033, 0x0034], NFKD: [0x0033, 0x0034] },
+{ source: [0x325F], NFC: [0x325F], NFD: [0x325F], NFKC: [0x0033, 0x0035], NFKD: [0x0033, 0x0035] },
+{ source: [0x3260], NFC: [0x3260], NFD: [0x3260], NFKC: [0x1100], NFKD: [0x1100] },
+{ source: [0x3261], NFC: [0x3261], NFD: [0x3261], NFKC: [0x1102], NFKD: [0x1102] },
+{ source: [0x3262], NFC: [0x3262], NFD: [0x3262], NFKC: [0x1103], NFKD: [0x1103] },
+{ source: [0x3263], NFC: [0x3263], NFD: [0x3263], NFKC: [0x1105], NFKD: [0x1105] },
+{ source: [0x3264], NFC: [0x3264], NFD: [0x3264], NFKC: [0x1106], NFKD: [0x1106] },
+{ source: [0x3265], NFC: [0x3265], NFD: [0x3265], NFKC: [0x1107], NFKD: [0x1107] },
+{ source: [0x3266], NFC: [0x3266], NFD: [0x3266], NFKC: [0x1109], NFKD: [0x1109] },
+{ source: [0x3267], NFC: [0x3267], NFD: [0x3267], NFKC: [0x110B], NFKD: [0x110B] },
+{ source: [0x3268], NFC: [0x3268], NFD: [0x3268], NFKC: [0x110C], NFKD: [0x110C] },
+{ source: [0x3269], NFC: [0x3269], NFD: [0x3269], NFKC: [0x110E], NFKD: [0x110E] },
+{ source: [0x326A], NFC: [0x326A], NFD: [0x326A], NFKC: [0x110F], NFKD: [0x110F] },
+{ source: [0x326B], NFC: [0x326B], NFD: [0x326B], NFKC: [0x1110], NFKD: [0x1110] },
+{ source: [0x326C], NFC: [0x326C], NFD: [0x326C], NFKC: [0x1111], NFKD: [0x1111] },
+{ source: [0x326D], NFC: [0x326D], NFD: [0x326D], NFKC: [0x1112], NFKD: [0x1112] },
+{ source: [0x326E], NFC: [0x326E], NFD: [0x326E], NFKC: [0xAC00], NFKD: [0x1100, 0x1161] },
+{ source: [0x326F], NFC: [0x326F], NFD: [0x326F], NFKC: [0xB098], NFKD: [0x1102, 0x1161] },
+{ source: [0x3270], NFC: [0x3270], NFD: [0x3270], NFKC: [0xB2E4], NFKD: [0x1103, 0x1161] },
+{ source: [0x3271], NFC: [0x3271], NFD: [0x3271], NFKC: [0xB77C], NFKD: [0x1105, 0x1161] },
+{ source: [0x3272], NFC: [0x3272], NFD: [0x3272], NFKC: [0xB9C8], NFKD: [0x1106, 0x1161] },
+{ source: [0x3273], NFC: [0x3273], NFD: [0x3273], NFKC: [0xBC14], NFKD: [0x1107, 0x1161] },
+{ source: [0x3274], NFC: [0x3274], NFD: [0x3274], NFKC: [0xC0AC], NFKD: [0x1109, 0x1161] },
+{ source: [0x3275], NFC: [0x3275], NFD: [0x3275], NFKC: [0xC544], NFKD: [0x110B, 0x1161] },
+{ source: [0x3276], NFC: [0x3276], NFD: [0x3276], NFKC: [0xC790], NFKD: [0x110C, 0x1161] },
+{ source: [0x3277], NFC: [0x3277], NFD: [0x3277], NFKC: [0xCC28], NFKD: [0x110E, 0x1161] },
+{ source: [0x3278], NFC: [0x3278], NFD: [0x3278], NFKC: [0xCE74], NFKD: [0x110F, 0x1161] },
+{ source: [0x3279], NFC: [0x3279], NFD: [0x3279], NFKC: [0xD0C0], NFKD: [0x1110, 0x1161] },
+{ source: [0x327A], NFC: [0x327A], NFD: [0x327A], NFKC: [0xD30C], NFKD: [0x1111, 0x1161] },
+{ source: [0x327B], NFC: [0x327B], NFD: [0x327B], NFKC: [0xD558], NFKD: [0x1112, 0x1161] },
+{ source: [0x327C], NFC: [0x327C], NFD: [0x327C], NFKC: [0xCC38, 0xACE0], NFKD: [0x110E, 0x1161, 0x11B7, 0x1100, 0x1169] },
+{ source: [0x327D], NFC: [0x327D], NFD: [0x327D], NFKC: [0xC8FC, 0xC758], NFKD: [0x110C, 0x116E, 0x110B, 0x1174] },
+{ source: [0x327E], NFC: [0x327E], NFD: [0x327E], NFKC: [0xC6B0], NFKD: [0x110B, 0x116E] },
+{ source: [0x3280], NFC: [0x3280], NFD: [0x3280], NFKC: [0x4E00], NFKD: [0x4E00] },
+{ source: [0x3281], NFC: [0x3281], NFD: [0x3281], NFKC: [0x4E8C], NFKD: [0x4E8C] },
+{ source: [0x3282], NFC: [0x3282], NFD: [0x3282], NFKC: [0x4E09], NFKD: [0x4E09] },
+{ source: [0x3283], NFC: [0x3283], NFD: [0x3283], NFKC: [0x56DB], NFKD: [0x56DB] },
+{ source: [0x3284], NFC: [0x3284], NFD: [0x3284], NFKC: [0x4E94], NFKD: [0x4E94] },
+{ source: [0x3285], NFC: [0x3285], NFD: [0x3285], NFKC: [0x516D], NFKD: [0x516D] },
+{ source: [0x3286], NFC: [0x3286], NFD: [0x3286], NFKC: [0x4E03], NFKD: [0x4E03] },
+{ source: [0x3287], NFC: [0x3287], NFD: [0x3287], NFKC: [0x516B], NFKD: [0x516B] },
+{ source: [0x3288], NFC: [0x3288], NFD: [0x3288], NFKC: [0x4E5D], NFKD: [0x4E5D] },
+{ source: [0x3289], NFC: [0x3289], NFD: [0x3289], NFKC: [0x5341], NFKD: [0x5341] },
+{ source: [0x328A], NFC: [0x328A], NFD: [0x328A], NFKC: [0x6708], NFKD: [0x6708] },
+{ source: [0x328B], NFC: [0x328B], NFD: [0x328B], NFKC: [0x706B], NFKD: [0x706B] },
+{ source: [0x328C], NFC: [0x328C], NFD: [0x328C], NFKC: [0x6C34], NFKD: [0x6C34] },
+{ source: [0x328D], NFC: [0x328D], NFD: [0x328D], NFKC: [0x6728], NFKD: [0x6728] },
+{ source: [0x328E], NFC: [0x328E], NFD: [0x328E], NFKC: [0x91D1], NFKD: [0x91D1] },
+{ source: [0x328F], NFC: [0x328F], NFD: [0x328F], NFKC: [0x571F], NFKD: [0x571F] },
+{ source: [0x3290], NFC: [0x3290], NFD: [0x3290], NFKC: [0x65E5], NFKD: [0x65E5] },
+{ source: [0x3291], NFC: [0x3291], NFD: [0x3291], NFKC: [0x682A], NFKD: [0x682A] },
+{ source: [0x3292], NFC: [0x3292], NFD: [0x3292], NFKC: [0x6709], NFKD: [0x6709] },
+{ source: [0x3293], NFC: [0x3293], NFD: [0x3293], NFKC: [0x793E], NFKD: [0x793E] },
+{ source: [0x3294], NFC: [0x3294], NFD: [0x3294], NFKC: [0x540D], NFKD: [0x540D] },
+{ source: [0x3295], NFC: [0x3295], NFD: [0x3295], NFKC: [0x7279], NFKD: [0x7279] },
+{ source: [0x3296], NFC: [0x3296], NFD: [0x3296], NFKC: [0x8CA1], NFKD: [0x8CA1] },
+{ source: [0x3297], NFC: [0x3297], NFD: [0x3297], NFKC: [0x795D], NFKD: [0x795D] },
+{ source: [0x3298], NFC: [0x3298], NFD: [0x3298], NFKC: [0x52B4], NFKD: [0x52B4] },
+{ source: [0x3299], NFC: [0x3299], NFD: [0x3299], NFKC: [0x79D8], NFKD: [0x79D8] },
+{ source: [0x329A], NFC: [0x329A], NFD: [0x329A], NFKC: [0x7537], NFKD: [0x7537] },
+{ source: [0x329B], NFC: [0x329B], NFD: [0x329B], NFKC: [0x5973], NFKD: [0x5973] },
+{ source: [0x329C], NFC: [0x329C], NFD: [0x329C], NFKC: [0x9069], NFKD: [0x9069] },
+{ source: [0x329D], NFC: [0x329D], NFD: [0x329D], NFKC: [0x512A], NFKD: [0x512A] },
+{ source: [0x329E], NFC: [0x329E], NFD: [0x329E], NFKC: [0x5370], NFKD: [0x5370] },
+{ source: [0x329F], NFC: [0x329F], NFD: [0x329F], NFKC: [0x6CE8], NFKD: [0x6CE8] },
+{ source: [0x32A0], NFC: [0x32A0], NFD: [0x32A0], NFKC: [0x9805], NFKD: [0x9805] },
+{ source: [0x32A1], NFC: [0x32A1], NFD: [0x32A1], NFKC: [0x4F11], NFKD: [0x4F11] },
+{ source: [0x32A2], NFC: [0x32A2], NFD: [0x32A2], NFKC: [0x5199], NFKD: [0x5199] },
+{ source: [0x32A3], NFC: [0x32A3], NFD: [0x32A3], NFKC: [0x6B63], NFKD: [0x6B63] },
+{ source: [0x32A4], NFC: [0x32A4], NFD: [0x32A4], NFKC: [0x4E0A], NFKD: [0x4E0A] },
+{ source: [0x32A5], NFC: [0x32A5], NFD: [0x32A5], NFKC: [0x4E2D], NFKD: [0x4E2D] },
+{ source: [0x32A6], NFC: [0x32A6], NFD: [0x32A6], NFKC: [0x4E0B], NFKD: [0x4E0B] },
+{ source: [0x32A7], NFC: [0x32A7], NFD: [0x32A7], NFKC: [0x5DE6], NFKD: [0x5DE6] },
+{ source: [0x32A8], NFC: [0x32A8], NFD: [0x32A8], NFKC: [0x53F3], NFKD: [0x53F3] },
+{ source: [0x32A9], NFC: [0x32A9], NFD: [0x32A9], NFKC: [0x533B], NFKD: [0x533B] },
+{ source: [0x32AA], NFC: [0x32AA], NFD: [0x32AA], NFKC: [0x5B97], NFKD: [0x5B97] },
+{ source: [0x32AB], NFC: [0x32AB], NFD: [0x32AB], NFKC: [0x5B66], NFKD: [0x5B66] },
+{ source: [0x32AC], NFC: [0x32AC], NFD: [0x32AC], NFKC: [0x76E3], NFKD: [0x76E3] },
+{ source: [0x32AD], NFC: [0x32AD], NFD: [0x32AD], NFKC: [0x4F01], NFKD: [0x4F01] },
+{ source: [0x32AE], NFC: [0x32AE], NFD: [0x32AE], NFKC: [0x8CC7], NFKD: [0x8CC7] },
+{ source: [0x32AF], NFC: [0x32AF], NFD: [0x32AF], NFKC: [0x5354], NFKD: [0x5354] },
+{ source: [0x32B0], NFC: [0x32B0], NFD: [0x32B0], NFKC: [0x591C], NFKD: [0x591C] },
+{ source: [0x32B1], NFC: [0x32B1], NFD: [0x32B1], NFKC: [0x0033, 0x0036], NFKD: [0x0033, 0x0036] },
+{ source: [0x32B2], NFC: [0x32B2], NFD: [0x32B2], NFKC: [0x0033, 0x0037], NFKD: [0x0033, 0x0037] },
+{ source: [0x32B3], NFC: [0x32B3], NFD: [0x32B3], NFKC: [0x0033, 0x0038], NFKD: [0x0033, 0x0038] },
+{ source: [0x32B4], NFC: [0x32B4], NFD: [0x32B4], NFKC: [0x0033, 0x0039], NFKD: [0x0033, 0x0039] },
+{ source: [0x32B5], NFC: [0x32B5], NFD: [0x32B5], NFKC: [0x0034, 0x0030], NFKD: [0x0034, 0x0030] },
+{ source: [0x32B6], NFC: [0x32B6], NFD: [0x32B6], NFKC: [0x0034, 0x0031], NFKD: [0x0034, 0x0031] },
+{ source: [0x32B7], NFC: [0x32B7], NFD: [0x32B7], NFKC: [0x0034, 0x0032], NFKD: [0x0034, 0x0032] },
+{ source: [0x32B8], NFC: [0x32B8], NFD: [0x32B8], NFKC: [0x0034, 0x0033], NFKD: [0x0034, 0x0033] },
+{ source: [0x32B9], NFC: [0x32B9], NFD: [0x32B9], NFKC: [0x0034, 0x0034], NFKD: [0x0034, 0x0034] },
+{ source: [0x32BA], NFC: [0x32BA], NFD: [0x32BA], NFKC: [0x0034, 0x0035], NFKD: [0x0034, 0x0035] },
+{ source: [0x32BB], NFC: [0x32BB], NFD: [0x32BB], NFKC: [0x0034, 0x0036], NFKD: [0x0034, 0x0036] },
+{ source: [0x32BC], NFC: [0x32BC], NFD: [0x32BC], NFKC: [0x0034, 0x0037], NFKD: [0x0034, 0x0037] },
+{ source: [0x32BD], NFC: [0x32BD], NFD: [0x32BD], NFKC: [0x0034, 0x0038], NFKD: [0x0034, 0x0038] },
+{ source: [0x32BE], NFC: [0x32BE], NFD: [0x32BE], NFKC: [0x0034, 0x0039], NFKD: [0x0034, 0x0039] },
+{ source: [0x32BF], NFC: [0x32BF], NFD: [0x32BF], NFKC: [0x0035, 0x0030], NFKD: [0x0035, 0x0030] },
+{ source: [0x32C0], NFC: [0x32C0], NFD: [0x32C0], NFKC: [0x0031, 0x6708], NFKD: [0x0031, 0x6708] },
+{ source: [0x32C1], NFC: [0x32C1], NFD: [0x32C1], NFKC: [0x0032, 0x6708], NFKD: [0x0032, 0x6708] },
+{ source: [0x32C2], NFC: [0x32C2], NFD: [0x32C2], NFKC: [0x0033, 0x6708], NFKD: [0x0033, 0x6708] },
+{ source: [0x32C3], NFC: [0x32C3], NFD: [0x32C3], NFKC: [0x0034, 0x6708], NFKD: [0x0034, 0x6708] },
+{ source: [0x32C4], NFC: [0x32C4], NFD: [0x32C4], NFKC: [0x0035, 0x6708], NFKD: [0x0035, 0x6708] },
+{ source: [0x32C5], NFC: [0x32C5], NFD: [0x32C5], NFKC: [0x0036, 0x6708], NFKD: [0x0036, 0x6708] },
+{ source: [0x32C6], NFC: [0x32C6], NFD: [0x32C6], NFKC: [0x0037, 0x6708], NFKD: [0x0037, 0x6708] },
+{ source: [0x32C7], NFC: [0x32C7], NFD: [0x32C7], NFKC: [0x0038, 0x6708], NFKD: [0x0038, 0x6708] },
+{ source: [0x32C8], NFC: [0x32C8], NFD: [0x32C8], NFKC: [0x0039, 0x6708], NFKD: [0x0039, 0x6708] },
+{ source: [0x32C9], NFC: [0x32C9], NFD: [0x32C9], NFKC: [0x0031, 0x0030, 0x6708], NFKD: [0x0031, 0x0030, 0x6708] },
+{ source: [0x32CA], NFC: [0x32CA], NFD: [0x32CA], NFKC: [0x0031, 0x0031, 0x6708], NFKD: [0x0031, 0x0031, 0x6708] },
+{ source: [0x32CB], NFC: [0x32CB], NFD: [0x32CB], NFKC: [0x0031, 0x0032, 0x6708], NFKD: [0x0031, 0x0032, 0x6708] },
+{ source: [0x32CC], NFC: [0x32CC], NFD: [0x32CC], NFKC: [0x0048, 0x0067], NFKD: [0x0048, 0x0067] },
+{ source: [0x32CD], NFC: [0x32CD], NFD: [0x32CD], NFKC: [0x0065, 0x0072, 0x0067], NFKD: [0x0065, 0x0072, 0x0067] },
+{ source: [0x32CE], NFC: [0x32CE], NFD: [0x32CE], NFKC: [0x0065, 0x0056], NFKD: [0x0065, 0x0056] },
+{ source: [0x32CF], NFC: [0x32CF], NFD: [0x32CF], NFKC: [0x004C, 0x0054, 0x0044], NFKD: [0x004C, 0x0054, 0x0044] },
+{ source: [0x32D0], NFC: [0x32D0], NFD: [0x32D0], NFKC: [0x30A2], NFKD: [0x30A2] },
+{ source: [0x32D1], NFC: [0x32D1], NFD: [0x32D1], NFKC: [0x30A4], NFKD: [0x30A4] },
+{ source: [0x32D2], NFC: [0x32D2], NFD: [0x32D2], NFKC: [0x30A6], NFKD: [0x30A6] },
+{ source: [0x32D3], NFC: [0x32D3], NFD: [0x32D3], NFKC: [0x30A8], NFKD: [0x30A8] },
+{ source: [0x32D4], NFC: [0x32D4], NFD: [0x32D4], NFKC: [0x30AA], NFKD: [0x30AA] },
+{ source: [0x32D5], NFC: [0x32D5], NFD: [0x32D5], NFKC: [0x30AB], NFKD: [0x30AB] },
+{ source: [0x32D6], NFC: [0x32D6], NFD: [0x32D6], NFKC: [0x30AD], NFKD: [0x30AD] },
+{ source: [0x32D7], NFC: [0x32D7], NFD: [0x32D7], NFKC: [0x30AF], NFKD: [0x30AF] },
+{ source: [0x32D8], NFC: [0x32D8], NFD: [0x32D8], NFKC: [0x30B1], NFKD: [0x30B1] },
+{ source: [0x32D9], NFC: [0x32D9], NFD: [0x32D9], NFKC: [0x30B3], NFKD: [0x30B3] },
+{ source: [0x32DA], NFC: [0x32DA], NFD: [0x32DA], NFKC: [0x30B5], NFKD: [0x30B5] },
+{ source: [0x32DB], NFC: [0x32DB], NFD: [0x32DB], NFKC: [0x30B7], NFKD: [0x30B7] },
+{ source: [0x32DC], NFC: [0x32DC], NFD: [0x32DC], NFKC: [0x30B9], NFKD: [0x30B9] },
+{ source: [0x32DD], NFC: [0x32DD], NFD: [0x32DD], NFKC: [0x30BB], NFKD: [0x30BB] },
+{ source: [0x32DE], NFC: [0x32DE], NFD: [0x32DE], NFKC: [0x30BD], NFKD: [0x30BD] },
+{ source: [0x32DF], NFC: [0x32DF], NFD: [0x32DF], NFKC: [0x30BF], NFKD: [0x30BF] },
+{ source: [0x32E0], NFC: [0x32E0], NFD: [0x32E0], NFKC: [0x30C1], NFKD: [0x30C1] },
+{ source: [0x32E1], NFC: [0x32E1], NFD: [0x32E1], NFKC: [0x30C4], NFKD: [0x30C4] },
+{ source: [0x32E2], NFC: [0x32E2], NFD: [0x32E2], NFKC: [0x30C6], NFKD: [0x30C6] },
+{ source: [0x32E3], NFC: [0x32E3], NFD: [0x32E3], NFKC: [0x30C8], NFKD: [0x30C8] },
+{ source: [0x32E4], NFC: [0x32E4], NFD: [0x32E4], NFKC: [0x30CA], NFKD: [0x30CA] },
+{ source: [0x32E5], NFC: [0x32E5], NFD: [0x32E5], NFKC: [0x30CB], NFKD: [0x30CB] },
+{ source: [0x32E6], NFC: [0x32E6], NFD: [0x32E6], NFKC: [0x30CC], NFKD: [0x30CC] },
+{ source: [0x32E7], NFC: [0x32E7], NFD: [0x32E7], NFKC: [0x30CD], NFKD: [0x30CD] },
+{ source: [0x32E8], NFC: [0x32E8], NFD: [0x32E8], NFKC: [0x30CE], NFKD: [0x30CE] },
+{ source: [0x32E9], NFC: [0x32E9], NFD: [0x32E9], NFKC: [0x30CF], NFKD: [0x30CF] },
+{ source: [0x32EA], NFC: [0x32EA], NFD: [0x32EA], NFKC: [0x30D2], NFKD: [0x30D2] },
+{ source: [0x32EB], NFC: [0x32EB], NFD: [0x32EB], NFKC: [0x30D5], NFKD: [0x30D5] },
+{ source: [0x32EC], NFC: [0x32EC], NFD: [0x32EC], NFKC: [0x30D8], NFKD: [0x30D8] },
+{ source: [0x32ED], NFC: [0x32ED], NFD: [0x32ED], NFKC: [0x30DB], NFKD: [0x30DB] },
+{ source: [0x32EE], NFC: [0x32EE], NFD: [0x32EE], NFKC: [0x30DE], NFKD: [0x30DE] },
+{ source: [0x32EF], NFC: [0x32EF], NFD: [0x32EF], NFKC: [0x30DF], NFKD: [0x30DF] },
+{ source: [0x32F0], NFC: [0x32F0], NFD: [0x32F0], NFKC: [0x30E0], NFKD: [0x30E0] },
+{ source: [0x32F1], NFC: [0x32F1], NFD: [0x32F1], NFKC: [0x30E1], NFKD: [0x30E1] },
+{ source: [0x32F2], NFC: [0x32F2], NFD: [0x32F2], NFKC: [0x30E2], NFKD: [0x30E2] },
+{ source: [0x32F3], NFC: [0x32F3], NFD: [0x32F3], NFKC: [0x30E4], NFKD: [0x30E4] },
+{ source: [0x32F4], NFC: [0x32F4], NFD: [0x32F4], NFKC: [0x30E6], NFKD: [0x30E6] },
+{ source: [0x32F5], NFC: [0x32F5], NFD: [0x32F5], NFKC: [0x30E8], NFKD: [0x30E8] },
+{ source: [0x32F6], NFC: [0x32F6], NFD: [0x32F6], NFKC: [0x30E9], NFKD: [0x30E9] },
+{ source: [0x32F7], NFC: [0x32F7], NFD: [0x32F7], NFKC: [0x30EA], NFKD: [0x30EA] },
+{ source: [0x32F8], NFC: [0x32F8], NFD: [0x32F8], NFKC: [0x30EB], NFKD: [0x30EB] },
+{ source: [0x32F9], NFC: [0x32F9], NFD: [0x32F9], NFKC: [0x30EC], NFKD: [0x30EC] },
+{ source: [0x32FA], NFC: [0x32FA], NFD: [0x32FA], NFKC: [0x30ED], NFKD: [0x30ED] },
+{ source: [0x32FB], NFC: [0x32FB], NFD: [0x32FB], NFKC: [0x30EF], NFKD: [0x30EF] },
+{ source: [0x32FC], NFC: [0x32FC], NFD: [0x32FC], NFKC: [0x30F0], NFKD: [0x30F0] },
+{ source: [0x32FD], NFC: [0x32FD], NFD: [0x32FD], NFKC: [0x30F1], NFKD: [0x30F1] },
+{ source: [0x32FE], NFC: [0x32FE], NFD: [0x32FE], NFKC: [0x30F2], NFKD: [0x30F2] },
+{ source: [0x3300], NFC: [0x3300], NFD: [0x3300], NFKC: [0x30A2, 0x30D1, 0x30FC, 0x30C8], NFKD: [0x30A2, 0x30CF, 0x309A, 0x30FC, 0x30C8] },
+{ source: [0x3301], NFC: [0x3301], NFD: [0x3301], NFKC: [0x30A2, 0x30EB, 0x30D5, 0x30A1], NFKD: [0x30A2, 0x30EB, 0x30D5, 0x30A1] },
+{ source: [0x3302], NFC: [0x3302], NFD: [0x3302], NFKC: [0x30A2, 0x30F3, 0x30DA, 0x30A2], NFKD: [0x30A2, 0x30F3, 0x30D8, 0x309A, 0x30A2] },
+{ source: [0x3303], NFC: [0x3303], NFD: [0x3303], NFKC: [0x30A2, 0x30FC, 0x30EB], NFKD: [0x30A2, 0x30FC, 0x30EB] },
+{ source: [0x3304], NFC: [0x3304], NFD: [0x3304], NFKC: [0x30A4, 0x30CB, 0x30F3, 0x30B0], NFKD: [0x30A4, 0x30CB, 0x30F3, 0x30AF, 0x3099] },
+{ source: [0x3305], NFC: [0x3305], NFD: [0x3305], NFKC: [0x30A4, 0x30F3, 0x30C1], NFKD: [0x30A4, 0x30F3, 0x30C1] },
+{ source: [0x3306], NFC: [0x3306], NFD: [0x3306], NFKC: [0x30A6, 0x30A9, 0x30F3], NFKD: [0x30A6, 0x30A9, 0x30F3] },
+{ source: [0x3307], NFC: [0x3307], NFD: [0x3307], NFKC: [0x30A8, 0x30B9, 0x30AF, 0x30FC, 0x30C9], NFKD: [0x30A8, 0x30B9, 0x30AF, 0x30FC, 0x30C8, 0x3099] },
+{ source: [0x3308], NFC: [0x3308], NFD: [0x3308], NFKC: [0x30A8, 0x30FC, 0x30AB, 0x30FC], NFKD: [0x30A8, 0x30FC, 0x30AB, 0x30FC] },
+{ source: [0x3309], NFC: [0x3309], NFD: [0x3309], NFKC: [0x30AA, 0x30F3, 0x30B9], NFKD: [0x30AA, 0x30F3, 0x30B9] },
+{ source: [0x330A], NFC: [0x330A], NFD: [0x330A], NFKC: [0x30AA, 0x30FC, 0x30E0], NFKD: [0x30AA, 0x30FC, 0x30E0] },
+{ source: [0x330B], NFC: [0x330B], NFD: [0x330B], NFKC: [0x30AB, 0x30A4, 0x30EA], NFKD: [0x30AB, 0x30A4, 0x30EA] },
+{ source: [0x330C], NFC: [0x330C], NFD: [0x330C], NFKC: [0x30AB, 0x30E9, 0x30C3, 0x30C8], NFKD: [0x30AB, 0x30E9, 0x30C3, 0x30C8] },
+{ source: [0x330D], NFC: [0x330D], NFD: [0x330D], NFKC: [0x30AB, 0x30ED, 0x30EA, 0x30FC], NFKD: [0x30AB, 0x30ED, 0x30EA, 0x30FC] },
+{ source: [0x330E], NFC: [0x330E], NFD: [0x330E], NFKC: [0x30AC, 0x30ED, 0x30F3], NFKD: [0x30AB, 0x3099, 0x30ED, 0x30F3] },
+{ source: [0x330F], NFC: [0x330F], NFD: [0x330F], NFKC: [0x30AC, 0x30F3, 0x30DE], NFKD: [0x30AB, 0x3099, 0x30F3, 0x30DE] },
+{ source: [0x3310], NFC: [0x3310], NFD: [0x3310], NFKC: [0x30AE, 0x30AC], NFKD: [0x30AD, 0x3099, 0x30AB, 0x3099] },
+{ source: [0x3311], NFC: [0x3311], NFD: [0x3311], NFKC: [0x30AE, 0x30CB, 0x30FC], NFKD: [0x30AD, 0x3099, 0x30CB, 0x30FC] },
+{ source: [0x3312], NFC: [0x3312], NFD: [0x3312], NFKC: [0x30AD, 0x30E5, 0x30EA, 0x30FC], NFKD: [0x30AD, 0x30E5, 0x30EA, 0x30FC] },
+{ source: [0x3313], NFC: [0x3313], NFD: [0x3313], NFKC: [0x30AE, 0x30EB, 0x30C0, 0x30FC], NFKD: [0x30AD, 0x3099, 0x30EB, 0x30BF, 0x3099, 0x30FC] },
+{ source: [0x3314], NFC: [0x3314], NFD: [0x3314], NFKC: [0x30AD, 0x30ED], NFKD: [0x30AD, 0x30ED] },
+{ source: [0x3315], NFC: [0x3315], NFD: [0x3315], NFKC: [0x30AD, 0x30ED, 0x30B0, 0x30E9, 0x30E0], NFKD: [0x30AD, 0x30ED, 0x30AF, 0x3099, 0x30E9, 0x30E0] },
+{ source: [0x3316], NFC: [0x3316], NFD: [0x3316], NFKC: [0x30AD, 0x30ED, 0x30E1, 0x30FC, 0x30C8, 0x30EB], NFKD: [0x30AD, 0x30ED, 0x30E1, 0x30FC, 0x30C8, 0x30EB] },
+{ source: [0x3317], NFC: [0x3317], NFD: [0x3317], NFKC: [0x30AD, 0x30ED, 0x30EF, 0x30C3, 0x30C8], NFKD: [0x30AD, 0x30ED, 0x30EF, 0x30C3, 0x30C8] },
+{ source: [0x3318], NFC: [0x3318], NFD: [0x3318], NFKC: [0x30B0, 0x30E9, 0x30E0], NFKD: [0x30AF, 0x3099, 0x30E9, 0x30E0] },
+{ source: [0x3319], NFC: [0x3319], NFD: [0x3319], NFKC: [0x30B0, 0x30E9, 0x30E0, 0x30C8, 0x30F3], NFKD: [0x30AF, 0x3099, 0x30E9, 0x30E0, 0x30C8, 0x30F3] },
+{ source: [0x331A], NFC: [0x331A], NFD: [0x331A], NFKC: [0x30AF, 0x30EB, 0x30BC, 0x30A4, 0x30ED], NFKD: [0x30AF, 0x30EB, 0x30BB, 0x3099, 0x30A4, 0x30ED] },
+{ source: [0x331B], NFC: [0x331B], NFD: [0x331B], NFKC: [0x30AF, 0x30ED, 0x30FC, 0x30CD], NFKD: [0x30AF, 0x30ED, 0x30FC, 0x30CD] },
+{ source: [0x331C], NFC: [0x331C], NFD: [0x331C], NFKC: [0x30B1, 0x30FC, 0x30B9], NFKD: [0x30B1, 0x30FC, 0x30B9] },
+{ source: [0x331D], NFC: [0x331D], NFD: [0x331D], NFKC: [0x30B3, 0x30EB, 0x30CA], NFKD: [0x30B3, 0x30EB, 0x30CA] },
+{ source: [0x331E], NFC: [0x331E], NFD: [0x331E], NFKC: [0x30B3, 0x30FC, 0x30DD], NFKD: [0x30B3, 0x30FC, 0x30DB, 0x309A] },
+{ source: [0x331F], NFC: [0x331F], NFD: [0x331F], NFKC: [0x30B5, 0x30A4, 0x30AF, 0x30EB], NFKD: [0x30B5, 0x30A4, 0x30AF, 0x30EB] },
+{ source: [0x3320], NFC: [0x3320], NFD: [0x3320], NFKC: [0x30B5, 0x30F3, 0x30C1, 0x30FC, 0x30E0], NFKD: [0x30B5, 0x30F3, 0x30C1, 0x30FC, 0x30E0] },
+{ source: [0x3321], NFC: [0x3321], NFD: [0x3321], NFKC: [0x30B7, 0x30EA, 0x30F3, 0x30B0], NFKD: [0x30B7, 0x30EA, 0x30F3, 0x30AF, 0x3099] },
+{ source: [0x3322], NFC: [0x3322], NFD: [0x3322], NFKC: [0x30BB, 0x30F3, 0x30C1], NFKD: [0x30BB, 0x30F3, 0x30C1] },
+{ source: [0x3323], NFC: [0x3323], NFD: [0x3323], NFKC: [0x30BB, 0x30F3, 0x30C8], NFKD: [0x30BB, 0x30F3, 0x30C8] },
+{ source: [0x3324], NFC: [0x3324], NFD: [0x3324], NFKC: [0x30C0, 0x30FC, 0x30B9], NFKD: [0x30BF, 0x3099, 0x30FC, 0x30B9] },
+{ source: [0x3325], NFC: [0x3325], NFD: [0x3325], NFKC: [0x30C7, 0x30B7], NFKD: [0x30C6, 0x3099, 0x30B7] },
+{ source: [0x3326], NFC: [0x3326], NFD: [0x3326], NFKC: [0x30C9, 0x30EB], NFKD: [0x30C8, 0x3099, 0x30EB] },
+{ source: [0x3327], NFC: [0x3327], NFD: [0x3327], NFKC: [0x30C8, 0x30F3], NFKD: [0x30C8, 0x30F3] },
+{ source: [0x3328], NFC: [0x3328], NFD: [0x3328], NFKC: [0x30CA, 0x30CE], NFKD: [0x30CA, 0x30CE] },
+{ source: [0x3329], NFC: [0x3329], NFD: [0x3329], NFKC: [0x30CE, 0x30C3, 0x30C8], NFKD: [0x30CE, 0x30C3, 0x30C8] },
+{ source: [0x332A], NFC: [0x332A], NFD: [0x332A], NFKC: [0x30CF, 0x30A4, 0x30C4], NFKD: [0x30CF, 0x30A4, 0x30C4] },
+{ source: [0x332B], NFC: [0x332B], NFD: [0x332B], NFKC: [0x30D1, 0x30FC, 0x30BB, 0x30F3, 0x30C8], NFKD: [0x30CF, 0x309A, 0x30FC, 0x30BB, 0x30F3, 0x30C8] },
+{ source: [0x332C], NFC: [0x332C], NFD: [0x332C], NFKC: [0x30D1, 0x30FC, 0x30C4], NFKD: [0x30CF, 0x309A, 0x30FC, 0x30C4] },
+{ source: [0x332D], NFC: [0x332D], NFD: [0x332D], NFKC: [0x30D0, 0x30FC, 0x30EC, 0x30EB], NFKD: [0x30CF, 0x3099, 0x30FC, 0x30EC, 0x30EB] },
+{ source: [0x332E], NFC: [0x332E], NFD: [0x332E], NFKC: [0x30D4, 0x30A2, 0x30B9, 0x30C8, 0x30EB], NFKD: [0x30D2, 0x309A, 0x30A2, 0x30B9, 0x30C8, 0x30EB] },
+{ source: [0x332F], NFC: [0x332F], NFD: [0x332F], NFKC: [0x30D4, 0x30AF, 0x30EB], NFKD: [0x30D2, 0x309A, 0x30AF, 0x30EB] },
+{ source: [0x3330], NFC: [0x3330], NFD: [0x3330], NFKC: [0x30D4, 0x30B3], NFKD: [0x30D2, 0x309A, 0x30B3] },
+{ source: [0x3331], NFC: [0x3331], NFD: [0x3331], NFKC: [0x30D3, 0x30EB], NFKD: [0x30D2, 0x3099, 0x30EB] },
+{ source: [0x3332], NFC: [0x3332], NFD: [0x3332], NFKC: [0x30D5, 0x30A1, 0x30E9, 0x30C3, 0x30C9], NFKD: [0x30D5, 0x30A1, 0x30E9, 0x30C3, 0x30C8, 0x3099] },
+{ source: [0x3333], NFC: [0x3333], NFD: [0x3333], NFKC: [0x30D5, 0x30A3, 0x30FC, 0x30C8], NFKD: [0x30D5, 0x30A3, 0x30FC, 0x30C8] },
+{ source: [0x3334], NFC: [0x3334], NFD: [0x3334], NFKC: [0x30D6, 0x30C3, 0x30B7, 0x30A7, 0x30EB], NFKD: [0x30D5, 0x3099, 0x30C3, 0x30B7, 0x30A7, 0x30EB] },
+{ source: [0x3335], NFC: [0x3335], NFD: [0x3335], NFKC: [0x30D5, 0x30E9, 0x30F3], NFKD: [0x30D5, 0x30E9, 0x30F3] },
+{ source: [0x3336], NFC: [0x3336], NFD: [0x3336], NFKC: [0x30D8, 0x30AF, 0x30BF, 0x30FC, 0x30EB], NFKD: [0x30D8, 0x30AF, 0x30BF, 0x30FC, 0x30EB] },
+{ source: [0x3337], NFC: [0x3337], NFD: [0x3337], NFKC: [0x30DA, 0x30BD], NFKD: [0x30D8, 0x309A, 0x30BD] },
+{ source: [0x3338], NFC: [0x3338], NFD: [0x3338], NFKC: [0x30DA, 0x30CB, 0x30D2], NFKD: [0x30D8, 0x309A, 0x30CB, 0x30D2] },
+{ source: [0x3339], NFC: [0x3339], NFD: [0x3339], NFKC: [0x30D8, 0x30EB, 0x30C4], NFKD: [0x30D8, 0x30EB, 0x30C4] },
+{ source: [0x333A], NFC: [0x333A], NFD: [0x333A], NFKC: [0x30DA, 0x30F3, 0x30B9], NFKD: [0x30D8, 0x309A, 0x30F3, 0x30B9] },
+{ source: [0x333B], NFC: [0x333B], NFD: [0x333B], NFKC: [0x30DA, 0x30FC, 0x30B8], NFKD: [0x30D8, 0x309A, 0x30FC, 0x30B7, 0x3099] },
+{ source: [0x333C], NFC: [0x333C], NFD: [0x333C], NFKC: [0x30D9, 0x30FC, 0x30BF], NFKD: [0x30D8, 0x3099, 0x30FC, 0x30BF] },
+{ source: [0x333D], NFC: [0x333D], NFD: [0x333D], NFKC: [0x30DD, 0x30A4, 0x30F3, 0x30C8], NFKD: [0x30DB, 0x309A, 0x30A4, 0x30F3, 0x30C8] },
+{ source: [0x333E], NFC: [0x333E], NFD: [0x333E], NFKC: [0x30DC, 0x30EB, 0x30C8], NFKD: [0x30DB, 0x3099, 0x30EB, 0x30C8] },
+{ source: [0x333F], NFC: [0x333F], NFD: [0x333F], NFKC: [0x30DB, 0x30F3], NFKD: [0x30DB, 0x30F3] },
+{ source: [0x3340], NFC: [0x3340], NFD: [0x3340], NFKC: [0x30DD, 0x30F3, 0x30C9], NFKD: [0x30DB, 0x309A, 0x30F3, 0x30C8, 0x3099] },
+{ source: [0x3341], NFC: [0x3341], NFD: [0x3341], NFKC: [0x30DB, 0x30FC, 0x30EB], NFKD: [0x30DB, 0x30FC, 0x30EB] },
+{ source: [0x3342], NFC: [0x3342], NFD: [0x3342], NFKC: [0x30DB, 0x30FC, 0x30F3], NFKD: [0x30DB, 0x30FC, 0x30F3] },
+{ source: [0x3343], NFC: [0x3343], NFD: [0x3343], NFKC: [0x30DE, 0x30A4, 0x30AF, 0x30ED], NFKD: [0x30DE, 0x30A4, 0x30AF, 0x30ED] },
+{ source: [0x3344], NFC: [0x3344], NFD: [0x3344], NFKC: [0x30DE, 0x30A4, 0x30EB], NFKD: [0x30DE, 0x30A4, 0x30EB] },
+{ source: [0x3345], NFC: [0x3345], NFD: [0x3345], NFKC: [0x30DE, 0x30C3, 0x30CF], NFKD: [0x30DE, 0x30C3, 0x30CF] },
+{ source: [0x3346], NFC: [0x3346], NFD: [0x3346], NFKC: [0x30DE, 0x30EB, 0x30AF], NFKD: [0x30DE, 0x30EB, 0x30AF] },
+{ source: [0x3347], NFC: [0x3347], NFD: [0x3347], NFKC: [0x30DE, 0x30F3, 0x30B7, 0x30E7, 0x30F3], NFKD: [0x30DE, 0x30F3, 0x30B7, 0x30E7, 0x30F3] },
+{ source: [0x3348], NFC: [0x3348], NFD: [0x3348], NFKC: [0x30DF, 0x30AF, 0x30ED, 0x30F3], NFKD: [0x30DF, 0x30AF, 0x30ED, 0x30F3] },
+{ source: [0x3349], NFC: [0x3349], NFD: [0x3349], NFKC: [0x30DF, 0x30EA], NFKD: [0x30DF, 0x30EA] },
+{ source: [0x334A], NFC: [0x334A], NFD: [0x334A], NFKC: [0x30DF, 0x30EA, 0x30D0, 0x30FC, 0x30EB], NFKD: [0x30DF, 0x30EA, 0x30CF, 0x3099, 0x30FC, 0x30EB] },
+{ source: [0x334B], NFC: [0x334B], NFD: [0x334B], NFKC: [0x30E1, 0x30AC], NFKD: [0x30E1, 0x30AB, 0x3099] },
+{ source: [0x334C], NFC: [0x334C], NFD: [0x334C], NFKC: [0x30E1, 0x30AC, 0x30C8, 0x30F3], NFKD: [0x30E1, 0x30AB, 0x3099, 0x30C8, 0x30F3] },
+{ source: [0x334D], NFC: [0x334D], NFD: [0x334D], NFKC: [0x30E1, 0x30FC, 0x30C8, 0x30EB], NFKD: [0x30E1, 0x30FC, 0x30C8, 0x30EB] },
+{ source: [0x334E], NFC: [0x334E], NFD: [0x334E], NFKC: [0x30E4, 0x30FC, 0x30C9], NFKD: [0x30E4, 0x30FC, 0x30C8, 0x3099] },
+{ source: [0x334F], NFC: [0x334F], NFD: [0x334F], NFKC: [0x30E4, 0x30FC, 0x30EB], NFKD: [0x30E4, 0x30FC, 0x30EB] },
+{ source: [0x3350], NFC: [0x3350], NFD: [0x3350], NFKC: [0x30E6, 0x30A2, 0x30F3], NFKD: [0x30E6, 0x30A2, 0x30F3] },
+{ source: [0x3351], NFC: [0x3351], NFD: [0x3351], NFKC: [0x30EA, 0x30C3, 0x30C8, 0x30EB], NFKD: [0x30EA, 0x30C3, 0x30C8, 0x30EB] },
+{ source: [0x3352], NFC: [0x3352], NFD: [0x3352], NFKC: [0x30EA, 0x30E9], NFKD: [0x30EA, 0x30E9] },
+{ source: [0x3353], NFC: [0x3353], NFD: [0x3353], NFKC: [0x30EB, 0x30D4, 0x30FC], NFKD: [0x30EB, 0x30D2, 0x309A, 0x30FC] },
+{ source: [0x3354], NFC: [0x3354], NFD: [0x3354], NFKC: [0x30EB, 0x30FC, 0x30D6, 0x30EB], NFKD: [0x30EB, 0x30FC, 0x30D5, 0x3099, 0x30EB] },
+{ source: [0x3355], NFC: [0x3355], NFD: [0x3355], NFKC: [0x30EC, 0x30E0], NFKD: [0x30EC, 0x30E0] },
+{ source: [0x3356], NFC: [0x3356], NFD: [0x3356], NFKC: [0x30EC, 0x30F3, 0x30C8, 0x30B2, 0x30F3], NFKD: [0x30EC, 0x30F3, 0x30C8, 0x30B1, 0x3099, 0x30F3] },
+{ source: [0x3357], NFC: [0x3357], NFD: [0x3357], NFKC: [0x30EF, 0x30C3, 0x30C8], NFKD: [0x30EF, 0x30C3, 0x30C8] },
+{ source: [0x3358], NFC: [0x3358], NFD: [0x3358], NFKC: [0x0030, 0x70B9], NFKD: [0x0030, 0x70B9] },
+{ source: [0x3359], NFC: [0x3359], NFD: [0x3359], NFKC: [0x0031, 0x70B9], NFKD: [0x0031, 0x70B9] },
+{ source: [0x335A], NFC: [0x335A], NFD: [0x335A], NFKC: [0x0032, 0x70B9], NFKD: [0x0032, 0x70B9] },
+{ source: [0x335B], NFC: [0x335B], NFD: [0x335B], NFKC: [0x0033, 0x70B9], NFKD: [0x0033, 0x70B9] },
+{ source: [0x335C], NFC: [0x335C], NFD: [0x335C], NFKC: [0x0034, 0x70B9], NFKD: [0x0034, 0x70B9] },
+{ source: [0x335D], NFC: [0x335D], NFD: [0x335D], NFKC: [0x0035, 0x70B9], NFKD: [0x0035, 0x70B9] },
+{ source: [0x335E], NFC: [0x335E], NFD: [0x335E], NFKC: [0x0036, 0x70B9], NFKD: [0x0036, 0x70B9] },
+{ source: [0x335F], NFC: [0x335F], NFD: [0x335F], NFKC: [0x0037, 0x70B9], NFKD: [0x0037, 0x70B9] },
+{ source: [0x3360], NFC: [0x3360], NFD: [0x3360], NFKC: [0x0038, 0x70B9], NFKD: [0x0038, 0x70B9] },
+{ source: [0x3361], NFC: [0x3361], NFD: [0x3361], NFKC: [0x0039, 0x70B9], NFKD: [0x0039, 0x70B9] },
+{ source: [0x3362], NFC: [0x3362], NFD: [0x3362], NFKC: [0x0031, 0x0030, 0x70B9], NFKD: [0x0031, 0x0030, 0x70B9] },
+{ source: [0x3363], NFC: [0x3363], NFD: [0x3363], NFKC: [0x0031, 0x0031, 0x70B9], NFKD: [0x0031, 0x0031, 0x70B9] },
+{ source: [0x3364], NFC: [0x3364], NFD: [0x3364], NFKC: [0x0031, 0x0032, 0x70B9], NFKD: [0x0031, 0x0032, 0x70B9] },
+{ source: [0x3365], NFC: [0x3365], NFD: [0x3365], NFKC: [0x0031, 0x0033, 0x70B9], NFKD: [0x0031, 0x0033, 0x70B9] },
+{ source: [0x3366], NFC: [0x3366], NFD: [0x3366], NFKC: [0x0031, 0x0034, 0x70B9], NFKD: [0x0031, 0x0034, 0x70B9] },
+{ source: [0x3367], NFC: [0x3367], NFD: [0x3367], NFKC: [0x0031, 0x0035, 0x70B9], NFKD: [0x0031, 0x0035, 0x70B9] },
+{ source: [0x3368], NFC: [0x3368], NFD: [0x3368], NFKC: [0x0031, 0x0036, 0x70B9], NFKD: [0x0031, 0x0036, 0x70B9] },
+{ source: [0x3369], NFC: [0x3369], NFD: [0x3369], NFKC: [0x0031, 0x0037, 0x70B9], NFKD: [0x0031, 0x0037, 0x70B9] },
+{ source: [0x336A], NFC: [0x336A], NFD: [0x336A], NFKC: [0x0031, 0x0038, 0x70B9], NFKD: [0x0031, 0x0038, 0x70B9] },
+{ source: [0x336B], NFC: [0x336B], NFD: [0x336B], NFKC: [0x0031, 0x0039, 0x70B9], NFKD: [0x0031, 0x0039, 0x70B9] },
+{ source: [0x336C], NFC: [0x336C], NFD: [0x336C], NFKC: [0x0032, 0x0030, 0x70B9], NFKD: [0x0032, 0x0030, 0x70B9] },
+{ source: [0x336D], NFC: [0x336D], NFD: [0x336D], NFKC: [0x0032, 0x0031, 0x70B9], NFKD: [0x0032, 0x0031, 0x70B9] },
+{ source: [0x336E], NFC: [0x336E], NFD: [0x336E], NFKC: [0x0032, 0x0032, 0x70B9], NFKD: [0x0032, 0x0032, 0x70B9] },
+{ source: [0x336F], NFC: [0x336F], NFD: [0x336F], NFKC: [0x0032, 0x0033, 0x70B9], NFKD: [0x0032, 0x0033, 0x70B9] },
+{ source: [0x3370], NFC: [0x3370], NFD: [0x3370], NFKC: [0x0032, 0x0034, 0x70B9], NFKD: [0x0032, 0x0034, 0x70B9] },
+{ source: [0x3371], NFC: [0x3371], NFD: [0x3371], NFKC: [0x0068, 0x0050, 0x0061], NFKD: [0x0068, 0x0050, 0x0061] },
+{ source: [0x3372], NFC: [0x3372], NFD: [0x3372], NFKC: [0x0064, 0x0061], NFKD: [0x0064, 0x0061] },
+{ source: [0x3373], NFC: [0x3373], NFD: [0x3373], NFKC: [0x0041, 0x0055], NFKD: [0x0041, 0x0055] },
+{ source: [0x3374], NFC: [0x3374], NFD: [0x3374], NFKC: [0x0062, 0x0061, 0x0072], NFKD: [0x0062, 0x0061, 0x0072] },
+{ source: [0x3375], NFC: [0x3375], NFD: [0x3375], NFKC: [0x006F, 0x0056], NFKD: [0x006F, 0x0056] },
+{ source: [0x3376], NFC: [0x3376], NFD: [0x3376], NFKC: [0x0070, 0x0063], NFKD: [0x0070, 0x0063] },
+{ source: [0x3377], NFC: [0x3377], NFD: [0x3377], NFKC: [0x0064, 0x006D], NFKD: [0x0064, 0x006D] },
+{ source: [0x3378], NFC: [0x3378], NFD: [0x3378], NFKC: [0x0064, 0x006D, 0x0032], NFKD: [0x0064, 0x006D, 0x0032] },
+{ source: [0x3379], NFC: [0x3379], NFD: [0x3379], NFKC: [0x0064, 0x006D, 0x0033], NFKD: [0x0064, 0x006D, 0x0033] },
+{ source: [0x337A], NFC: [0x337A], NFD: [0x337A], NFKC: [0x0049, 0x0055], NFKD: [0x0049, 0x0055] },
+{ source: [0x337B], NFC: [0x337B], NFD: [0x337B], NFKC: [0x5E73, 0x6210], NFKD: [0x5E73, 0x6210] },
+{ source: [0x337C], NFC: [0x337C], NFD: [0x337C], NFKC: [0x662D, 0x548C], NFKD: [0x662D, 0x548C] },
+{ source: [0x337D], NFC: [0x337D], NFD: [0x337D], NFKC: [0x5927, 0x6B63], NFKD: [0x5927, 0x6B63] },
+{ source: [0x337E], NFC: [0x337E], NFD: [0x337E], NFKC: [0x660E, 0x6CBB], NFKD: [0x660E, 0x6CBB] },
+{ source: [0x337F], NFC: [0x337F], NFD: [0x337F], NFKC: [0x682A, 0x5F0F, 0x4F1A, 0x793E], NFKD: [0x682A, 0x5F0F, 0x4F1A, 0x793E] },
+{ source: [0x3380], NFC: [0x3380], NFD: [0x3380], NFKC: [0x0070, 0x0041], NFKD: [0x0070, 0x0041] },
+{ source: [0x3381], NFC: [0x3381], NFD: [0x3381], NFKC: [0x006E, 0x0041], NFKD: [0x006E, 0x0041] },
+{ source: [0x3382], NFC: [0x3382], NFD: [0x3382], NFKC: [0x03BC, 0x0041], NFKD: [0x03BC, 0x0041] },
+{ source: [0x3383], NFC: [0x3383], NFD: [0x3383], NFKC: [0x006D, 0x0041], NFKD: [0x006D, 0x0041] },
+{ source: [0x3384], NFC: [0x3384], NFD: [0x3384], NFKC: [0x006B, 0x0041], NFKD: [0x006B, 0x0041] },
+{ source: [0x3385], NFC: [0x3385], NFD: [0x3385], NFKC: [0x004B, 0x0042], NFKD: [0x004B, 0x0042] },
+{ source: [0x3386], NFC: [0x3386], NFD: [0x3386], NFKC: [0x004D, 0x0042], NFKD: [0x004D, 0x0042] },
+{ source: [0x3387], NFC: [0x3387], NFD: [0x3387], NFKC: [0x0047, 0x0042], NFKD: [0x0047, 0x0042] },
+{ source: [0x3388], NFC: [0x3388], NFD: [0x3388], NFKC: [0x0063, 0x0061, 0x006C], NFKD: [0x0063, 0x0061, 0x006C] },
+{ source: [0x3389], NFC: [0x3389], NFD: [0x3389], NFKC: [0x006B, 0x0063, 0x0061, 0x006C], NFKD: [0x006B, 0x0063, 0x0061, 0x006C] },
+{ source: [0x338A], NFC: [0x338A], NFD: [0x338A], NFKC: [0x0070, 0x0046], NFKD: [0x0070, 0x0046] },
+{ source: [0x338B], NFC: [0x338B], NFD: [0x338B], NFKC: [0x006E, 0x0046], NFKD: [0x006E, 0x0046] },
+{ source: [0x338C], NFC: [0x338C], NFD: [0x338C], NFKC: [0x03BC, 0x0046], NFKD: [0x03BC, 0x0046] },
+{ source: [0x338D], NFC: [0x338D], NFD: [0x338D], NFKC: [0x03BC, 0x0067], NFKD: [0x03BC, 0x0067] },
+{ source: [0x338E], NFC: [0x338E], NFD: [0x338E], NFKC: [0x006D, 0x0067], NFKD: [0x006D, 0x0067] },
+{ source: [0x338F], NFC: [0x338F], NFD: [0x338F], NFKC: [0x006B, 0x0067], NFKD: [0x006B, 0x0067] },
+{ source: [0x3390], NFC: [0x3390], NFD: [0x3390], NFKC: [0x0048, 0x007A], NFKD: [0x0048, 0x007A] },
+{ source: [0x3391], NFC: [0x3391], NFD: [0x3391], NFKC: [0x006B, 0x0048, 0x007A], NFKD: [0x006B, 0x0048, 0x007A] },
+{ source: [0x3392], NFC: [0x3392], NFD: [0x3392], NFKC: [0x004D, 0x0048, 0x007A], NFKD: [0x004D, 0x0048, 0x007A] },
+{ source: [0x3393], NFC: [0x3393], NFD: [0x3393], NFKC: [0x0047, 0x0048, 0x007A], NFKD: [0x0047, 0x0048, 0x007A] },
+{ source: [0x3394], NFC: [0x3394], NFD: [0x3394], NFKC: [0x0054, 0x0048, 0x007A], NFKD: [0x0054, 0x0048, 0x007A] },
+{ source: [0x3395], NFC: [0x3395], NFD: [0x3395], NFKC: [0x03BC, 0x006C], NFKD: [0x03BC, 0x006C] },
+{ source: [0x3396], NFC: [0x3396], NFD: [0x3396], NFKC: [0x006D, 0x006C], NFKD: [0x006D, 0x006C] },
+{ source: [0x3397], NFC: [0x3397], NFD: [0x3397], NFKC: [0x0064, 0x006C], NFKD: [0x0064, 0x006C] },
+{ source: [0x3398], NFC: [0x3398], NFD: [0x3398], NFKC: [0x006B, 0x006C], NFKD: [0x006B, 0x006C] },
+{ source: [0x3399], NFC: [0x3399], NFD: [0x3399], NFKC: [0x0066, 0x006D], NFKD: [0x0066, 0x006D] },
+{ source: [0x339A], NFC: [0x339A], NFD: [0x339A], NFKC: [0x006E, 0x006D], NFKD: [0x006E, 0x006D] },
+{ source: [0x339B], NFC: [0x339B], NFD: [0x339B], NFKC: [0x03BC, 0x006D], NFKD: [0x03BC, 0x006D] },
+{ source: [0x339C], NFC: [0x339C], NFD: [0x339C], NFKC: [0x006D, 0x006D], NFKD: [0x006D, 0x006D] },
+{ source: [0x339D], NFC: [0x339D], NFD: [0x339D], NFKC: [0x0063, 0x006D], NFKD: [0x0063, 0x006D] },
+{ source: [0x339E], NFC: [0x339E], NFD: [0x339E], NFKC: [0x006B, 0x006D], NFKD: [0x006B, 0x006D] },
+{ source: [0x339F], NFC: [0x339F], NFD: [0x339F], NFKC: [0x006D, 0x006D, 0x0032], NFKD: [0x006D, 0x006D, 0x0032] },
+{ source: [0x33A0], NFC: [0x33A0], NFD: [0x33A0], NFKC: [0x0063, 0x006D, 0x0032], NFKD: [0x0063, 0x006D, 0x0032] },
+{ source: [0x33A1], NFC: [0x33A1], NFD: [0x33A1], NFKC: [0x006D, 0x0032], NFKD: [0x006D, 0x0032] },
+{ source: [0x33A2], NFC: [0x33A2], NFD: [0x33A2], NFKC: [0x006B, 0x006D, 0x0032], NFKD: [0x006B, 0x006D, 0x0032] },
+{ source: [0x33A3], NFC: [0x33A3], NFD: [0x33A3], NFKC: [0x006D, 0x006D, 0x0033], NFKD: [0x006D, 0x006D, 0x0033] },
+{ source: [0x33A4], NFC: [0x33A4], NFD: [0x33A4], NFKC: [0x0063, 0x006D, 0x0033], NFKD: [0x0063, 0x006D, 0x0033] },
+{ source: [0x33A5], NFC: [0x33A5], NFD: [0x33A5], NFKC: [0x006D, 0x0033], NFKD: [0x006D, 0x0033] },
+{ source: [0x33A6], NFC: [0x33A6], NFD: [0x33A6], NFKC: [0x006B, 0x006D, 0x0033], NFKD: [0x006B, 0x006D, 0x0033] },
+{ source: [0x33A7], NFC: [0x33A7], NFD: [0x33A7], NFKC: [0x006D, 0x2215, 0x0073], NFKD: [0x006D, 0x2215, 0x0073] },
+{ source: [0x33A8], NFC: [0x33A8], NFD: [0x33A8], NFKC: [0x006D, 0x2215, 0x0073, 0x0032], NFKD: [0x006D, 0x2215, 0x0073, 0x0032] },
+{ source: [0x33A9], NFC: [0x33A9], NFD: [0x33A9], NFKC: [0x0050, 0x0061], NFKD: [0x0050, 0x0061] },
+{ source: [0x33AA], NFC: [0x33AA], NFD: [0x33AA], NFKC: [0x006B, 0x0050, 0x0061], NFKD: [0x006B, 0x0050, 0x0061] },
+{ source: [0x33AB], NFC: [0x33AB], NFD: [0x33AB], NFKC: [0x004D, 0x0050, 0x0061], NFKD: [0x004D, 0x0050, 0x0061] },
+{ source: [0x33AC], NFC: [0x33AC], NFD: [0x33AC], NFKC: [0x0047, 0x0050, 0x0061], NFKD: [0x0047, 0x0050, 0x0061] },
+{ source: [0x33AD], NFC: [0x33AD], NFD: [0x33AD], NFKC: [0x0072, 0x0061, 0x0064], NFKD: [0x0072, 0x0061, 0x0064] },
+{ source: [0x33AE], NFC: [0x33AE], NFD: [0x33AE], NFKC: [0x0072, 0x0061, 0x0064, 0x2215, 0x0073], NFKD: [0x0072, 0x0061, 0x0064, 0x2215, 0x0073] },
+{ source: [0x33AF], NFC: [0x33AF], NFD: [0x33AF], NFKC: [0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0x0032], NFKD: [0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0x0032] },
+{ source: [0x33B0], NFC: [0x33B0], NFD: [0x33B0], NFKC: [0x0070, 0x0073], NFKD: [0x0070, 0x0073] },
+{ source: [0x33B1], NFC: [0x33B1], NFD: [0x33B1], NFKC: [0x006E, 0x0073], NFKD: [0x006E, 0x0073] },
+{ source: [0x33B2], NFC: [0x33B2], NFD: [0x33B2], NFKC: [0x03BC, 0x0073], NFKD: [0x03BC, 0x0073] },
+{ source: [0x33B3], NFC: [0x33B3], NFD: [0x33B3], NFKC: [0x006D, 0x0073], NFKD: [0x006D, 0x0073] },
+{ source: [0x33B4], NFC: [0x33B4], NFD: [0x33B4], NFKC: [0x0070, 0x0056], NFKD: [0x0070, 0x0056] },
+{ source: [0x33B5], NFC: [0x33B5], NFD: [0x33B5], NFKC: [0x006E, 0x0056], NFKD: [0x006E, 0x0056] },
+{ source: [0x33B6], NFC: [0x33B6], NFD: [0x33B6], NFKC: [0x03BC, 0x0056], NFKD: [0x03BC, 0x0056] },
+{ source: [0x33B7], NFC: [0x33B7], NFD: [0x33B7], NFKC: [0x006D, 0x0056], NFKD: [0x006D, 0x0056] },
+{ source: [0x33B8], NFC: [0x33B8], NFD: [0x33B8], NFKC: [0x006B, 0x0056], NFKD: [0x006B, 0x0056] },
+{ source: [0x33B9], NFC: [0x33B9], NFD: [0x33B9], NFKC: [0x004D, 0x0056], NFKD: [0x004D, 0x0056] },
+{ source: [0x33BA], NFC: [0x33BA], NFD: [0x33BA], NFKC: [0x0070, 0x0057], NFKD: [0x0070, 0x0057] },
+{ source: [0x33BB], NFC: [0x33BB], NFD: [0x33BB], NFKC: [0x006E, 0x0057], NFKD: [0x006E, 0x0057] },
+{ source: [0x33BC], NFC: [0x33BC], NFD: [0x33BC], NFKC: [0x03BC, 0x0057], NFKD: [0x03BC, 0x0057] },
+{ source: [0x33BD], NFC: [0x33BD], NFD: [0x33BD], NFKC: [0x006D, 0x0057], NFKD: [0x006D, 0x0057] },
+{ source: [0x33BE], NFC: [0x33BE], NFD: [0x33BE], NFKC: [0x006B, 0x0057], NFKD: [0x006B, 0x0057] },
+{ source: [0x33BF], NFC: [0x33BF], NFD: [0x33BF], NFKC: [0x004D, 0x0057], NFKD: [0x004D, 0x0057] },
+{ source: [0x33C0], NFC: [0x33C0], NFD: [0x33C0], NFKC: [0x006B, 0x03A9], NFKD: [0x006B, 0x03A9] },
+{ source: [0x33C1], NFC: [0x33C1], NFD: [0x33C1], NFKC: [0x004D, 0x03A9], NFKD: [0x004D, 0x03A9] },
+{ source: [0x33C2], NFC: [0x33C2], NFD: [0x33C2], NFKC: [0x0061, 0x002E, 0x006D, 0x002E], NFKD: [0x0061, 0x002E, 0x006D, 0x002E] },
+{ source: [0x33C3], NFC: [0x33C3], NFD: [0x33C3], NFKC: [0x0042, 0x0071], NFKD: [0x0042, 0x0071] },
+{ source: [0x33C4], NFC: [0x33C4], NFD: [0x33C4], NFKC: [0x0063, 0x0063], NFKD: [0x0063, 0x0063] },
+{ source: [0x33C5], NFC: [0x33C5], NFD: [0x33C5], NFKC: [0x0063, 0x0064], NFKD: [0x0063, 0x0064] },
+{ source: [0x33C6], NFC: [0x33C6], NFD: [0x33C6], NFKC: [0x0043, 0x2215, 0x006B, 0x0067], NFKD: [0x0043, 0x2215, 0x006B, 0x0067] },
+{ source: [0x33C7], NFC: [0x33C7], NFD: [0x33C7], NFKC: [0x0043, 0x006F, 0x002E], NFKD: [0x0043, 0x006F, 0x002E] },
+{ source: [0x33C8], NFC: [0x33C8], NFD: [0x33C8], NFKC: [0x0064, 0x0042], NFKD: [0x0064, 0x0042] },
+{ source: [0x33C9], NFC: [0x33C9], NFD: [0x33C9], NFKC: [0x0047, 0x0079], NFKD: [0x0047, 0x0079] },
+{ source: [0x33CA], NFC: [0x33CA], NFD: [0x33CA], NFKC: [0x0068, 0x0061], NFKD: [0x0068, 0x0061] },
+{ source: [0x33CB], NFC: [0x33CB], NFD: [0x33CB], NFKC: [0x0048, 0x0050], NFKD: [0x0048, 0x0050] },
+{ source: [0x33CC], NFC: [0x33CC], NFD: [0x33CC], NFKC: [0x0069, 0x006E], NFKD: [0x0069, 0x006E] },
+{ source: [0x33CD], NFC: [0x33CD], NFD: [0x33CD], NFKC: [0x004B, 0x004B], NFKD: [0x004B, 0x004B] },
+{ source: [0x33CE], NFC: [0x33CE], NFD: [0x33CE], NFKC: [0x004B, 0x004D], NFKD: [0x004B, 0x004D] },
+{ source: [0x33CF], NFC: [0x33CF], NFD: [0x33CF], NFKC: [0x006B, 0x0074], NFKD: [0x006B, 0x0074] },
+{ source: [0x33D0], NFC: [0x33D0], NFD: [0x33D0], NFKC: [0x006C, 0x006D], NFKD: [0x006C, 0x006D] },
+{ source: [0x33D1], NFC: [0x33D1], NFD: [0x33D1], NFKC: [0x006C, 0x006E], NFKD: [0x006C, 0x006E] },
+{ source: [0x33D2], NFC: [0x33D2], NFD: [0x33D2], NFKC: [0x006C, 0x006F, 0x0067], NFKD: [0x006C, 0x006F, 0x0067] },
+{ source: [0x33D3], NFC: [0x33D3], NFD: [0x33D3], NFKC: [0x006C, 0x0078], NFKD: [0x006C, 0x0078] },
+{ source: [0x33D4], NFC: [0x33D4], NFD: [0x33D4], NFKC: [0x006D, 0x0062], NFKD: [0x006D, 0x0062] },
+{ source: [0x33D5], NFC: [0x33D5], NFD: [0x33D5], NFKC: [0x006D, 0x0069, 0x006C], NFKD: [0x006D, 0x0069, 0x006C] },
+{ source: [0x33D6], NFC: [0x33D6], NFD: [0x33D6], NFKC: [0x006D, 0x006F, 0x006C], NFKD: [0x006D, 0x006F, 0x006C] },
+{ source: [0x33D7], NFC: [0x33D7], NFD: [0x33D7], NFKC: [0x0050, 0x0048], NFKD: [0x0050, 0x0048] },
+{ source: [0x33D8], NFC: [0x33D8], NFD: [0x33D8], NFKC: [0x0070, 0x002E, 0x006D, 0x002E], NFKD: [0x0070, 0x002E, 0x006D, 0x002E] },
+{ source: [0x33D9], NFC: [0x33D9], NFD: [0x33D9], NFKC: [0x0050, 0x0050, 0x004D], NFKD: [0x0050, 0x0050, 0x004D] },
+{ source: [0x33DA], NFC: [0x33DA], NFD: [0x33DA], NFKC: [0x0050, 0x0052], NFKD: [0x0050, 0x0052] },
+{ source: [0x33DB], NFC: [0x33DB], NFD: [0x33DB], NFKC: [0x0073, 0x0072], NFKD: [0x0073, 0x0072] },
+{ source: [0x33DC], NFC: [0x33DC], NFD: [0x33DC], NFKC: [0x0053, 0x0076], NFKD: [0x0053, 0x0076] },
+{ source: [0x33DD], NFC: [0x33DD], NFD: [0x33DD], NFKC: [0x0057, 0x0062], NFKD: [0x0057, 0x0062] },
+{ source: [0x33DE], NFC: [0x33DE], NFD: [0x33DE], NFKC: [0x0056, 0x2215, 0x006D], NFKD: [0x0056, 0x2215, 0x006D] },
+{ source: [0x33DF], NFC: [0x33DF], NFD: [0x33DF], NFKC: [0x0041, 0x2215, 0x006D], NFKD: [0x0041, 0x2215, 0x006D] },
+{ source: [0x33E0], NFC: [0x33E0], NFD: [0x33E0], NFKC: [0x0031, 0x65E5], NFKD: [0x0031, 0x65E5] },
+{ source: [0x33E1], NFC: [0x33E1], NFD: [0x33E1], NFKC: [0x0032, 0x65E5], NFKD: [0x0032, 0x65E5] },
+{ source: [0x33E2], NFC: [0x33E2], NFD: [0x33E2], NFKC: [0x0033, 0x65E5], NFKD: [0x0033, 0x65E5] },
+{ source: [0x33E3], NFC: [0x33E3], NFD: [0x33E3], NFKC: [0x0034, 0x65E5], NFKD: [0x0034, 0x65E5] },
+{ source: [0x33E4], NFC: [0x33E4], NFD: [0x33E4], NFKC: [0x0035, 0x65E5], NFKD: [0x0035, 0x65E5] },
+{ source: [0x33E5], NFC: [0x33E5], NFD: [0x33E5], NFKC: [0x0036, 0x65E5], NFKD: [0x0036, 0x65E5] },
+{ source: [0x33E6], NFC: [0x33E6], NFD: [0x33E6], NFKC: [0x0037, 0x65E5], NFKD: [0x0037, 0x65E5] },
+{ source: [0x33E7], NFC: [0x33E7], NFD: [0x33E7], NFKC: [0x0038, 0x65E5], NFKD: [0x0038, 0x65E5] },
+{ source: [0x33E8], NFC: [0x33E8], NFD: [0x33E8], NFKC: [0x0039, 0x65E5], NFKD: [0x0039, 0x65E5] },
+{ source: [0x33E9], NFC: [0x33E9], NFD: [0x33E9], NFKC: [0x0031, 0x0030, 0x65E5], NFKD: [0x0031, 0x0030, 0x65E5] },
+{ source: [0x33EA], NFC: [0x33EA], NFD: [0x33EA], NFKC: [0x0031, 0x0031, 0x65E5], NFKD: [0x0031, 0x0031, 0x65E5] },
+{ source: [0x33EB], NFC: [0x33EB], NFD: [0x33EB], NFKC: [0x0031, 0x0032, 0x65E5], NFKD: [0x0031, 0x0032, 0x65E5] },
+{ source: [0x33EC], NFC: [0x33EC], NFD: [0x33EC], NFKC: [0x0031, 0x0033, 0x65E5], NFKD: [0x0031, 0x0033, 0x65E5] },
+{ source: [0x33ED], NFC: [0x33ED], NFD: [0x33ED], NFKC: [0x0031, 0x0034, 0x65E5], NFKD: [0x0031, 0x0034, 0x65E5] },
+{ source: [0x33EE], NFC: [0x33EE], NFD: [0x33EE], NFKC: [0x0031, 0x0035, 0x65E5], NFKD: [0x0031, 0x0035, 0x65E5] },
+{ source: [0x33EF], NFC: [0x33EF], NFD: [0x33EF], NFKC: [0x0031, 0x0036, 0x65E5], NFKD: [0x0031, 0x0036, 0x65E5] },
+{ source: [0x33F0], NFC: [0x33F0], NFD: [0x33F0], NFKC: [0x0031, 0x0037, 0x65E5], NFKD: [0x0031, 0x0037, 0x65E5] },
+{ source: [0x33F1], NFC: [0x33F1], NFD: [0x33F1], NFKC: [0x0031, 0x0038, 0x65E5], NFKD: [0x0031, 0x0038, 0x65E5] },
+{ source: [0x33F2], NFC: [0x33F2], NFD: [0x33F2], NFKC: [0x0031, 0x0039, 0x65E5], NFKD: [0x0031, 0x0039, 0x65E5] },
+{ source: [0x33F3], NFC: [0x33F3], NFD: [0x33F3], NFKC: [0x0032, 0x0030, 0x65E5], NFKD: [0x0032, 0x0030, 0x65E5] },
+{ source: [0x33F4], NFC: [0x33F4], NFD: [0x33F4], NFKC: [0x0032, 0x0031, 0x65E5], NFKD: [0x0032, 0x0031, 0x65E5] },
+{ source: [0x33F5], NFC: [0x33F5], NFD: [0x33F5], NFKC: [0x0032, 0x0032, 0x65E5], NFKD: [0x0032, 0x0032, 0x65E5] },
+{ source: [0x33F6], NFC: [0x33F6], NFD: [0x33F6], NFKC: [0x0032, 0x0033, 0x65E5], NFKD: [0x0032, 0x0033, 0x65E5] },
+{ source: [0x33F7], NFC: [0x33F7], NFD: [0x33F7], NFKC: [0x0032, 0x0034, 0x65E5], NFKD: [0x0032, 0x0034, 0x65E5] },
+{ source: [0x33F8], NFC: [0x33F8], NFD: [0x33F8], NFKC: [0x0032, 0x0035, 0x65E5], NFKD: [0x0032, 0x0035, 0x65E5] },
+{ source: [0x33F9], NFC: [0x33F9], NFD: [0x33F9], NFKC: [0x0032, 0x0036, 0x65E5], NFKD: [0x0032, 0x0036, 0x65E5] },
+{ source: [0x33FA], NFC: [0x33FA], NFD: [0x33FA], NFKC: [0x0032, 0x0037, 0x65E5], NFKD: [0x0032, 0x0037, 0x65E5] },
+{ source: [0x33FB], NFC: [0x33FB], NFD: [0x33FB], NFKC: [0x0032, 0x0038, 0x65E5], NFKD: [0x0032, 0x0038, 0x65E5] },
+{ source: [0x33FC], NFC: [0x33FC], NFD: [0x33FC], NFKC: [0x0032, 0x0039, 0x65E5], NFKD: [0x0032, 0x0039, 0x65E5] },
+{ source: [0x33FD], NFC: [0x33FD], NFD: [0x33FD], NFKC: [0x0033, 0x0030, 0x65E5], NFKD: [0x0033, 0x0030, 0x65E5] },
+{ source: [0x33FE], NFC: [0x33FE], NFD: [0x33FE], NFKC: [0x0033, 0x0031, 0x65E5], NFKD: [0x0033, 0x0031, 0x65E5] },
+{ source: [0x33FF], NFC: [0x33FF], NFD: [0x33FF], NFKC: [0x0067, 0x0061, 0x006C], NFKD: [0x0067, 0x0061, 0x006C] },
+{ source: [0xA69C], NFC: [0xA69C], NFD: [0xA69C], NFKC: [0x044A], NFKD: [0x044A] },
+{ source: [0xA69D], NFC: [0xA69D], NFD: [0xA69D], NFKC: [0x044C], NFKD: [0x044C] },
+{ source: [0xA770], NFC: [0xA770], NFD: [0xA770], NFKC: [0xA76F], NFKD: [0xA76F] },
+{ source: [0xA7F8], NFC: [0xA7F8], NFD: [0xA7F8], NFKC: [0x0126], NFKD: [0x0126] },
+{ source: [0xA7F9], NFC: [0xA7F9], NFD: [0xA7F9], NFKC: [0x0153], NFKD: [0x0153] },
+{ source: [0xAB5C], NFC: [0xAB5C], NFD: [0xAB5C], NFKC: [0xA727], NFKD: [0xA727] },
+{ source: [0xAB5D], NFC: [0xAB5D], NFD: [0xAB5D], NFKC: [0xAB37], NFKD: [0xAB37] },
+{ source: [0xAB5E], NFC: [0xAB5E], NFD: [0xAB5E], NFKC: [0x026B], NFKD: [0x026B] },
+{ source: [0xAB5F], NFC: [0xAB5F], NFD: [0xAB5F], NFKC: [0xAB52], NFKD: [0xAB52] },
+{ source: [0xAC00], NFC: [0xAC00], NFD: [0x1100, 0x1161], NFKC: [0xAC00], NFKD: [0x1100, 0x1161] },
+{ source: [0xAC01], NFC: [0xAC01], NFD: [0x1100, 0x1161, 0x11A8], NFKC: [0xAC01], NFKD: [0x1100, 0x1161, 0x11A8] },
+{ source: [0xAC02], NFC: [0xAC02], NFD: [0x1100, 0x1161, 0x11A9], NFKC: [0xAC02], NFKD: [0x1100, 0x1161, 0x11A9] },
+{ source: [0xAC03], NFC: [0xAC03], NFD: [0x1100, 0x1161, 0x11AA], NFKC: [0xAC03], NFKD: [0x1100, 0x1161, 0x11AA] },
+{ source: [0xAC04], NFC: [0xAC04], NFD: [0x1100, 0x1161, 0x11AB], NFKC: [0xAC04], NFKD: [0x1100, 0x1161, 0x11AB] },
+{ source: [0xAC05], NFC: [0xAC05], NFD: [0x1100, 0x1161, 0x11AC], NFKC: [0xAC05], NFKD: [0x1100, 0x1161, 0x11AC] },
+{ source: [0xAC06], NFC: [0xAC06], NFD: [0x1100, 0x1161, 0x11AD], NFKC: [0xAC06], NFKD: [0x1100, 0x1161, 0x11AD] },
+{ source: [0xAC07], NFC: [0xAC07], NFD: [0x1100, 0x1161, 0x11AE], NFKC: [0xAC07], NFKD: [0x1100, 0x1161, 0x11AE] },
+{ source: [0xAC08], NFC: [0xAC08], NFD: [0x1100, 0x1161, 0x11AF], NFKC: [0xAC08], NFKD: [0x1100, 0x1161, 0x11AF] },
+{ source: [0xAC09], NFC: [0xAC09], NFD: [0x1100, 0x1161, 0x11B0], NFKC: [0xAC09], NFKD: [0x1100, 0x1161, 0x11B0] },
+{ source: [0xAC0A], NFC: [0xAC0A], NFD: [0x1100, 0x1161, 0x11B1], NFKC: [0xAC0A], NFKD: [0x1100, 0x1161, 0x11B1] },
+{ source: [0xAC0B], NFC: [0xAC0B], NFD: [0x1100, 0x1161, 0x11B2], NFKC: [0xAC0B], NFKD: [0x1100, 0x1161, 0x11B2] },
+{ source: [0xAC0C], NFC: [0xAC0C], NFD: [0x1100, 0x1161, 0x11B3], NFKC: [0xAC0C], NFKD: [0x1100, 0x1161, 0x11B3] },
+{ source: [0xAC0D], NFC: [0xAC0D], NFD: [0x1100, 0x1161, 0x11B4], NFKC: [0xAC0D], NFKD: [0x1100, 0x1161, 0x11B4] },
+{ source: [0xAC0E], NFC: [0xAC0E], NFD: [0x1100, 0x1161, 0x11B5], NFKC: [0xAC0E], NFKD: [0x1100, 0x1161, 0x11B5] },
+{ source: [0xAC0F], NFC: [0xAC0F], NFD: [0x1100, 0x1161, 0x11B6], NFKC: [0xAC0F], NFKD: [0x1100, 0x1161, 0x11B6] },
+{ source: [0xAC10], NFC: [0xAC10], NFD: [0x1100, 0x1161, 0x11B7], NFKC: [0xAC10], NFKD: [0x1100, 0x1161, 0x11B7] },
+{ source: [0xAC11], NFC: [0xAC11], NFD: [0x1100, 0x1161, 0x11B8], NFKC: [0xAC11], NFKD: [0x1100, 0x1161, 0x11B8] },
+{ source: [0xAC12], NFC: [0xAC12], NFD: [0x1100, 0x1161, 0x11B9], NFKC: [0xAC12], NFKD: [0x1100, 0x1161, 0x11B9] },
+{ source: [0xAC13], NFC: [0xAC13], NFD: [0x1100, 0x1161, 0x11BA], NFKC: [0xAC13], NFKD: [0x1100, 0x1161, 0x11BA] },
+{ source: [0xAC14], NFC: [0xAC14], NFD: [0x1100, 0x1161, 0x11BB], NFKC: [0xAC14], NFKD: [0x1100, 0x1161, 0x11BB] },
+{ source: [0xAC15], NFC: [0xAC15], NFD: [0x1100, 0x1161, 0x11BC], NFKC: [0xAC15], NFKD: [0x1100, 0x1161, 0x11BC] },
+{ source: [0xAC16], NFC: [0xAC16], NFD: [0x1100, 0x1161, 0x11BD], NFKC: [0xAC16], NFKD: [0x1100, 0x1161, 0x11BD] },
+{ source: [0xAC17], NFC: [0xAC17], NFD: [0x1100, 0x1161, 0x11BE], NFKC: [0xAC17], NFKD: [0x1100, 0x1161, 0x11BE] },
+{ source: [0xAC18], NFC: [0xAC18], NFD: [0x1100, 0x1161, 0x11BF], NFKC: [0xAC18], NFKD: [0x1100, 0x1161, 0x11BF] },
+{ source: [0xAC19], NFC: [0xAC19], NFD: [0x1100, 0x1161, 0x11C0], NFKC: [0xAC19], NFKD: [0x1100, 0x1161, 0x11C0] },
+{ source: [0xAC1A], NFC: [0xAC1A], NFD: [0x1100, 0x1161, 0x11C1], NFKC: [0xAC1A], NFKD: [0x1100, 0x1161, 0x11C1] },
+{ source: [0xAC1B], NFC: [0xAC1B], NFD: [0x1100, 0x1161, 0x11C2], NFKC: [0xAC1B], NFKD: [0x1100, 0x1161, 0x11C2] },
+{ source: [0xAC1C], NFC: [0xAC1C], NFD: [0x1100, 0x1162], NFKC: [0xAC1C], NFKD: [0x1100, 0x1162] },
+{ source: [0xAC1D], NFC: [0xAC1D], NFD: [0x1100, 0x1162, 0x11A8], NFKC: [0xAC1D], NFKD: [0x1100, 0x1162, 0x11A8] },
+{ source: [0xAC1E], NFC: [0xAC1E], NFD: [0x1100, 0x1162, 0x11A9], NFKC: [0xAC1E], NFKD: [0x1100, 0x1162, 0x11A9] },
+{ source: [0xAC1F], NFC: [0xAC1F], NFD: [0x1100, 0x1162, 0x11AA], NFKC: [0xAC1F], NFKD: [0x1100, 0x1162, 0x11AA] },
+{ source: [0xAC20], NFC: [0xAC20], NFD: [0x1100, 0x1162, 0x11AB], NFKC: [0xAC20], NFKD: [0x1100, 0x1162, 0x11AB] },
+{ source: [0xAC21], NFC: [0xAC21], NFD: [0x1100, 0x1162, 0x11AC], NFKC: [0xAC21], NFKD: [0x1100, 0x1162, 0x11AC] },
+{ source: [0xAC22], NFC: [0xAC22], NFD: [0x1100, 0x1162, 0x11AD], NFKC: [0xAC22], NFKD: [0x1100, 0x1162, 0x11AD] },
+{ source: [0xAC23], NFC: [0xAC23], NFD: [0x1100, 0x1162, 0x11AE], NFKC: [0xAC23], NFKD: [0x1100, 0x1162, 0x11AE] },
+{ source: [0xAC24], NFC: [0xAC24], NFD: [0x1100, 0x1162, 0x11AF], NFKC: [0xAC24], NFKD: [0x1100, 0x1162, 0x11AF] },
+{ source: [0xAC25], NFC: [0xAC25], NFD: [0x1100, 0x1162, 0x11B0], NFKC: [0xAC25], NFKD: [0x1100, 0x1162, 0x11B0] },
+{ source: [0xAC26], NFC: [0xAC26], NFD: [0x1100, 0x1162, 0x11B1], NFKC: [0xAC26], NFKD: [0x1100, 0x1162, 0x11B1] },
+{ source: [0xAC27], NFC: [0xAC27], NFD: [0x1100, 0x1162, 0x11B2], NFKC: [0xAC27], NFKD: [0x1100, 0x1162, 0x11B2] },
+{ source: [0xAC28], NFC: [0xAC28], NFD: [0x1100, 0x1162, 0x11B3], NFKC: [0xAC28], NFKD: [0x1100, 0x1162, 0x11B3] },
+{ source: [0xAC29], NFC: [0xAC29], NFD: [0x1100, 0x1162, 0x11B4], NFKC: [0xAC29], NFKD: [0x1100, 0x1162, 0x11B4] },
+{ source: [0xAC2A], NFC: [0xAC2A], NFD: [0x1100, 0x1162, 0x11B5], NFKC: [0xAC2A], NFKD: [0x1100, 0x1162, 0x11B5] },
+{ source: [0xAC2B], NFC: [0xAC2B], NFD: [0x1100, 0x1162, 0x11B6], NFKC: [0xAC2B], NFKD: [0x1100, 0x1162, 0x11B6] },
+{ source: [0xAC2C], NFC: [0xAC2C], NFD: [0x1100, 0x1162, 0x11B7], NFKC: [0xAC2C], NFKD: [0x1100, 0x1162, 0x11B7] },
+{ source: [0xAC2D], NFC: [0xAC2D], NFD: [0x1100, 0x1162, 0x11B8], NFKC: [0xAC2D], NFKD: [0x1100, 0x1162, 0x11B8] },
+{ source: [0xAC2E], NFC: [0xAC2E], NFD: [0x1100, 0x1162, 0x11B9], NFKC: [0xAC2E], NFKD: [0x1100, 0x1162, 0x11B9] },
+{ source: [0xAC2F], NFC: [0xAC2F], NFD: [0x1100, 0x1162, 0x11BA], NFKC: [0xAC2F], NFKD: [0x1100, 0x1162, 0x11BA] },
+{ source: [0xAC30], NFC: [0xAC30], NFD: [0x1100, 0x1162, 0x11BB], NFKC: [0xAC30], NFKD: [0x1100, 0x1162, 0x11BB] },
+{ source: [0xAC31], NFC: [0xAC31], NFD: [0x1100, 0x1162, 0x11BC], NFKC: [0xAC31], NFKD: [0x1100, 0x1162, 0x11BC] },
+{ source: [0xAC32], NFC: [0xAC32], NFD: [0x1100, 0x1162, 0x11BD], NFKC: [0xAC32], NFKD: [0x1100, 0x1162, 0x11BD] },
+{ source: [0xAC33], NFC: [0xAC33], NFD: [0x1100, 0x1162, 0x11BE], NFKC: [0xAC33], NFKD: [0x1100, 0x1162, 0x11BE] },
+{ source: [0xAC34], NFC: [0xAC34], NFD: [0x1100, 0x1162, 0x11BF], NFKC: [0xAC34], NFKD: [0x1100, 0x1162, 0x11BF] },
+{ source: [0xAC35], NFC: [0xAC35], NFD: [0x1100, 0x1162, 0x11C0], NFKC: [0xAC35], NFKD: [0x1100, 0x1162, 0x11C0] },
+{ source: [0xAC36], NFC: [0xAC36], NFD: [0x1100, 0x1162, 0x11C1], NFKC: [0xAC36], NFKD: [0x1100, 0x1162, 0x11C1] },
+{ source: [0xAC37], NFC: [0xAC37], NFD: [0x1100, 0x1162, 0x11C2], NFKC: [0xAC37], NFKD: [0x1100, 0x1162, 0x11C2] },
+{ source: [0xAC38], NFC: [0xAC38], NFD: [0x1100, 0x1163], NFKC: [0xAC38], NFKD: [0x1100, 0x1163] },
+{ source: [0xAC39], NFC: [0xAC39], NFD: [0x1100, 0x1163, 0x11A8], NFKC: [0xAC39], NFKD: [0x1100, 0x1163, 0x11A8] },
+{ source: [0xAC3A], NFC: [0xAC3A], NFD: [0x1100, 0x1163, 0x11A9], NFKC: [0xAC3A], NFKD: [0x1100, 0x1163, 0x11A9] },
+{ source: [0xAC3B], NFC: [0xAC3B], NFD: [0x1100, 0x1163, 0x11AA], NFKC: [0xAC3B], NFKD: [0x1100, 0x1163, 0x11AA] },
+{ source: [0xAC3C], NFC: [0xAC3C], NFD: [0x1100, 0x1163, 0x11AB], NFKC: [0xAC3C], NFKD: [0x1100, 0x1163, 0x11AB] },
+{ source: [0xAC3D], NFC: [0xAC3D], NFD: [0x1100, 0x1163, 0x11AC], NFKC: [0xAC3D], NFKD: [0x1100, 0x1163, 0x11AC] },
+{ source: [0xAC3E], NFC: [0xAC3E], NFD: [0x1100, 0x1163, 0x11AD], NFKC: [0xAC3E], NFKD: [0x1100, 0x1163, 0x11AD] },
+{ source: [0xAC3F], NFC: [0xAC3F], NFD: [0x1100, 0x1163, 0x11AE], NFKC: [0xAC3F], NFKD: [0x1100, 0x1163, 0x11AE] },
+{ source: [0xAC40], NFC: [0xAC40], NFD: [0x1100, 0x1163, 0x11AF], NFKC: [0xAC40], NFKD: [0x1100, 0x1163, 0x11AF] },
+{ source: [0xAC41], NFC: [0xAC41], NFD: [0x1100, 0x1163, 0x11B0], NFKC: [0xAC41], NFKD: [0x1100, 0x1163, 0x11B0] },
+{ source: [0xAC42], NFC: [0xAC42], NFD: [0x1100, 0x1163, 0x11B1], NFKC: [0xAC42], NFKD: [0x1100, 0x1163, 0x11B1] },
+{ source: [0xAC43], NFC: [0xAC43], NFD: [0x1100, 0x1163, 0x11B2], NFKC: [0xAC43], NFKD: [0x1100, 0x1163, 0x11B2] },
+{ source: [0xAC44], NFC: [0xAC44], NFD: [0x1100, 0x1163, 0x11B3], NFKC: [0xAC44], NFKD: [0x1100, 0x1163, 0x11B3] },
+{ source: [0xAC45], NFC: [0xAC45], NFD: [0x1100, 0x1163, 0x11B4], NFKC: [0xAC45], NFKD: [0x1100, 0x1163, 0x11B4] },
+{ source: [0xAC46], NFC: [0xAC46], NFD: [0x1100, 0x1163, 0x11B5], NFKC: [0xAC46], NFKD: [0x1100, 0x1163, 0x11B5] },
+{ source: [0xAC47], NFC: [0xAC47], NFD: [0x1100, 0x1163, 0x11B6], NFKC: [0xAC47], NFKD: [0x1100, 0x1163, 0x11B6] },
+{ source: [0xAC48], NFC: [0xAC48], NFD: [0x1100, 0x1163, 0x11B7], NFKC: [0xAC48], NFKD: [0x1100, 0x1163, 0x11B7] },
+{ source: [0xAC49], NFC: [0xAC49], NFD: [0x1100, 0x1163, 0x11B8], NFKC: [0xAC49], NFKD: [0x1100, 0x1163, 0x11B8] },
+{ source: [0xAC4A], NFC: [0xAC4A], NFD: [0x1100, 0x1163, 0x11B9], NFKC: [0xAC4A], NFKD: [0x1100, 0x1163, 0x11B9] },
+{ source: [0xAC4B], NFC: [0xAC4B], NFD: [0x1100, 0x1163, 0x11BA], NFKC: [0xAC4B], NFKD: [0x1100, 0x1163, 0x11BA] },
+{ source: [0xAC4C], NFC: [0xAC4C], NFD: [0x1100, 0x1163, 0x11BB], NFKC: [0xAC4C], NFKD: [0x1100, 0x1163, 0x11BB] },
+{ source: [0xAC4D], NFC: [0xAC4D], NFD: [0x1100, 0x1163, 0x11BC], NFKC: [0xAC4D], NFKD: [0x1100, 0x1163, 0x11BC] },
+{ source: [0xAC4E], NFC: [0xAC4E], NFD: [0x1100, 0x1163, 0x11BD], NFKC: [0xAC4E], NFKD: [0x1100, 0x1163, 0x11BD] },
+{ source: [0xAC4F], NFC: [0xAC4F], NFD: [0x1100, 0x1163, 0x11BE], NFKC: [0xAC4F], NFKD: [0x1100, 0x1163, 0x11BE] },
+{ source: [0xAC50], NFC: [0xAC50], NFD: [0x1100, 0x1163, 0x11BF], NFKC: [0xAC50], NFKD: [0x1100, 0x1163, 0x11BF] },
+{ source: [0xAC51], NFC: [0xAC51], NFD: [0x1100, 0x1163, 0x11C0], NFKC: [0xAC51], NFKD: [0x1100, 0x1163, 0x11C0] },
+{ source: [0xAC52], NFC: [0xAC52], NFD: [0x1100, 0x1163, 0x11C1], NFKC: [0xAC52], NFKD: [0x1100, 0x1163, 0x11C1] },
+{ source: [0xAC53], NFC: [0xAC53], NFD: [0x1100, 0x1163, 0x11C2], NFKC: [0xAC53], NFKD: [0x1100, 0x1163, 0x11C2] },
+{ source: [0xAC54], NFC: [0xAC54], NFD: [0x1100, 0x1164], NFKC: [0xAC54], NFKD: [0x1100, 0x1164] },
+{ source: [0xAC55], NFC: [0xAC55], NFD: [0x1100, 0x1164, 0x11A8], NFKC: [0xAC55], NFKD: [0x1100, 0x1164, 0x11A8] },
+{ source: [0xAC56], NFC: [0xAC56], NFD: [0x1100, 0x1164, 0x11A9], NFKC: [0xAC56], NFKD: [0x1100, 0x1164, 0x11A9] },
+{ source: [0xAC57], NFC: [0xAC57], NFD: [0x1100, 0x1164, 0x11AA], NFKC: [0xAC57], NFKD: [0x1100, 0x1164, 0x11AA] },
+{ source: [0xAC58], NFC: [0xAC58], NFD: [0x1100, 0x1164, 0x11AB], NFKC: [0xAC58], NFKD: [0x1100, 0x1164, 0x11AB] },
+{ source: [0xAC59], NFC: [0xAC59], NFD: [0x1100, 0x1164, 0x11AC], NFKC: [0xAC59], NFKD: [0x1100, 0x1164, 0x11AC] },
+{ source: [0xAC5A], NFC: [0xAC5A], NFD: [0x1100, 0x1164, 0x11AD], NFKC: [0xAC5A], NFKD: [0x1100, 0x1164, 0x11AD] },
+{ source: [0xAC5B], NFC: [0xAC5B], NFD: [0x1100, 0x1164, 0x11AE], NFKC: [0xAC5B], NFKD: [0x1100, 0x1164, 0x11AE] },
+{ source: [0xAC5C], NFC: [0xAC5C], NFD: [0x1100, 0x1164, 0x11AF], NFKC: [0xAC5C], NFKD: [0x1100, 0x1164, 0x11AF] },
+{ source: [0xAC5D], NFC: [0xAC5D], NFD: [0x1100, 0x1164, 0x11B0], NFKC: [0xAC5D], NFKD: [0x1100, 0x1164, 0x11B0] },
+{ source: [0xAC5E], NFC: [0xAC5E], NFD: [0x1100, 0x1164, 0x11B1], NFKC: [0xAC5E], NFKD: [0x1100, 0x1164, 0x11B1] },
+{ source: [0xAC5F], NFC: [0xAC5F], NFD: [0x1100, 0x1164, 0x11B2], NFKC: [0xAC5F], NFKD: [0x1100, 0x1164, 0x11B2] },
+{ source: [0xAC60], NFC: [0xAC60], NFD: [0x1100, 0x1164, 0x11B3], NFKC: [0xAC60], NFKD: [0x1100, 0x1164, 0x11B3] },
+{ source: [0xAC61], NFC: [0xAC61], NFD: [0x1100, 0x1164, 0x11B4], NFKC: [0xAC61], NFKD: [0x1100, 0x1164, 0x11B4] },
+{ source: [0xAC62], NFC: [0xAC62], NFD: [0x1100, 0x1164, 0x11B5], NFKC: [0xAC62], NFKD: [0x1100, 0x1164, 0x11B5] },
+{ source: [0xAC63], NFC: [0xAC63], NFD: [0x1100, 0x1164, 0x11B6], NFKC: [0xAC63], NFKD: [0x1100, 0x1164, 0x11B6] },
+{ source: [0xAC64], NFC: [0xAC64], NFD: [0x1100, 0x1164, 0x11B7], NFKC: [0xAC64], NFKD: [0x1100, 0x1164, 0x11B7] },
+{ source: [0xAC65], NFC: [0xAC65], NFD: [0x1100, 0x1164, 0x11B8], NFKC: [0xAC65], NFKD: [0x1100, 0x1164, 0x11B8] },
+{ source: [0xAC66], NFC: [0xAC66], NFD: [0x1100, 0x1164, 0x11B9], NFKC: [0xAC66], NFKD: [0x1100, 0x1164, 0x11B9] },
+{ source: [0xAC67], NFC: [0xAC67], NFD: [0x1100, 0x1164, 0x11BA], NFKC: [0xAC67], NFKD: [0x1100, 0x1164, 0x11BA] },
+{ source: [0xAC68], NFC: [0xAC68], NFD: [0x1100, 0x1164, 0x11BB], NFKC: [0xAC68], NFKD: [0x1100, 0x1164, 0x11BB] },
+{ source: [0xAC69], NFC: [0xAC69], NFD: [0x1100, 0x1164, 0x11BC], NFKC: [0xAC69], NFKD: [0x1100, 0x1164, 0x11BC] },
+{ source: [0xAC6A], NFC: [0xAC6A], NFD: [0x1100, 0x1164, 0x11BD], NFKC: [0xAC6A], NFKD: [0x1100, 0x1164, 0x11BD] },
+{ source: [0xAC6B], NFC: [0xAC6B], NFD: [0x1100, 0x1164, 0x11BE], NFKC: [0xAC6B], NFKD: [0x1100, 0x1164, 0x11BE] },
+{ source: [0xAC6C], NFC: [0xAC6C], NFD: [0x1100, 0x1164, 0x11BF], NFKC: [0xAC6C], NFKD: [0x1100, 0x1164, 0x11BF] },
+{ source: [0xAC6D], NFC: [0xAC6D], NFD: [0x1100, 0x1164, 0x11C0], NFKC: [0xAC6D], NFKD: [0x1100, 0x1164, 0x11C0] },
+{ source: [0xAC6E], NFC: [0xAC6E], NFD: [0x1100, 0x1164, 0x11C1], NFKC: [0xAC6E], NFKD: [0x1100, 0x1164, 0x11C1] },
+{ source: [0xAC6F], NFC: [0xAC6F], NFD: [0x1100, 0x1164, 0x11C2], NFKC: [0xAC6F], NFKD: [0x1100, 0x1164, 0x11C2] },
+{ source: [0xAC70], NFC: [0xAC70], NFD: [0x1100, 0x1165], NFKC: [0xAC70], NFKD: [0x1100, 0x1165] },
+{ source: [0xAC71], NFC: [0xAC71], NFD: [0x1100, 0x1165, 0x11A8], NFKC: [0xAC71], NFKD: [0x1100, 0x1165, 0x11A8] },
+{ source: [0xAC72], NFC: [0xAC72], NFD: [0x1100, 0x1165, 0x11A9], NFKC: [0xAC72], NFKD: [0x1100, 0x1165, 0x11A9] },
+{ source: [0xAC73], NFC: [0xAC73], NFD: [0x1100, 0x1165, 0x11AA], NFKC: [0xAC73], NFKD: [0x1100, 0x1165, 0x11AA] },
+{ source: [0xAC74], NFC: [0xAC74], NFD: [0x1100, 0x1165, 0x11AB], NFKC: [0xAC74], NFKD: [0x1100, 0x1165, 0x11AB] },
+{ source: [0xAC75], NFC: [0xAC75], NFD: [0x1100, 0x1165, 0x11AC], NFKC: [0xAC75], NFKD: [0x1100, 0x1165, 0x11AC] },
+{ source: [0xAC76], NFC: [0xAC76], NFD: [0x1100, 0x1165, 0x11AD], NFKC: [0xAC76], NFKD: [0x1100, 0x1165, 0x11AD] },
+{ source: [0xAC77], NFC: [0xAC77], NFD: [0x1100, 0x1165, 0x11AE], NFKC: [0xAC77], NFKD: [0x1100, 0x1165, 0x11AE] },
+{ source: [0xAC78], NFC: [0xAC78], NFD: [0x1100, 0x1165, 0x11AF], NFKC: [0xAC78], NFKD: [0x1100, 0x1165, 0x11AF] },
+{ source: [0xAC79], NFC: [0xAC79], NFD: [0x1100, 0x1165, 0x11B0], NFKC: [0xAC79], NFKD: [0x1100, 0x1165, 0x11B0] },
+{ source: [0xAC7A], NFC: [0xAC7A], NFD: [0x1100, 0x1165, 0x11B1], NFKC: [0xAC7A], NFKD: [0x1100, 0x1165, 0x11B1] },
+{ source: [0xAC7B], NFC: [0xAC7B], NFD: [0x1100, 0x1165, 0x11B2], NFKC: [0xAC7B], NFKD: [0x1100, 0x1165, 0x11B2] },
+{ source: [0xAC7C], NFC: [0xAC7C], NFD: [0x1100, 0x1165, 0x11B3], NFKC: [0xAC7C], NFKD: [0x1100, 0x1165, 0x11B3] },
+{ source: [0xAC7D], NFC: [0xAC7D], NFD: [0x1100, 0x1165, 0x11B4], NFKC: [0xAC7D], NFKD: [0x1100, 0x1165, 0x11B4] },
+{ source: [0xAC7E], NFC: [0xAC7E], NFD: [0x1100, 0x1165, 0x11B5], NFKC: [0xAC7E], NFKD: [0x1100, 0x1165, 0x11B5] },
+{ source: [0xAC7F], NFC: [0xAC7F], NFD: [0x1100, 0x1165, 0x11B6], NFKC: [0xAC7F], NFKD: [0x1100, 0x1165, 0x11B6] },
+{ source: [0xAC80], NFC: [0xAC80], NFD: [0x1100, 0x1165, 0x11B7], NFKC: [0xAC80], NFKD: [0x1100, 0x1165, 0x11B7] },
+{ source: [0xAC81], NFC: [0xAC81], NFD: [0x1100, 0x1165, 0x11B8], NFKC: [0xAC81], NFKD: [0x1100, 0x1165, 0x11B8] },
+{ source: [0xAC82], NFC: [0xAC82], NFD: [0x1100, 0x1165, 0x11B9], NFKC: [0xAC82], NFKD: [0x1100, 0x1165, 0x11B9] },
+{ source: [0xAC83], NFC: [0xAC83], NFD: [0x1100, 0x1165, 0x11BA], NFKC: [0xAC83], NFKD: [0x1100, 0x1165, 0x11BA] },
+{ source: [0xAC84], NFC: [0xAC84], NFD: [0x1100, 0x1165, 0x11BB], NFKC: [0xAC84], NFKD: [0x1100, 0x1165, 0x11BB] },
+{ source: [0xAC85], NFC: [0xAC85], NFD: [0x1100, 0x1165, 0x11BC], NFKC: [0xAC85], NFKD: [0x1100, 0x1165, 0x11BC] },
+{ source: [0xAC86], NFC: [0xAC86], NFD: [0x1100, 0x1165, 0x11BD], NFKC: [0xAC86], NFKD: [0x1100, 0x1165, 0x11BD] },
+{ source: [0xAC87], NFC: [0xAC87], NFD: [0x1100, 0x1165, 0x11BE], NFKC: [0xAC87], NFKD: [0x1100, 0x1165, 0x11BE] },
+{ source: [0xAC88], NFC: [0xAC88], NFD: [0x1100, 0x1165, 0x11BF], NFKC: [0xAC88], NFKD: [0x1100, 0x1165, 0x11BF] },
+{ source: [0xAC89], NFC: [0xAC89], NFD: [0x1100, 0x1165, 0x11C0], NFKC: [0xAC89], NFKD: [0x1100, 0x1165, 0x11C0] },
+{ source: [0xAC8A], NFC: [0xAC8A], NFD: [0x1100, 0x1165, 0x11C1], NFKC: [0xAC8A], NFKD: [0x1100, 0x1165, 0x11C1] },
+{ source: [0xAC8B], NFC: [0xAC8B], NFD: [0x1100, 0x1165, 0x11C2], NFKC: [0xAC8B], NFKD: [0x1100, 0x1165, 0x11C2] },
+{ source: [0xAC8C], NFC: [0xAC8C], NFD: [0x1100, 0x1166], NFKC: [0xAC8C], NFKD: [0x1100, 0x1166] },
+{ source: [0xAC8D], NFC: [0xAC8D], NFD: [0x1100, 0x1166, 0x11A8], NFKC: [0xAC8D], NFKD: [0x1100, 0x1166, 0x11A8] },
+{ source: [0xAC8E], NFC: [0xAC8E], NFD: [0x1100, 0x1166, 0x11A9], NFKC: [0xAC8E], NFKD: [0x1100, 0x1166, 0x11A9] },
+{ source: [0xAC8F], NFC: [0xAC8F], NFD: [0x1100, 0x1166, 0x11AA], NFKC: [0xAC8F], NFKD: [0x1100, 0x1166, 0x11AA] },
+{ source: [0xAC90], NFC: [0xAC90], NFD: [0x1100, 0x1166, 0x11AB], NFKC: [0xAC90], NFKD: [0x1100, 0x1166, 0x11AB] },
+{ source: [0xAC91], NFC: [0xAC91], NFD: [0x1100, 0x1166, 0x11AC], NFKC: [0xAC91], NFKD: [0x1100, 0x1166, 0x11AC] },
+{ source: [0xAC92], NFC: [0xAC92], NFD: [0x1100, 0x1166, 0x11AD], NFKC: [0xAC92], NFKD: [0x1100, 0x1166, 0x11AD] },
+{ source: [0xAC93], NFC: [0xAC93], NFD: [0x1100, 0x1166, 0x11AE], NFKC: [0xAC93], NFKD: [0x1100, 0x1166, 0x11AE] },
+{ source: [0xAC94], NFC: [0xAC94], NFD: [0x1100, 0x1166, 0x11AF], NFKC: [0xAC94], NFKD: [0x1100, 0x1166, 0x11AF] },
+{ source: [0xAC95], NFC: [0xAC95], NFD: [0x1100, 0x1166, 0x11B0], NFKC: [0xAC95], NFKD: [0x1100, 0x1166, 0x11B0] },
+{ source: [0xAC96], NFC: [0xAC96], NFD: [0x1100, 0x1166, 0x11B1], NFKC: [0xAC96], NFKD: [0x1100, 0x1166, 0x11B1] },
+{ source: [0xAC97], NFC: [0xAC97], NFD: [0x1100, 0x1166, 0x11B2], NFKC: [0xAC97], NFKD: [0x1100, 0x1166, 0x11B2] },
+{ source: [0xAC98], NFC: [0xAC98], NFD: [0x1100, 0x1166, 0x11B3], NFKC: [0xAC98], NFKD: [0x1100, 0x1166, 0x11B3] },
+{ source: [0xAC99], NFC: [0xAC99], NFD: [0x1100, 0x1166, 0x11B4], NFKC: [0xAC99], NFKD: [0x1100, 0x1166, 0x11B4] },
+{ source: [0xAC9A], NFC: [0xAC9A], NFD: [0x1100, 0x1166, 0x11B5], NFKC: [0xAC9A], NFKD: [0x1100, 0x1166, 0x11B5] },
+{ source: [0xAC9B], NFC: [0xAC9B], NFD: [0x1100, 0x1166, 0x11B6], NFKC: [0xAC9B], NFKD: [0x1100, 0x1166, 0x11B6] },
+{ source: [0xAC9C], NFC: [0xAC9C], NFD: [0x1100, 0x1166, 0x11B7], NFKC: [0xAC9C], NFKD: [0x1100, 0x1166, 0x11B7] },
+{ source: [0xAC9D], NFC: [0xAC9D], NFD: [0x1100, 0x1166, 0x11B8], NFKC: [0xAC9D], NFKD: [0x1100, 0x1166, 0x11B8] },
+{ source: [0xAC9E], NFC: [0xAC9E], NFD: [0x1100, 0x1166, 0x11B9], NFKC: [0xAC9E], NFKD: [0x1100, 0x1166, 0x11B9] },
+{ source: [0xAC9F], NFC: [0xAC9F], NFD: [0x1100, 0x1166, 0x11BA], NFKC: [0xAC9F], NFKD: [0x1100, 0x1166, 0x11BA] },
+{ source: [0xACA0], NFC: [0xACA0], NFD: [0x1100, 0x1166, 0x11BB], NFKC: [0xACA0], NFKD: [0x1100, 0x1166, 0x11BB] },
+{ source: [0xACA1], NFC: [0xACA1], NFD: [0x1100, 0x1166, 0x11BC], NFKC: [0xACA1], NFKD: [0x1100, 0x1166, 0x11BC] },
+{ source: [0xACA2], NFC: [0xACA2], NFD: [0x1100, 0x1166, 0x11BD], NFKC: [0xACA2], NFKD: [0x1100, 0x1166, 0x11BD] },
+{ source: [0xACA3], NFC: [0xACA3], NFD: [0x1100, 0x1166, 0x11BE], NFKC: [0xACA3], NFKD: [0x1100, 0x1166, 0x11BE] },
+{ source: [0xACA4], NFC: [0xACA4], NFD: [0x1100, 0x1166, 0x11BF], NFKC: [0xACA4], NFKD: [0x1100, 0x1166, 0x11BF] },
+{ source: [0xACA5], NFC: [0xACA5], NFD: [0x1100, 0x1166, 0x11C0], NFKC: [0xACA5], NFKD: [0x1100, 0x1166, 0x11C0] },
+{ source: [0xACA6], NFC: [0xACA6], NFD: [0x1100, 0x1166, 0x11C1], NFKC: [0xACA6], NFKD: [0x1100, 0x1166, 0x11C1] },
+{ source: [0xACA7], NFC: [0xACA7], NFD: [0x1100, 0x1166, 0x11C2], NFKC: [0xACA7], NFKD: [0x1100, 0x1166, 0x11C2] },
+{ source: [0xACA8], NFC: [0xACA8], NFD: [0x1100, 0x1167], NFKC: [0xACA8], NFKD: [0x1100, 0x1167] },
+{ source: [0xACA9], NFC: [0xACA9], NFD: [0x1100, 0x1167, 0x11A8], NFKC: [0xACA9], NFKD: [0x1100, 0x1167, 0x11A8] },
+{ source: [0xACAA], NFC: [0xACAA], NFD: [0x1100, 0x1167, 0x11A9], NFKC: [0xACAA], NFKD: [0x1100, 0x1167, 0x11A9] },
+{ source: [0xACAB], NFC: [0xACAB], NFD: [0x1100, 0x1167, 0x11AA], NFKC: [0xACAB], NFKD: [0x1100, 0x1167, 0x11AA] },
+{ source: [0xACAC], NFC: [0xACAC], NFD: [0x1100, 0x1167, 0x11AB], NFKC: [0xACAC], NFKD: [0x1100, 0x1167, 0x11AB] },
+{ source: [0xACAD], NFC: [0xACAD], NFD: [0x1100, 0x1167, 0x11AC], NFKC: [0xACAD], NFKD: [0x1100, 0x1167, 0x11AC] },
+{ source: [0xACAE], NFC: [0xACAE], NFD: [0x1100, 0x1167, 0x11AD], NFKC: [0xACAE], NFKD: [0x1100, 0x1167, 0x11AD] },
+{ source: [0xACAF], NFC: [0xACAF], NFD: [0x1100, 0x1167, 0x11AE], NFKC: [0xACAF], NFKD: [0x1100, 0x1167, 0x11AE] },
+{ source: [0xACB0], NFC: [0xACB0], NFD: [0x1100, 0x1167, 0x11AF], NFKC: [0xACB0], NFKD: [0x1100, 0x1167, 0x11AF] },
+{ source: [0xACB1], NFC: [0xACB1], NFD: [0x1100, 0x1167, 0x11B0], NFKC: [0xACB1], NFKD: [0x1100, 0x1167, 0x11B0] },
+{ source: [0xACB2], NFC: [0xACB2], NFD: [0x1100, 0x1167, 0x11B1], NFKC: [0xACB2], NFKD: [0x1100, 0x1167, 0x11B1] },
+{ source: [0xACB3], NFC: [0xACB3], NFD: [0x1100, 0x1167, 0x11B2], NFKC: [0xACB3], NFKD: [0x1100, 0x1167, 0x11B2] },
+{ source: [0xACB4], NFC: [0xACB4], NFD: [0x1100, 0x1167, 0x11B3], NFKC: [0xACB4], NFKD: [0x1100, 0x1167, 0x11B3] },
+{ source: [0xACB5], NFC: [0xACB5], NFD: [0x1100, 0x1167, 0x11B4], NFKC: [0xACB5], NFKD: [0x1100, 0x1167, 0x11B4] },
+{ source: [0xACB6], NFC: [0xACB6], NFD: [0x1100, 0x1167, 0x11B5], NFKC: [0xACB6], NFKD: [0x1100, 0x1167, 0x11B5] },
+{ source: [0xACB7], NFC: [0xACB7], NFD: [0x1100, 0x1167, 0x11B6], NFKC: [0xACB7], NFKD: [0x1100, 0x1167, 0x11B6] },
+{ source: [0xACB8], NFC: [0xACB8], NFD: [0x1100, 0x1167, 0x11B7], NFKC: [0xACB8], NFKD: [0x1100, 0x1167, 0x11B7] },
+{ source: [0xACB9], NFC: [0xACB9], NFD: [0x1100, 0x1167, 0x11B8], NFKC: [0xACB9], NFKD: [0x1100, 0x1167, 0x11B8] },
+{ source: [0xACBA], NFC: [0xACBA], NFD: [0x1100, 0x1167, 0x11B9], NFKC: [0xACBA], NFKD: [0x1100, 0x1167, 0x11B9] },
+{ source: [0xACBB], NFC: [0xACBB], NFD: [0x1100, 0x1167, 0x11BA], NFKC: [0xACBB], NFKD: [0x1100, 0x1167, 0x11BA] },
+{ source: [0xACBC], NFC: [0xACBC], NFD: [0x1100, 0x1167, 0x11BB], NFKC: [0xACBC], NFKD: [0x1100, 0x1167, 0x11BB] },
+{ source: [0xACBD], NFC: [0xACBD], NFD: [0x1100, 0x1167, 0x11BC], NFKC: [0xACBD], NFKD: [0x1100, 0x1167, 0x11BC] },
+{ source: [0xACBE], NFC: [0xACBE], NFD: [0x1100, 0x1167, 0x11BD], NFKC: [0xACBE], NFKD: [0x1100, 0x1167, 0x11BD] },
+{ source: [0xACBF], NFC: [0xACBF], NFD: [0x1100, 0x1167, 0x11BE], NFKC: [0xACBF], NFKD: [0x1100, 0x1167, 0x11BE] },
+{ source: [0xACC0], NFC: [0xACC0], NFD: [0x1100, 0x1167, 0x11BF], NFKC: [0xACC0], NFKD: [0x1100, 0x1167, 0x11BF] },
+{ source: [0xACC1], NFC: [0xACC1], NFD: [0x1100, 0x1167, 0x11C0], NFKC: [0xACC1], NFKD: [0x1100, 0x1167, 0x11C0] },
+{ source: [0xACC2], NFC: [0xACC2], NFD: [0x1100, 0x1167, 0x11C1], NFKC: [0xACC2], NFKD: [0x1100, 0x1167, 0x11C1] },
+{ source: [0xACC3], NFC: [0xACC3], NFD: [0x1100, 0x1167, 0x11C2], NFKC: [0xACC3], NFKD: [0x1100, 0x1167, 0x11C2] },
+{ source: [0xACC4], NFC: [0xACC4], NFD: [0x1100, 0x1168], NFKC: [0xACC4], NFKD: [0x1100, 0x1168] },
+{ source: [0xACC5], NFC: [0xACC5], NFD: [0x1100, 0x1168, 0x11A8], NFKC: [0xACC5], NFKD: [0x1100, 0x1168, 0x11A8] },
+{ source: [0xACC6], NFC: [0xACC6], NFD: [0x1100, 0x1168, 0x11A9], NFKC: [0xACC6], NFKD: [0x1100, 0x1168, 0x11A9] },
+{ source: [0xACC7], NFC: [0xACC7], NFD: [0x1100, 0x1168, 0x11AA], NFKC: [0xACC7], NFKD: [0x1100, 0x1168, 0x11AA] },
+{ source: [0xACC8], NFC: [0xACC8], NFD: [0x1100, 0x1168, 0x11AB], NFKC: [0xACC8], NFKD: [0x1100, 0x1168, 0x11AB] },
+{ source: [0xACC9], NFC: [0xACC9], NFD: [0x1100, 0x1168, 0x11AC], NFKC: [0xACC9], NFKD: [0x1100, 0x1168, 0x11AC] },
+{ source: [0xACCA], NFC: [0xACCA], NFD: [0x1100, 0x1168, 0x11AD], NFKC: [0xACCA], NFKD: [0x1100, 0x1168, 0x11AD] },
+{ source: [0xACCB], NFC: [0xACCB], NFD: [0x1100, 0x1168, 0x11AE], NFKC: [0xACCB], NFKD: [0x1100, 0x1168, 0x11AE] },
+{ source: [0xACCC], NFC: [0xACCC], NFD: [0x1100, 0x1168, 0x11AF], NFKC: [0xACCC], NFKD: [0x1100, 0x1168, 0x11AF] },
+{ source: [0xACCD], NFC: [0xACCD], NFD: [0x1100, 0x1168, 0x11B0], NFKC: [0xACCD], NFKD: [0x1100, 0x1168, 0x11B0] },
+{ source: [0xACCE], NFC: [0xACCE], NFD: [0x1100, 0x1168, 0x11B1], NFKC: [0xACCE], NFKD: [0x1100, 0x1168, 0x11B1] },
+{ source: [0xACCF], NFC: [0xACCF], NFD: [0x1100, 0x1168, 0x11B2], NFKC: [0xACCF], NFKD: [0x1100, 0x1168, 0x11B2] },
+{ source: [0xACD0], NFC: [0xACD0], NFD: [0x1100, 0x1168, 0x11B3], NFKC: [0xACD0], NFKD: [0x1100, 0x1168, 0x11B3] },
+{ source: [0xACD1], NFC: [0xACD1], NFD: [0x1100, 0x1168, 0x11B4], NFKC: [0xACD1], NFKD: [0x1100, 0x1168, 0x11B4] },
+{ source: [0xACD2], NFC: [0xACD2], NFD: [0x1100, 0x1168, 0x11B5], NFKC: [0xACD2], NFKD: [0x1100, 0x1168, 0x11B5] },
+{ source: [0xACD3], NFC: [0xACD3], NFD: [0x1100, 0x1168, 0x11B6], NFKC: [0xACD3], NFKD: [0x1100, 0x1168, 0x11B6] },
+{ source: [0xACD4], NFC: [0xACD4], NFD: [0x1100, 0x1168, 0x11B7], NFKC: [0xACD4], NFKD: [0x1100, 0x1168, 0x11B7] },
+{ source: [0xACD5], NFC: [0xACD5], NFD: [0x1100, 0x1168, 0x11B8], NFKC: [0xACD5], NFKD: [0x1100, 0x1168, 0x11B8] },
+{ source: [0xACD6], NFC: [0xACD6], NFD: [0x1100, 0x1168, 0x11B9], NFKC: [0xACD6], NFKD: [0x1100, 0x1168, 0x11B9] },
+{ source: [0xACD7], NFC: [0xACD7], NFD: [0x1100, 0x1168, 0x11BA], NFKC: [0xACD7], NFKD: [0x1100, 0x1168, 0x11BA] },
+{ source: [0xACD8], NFC: [0xACD8], NFD: [0x1100, 0x1168, 0x11BB], NFKC: [0xACD8], NFKD: [0x1100, 0x1168, 0x11BB] },
+{ source: [0xACD9], NFC: [0xACD9], NFD: [0x1100, 0x1168, 0x11BC], NFKC: [0xACD9], NFKD: [0x1100, 0x1168, 0x11BC] },
+{ source: [0xACDA], NFC: [0xACDA], NFD: [0x1100, 0x1168, 0x11BD], NFKC: [0xACDA], NFKD: [0x1100, 0x1168, 0x11BD] },
+{ source: [0xACDB], NFC: [0xACDB], NFD: [0x1100, 0x1168, 0x11BE], NFKC: [0xACDB], NFKD: [0x1100, 0x1168, 0x11BE] },
+{ source: [0xACDC], NFC: [0xACDC], NFD: [0x1100, 0x1168, 0x11BF], NFKC: [0xACDC], NFKD: [0x1100, 0x1168, 0x11BF] },
+{ source: [0xACDD], NFC: [0xACDD], NFD: [0x1100, 0x1168, 0x11C0], NFKC: [0xACDD], NFKD: [0x1100, 0x1168, 0x11C0] },
+{ source: [0xACDE], NFC: [0xACDE], NFD: [0x1100, 0x1168, 0x11C1], NFKC: [0xACDE], NFKD: [0x1100, 0x1168, 0x11C1] },
+{ source: [0xACDF], NFC: [0xACDF], NFD: [0x1100, 0x1168, 0x11C2], NFKC: [0xACDF], NFKD: [0x1100, 0x1168, 0x11C2] },
+{ source: [0xACE0], NFC: [0xACE0], NFD: [0x1100, 0x1169], NFKC: [0xACE0], NFKD: [0x1100, 0x1169] },
+{ source: [0xACE1], NFC: [0xACE1], NFD: [0x1100, 0x1169, 0x11A8], NFKC: [0xACE1], NFKD: [0x1100, 0x1169, 0x11A8] },
+{ source: [0xACE2], NFC: [0xACE2], NFD: [0x1100, 0x1169, 0x11A9], NFKC: [0xACE2], NFKD: [0x1100, 0x1169, 0x11A9] },
+{ source: [0xACE3], NFC: [0xACE3], NFD: [0x1100, 0x1169, 0x11AA], NFKC: [0xACE3], NFKD: [0x1100, 0x1169, 0x11AA] },
+{ source: [0xACE4], NFC: [0xACE4], NFD: [0x1100, 0x1169, 0x11AB], NFKC: [0xACE4], NFKD: [0x1100, 0x1169, 0x11AB] },
+{ source: [0xACE5], NFC: [0xACE5], NFD: [0x1100, 0x1169, 0x11AC], NFKC: [0xACE5], NFKD: [0x1100, 0x1169, 0x11AC] },
+{ source: [0xACE6], NFC: [0xACE6], NFD: [0x1100, 0x1169, 0x11AD], NFKC: [0xACE6], NFKD: [0x1100, 0x1169, 0x11AD] },
+{ source: [0xACE7], NFC: [0xACE7], NFD: [0x1100, 0x1169, 0x11AE], NFKC: [0xACE7], NFKD: [0x1100, 0x1169, 0x11AE] },
+{ source: [0xACE8], NFC: [0xACE8], NFD: [0x1100, 0x1169, 0x11AF], NFKC: [0xACE8], NFKD: [0x1100, 0x1169, 0x11AF] },
+{ source: [0xACE9], NFC: [0xACE9], NFD: [0x1100, 0x1169, 0x11B0], NFKC: [0xACE9], NFKD: [0x1100, 0x1169, 0x11B0] },
+{ source: [0xACEA], NFC: [0xACEA], NFD: [0x1100, 0x1169, 0x11B1], NFKC: [0xACEA], NFKD: [0x1100, 0x1169, 0x11B1] },
+{ source: [0xACEB], NFC: [0xACEB], NFD: [0x1100, 0x1169, 0x11B2], NFKC: [0xACEB], NFKD: [0x1100, 0x1169, 0x11B2] },
+{ source: [0xACEC], NFC: [0xACEC], NFD: [0x1100, 0x1169, 0x11B3], NFKC: [0xACEC], NFKD: [0x1100, 0x1169, 0x11B3] },
+{ source: [0xACED], NFC: [0xACED], NFD: [0x1100, 0x1169, 0x11B4], NFKC: [0xACED], NFKD: [0x1100, 0x1169, 0x11B4] },
+{ source: [0xACEE], NFC: [0xACEE], NFD: [0x1100, 0x1169, 0x11B5], NFKC: [0xACEE], NFKD: [0x1100, 0x1169, 0x11B5] },
+{ source: [0xACEF], NFC: [0xACEF], NFD: [0x1100, 0x1169, 0x11B6], NFKC: [0xACEF], NFKD: [0x1100, 0x1169, 0x11B6] },
+{ source: [0xACF0], NFC: [0xACF0], NFD: [0x1100, 0x1169, 0x11B7], NFKC: [0xACF0], NFKD: [0x1100, 0x1169, 0x11B7] },
+{ source: [0xACF1], NFC: [0xACF1], NFD: [0x1100, 0x1169, 0x11B8], NFKC: [0xACF1], NFKD: [0x1100, 0x1169, 0x11B8] },
+{ source: [0xACF2], NFC: [0xACF2], NFD: [0x1100, 0x1169, 0x11B9], NFKC: [0xACF2], NFKD: [0x1100, 0x1169, 0x11B9] },
+{ source: [0xACF3], NFC: [0xACF3], NFD: [0x1100, 0x1169, 0x11BA], NFKC: [0xACF3], NFKD: [0x1100, 0x1169, 0x11BA] },
+{ source: [0xACF4], NFC: [0xACF4], NFD: [0x1100, 0x1169, 0x11BB], NFKC: [0xACF4], NFKD: [0x1100, 0x1169, 0x11BB] },
+{ source: [0xACF5], NFC: [0xACF5], NFD: [0x1100, 0x1169, 0x11BC], NFKC: [0xACF5], NFKD: [0x1100, 0x1169, 0x11BC] },
+{ source: [0xACF6], NFC: [0xACF6], NFD: [0x1100, 0x1169, 0x11BD], NFKC: [0xACF6], NFKD: [0x1100, 0x1169, 0x11BD] },
+{ source: [0xACF7], NFC: [0xACF7], NFD: [0x1100, 0x1169, 0x11BE], NFKC: [0xACF7], NFKD: [0x1100, 0x1169, 0x11BE] },
+{ source: [0xACF8], NFC: [0xACF8], NFD: [0x1100, 0x1169, 0x11BF], NFKC: [0xACF8], NFKD: [0x1100, 0x1169, 0x11BF] },
+{ source: [0xACF9], NFC: [0xACF9], NFD: [0x1100, 0x1169, 0x11C0], NFKC: [0xACF9], NFKD: [0x1100, 0x1169, 0x11C0] },
+{ source: [0xACFA], NFC: [0xACFA], NFD: [0x1100, 0x1169, 0x11C1], NFKC: [0xACFA], NFKD: [0x1100, 0x1169, 0x11C1] },
+{ source: [0xACFB], NFC: [0xACFB], NFD: [0x1100, 0x1169, 0x11C2], NFKC: [0xACFB], NFKD: [0x1100, 0x1169, 0x11C2] },
+{ source: [0xACFC], NFC: [0xACFC], NFD: [0x1100, 0x116A], NFKC: [0xACFC], NFKD: [0x1100, 0x116A] },
+{ source: [0xACFD], NFC: [0xACFD], NFD: [0x1100, 0x116A, 0x11A8], NFKC: [0xACFD], NFKD: [0x1100, 0x116A, 0x11A8] },
+{ source: [0xACFE], NFC: [0xACFE], NFD: [0x1100, 0x116A, 0x11A9], NFKC: [0xACFE], NFKD: [0x1100, 0x116A, 0x11A9] },
+{ source: [0xACFF], NFC: [0xACFF], NFD: [0x1100, 0x116A, 0x11AA], NFKC: [0xACFF], NFKD: [0x1100, 0x116A, 0x11AA] },
+{ source: [0xAD00], NFC: [0xAD00], NFD: [0x1100, 0x116A, 0x11AB], NFKC: [0xAD00], NFKD: [0x1100, 0x116A, 0x11AB] },
+{ source: [0xAD01], NFC: [0xAD01], NFD: [0x1100, 0x116A, 0x11AC], NFKC: [0xAD01], NFKD: [0x1100, 0x116A, 0x11AC] },
+{ source: [0xAD02], NFC: [0xAD02], NFD: [0x1100, 0x116A, 0x11AD], NFKC: [0xAD02], NFKD: [0x1100, 0x116A, 0x11AD] },
+{ source: [0xAD03], NFC: [0xAD03], NFD: [0x1100, 0x116A, 0x11AE], NFKC: [0xAD03], NFKD: [0x1100, 0x116A, 0x11AE] },
+{ source: [0xAD04], NFC: [0xAD04], NFD: [0x1100, 0x116A, 0x11AF], NFKC: [0xAD04], NFKD: [0x1100, 0x116A, 0x11AF] },
+{ source: [0xAD05], NFC: [0xAD05], NFD: [0x1100, 0x116A, 0x11B0], NFKC: [0xAD05], NFKD: [0x1100, 0x116A, 0x11B0] },
+{ source: [0xAD06], NFC: [0xAD06], NFD: [0x1100, 0x116A, 0x11B1], NFKC: [0xAD06], NFKD: [0x1100, 0x116A, 0x11B1] },
+{ source: [0xAD07], NFC: [0xAD07], NFD: [0x1100, 0x116A, 0x11B2], NFKC: [0xAD07], NFKD: [0x1100, 0x116A, 0x11B2] },
+{ source: [0xAD08], NFC: [0xAD08], NFD: [0x1100, 0x116A, 0x11B3], NFKC: [0xAD08], NFKD: [0x1100, 0x116A, 0x11B3] },
+{ source: [0xAD09], NFC: [0xAD09], NFD: [0x1100, 0x116A, 0x11B4], NFKC: [0xAD09], NFKD: [0x1100, 0x116A, 0x11B4] },
+{ source: [0xAD0A], NFC: [0xAD0A], NFD: [0x1100, 0x116A, 0x11B5], NFKC: [0xAD0A], NFKD: [0x1100, 0x116A, 0x11B5] },
+{ source: [0xAD0B], NFC: [0xAD0B], NFD: [0x1100, 0x116A, 0x11B6], NFKC: [0xAD0B], NFKD: [0x1100, 0x116A, 0x11B6] },
+{ source: [0xAD0C], NFC: [0xAD0C], NFD: [0x1100, 0x116A, 0x11B7], NFKC: [0xAD0C], NFKD: [0x1100, 0x116A, 0x11B7] },
+{ source: [0xAD0D], NFC: [0xAD0D], NFD: [0x1100, 0x116A, 0x11B8], NFKC: [0xAD0D], NFKD: [0x1100, 0x116A, 0x11B8] },
+{ source: [0xAD0E], NFC: [0xAD0E], NFD: [0x1100, 0x116A, 0x11B9], NFKC: [0xAD0E], NFKD: [0x1100, 0x116A, 0x11B9] },
+{ source: [0xAD0F], NFC: [0xAD0F], NFD: [0x1100, 0x116A, 0x11BA], NFKC: [0xAD0F], NFKD: [0x1100, 0x116A, 0x11BA] },
+{ source: [0xAD10], NFC: [0xAD10], NFD: [0x1100, 0x116A, 0x11BB], NFKC: [0xAD10], NFKD: [0x1100, 0x116A, 0x11BB] },
+{ source: [0xAD11], NFC: [0xAD11], NFD: [0x1100, 0x116A, 0x11BC], NFKC: [0xAD11], NFKD: [0x1100, 0x116A, 0x11BC] },
+{ source: [0xAD12], NFC: [0xAD12], NFD: [0x1100, 0x116A, 0x11BD], NFKC: [0xAD12], NFKD: [0x1100, 0x116A, 0x11BD] },
+{ source: [0xAD13], NFC: [0xAD13], NFD: [0x1100, 0x116A, 0x11BE], NFKC: [0xAD13], NFKD: [0x1100, 0x116A, 0x11BE] },
+{ source: [0xAD14], NFC: [0xAD14], NFD: [0x1100, 0x116A, 0x11BF], NFKC: [0xAD14], NFKD: [0x1100, 0x116A, 0x11BF] },
+{ source: [0xAD15], NFC: [0xAD15], NFD: [0x1100, 0x116A, 0x11C0], NFKC: [0xAD15], NFKD: [0x1100, 0x116A, 0x11C0] },
+{ source: [0xAD16], NFC: [0xAD16], NFD: [0x1100, 0x116A, 0x11C1], NFKC: [0xAD16], NFKD: [0x1100, 0x116A, 0x11C1] },
+{ source: [0xAD17], NFC: [0xAD17], NFD: [0x1100, 0x116A, 0x11C2], NFKC: [0xAD17], NFKD: [0x1100, 0x116A, 0x11C2] },
+{ source: [0xAD18], NFC: [0xAD18], NFD: [0x1100, 0x116B], NFKC: [0xAD18], NFKD: [0x1100, 0x116B] },
+{ source: [0xAD19], NFC: [0xAD19], NFD: [0x1100, 0x116B, 0x11A8], NFKC: [0xAD19], NFKD: [0x1100, 0x116B, 0x11A8] },
+{ source: [0xAD1A], NFC: [0xAD1A], NFD: [0x1100, 0x116B, 0x11A9], NFKC: [0xAD1A], NFKD: [0x1100, 0x116B, 0x11A9] },
+{ source: [0xAD1B], NFC: [0xAD1B], NFD: [0x1100, 0x116B, 0x11AA], NFKC: [0xAD1B], NFKD: [0x1100, 0x116B, 0x11AA] },
+{ source: [0xAD1C], NFC: [0xAD1C], NFD: [0x1100, 0x116B, 0x11AB], NFKC: [0xAD1C], NFKD: [0x1100, 0x116B, 0x11AB] },
+{ source: [0xAD1D], NFC: [0xAD1D], NFD: [0x1100, 0x116B, 0x11AC], NFKC: [0xAD1D], NFKD: [0x1100, 0x116B, 0x11AC] },
+{ source: [0xAD1E], NFC: [0xAD1E], NFD: [0x1100, 0x116B, 0x11AD], NFKC: [0xAD1E], NFKD: [0x1100, 0x116B, 0x11AD] },
+{ source: [0xAD1F], NFC: [0xAD1F], NFD: [0x1100, 0x116B, 0x11AE], NFKC: [0xAD1F], NFKD: [0x1100, 0x116B, 0x11AE] },
+{ source: [0xAD20], NFC: [0xAD20], NFD: [0x1100, 0x116B, 0x11AF], NFKC: [0xAD20], NFKD: [0x1100, 0x116B, 0x11AF] },
+{ source: [0xAD21], NFC: [0xAD21], NFD: [0x1100, 0x116B, 0x11B0], NFKC: [0xAD21], NFKD: [0x1100, 0x116B, 0x11B0] },
+{ source: [0xAD22], NFC: [0xAD22], NFD: [0x1100, 0x116B, 0x11B1], NFKC: [0xAD22], NFKD: [0x1100, 0x116B, 0x11B1] },
+{ source: [0xAD23], NFC: [0xAD23], NFD: [0x1100, 0x116B, 0x11B2], NFKC: [0xAD23], NFKD: [0x1100, 0x116B, 0x11B2] },
+{ source: [0xAD24], NFC: [0xAD24], NFD: [0x1100, 0x116B, 0x11B3], NFKC: [0xAD24], NFKD: [0x1100, 0x116B, 0x11B3] },
+{ source: [0xAD25], NFC: [0xAD25], NFD: [0x1100, 0x116B, 0x11B4], NFKC: [0xAD25], NFKD: [0x1100, 0x116B, 0x11B4] },
+{ source: [0xAD26], NFC: [0xAD26], NFD: [0x1100, 0x116B, 0x11B5], NFKC: [0xAD26], NFKD: [0x1100, 0x116B, 0x11B5] },
+{ source: [0xAD27], NFC: [0xAD27], NFD: [0x1100, 0x116B, 0x11B6], NFKC: [0xAD27], NFKD: [0x1100, 0x116B, 0x11B6] },
+{ source: [0xAD28], NFC: [0xAD28], NFD: [0x1100, 0x116B, 0x11B7], NFKC: [0xAD28], NFKD: [0x1100, 0x116B, 0x11B7] },
+{ source: [0xAD29], NFC: [0xAD29], NFD: [0x1100, 0x116B, 0x11B8], NFKC: [0xAD29], NFKD: [0x1100, 0x116B, 0x11B8] },
+{ source: [0xAD2A], NFC: [0xAD2A], NFD: [0x1100, 0x116B, 0x11B9], NFKC: [0xAD2A], NFKD: [0x1100, 0x116B, 0x11B9] },
+{ source: [0xAD2B], NFC: [0xAD2B], NFD: [0x1100, 0x116B, 0x11BA], NFKC: [0xAD2B], NFKD: [0x1100, 0x116B, 0x11BA] },
+{ source: [0xAD2C], NFC: [0xAD2C], NFD: [0x1100, 0x116B, 0x11BB], NFKC: [0xAD2C], NFKD: [0x1100, 0x116B, 0x11BB] },
+{ source: [0xAD2D], NFC: [0xAD2D], NFD: [0x1100, 0x116B, 0x11BC], NFKC: [0xAD2D], NFKD: [0x1100, 0x116B, 0x11BC] },
+{ source: [0xAD2E], NFC: [0xAD2E], NFD: [0x1100, 0x116B, 0x11BD], NFKC: [0xAD2E], NFKD: [0x1100, 0x116B, 0x11BD] },
+{ source: [0xAD2F], NFC: [0xAD2F], NFD: [0x1100, 0x116B, 0x11BE], NFKC: [0xAD2F], NFKD: [0x1100, 0x116B, 0x11BE] },
+{ source: [0xAD30], NFC: [0xAD30], NFD: [0x1100, 0x116B, 0x11BF], NFKC: [0xAD30], NFKD: [0x1100, 0x116B, 0x11BF] },
+{ source: [0xAD31], NFC: [0xAD31], NFD: [0x1100, 0x116B, 0x11C0], NFKC: [0xAD31], NFKD: [0x1100, 0x116B, 0x11C0] },
+{ source: [0xAD32], NFC: [0xAD32], NFD: [0x1100, 0x116B, 0x11C1], NFKC: [0xAD32], NFKD: [0x1100, 0x116B, 0x11C1] },
+{ source: [0xAD33], NFC: [0xAD33], NFD: [0x1100, 0x116B, 0x11C2], NFKC: [0xAD33], NFKD: [0x1100, 0x116B, 0x11C2] },
+{ source: [0xAD34], NFC: [0xAD34], NFD: [0x1100, 0x116C], NFKC: [0xAD34], NFKD: [0x1100, 0x116C] },
+{ source: [0xAD35], NFC: [0xAD35], NFD: [0x1100, 0x116C, 0x11A8], NFKC: [0xAD35], NFKD: [0x1100, 0x116C, 0x11A8] },
+{ source: [0xAD36], NFC: [0xAD36], NFD: [0x1100, 0x116C, 0x11A9], NFKC: [0xAD36], NFKD: [0x1100, 0x116C, 0x11A9] },
+{ source: [0xAD37], NFC: [0xAD37], NFD: [0x1100, 0x116C, 0x11AA], NFKC: [0xAD37], NFKD: [0x1100, 0x116C, 0x11AA] },
+{ source: [0xAD38], NFC: [0xAD38], NFD: [0x1100, 0x116C, 0x11AB], NFKC: [0xAD38], NFKD: [0x1100, 0x116C, 0x11AB] },
+{ source: [0xAD39], NFC: [0xAD39], NFD: [0x1100, 0x116C, 0x11AC], NFKC: [0xAD39], NFKD: [0x1100, 0x116C, 0x11AC] },
+{ source: [0xAD3A], NFC: [0xAD3A], NFD: [0x1100, 0x116C, 0x11AD], NFKC: [0xAD3A], NFKD: [0x1100, 0x116C, 0x11AD] },
+{ source: [0xAD3B], NFC: [0xAD3B], NFD: [0x1100, 0x116C, 0x11AE], NFKC: [0xAD3B], NFKD: [0x1100, 0x116C, 0x11AE] },
+{ source: [0xAD3C], NFC: [0xAD3C], NFD: [0x1100, 0x116C, 0x11AF], NFKC: [0xAD3C], NFKD: [0x1100, 0x116C, 0x11AF] },
+{ source: [0xAD3D], NFC: [0xAD3D], NFD: [0x1100, 0x116C, 0x11B0], NFKC: [0xAD3D], NFKD: [0x1100, 0x116C, 0x11B0] },
+{ source: [0xAD3E], NFC: [0xAD3E], NFD: [0x1100, 0x116C, 0x11B1], NFKC: [0xAD3E], NFKD: [0x1100, 0x116C, 0x11B1] },
+{ source: [0xAD3F], NFC: [0xAD3F], NFD: [0x1100, 0x116C, 0x11B2], NFKC: [0xAD3F], NFKD: [0x1100, 0x116C, 0x11B2] },
+{ source: [0xAD40], NFC: [0xAD40], NFD: [0x1100, 0x116C, 0x11B3], NFKC: [0xAD40], NFKD: [0x1100, 0x116C, 0x11B3] },
+{ source: [0xAD41], NFC: [0xAD41], NFD: [0x1100, 0x116C, 0x11B4], NFKC: [0xAD41], NFKD: [0x1100, 0x116C, 0x11B4] },
+{ source: [0xAD42], NFC: [0xAD42], NFD: [0x1100, 0x116C, 0x11B5], NFKC: [0xAD42], NFKD: [0x1100, 0x116C, 0x11B5] },
+{ source: [0xAD43], NFC: [0xAD43], NFD: [0x1100, 0x116C, 0x11B6], NFKC: [0xAD43], NFKD: [0x1100, 0x116C, 0x11B6] },
+{ source: [0xAD44], NFC: [0xAD44], NFD: [0x1100, 0x116C, 0x11B7], NFKC: [0xAD44], NFKD: [0x1100, 0x116C, 0x11B7] },
+{ source: [0xAD45], NFC: [0xAD45], NFD: [0x1100, 0x116C, 0x11B8], NFKC: [0xAD45], NFKD: [0x1100, 0x116C, 0x11B8] },
+{ source: [0xAD46], NFC: [0xAD46], NFD: [0x1100, 0x116C, 0x11B9], NFKC: [0xAD46], NFKD: [0x1100, 0x116C, 0x11B9] },
+{ source: [0xAD47], NFC: [0xAD47], NFD: [0x1100, 0x116C, 0x11BA], NFKC: [0xAD47], NFKD: [0x1100, 0x116C, 0x11BA] },
+{ source: [0xAD48], NFC: [0xAD48], NFD: [0x1100, 0x116C, 0x11BB], NFKC: [0xAD48], NFKD: [0x1100, 0x116C, 0x11BB] },
+{ source: [0xAD49], NFC: [0xAD49], NFD: [0x1100, 0x116C, 0x11BC], NFKC: [0xAD49], NFKD: [0x1100, 0x116C, 0x11BC] },
+{ source: [0xAD4A], NFC: [0xAD4A], NFD: [0x1100, 0x116C, 0x11BD], NFKC: [0xAD4A], NFKD: [0x1100, 0x116C, 0x11BD] },
+{ source: [0xAD4B], NFC: [0xAD4B], NFD: [0x1100, 0x116C, 0x11BE], NFKC: [0xAD4B], NFKD: [0x1100, 0x116C, 0x11BE] },
+{ source: [0xAD4C], NFC: [0xAD4C], NFD: [0x1100, 0x116C, 0x11BF], NFKC: [0xAD4C], NFKD: [0x1100, 0x116C, 0x11BF] },
+{ source: [0xAD4D], NFC: [0xAD4D], NFD: [0x1100, 0x116C, 0x11C0], NFKC: [0xAD4D], NFKD: [0x1100, 0x116C, 0x11C0] },
+{ source: [0xAD4E], NFC: [0xAD4E], NFD: [0x1100, 0x116C, 0x11C1], NFKC: [0xAD4E], NFKD: [0x1100, 0x116C, 0x11C1] },
+{ source: [0xAD4F], NFC: [0xAD4F], NFD: [0x1100, 0x116C, 0x11C2], NFKC: [0xAD4F], NFKD: [0x1100, 0x116C, 0x11C2] },
+{ source: [0xAD50], NFC: [0xAD50], NFD: [0x1100, 0x116D], NFKC: [0xAD50], NFKD: [0x1100, 0x116D] },
+{ source: [0xAD51], NFC: [0xAD51], NFD: [0x1100, 0x116D, 0x11A8], NFKC: [0xAD51], NFKD: [0x1100, 0x116D, 0x11A8] },
+{ source: [0xAD52], NFC: [0xAD52], NFD: [0x1100, 0x116D, 0x11A9], NFKC: [0xAD52], NFKD: [0x1100, 0x116D, 0x11A9] },
+{ source: [0xAD53], NFC: [0xAD53], NFD: [0x1100, 0x116D, 0x11AA], NFKC: [0xAD53], NFKD: [0x1100, 0x116D, 0x11AA] },
+{ source: [0xAD54], NFC: [0xAD54], NFD: [0x1100, 0x116D, 0x11AB], NFKC: [0xAD54], NFKD: [0x1100, 0x116D, 0x11AB] },
+{ source: [0xAD55], NFC: [0xAD55], NFD: [0x1100, 0x116D, 0x11AC], NFKC: [0xAD55], NFKD: [0x1100, 0x116D, 0x11AC] },
+{ source: [0xAD56], NFC: [0xAD56], NFD: [0x1100, 0x116D, 0x11AD], NFKC: [0xAD56], NFKD: [0x1100, 0x116D, 0x11AD] },
+{ source: [0xAD57], NFC: [0xAD57], NFD: [0x1100, 0x116D, 0x11AE], NFKC: [0xAD57], NFKD: [0x1100, 0x116D, 0x11AE] },
+{ source: [0xAD58], NFC: [0xAD58], NFD: [0x1100, 0x116D, 0x11AF], NFKC: [0xAD58], NFKD: [0x1100, 0x116D, 0x11AF] },
+{ source: [0xAD59], NFC: [0xAD59], NFD: [0x1100, 0x116D, 0x11B0], NFKC: [0xAD59], NFKD: [0x1100, 0x116D, 0x11B0] },
+{ source: [0xAD5A], NFC: [0xAD5A], NFD: [0x1100, 0x116D, 0x11B1], NFKC: [0xAD5A], NFKD: [0x1100, 0x116D, 0x11B1] },
+{ source: [0xAD5B], NFC: [0xAD5B], NFD: [0x1100, 0x116D, 0x11B2], NFKC: [0xAD5B], NFKD: [0x1100, 0x116D, 0x11B2] },
+{ source: [0xAD5C], NFC: [0xAD5C], NFD: [0x1100, 0x116D, 0x11B3], NFKC: [0xAD5C], NFKD: [0x1100, 0x116D, 0x11B3] },
+{ source: [0xAD5D], NFC: [0xAD5D], NFD: [0x1100, 0x116D, 0x11B4], NFKC: [0xAD5D], NFKD: [0x1100, 0x116D, 0x11B4] },
+{ source: [0xAD5E], NFC: [0xAD5E], NFD: [0x1100, 0x116D, 0x11B5], NFKC: [0xAD5E], NFKD: [0x1100, 0x116D, 0x11B5] },
+{ source: [0xAD5F], NFC: [0xAD5F], NFD: [0x1100, 0x116D, 0x11B6], NFKC: [0xAD5F], NFKD: [0x1100, 0x116D, 0x11B6] },
+{ source: [0xAD60], NFC: [0xAD60], NFD: [0x1100, 0x116D, 0x11B7], NFKC: [0xAD60], NFKD: [0x1100, 0x116D, 0x11B7] },
+{ source: [0xAD61], NFC: [0xAD61], NFD: [0x1100, 0x116D, 0x11B8], NFKC: [0xAD61], NFKD: [0x1100, 0x116D, 0x11B8] },
+{ source: [0xAD62], NFC: [0xAD62], NFD: [0x1100, 0x116D, 0x11B9], NFKC: [0xAD62], NFKD: [0x1100, 0x116D, 0x11B9] },
+{ source: [0xAD63], NFC: [0xAD63], NFD: [0x1100, 0x116D, 0x11BA], NFKC: [0xAD63], NFKD: [0x1100, 0x116D, 0x11BA] },
+{ source: [0xAD64], NFC: [0xAD64], NFD: [0x1100, 0x116D, 0x11BB], NFKC: [0xAD64], NFKD: [0x1100, 0x116D, 0x11BB] },
+{ source: [0xAD65], NFC: [0xAD65], NFD: [0x1100, 0x116D, 0x11BC], NFKC: [0xAD65], NFKD: [0x1100, 0x116D, 0x11BC] },
+{ source: [0xAD66], NFC: [0xAD66], NFD: [0x1100, 0x116D, 0x11BD], NFKC: [0xAD66], NFKD: [0x1100, 0x116D, 0x11BD] },
+{ source: [0xAD67], NFC: [0xAD67], NFD: [0x1100, 0x116D, 0x11BE], NFKC: [0xAD67], NFKD: [0x1100, 0x116D, 0x11BE] },
+{ source: [0xAD68], NFC: [0xAD68], NFD: [0x1100, 0x116D, 0x11BF], NFKC: [0xAD68], NFKD: [0x1100, 0x116D, 0x11BF] },
+{ source: [0xAD69], NFC: [0xAD69], NFD: [0x1100, 0x116D, 0x11C0], NFKC: [0xAD69], NFKD: [0x1100, 0x116D, 0x11C0] },
+{ source: [0xAD6A], NFC: [0xAD6A], NFD: [0x1100, 0x116D, 0x11C1], NFKC: [0xAD6A], NFKD: [0x1100, 0x116D, 0x11C1] },
+{ source: [0xAD6B], NFC: [0xAD6B], NFD: [0x1100, 0x116D, 0x11C2], NFKC: [0xAD6B], NFKD: [0x1100, 0x116D, 0x11C2] },
+{ source: [0xAD6C], NFC: [0xAD6C], NFD: [0x1100, 0x116E], NFKC: [0xAD6C], NFKD: [0x1100, 0x116E] },
+{ source: [0xAD6D], NFC: [0xAD6D], NFD: [0x1100, 0x116E, 0x11A8], NFKC: [0xAD6D], NFKD: [0x1100, 0x116E, 0x11A8] },
+{ source: [0xAD6E], NFC: [0xAD6E], NFD: [0x1100, 0x116E, 0x11A9], NFKC: [0xAD6E], NFKD: [0x1100, 0x116E, 0x11A9] },
+{ source: [0xAD6F], NFC: [0xAD6F], NFD: [0x1100, 0x116E, 0x11AA], NFKC: [0xAD6F], NFKD: [0x1100, 0x116E, 0x11AA] },
+{ source: [0xAD70], NFC: [0xAD70], NFD: [0x1100, 0x116E, 0x11AB], NFKC: [0xAD70], NFKD: [0x1100, 0x116E, 0x11AB] },
+{ source: [0xAD71], NFC: [0xAD71], NFD: [0x1100, 0x116E, 0x11AC], NFKC: [0xAD71], NFKD: [0x1100, 0x116E, 0x11AC] },
+{ source: [0xAD72], NFC: [0xAD72], NFD: [0x1100, 0x116E, 0x11AD], NFKC: [0xAD72], NFKD: [0x1100, 0x116E, 0x11AD] },
+{ source: [0xAD73], NFC: [0xAD73], NFD: [0x1100, 0x116E, 0x11AE], NFKC: [0xAD73], NFKD: [0x1100, 0x116E, 0x11AE] },
+{ source: [0xAD74], NFC: [0xAD74], NFD: [0x1100, 0x116E, 0x11AF], NFKC: [0xAD74], NFKD: [0x1100, 0x116E, 0x11AF] },
+{ source: [0xAD75], NFC: [0xAD75], NFD: [0x1100, 0x116E, 0x11B0], NFKC: [0xAD75], NFKD: [0x1100, 0x116E, 0x11B0] },
+{ source: [0xAD76], NFC: [0xAD76], NFD: [0x1100, 0x116E, 0x11B1], NFKC: [0xAD76], NFKD: [0x1100, 0x116E, 0x11B1] },
+{ source: [0xAD77], NFC: [0xAD77], NFD: [0x1100, 0x116E, 0x11B2], NFKC: [0xAD77], NFKD: [0x1100, 0x116E, 0x11B2] },
+{ source: [0xAD78], NFC: [0xAD78], NFD: [0x1100, 0x116E, 0x11B3], NFKC: [0xAD78], NFKD: [0x1100, 0x116E, 0x11B3] },
+{ source: [0xAD79], NFC: [0xAD79], NFD: [0x1100, 0x116E, 0x11B4], NFKC: [0xAD79], NFKD: [0x1100, 0x116E, 0x11B4] },
+{ source: [0xAD7A], NFC: [0xAD7A], NFD: [0x1100, 0x116E, 0x11B5], NFKC: [0xAD7A], NFKD: [0x1100, 0x116E, 0x11B5] },
+{ source: [0xAD7B], NFC: [0xAD7B], NFD: [0x1100, 0x116E, 0x11B6], NFKC: [0xAD7B], NFKD: [0x1100, 0x116E, 0x11B6] },
+{ source: [0xAD7C], NFC: [0xAD7C], NFD: [0x1100, 0x116E, 0x11B7], NFKC: [0xAD7C], NFKD: [0x1100, 0x116E, 0x11B7] },
+{ source: [0xAD7D], NFC: [0xAD7D], NFD: [0x1100, 0x116E, 0x11B8], NFKC: [0xAD7D], NFKD: [0x1100, 0x116E, 0x11B8] },
+{ source: [0xAD7E], NFC: [0xAD7E], NFD: [0x1100, 0x116E, 0x11B9], NFKC: [0xAD7E], NFKD: [0x1100, 0x116E, 0x11B9] },
+{ source: [0xAD7F], NFC: [0xAD7F], NFD: [0x1100, 0x116E, 0x11BA], NFKC: [0xAD7F], NFKD: [0x1100, 0x116E, 0x11BA] },
+{ source: [0xAD80], NFC: [0xAD80], NFD: [0x1100, 0x116E, 0x11BB], NFKC: [0xAD80], NFKD: [0x1100, 0x116E, 0x11BB] },
+{ source: [0xAD81], NFC: [0xAD81], NFD: [0x1100, 0x116E, 0x11BC], NFKC: [0xAD81], NFKD: [0x1100, 0x116E, 0x11BC] },
+{ source: [0xAD82], NFC: [0xAD82], NFD: [0x1100, 0x116E, 0x11BD], NFKC: [0xAD82], NFKD: [0x1100, 0x116E, 0x11BD] },
+{ source: [0xAD83], NFC: [0xAD83], NFD: [0x1100, 0x116E, 0x11BE], NFKC: [0xAD83], NFKD: [0x1100, 0x116E, 0x11BE] },
+{ source: [0xAD84], NFC: [0xAD84], NFD: [0x1100, 0x116E, 0x11BF], NFKC: [0xAD84], NFKD: [0x1100, 0x116E, 0x11BF] },
+{ source: [0xAD85], NFC: [0xAD85], NFD: [0x1100, 0x116E, 0x11C0], NFKC: [0xAD85], NFKD: [0x1100, 0x116E, 0x11C0] },
+{ source: [0xAD86], NFC: [0xAD86], NFD: [0x1100, 0x116E, 0x11C1], NFKC: [0xAD86], NFKD: [0x1100, 0x116E, 0x11C1] },
+{ source: [0xAD87], NFC: [0xAD87], NFD: [0x1100, 0x116E, 0x11C2], NFKC: [0xAD87], NFKD: [0x1100, 0x116E, 0x11C2] },
+{ source: [0xAD88], NFC: [0xAD88], NFD: [0x1100, 0x116F], NFKC: [0xAD88], NFKD: [0x1100, 0x116F] },
+{ source: [0xAD89], NFC: [0xAD89], NFD: [0x1100, 0x116F, 0x11A8], NFKC: [0xAD89], NFKD: [0x1100, 0x116F, 0x11A8] },
+{ source: [0xAD8A], NFC: [0xAD8A], NFD: [0x1100, 0x116F, 0x11A9], NFKC: [0xAD8A], NFKD: [0x1100, 0x116F, 0x11A9] },
+{ source: [0xAD8B], NFC: [0xAD8B], NFD: [0x1100, 0x116F, 0x11AA], NFKC: [0xAD8B], NFKD: [0x1100, 0x116F, 0x11AA] },
+{ source: [0xAD8C], NFC: [0xAD8C], NFD: [0x1100, 0x116F, 0x11AB], NFKC: [0xAD8C], NFKD: [0x1100, 0x116F, 0x11AB] },
+{ source: [0xAD8D], NFC: [0xAD8D], NFD: [0x1100, 0x116F, 0x11AC], NFKC: [0xAD8D], NFKD: [0x1100, 0x116F, 0x11AC] },
+{ source: [0xAD8E], NFC: [0xAD8E], NFD: [0x1100, 0x116F, 0x11AD], NFKC: [0xAD8E], NFKD: [0x1100, 0x116F, 0x11AD] },
+{ source: [0xAD8F], NFC: [0xAD8F], NFD: [0x1100, 0x116F, 0x11AE], NFKC: [0xAD8F], NFKD: [0x1100, 0x116F, 0x11AE] },
+{ source: [0xAD90], NFC: [0xAD90], NFD: [0x1100, 0x116F, 0x11AF], NFKC: [0xAD90], NFKD: [0x1100, 0x116F, 0x11AF] },
+{ source: [0xAD91], NFC: [0xAD91], NFD: [0x1100, 0x116F, 0x11B0], NFKC: [0xAD91], NFKD: [0x1100, 0x116F, 0x11B0] },
+{ source: [0xAD92], NFC: [0xAD92], NFD: [0x1100, 0x116F, 0x11B1], NFKC: [0xAD92], NFKD: [0x1100, 0x116F, 0x11B1] },
+{ source: [0xAD93], NFC: [0xAD93], NFD: [0x1100, 0x116F, 0x11B2], NFKC: [0xAD93], NFKD: [0x1100, 0x116F, 0x11B2] },
+{ source: [0xAD94], NFC: [0xAD94], NFD: [0x1100, 0x116F, 0x11B3], NFKC: [0xAD94], NFKD: [0x1100, 0x116F, 0x11B3] },
+{ source: [0xAD95], NFC: [0xAD95], NFD: [0x1100, 0x116F, 0x11B4], NFKC: [0xAD95], NFKD: [0x1100, 0x116F, 0x11B4] },
+{ source: [0xAD96], NFC: [0xAD96], NFD: [0x1100, 0x116F, 0x11B5], NFKC: [0xAD96], NFKD: [0x1100, 0x116F, 0x11B5] },
+{ source: [0xAD97], NFC: [0xAD97], NFD: [0x1100, 0x116F, 0x11B6], NFKC: [0xAD97], NFKD: [0x1100, 0x116F, 0x11B6] },
+{ source: [0xAD98], NFC: [0xAD98], NFD: [0x1100, 0x116F, 0x11B7], NFKC: [0xAD98], NFKD: [0x1100, 0x116F, 0x11B7] },
+{ source: [0xAD99], NFC: [0xAD99], NFD: [0x1100, 0x116F, 0x11B8], NFKC: [0xAD99], NFKD: [0x1100, 0x116F, 0x11B8] },
+{ source: [0xAD9A], NFC: [0xAD9A], NFD: [0x1100, 0x116F, 0x11B9], NFKC: [0xAD9A], NFKD: [0x1100, 0x116F, 0x11B9] },
+{ source: [0xAD9B], NFC: [0xAD9B], NFD: [0x1100, 0x116F, 0x11BA], NFKC: [0xAD9B], NFKD: [0x1100, 0x116F, 0x11BA] },
+{ source: [0xAD9C], NFC: [0xAD9C], NFD: [0x1100, 0x116F, 0x11BB], NFKC: [0xAD9C], NFKD: [0x1100, 0x116F, 0x11BB] },
+{ source: [0xAD9D], NFC: [0xAD9D], NFD: [0x1100, 0x116F, 0x11BC], NFKC: [0xAD9D], NFKD: [0x1100, 0x116F, 0x11BC] },
+{ source: [0xAD9E], NFC: [0xAD9E], NFD: [0x1100, 0x116F, 0x11BD], NFKC: [0xAD9E], NFKD: [0x1100, 0x116F, 0x11BD] },
+{ source: [0xAD9F], NFC: [0xAD9F], NFD: [0x1100, 0x116F, 0x11BE], NFKC: [0xAD9F], NFKD: [0x1100, 0x116F, 0x11BE] },
+{ source: [0xADA0], NFC: [0xADA0], NFD: [0x1100, 0x116F, 0x11BF], NFKC: [0xADA0], NFKD: [0x1100, 0x116F, 0x11BF] },
+{ source: [0xADA1], NFC: [0xADA1], NFD: [0x1100, 0x116F, 0x11C0], NFKC: [0xADA1], NFKD: [0x1100, 0x116F, 0x11C0] },
+{ source: [0xADA2], NFC: [0xADA2], NFD: [0x1100, 0x116F, 0x11C1], NFKC: [0xADA2], NFKD: [0x1100, 0x116F, 0x11C1] },
+{ source: [0xADA3], NFC: [0xADA3], NFD: [0x1100, 0x116F, 0x11C2], NFKC: [0xADA3], NFKD: [0x1100, 0x116F, 0x11C2] },
+{ source: [0xADA4], NFC: [0xADA4], NFD: [0x1100, 0x1170], NFKC: [0xADA4], NFKD: [0x1100, 0x1170] },
+{ source: [0xADA5], NFC: [0xADA5], NFD: [0x1100, 0x1170, 0x11A8], NFKC: [0xADA5], NFKD: [0x1100, 0x1170, 0x11A8] },
+{ source: [0xADA6], NFC: [0xADA6], NFD: [0x1100, 0x1170, 0x11A9], NFKC: [0xADA6], NFKD: [0x1100, 0x1170, 0x11A9] },
+{ source: [0xADA7], NFC: [0xADA7], NFD: [0x1100, 0x1170, 0x11AA], NFKC: [0xADA7], NFKD: [0x1100, 0x1170, 0x11AA] },
+{ source: [0xADA8], NFC: [0xADA8], NFD: [0x1100, 0x1170, 0x11AB], NFKC: [0xADA8], NFKD: [0x1100, 0x1170, 0x11AB] },
+{ source: [0xADA9], NFC: [0xADA9], NFD: [0x1100, 0x1170, 0x11AC], NFKC: [0xADA9], NFKD: [0x1100, 0x1170, 0x11AC] },
+{ source: [0xADAA], NFC: [0xADAA], NFD: [0x1100, 0x1170, 0x11AD], NFKC: [0xADAA], NFKD: [0x1100, 0x1170, 0x11AD] },
+{ source: [0xADAB], NFC: [0xADAB], NFD: [0x1100, 0x1170, 0x11AE], NFKC: [0xADAB], NFKD: [0x1100, 0x1170, 0x11AE] },
+{ source: [0xADAC], NFC: [0xADAC], NFD: [0x1100, 0x1170, 0x11AF], NFKC: [0xADAC], NFKD: [0x1100, 0x1170, 0x11AF] },
+{ source: [0xADAD], NFC: [0xADAD], NFD: [0x1100, 0x1170, 0x11B0], NFKC: [0xADAD], NFKD: [0x1100, 0x1170, 0x11B0] },
+{ source: [0xADAE], NFC: [0xADAE], NFD: [0x1100, 0x1170, 0x11B1], NFKC: [0xADAE], NFKD: [0x1100, 0x1170, 0x11B1] },
+{ source: [0xADAF], NFC: [0xADAF], NFD: [0x1100, 0x1170, 0x11B2], NFKC: [0xADAF], NFKD: [0x1100, 0x1170, 0x11B2] },
+{ source: [0xADB0], NFC: [0xADB0], NFD: [0x1100, 0x1170, 0x11B3], NFKC: [0xADB0], NFKD: [0x1100, 0x1170, 0x11B3] },
+{ source: [0xADB1], NFC: [0xADB1], NFD: [0x1100, 0x1170, 0x11B4], NFKC: [0xADB1], NFKD: [0x1100, 0x1170, 0x11B4] },
+{ source: [0xADB2], NFC: [0xADB2], NFD: [0x1100, 0x1170, 0x11B5], NFKC: [0xADB2], NFKD: [0x1100, 0x1170, 0x11B5] },
+{ source: [0xADB3], NFC: [0xADB3], NFD: [0x1100, 0x1170, 0x11B6], NFKC: [0xADB3], NFKD: [0x1100, 0x1170, 0x11B6] },
+{ source: [0xADB4], NFC: [0xADB4], NFD: [0x1100, 0x1170, 0x11B7], NFKC: [0xADB4], NFKD: [0x1100, 0x1170, 0x11B7] },
+{ source: [0xADB5], NFC: [0xADB5], NFD: [0x1100, 0x1170, 0x11B8], NFKC: [0xADB5], NFKD: [0x1100, 0x1170, 0x11B8] },
+{ source: [0xADB6], NFC: [0xADB6], NFD: [0x1100, 0x1170, 0x11B9], NFKC: [0xADB6], NFKD: [0x1100, 0x1170, 0x11B9] },
+{ source: [0xADB7], NFC: [0xADB7], NFD: [0x1100, 0x1170, 0x11BA], NFKC: [0xADB7], NFKD: [0x1100, 0x1170, 0x11BA] },
+{ source: [0xADB8], NFC: [0xADB8], NFD: [0x1100, 0x1170, 0x11BB], NFKC: [0xADB8], NFKD: [0x1100, 0x1170, 0x11BB] },
+{ source: [0xADB9], NFC: [0xADB9], NFD: [0x1100, 0x1170, 0x11BC], NFKC: [0xADB9], NFKD: [0x1100, 0x1170, 0x11BC] },
+{ source: [0xADBA], NFC: [0xADBA], NFD: [0x1100, 0x1170, 0x11BD], NFKC: [0xADBA], NFKD: [0x1100, 0x1170, 0x11BD] },
+{ source: [0xADBB], NFC: [0xADBB], NFD: [0x1100, 0x1170, 0x11BE], NFKC: [0xADBB], NFKD: [0x1100, 0x1170, 0x11BE] },
+{ source: [0xADBC], NFC: [0xADBC], NFD: [0x1100, 0x1170, 0x11BF], NFKC: [0xADBC], NFKD: [0x1100, 0x1170, 0x11BF] },
+{ source: [0xADBD], NFC: [0xADBD], NFD: [0x1100, 0x1170, 0x11C0], NFKC: [0xADBD], NFKD: [0x1100, 0x1170, 0x11C0] },
+{ source: [0xADBE], NFC: [0xADBE], NFD: [0x1100, 0x1170, 0x11C1], NFKC: [0xADBE], NFKD: [0x1100, 0x1170, 0x11C1] },
+{ source: [0xADBF], NFC: [0xADBF], NFD: [0x1100, 0x1170, 0x11C2], NFKC: [0xADBF], NFKD: [0x1100, 0x1170, 0x11C2] },
+{ source: [0xADC0], NFC: [0xADC0], NFD: [0x1100, 0x1171], NFKC: [0xADC0], NFKD: [0x1100, 0x1171] },
+{ source: [0xADC1], NFC: [0xADC1], NFD: [0x1100, 0x1171, 0x11A8], NFKC: [0xADC1], NFKD: [0x1100, 0x1171, 0x11A8] },
+{ source: [0xADC2], NFC: [0xADC2], NFD: [0x1100, 0x1171, 0x11A9], NFKC: [0xADC2], NFKD: [0x1100, 0x1171, 0x11A9] },
+{ source: [0xADC3], NFC: [0xADC3], NFD: [0x1100, 0x1171, 0x11AA], NFKC: [0xADC3], NFKD: [0x1100, 0x1171, 0x11AA] },
+{ source: [0xADC4], NFC: [0xADC4], NFD: [0x1100, 0x1171, 0x11AB], NFKC: [0xADC4], NFKD: [0x1100, 0x1171, 0x11AB] },
+{ source: [0xADC5], NFC: [0xADC5], NFD: [0x1100, 0x1171, 0x11AC], NFKC: [0xADC5], NFKD: [0x1100, 0x1171, 0x11AC] },
+{ source: [0xADC6], NFC: [0xADC6], NFD: [0x1100, 0x1171, 0x11AD], NFKC: [0xADC6], NFKD: [0x1100, 0x1171, 0x11AD] },
+{ source: [0xADC7], NFC: [0xADC7], NFD: [0x1100, 0x1171, 0x11AE], NFKC: [0xADC7], NFKD: [0x1100, 0x1171, 0x11AE] },
+{ source: [0xADC8], NFC: [0xADC8], NFD: [0x1100, 0x1171, 0x11AF], NFKC: [0xADC8], NFKD: [0x1100, 0x1171, 0x11AF] },
+{ source: [0xADC9], NFC: [0xADC9], NFD: [0x1100, 0x1171, 0x11B0], NFKC: [0xADC9], NFKD: [0x1100, 0x1171, 0x11B0] },
+{ source: [0xADCA], NFC: [0xADCA], NFD: [0x1100, 0x1171, 0x11B1], NFKC: [0xADCA], NFKD: [0x1100, 0x1171, 0x11B1] },
+{ source: [0xADCB], NFC: [0xADCB], NFD: [0x1100, 0x1171, 0x11B2], NFKC: [0xADCB], NFKD: [0x1100, 0x1171, 0x11B2] },
+{ source: [0xADCC], NFC: [0xADCC], NFD: [0x1100, 0x1171, 0x11B3], NFKC: [0xADCC], NFKD: [0x1100, 0x1171, 0x11B3] },
+{ source: [0xADCD], NFC: [0xADCD], NFD: [0x1100, 0x1171, 0x11B4], NFKC: [0xADCD], NFKD: [0x1100, 0x1171, 0x11B4] },
+{ source: [0xADCE], NFC: [0xADCE], NFD: [0x1100, 0x1171, 0x11B5], NFKC: [0xADCE], NFKD: [0x1100, 0x1171, 0x11B5] },
+{ source: [0xADCF], NFC: [0xADCF], NFD: [0x1100, 0x1171, 0x11B6], NFKC: [0xADCF], NFKD: [0x1100, 0x1171, 0x11B6] },
+{ source: [0xADD0], NFC: [0xADD0], NFD: [0x1100, 0x1171, 0x11B7], NFKC: [0xADD0], NFKD: [0x1100, 0x1171, 0x11B7] },
+{ source: [0xADD1], NFC: [0xADD1], NFD: [0x1100, 0x1171, 0x11B8], NFKC: [0xADD1], NFKD: [0x1100, 0x1171, 0x11B8] },
+{ source: [0xADD2], NFC: [0xADD2], NFD: [0x1100, 0x1171, 0x11B9], NFKC: [0xADD2], NFKD: [0x1100, 0x1171, 0x11B9] },
+{ source: [0xADD3], NFC: [0xADD3], NFD: [0x1100, 0x1171, 0x11BA], NFKC: [0xADD3], NFKD: [0x1100, 0x1171, 0x11BA] },
+{ source: [0xADD4], NFC: [0xADD4], NFD: [0x1100, 0x1171, 0x11BB], NFKC: [0xADD4], NFKD: [0x1100, 0x1171, 0x11BB] },
+{ source: [0xADD5], NFC: [0xADD5], NFD: [0x1100, 0x1171, 0x11BC], NFKC: [0xADD5], NFKD: [0x1100, 0x1171, 0x11BC] },
+{ source: [0xADD6], NFC: [0xADD6], NFD: [0x1100, 0x1171, 0x11BD], NFKC: [0xADD6], NFKD: [0x1100, 0x1171, 0x11BD] },
+{ source: [0xADD7], NFC: [0xADD7], NFD: [0x1100, 0x1171, 0x11BE], NFKC: [0xADD7], NFKD: [0x1100, 0x1171, 0x11BE] },
+{ source: [0xADD8], NFC: [0xADD8], NFD: [0x1100, 0x1171, 0x11BF], NFKC: [0xADD8], NFKD: [0x1100, 0x1171, 0x11BF] },
+{ source: [0xADD9], NFC: [0xADD9], NFD: [0x1100, 0x1171, 0x11C0], NFKC: [0xADD9], NFKD: [0x1100, 0x1171, 0x11C0] },
+{ source: [0xADDA], NFC: [0xADDA], NFD: [0x1100, 0x1171, 0x11C1], NFKC: [0xADDA], NFKD: [0x1100, 0x1171, 0x11C1] },
+{ source: [0xADDB], NFC: [0xADDB], NFD: [0x1100, 0x1171, 0x11C2], NFKC: [0xADDB], NFKD: [0x1100, 0x1171, 0x11C2] },
+{ source: [0xADDC], NFC: [0xADDC], NFD: [0x1100, 0x1172], NFKC: [0xADDC], NFKD: [0x1100, 0x1172] },
+{ source: [0xADDD], NFC: [0xADDD], NFD: [0x1100, 0x1172, 0x11A8], NFKC: [0xADDD], NFKD: [0x1100, 0x1172, 0x11A8] },
+{ source: [0xADDE], NFC: [0xADDE], NFD: [0x1100, 0x1172, 0x11A9], NFKC: [0xADDE], NFKD: [0x1100, 0x1172, 0x11A9] },
+{ source: [0xADDF], NFC: [0xADDF], NFD: [0x1100, 0x1172, 0x11AA], NFKC: [0xADDF], NFKD: [0x1100, 0x1172, 0x11AA] },
+{ source: [0xADE0], NFC: [0xADE0], NFD: [0x1100, 0x1172, 0x11AB], NFKC: [0xADE0], NFKD: [0x1100, 0x1172, 0x11AB] },
+{ source: [0xADE1], NFC: [0xADE1], NFD: [0x1100, 0x1172, 0x11AC], NFKC: [0xADE1], NFKD: [0x1100, 0x1172, 0x11AC] },
+{ source: [0xADE2], NFC: [0xADE2], NFD: [0x1100, 0x1172, 0x11AD], NFKC: [0xADE2], NFKD: [0x1100, 0x1172, 0x11AD] },
+{ source: [0xADE3], NFC: [0xADE3], NFD: [0x1100, 0x1172, 0x11AE], NFKC: [0xADE3], NFKD: [0x1100, 0x1172, 0x11AE] },
+{ source: [0xADE4], NFC: [0xADE4], NFD: [0x1100, 0x1172, 0x11AF], NFKC: [0xADE4], NFKD: [0x1100, 0x1172, 0x11AF] },
+{ source: [0xADE5], NFC: [0xADE5], NFD: [0x1100, 0x1172, 0x11B0], NFKC: [0xADE5], NFKD: [0x1100, 0x1172, 0x11B0] },
+{ source: [0xADE6], NFC: [0xADE6], NFD: [0x1100, 0x1172, 0x11B1], NFKC: [0xADE6], NFKD: [0x1100, 0x1172, 0x11B1] },
+{ source: [0xADE7], NFC: [0xADE7], NFD: [0x1100, 0x1172, 0x11B2], NFKC: [0xADE7], NFKD: [0x1100, 0x1172, 0x11B2] },
+{ source: [0xADE8], NFC: [0xADE8], NFD: [0x1100, 0x1172, 0x11B3], NFKC: [0xADE8], NFKD: [0x1100, 0x1172, 0x11B3] },
+{ source: [0xADE9], NFC: [0xADE9], NFD: [0x1100, 0x1172, 0x11B4], NFKC: [0xADE9], NFKD: [0x1100, 0x1172, 0x11B4] },
+{ source: [0xADEA], NFC: [0xADEA], NFD: [0x1100, 0x1172, 0x11B5], NFKC: [0xADEA], NFKD: [0x1100, 0x1172, 0x11B5] },
+{ source: [0xADEB], NFC: [0xADEB], NFD: [0x1100, 0x1172, 0x11B6], NFKC: [0xADEB], NFKD: [0x1100, 0x1172, 0x11B6] },
+{ source: [0xADEC], NFC: [0xADEC], NFD: [0x1100, 0x1172, 0x11B7], NFKC: [0xADEC], NFKD: [0x1100, 0x1172, 0x11B7] },
+{ source: [0xADED], NFC: [0xADED], NFD: [0x1100, 0x1172, 0x11B8], NFKC: [0xADED], NFKD: [0x1100, 0x1172, 0x11B8] },
+{ source: [0xADEE], NFC: [0xADEE], NFD: [0x1100, 0x1172, 0x11B9], NFKC: [0xADEE], NFKD: [0x1100, 0x1172, 0x11B9] },
+{ source: [0xADEF], NFC: [0xADEF], NFD: [0x1100, 0x1172, 0x11BA], NFKC: [0xADEF], NFKD: [0x1100, 0x1172, 0x11BA] },
+{ source: [0xADF0], NFC: [0xADF0], NFD: [0x1100, 0x1172, 0x11BB], NFKC: [0xADF0], NFKD: [0x1100, 0x1172, 0x11BB] },
+{ source: [0xADF1], NFC: [0xADF1], NFD: [0x1100, 0x1172, 0x11BC], NFKC: [0xADF1], NFKD: [0x1100, 0x1172, 0x11BC] },
+{ source: [0xADF2], NFC: [0xADF2], NFD: [0x1100, 0x1172, 0x11BD], NFKC: [0xADF2], NFKD: [0x1100, 0x1172, 0x11BD] },
+{ source: [0xADF3], NFC: [0xADF3], NFD: [0x1100, 0x1172, 0x11BE], NFKC: [0xADF3], NFKD: [0x1100, 0x1172, 0x11BE] },
+{ source: [0xADF4], NFC: [0xADF4], NFD: [0x1100, 0x1172, 0x11BF], NFKC: [0xADF4], NFKD: [0x1100, 0x1172, 0x11BF] },
+{ source: [0xADF5], NFC: [0xADF5], NFD: [0x1100, 0x1172, 0x11C0], NFKC: [0xADF5], NFKD: [0x1100, 0x1172, 0x11C0] },
+{ source: [0xADF6], NFC: [0xADF6], NFD: [0x1100, 0x1172, 0x11C1], NFKC: [0xADF6], NFKD: [0x1100, 0x1172, 0x11C1] },
+{ source: [0xADF7], NFC: [0xADF7], NFD: [0x1100, 0x1172, 0x11C2], NFKC: [0xADF7], NFKD: [0x1100, 0x1172, 0x11C2] },
+{ source: [0xADF8], NFC: [0xADF8], NFD: [0x1100, 0x1173], NFKC: [0xADF8], NFKD: [0x1100, 0x1173] },
+{ source: [0xADF9], NFC: [0xADF9], NFD: [0x1100, 0x1173, 0x11A8], NFKC: [0xADF9], NFKD: [0x1100, 0x1173, 0x11A8] },
+{ source: [0xADFA], NFC: [0xADFA], NFD: [0x1100, 0x1173, 0x11A9], NFKC: [0xADFA], NFKD: [0x1100, 0x1173, 0x11A9] },
+{ source: [0xADFB], NFC: [0xADFB], NFD: [0x1100, 0x1173, 0x11AA], NFKC: [0xADFB], NFKD: [0x1100, 0x1173, 0x11AA] },
+{ source: [0xADFC], NFC: [0xADFC], NFD: [0x1100, 0x1173, 0x11AB], NFKC: [0xADFC], NFKD: [0x1100, 0x1173, 0x11AB] },
+{ source: [0xADFD], NFC: [0xADFD], NFD: [0x1100, 0x1173, 0x11AC], NFKC: [0xADFD], NFKD: [0x1100, 0x1173, 0x11AC] },
+{ source: [0xADFE], NFC: [0xADFE], NFD: [0x1100, 0x1173, 0x11AD], NFKC: [0xADFE], NFKD: [0x1100, 0x1173, 0x11AD] },
+{ source: [0xADFF], NFC: [0xADFF], NFD: [0x1100, 0x1173, 0x11AE], NFKC: [0xADFF], NFKD: [0x1100, 0x1173, 0x11AE] },
+{ source: [0xAE00], NFC: [0xAE00], NFD: [0x1100, 0x1173, 0x11AF], NFKC: [0xAE00], NFKD: [0x1100, 0x1173, 0x11AF] },
+{ source: [0xAE01], NFC: [0xAE01], NFD: [0x1100, 0x1173, 0x11B0], NFKC: [0xAE01], NFKD: [0x1100, 0x1173, 0x11B0] },
+{ source: [0xAE02], NFC: [0xAE02], NFD: [0x1100, 0x1173, 0x11B1], NFKC: [0xAE02], NFKD: [0x1100, 0x1173, 0x11B1] },
+{ source: [0xAE03], NFC: [0xAE03], NFD: [0x1100, 0x1173, 0x11B2], NFKC: [0xAE03], NFKD: [0x1100, 0x1173, 0x11B2] },
+{ source: [0xAE04], NFC: [0xAE04], NFD: [0x1100, 0x1173, 0x11B3], NFKC: [0xAE04], NFKD: [0x1100, 0x1173, 0x11B3] },
+{ source: [0xAE05], NFC: [0xAE05], NFD: [0x1100, 0x1173, 0x11B4], NFKC: [0xAE05], NFKD: [0x1100, 0x1173, 0x11B4] },
+{ source: [0xAE06], NFC: [0xAE06], NFD: [0x1100, 0x1173, 0x11B5], NFKC: [0xAE06], NFKD: [0x1100, 0x1173, 0x11B5] },
+{ source: [0xAE07], NFC: [0xAE07], NFD: [0x1100, 0x1173, 0x11B6], NFKC: [0xAE07], NFKD: [0x1100, 0x1173, 0x11B6] },
+{ source: [0xAE08], NFC: [0xAE08], NFD: [0x1100, 0x1173, 0x11B7], NFKC: [0xAE08], NFKD: [0x1100, 0x1173, 0x11B7] },
+{ source: [0xAE09], NFC: [0xAE09], NFD: [0x1100, 0x1173, 0x11B8], NFKC: [0xAE09], NFKD: [0x1100, 0x1173, 0x11B8] },
+{ source: [0xAE0A], NFC: [0xAE0A], NFD: [0x1100, 0x1173, 0x11B9], NFKC: [0xAE0A], NFKD: [0x1100, 0x1173, 0x11B9] },
+{ source: [0xAE0B], NFC: [0xAE0B], NFD: [0x1100, 0x1173, 0x11BA], NFKC: [0xAE0B], NFKD: [0x1100, 0x1173, 0x11BA] },
+{ source: [0xAE0C], NFC: [0xAE0C], NFD: [0x1100, 0x1173, 0x11BB], NFKC: [0xAE0C], NFKD: [0x1100, 0x1173, 0x11BB] },
+{ source: [0xAE0D], NFC: [0xAE0D], NFD: [0x1100, 0x1173, 0x11BC], NFKC: [0xAE0D], NFKD: [0x1100, 0x1173, 0x11BC] },
+{ source: [0xAE0E], NFC: [0xAE0E], NFD: [0x1100, 0x1173, 0x11BD], NFKC: [0xAE0E], NFKD: [0x1100, 0x1173, 0x11BD] },
+{ source: [0xAE0F], NFC: [0xAE0F], NFD: [0x1100, 0x1173, 0x11BE], NFKC: [0xAE0F], NFKD: [0x1100, 0x1173, 0x11BE] },
+{ source: [0xAE10], NFC: [0xAE10], NFD: [0x1100, 0x1173, 0x11BF], NFKC: [0xAE10], NFKD: [0x1100, 0x1173, 0x11BF] },
+{ source: [0xAE11], NFC: [0xAE11], NFD: [0x1100, 0x1173, 0x11C0], NFKC: [0xAE11], NFKD: [0x1100, 0x1173, 0x11C0] },
+{ source: [0xAE12], NFC: [0xAE12], NFD: [0x1100, 0x1173, 0x11C1], NFKC: [0xAE12], NFKD: [0x1100, 0x1173, 0x11C1] },
+{ source: [0xAE13], NFC: [0xAE13], NFD: [0x1100, 0x1173, 0x11C2], NFKC: [0xAE13], NFKD: [0x1100, 0x1173, 0x11C2] },
+{ source: [0xAE14], NFC: [0xAE14], NFD: [0x1100, 0x1174], NFKC: [0xAE14], NFKD: [0x1100, 0x1174] },
+{ source: [0xAE15], NFC: [0xAE15], NFD: [0x1100, 0x1174, 0x11A8], NFKC: [0xAE15], NFKD: [0x1100, 0x1174, 0x11A8] },
+{ source: [0xAE16], NFC: [0xAE16], NFD: [0x1100, 0x1174, 0x11A9], NFKC: [0xAE16], NFKD: [0x1100, 0x1174, 0x11A9] },
+{ source: [0xAE17], NFC: [0xAE17], NFD: [0x1100, 0x1174, 0x11AA], NFKC: [0xAE17], NFKD: [0x1100, 0x1174, 0x11AA] },
+{ source: [0xAE18], NFC: [0xAE18], NFD: [0x1100, 0x1174, 0x11AB], NFKC: [0xAE18], NFKD: [0x1100, 0x1174, 0x11AB] },
+{ source: [0xAE19], NFC: [0xAE19], NFD: [0x1100, 0x1174, 0x11AC], NFKC: [0xAE19], NFKD: [0x1100, 0x1174, 0x11AC] },
+{ source: [0xAE1A], NFC: [0xAE1A], NFD: [0x1100, 0x1174, 0x11AD], NFKC: [0xAE1A], NFKD: [0x1100, 0x1174, 0x11AD] },
+{ source: [0xAE1B], NFC: [0xAE1B], NFD: [0x1100, 0x1174, 0x11AE], NFKC: [0xAE1B], NFKD: [0x1100, 0x1174, 0x11AE] },
+{ source: [0xAE1C], NFC: [0xAE1C], NFD: [0x1100, 0x1174, 0x11AF], NFKC: [0xAE1C], NFKD: [0x1100, 0x1174, 0x11AF] },
+{ source: [0xAE1D], NFC: [0xAE1D], NFD: [0x1100, 0x1174, 0x11B0], NFKC: [0xAE1D], NFKD: [0x1100, 0x1174, 0x11B0] },
+{ source: [0xAE1E], NFC: [0xAE1E], NFD: [0x1100, 0x1174, 0x11B1], NFKC: [0xAE1E], NFKD: [0x1100, 0x1174, 0x11B1] },
+{ source: [0xAE1F], NFC: [0xAE1F], NFD: [0x1100, 0x1174, 0x11B2], NFKC: [0xAE1F], NFKD: [0x1100, 0x1174, 0x11B2] },
+{ source: [0xAE20], NFC: [0xAE20], NFD: [0x1100, 0x1174, 0x11B3], NFKC: [0xAE20], NFKD: [0x1100, 0x1174, 0x11B3] },
+{ source: [0xAE21], NFC: [0xAE21], NFD: [0x1100, 0x1174, 0x11B4], NFKC: [0xAE21], NFKD: [0x1100, 0x1174, 0x11B4] },
+{ source: [0xAE22], NFC: [0xAE22], NFD: [0x1100, 0x1174, 0x11B5], NFKC: [0xAE22], NFKD: [0x1100, 0x1174, 0x11B5] },
+{ source: [0xAE23], NFC: [0xAE23], NFD: [0x1100, 0x1174, 0x11B6], NFKC: [0xAE23], NFKD: [0x1100, 0x1174, 0x11B6] },
+{ source: [0xAE24], NFC: [0xAE24], NFD: [0x1100, 0x1174, 0x11B7], NFKC: [0xAE24], NFKD: [0x1100, 0x1174, 0x11B7] },
+{ source: [0xAE25], NFC: [0xAE25], NFD: [0x1100, 0x1174, 0x11B8], NFKC: [0xAE25], NFKD: [0x1100, 0x1174, 0x11B8] },
+{ source: [0xAE26], NFC: [0xAE26], NFD: [0x1100, 0x1174, 0x11B9], NFKC: [0xAE26], NFKD: [0x1100, 0x1174, 0x11B9] },
+{ source: [0xAE27], NFC: [0xAE27], NFD: [0x1100, 0x1174, 0x11BA], NFKC: [0xAE27], NFKD: [0x1100, 0x1174, 0x11BA] },
+{ source: [0xAE28], NFC: [0xAE28], NFD: [0x1100, 0x1174, 0x11BB], NFKC: [0xAE28], NFKD: [0x1100, 0x1174, 0x11BB] },
+{ source: [0xAE29], NFC: [0xAE29], NFD: [0x1100, 0x1174, 0x11BC], NFKC: [0xAE29], NFKD: [0x1100, 0x1174, 0x11BC] },
+{ source: [0xAE2A], NFC: [0xAE2A], NFD: [0x1100, 0x1174, 0x11BD], NFKC: [0xAE2A], NFKD: [0x1100, 0x1174, 0x11BD] },
+{ source: [0xAE2B], NFC: [0xAE2B], NFD: [0x1100, 0x1174, 0x11BE], NFKC: [0xAE2B], NFKD: [0x1100, 0x1174, 0x11BE] },
+{ source: [0xAE2C], NFC: [0xAE2C], NFD: [0x1100, 0x1174, 0x11BF], NFKC: [0xAE2C], NFKD: [0x1100, 0x1174, 0x11BF] },
+{ source: [0xAE2D], NFC: [0xAE2D], NFD: [0x1100, 0x1174, 0x11C0], NFKC: [0xAE2D], NFKD: [0x1100, 0x1174, 0x11C0] },
+{ source: [0xAE2E], NFC: [0xAE2E], NFD: [0x1100, 0x1174, 0x11C1], NFKC: [0xAE2E], NFKD: [0x1100, 0x1174, 0x11C1] },
+{ source: [0xAE2F], NFC: [0xAE2F], NFD: [0x1100, 0x1174, 0x11C2], NFKC: [0xAE2F], NFKD: [0x1100, 0x1174, 0x11C2] },
+{ source: [0xAE30], NFC: [0xAE30], NFD: [0x1100, 0x1175], NFKC: [0xAE30], NFKD: [0x1100, 0x1175] },
+{ source: [0xAE31], NFC: [0xAE31], NFD: [0x1100, 0x1175, 0x11A8], NFKC: [0xAE31], NFKD: [0x1100, 0x1175, 0x11A8] },
+{ source: [0xAE32], NFC: [0xAE32], NFD: [0x1100, 0x1175, 0x11A9], NFKC: [0xAE32], NFKD: [0x1100, 0x1175, 0x11A9] },
+{ source: [0xAE33], NFC: [0xAE33], NFD: [0x1100, 0x1175, 0x11AA], NFKC: [0xAE33], NFKD: [0x1100, 0x1175, 0x11AA] },
+{ source: [0xAE34], NFC: [0xAE34], NFD: [0x1100, 0x1175, 0x11AB], NFKC: [0xAE34], NFKD: [0x1100, 0x1175, 0x11AB] },
+{ source: [0xAE35], NFC: [0xAE35], NFD: [0x1100, 0x1175, 0x11AC], NFKC: [0xAE35], NFKD: [0x1100, 0x1175, 0x11AC] },
+{ source: [0xAE36], NFC: [0xAE36], NFD: [0x1100, 0x1175, 0x11AD], NFKC: [0xAE36], NFKD: [0x1100, 0x1175, 0x11AD] },
+{ source: [0xAE37], NFC: [0xAE37], NFD: [0x1100, 0x1175, 0x11AE], NFKC: [0xAE37], NFKD: [0x1100, 0x1175, 0x11AE] },
+{ source: [0xAE38], NFC: [0xAE38], NFD: [0x1100, 0x1175, 0x11AF], NFKC: [0xAE38], NFKD: [0x1100, 0x1175, 0x11AF] },
+{ source: [0xAE39], NFC: [0xAE39], NFD: [0x1100, 0x1175, 0x11B0], NFKC: [0xAE39], NFKD: [0x1100, 0x1175, 0x11B0] },
+{ source: [0xAE3A], NFC: [0xAE3A], NFD: [0x1100, 0x1175, 0x11B1], NFKC: [0xAE3A], NFKD: [0x1100, 0x1175, 0x11B1] },
+{ source: [0xAE3B], NFC: [0xAE3B], NFD: [0x1100, 0x1175, 0x11B2], NFKC: [0xAE3B], NFKD: [0x1100, 0x1175, 0x11B2] },
+{ source: [0xAE3C], NFC: [0xAE3C], NFD: [0x1100, 0x1175, 0x11B3], NFKC: [0xAE3C], NFKD: [0x1100, 0x1175, 0x11B3] },
+{ source: [0xAE3D], NFC: [0xAE3D], NFD: [0x1100, 0x1175, 0x11B4], NFKC: [0xAE3D], NFKD: [0x1100, 0x1175, 0x11B4] },
+{ source: [0xAE3E], NFC: [0xAE3E], NFD: [0x1100, 0x1175, 0x11B5], NFKC: [0xAE3E], NFKD: [0x1100, 0x1175, 0x11B5] },
+{ source: [0xAE3F], NFC: [0xAE3F], NFD: [0x1100, 0x1175, 0x11B6], NFKC: [0xAE3F], NFKD: [0x1100, 0x1175, 0x11B6] },
+{ source: [0xAE40], NFC: [0xAE40], NFD: [0x1100, 0x1175, 0x11B7], NFKC: [0xAE40], NFKD: [0x1100, 0x1175, 0x11B7] },
+{ source: [0xAE41], NFC: [0xAE41], NFD: [0x1100, 0x1175, 0x11B8], NFKC: [0xAE41], NFKD: [0x1100, 0x1175, 0x11B8] },
+{ source: [0xAE42], NFC: [0xAE42], NFD: [0x1100, 0x1175, 0x11B9], NFKC: [0xAE42], NFKD: [0x1100, 0x1175, 0x11B9] },
+{ source: [0xAE43], NFC: [0xAE43], NFD: [0x1100, 0x1175, 0x11BA], NFKC: [0xAE43], NFKD: [0x1100, 0x1175, 0x11BA] },
+{ source: [0xAE44], NFC: [0xAE44], NFD: [0x1100, 0x1175, 0x11BB], NFKC: [0xAE44], NFKD: [0x1100, 0x1175, 0x11BB] },
+{ source: [0xAE45], NFC: [0xAE45], NFD: [0x1100, 0x1175, 0x11BC], NFKC: [0xAE45], NFKD: [0x1100, 0x1175, 0x11BC] },
+{ source: [0xAE46], NFC: [0xAE46], NFD: [0x1100, 0x1175, 0x11BD], NFKC: [0xAE46], NFKD: [0x1100, 0x1175, 0x11BD] },
+{ source: [0xAE47], NFC: [0xAE47], NFD: [0x1100, 0x1175, 0x11BE], NFKC: [0xAE47], NFKD: [0x1100, 0x1175, 0x11BE] },
+{ source: [0xAE48], NFC: [0xAE48], NFD: [0x1100, 0x1175, 0x11BF], NFKC: [0xAE48], NFKD: [0x1100, 0x1175, 0x11BF] },
+{ source: [0xAE49], NFC: [0xAE49], NFD: [0x1100, 0x1175, 0x11C0], NFKC: [0xAE49], NFKD: [0x1100, 0x1175, 0x11C0] },
+{ source: [0xAE4A], NFC: [0xAE4A], NFD: [0x1100, 0x1175, 0x11C1], NFKC: [0xAE4A], NFKD: [0x1100, 0x1175, 0x11C1] },
+{ source: [0xAE4B], NFC: [0xAE4B], NFD: [0x1100, 0x1175, 0x11C2], NFKC: [0xAE4B], NFKD: [0x1100, 0x1175, 0x11C2] },
+{ source: [0xAE4C], NFC: [0xAE4C], NFD: [0x1101, 0x1161], NFKC: [0xAE4C], NFKD: [0x1101, 0x1161] },
+{ source: [0xAE4D], NFC: [0xAE4D], NFD: [0x1101, 0x1161, 0x11A8], NFKC: [0xAE4D], NFKD: [0x1101, 0x1161, 0x11A8] },
+{ source: [0xAE4E], NFC: [0xAE4E], NFD: [0x1101, 0x1161, 0x11A9], NFKC: [0xAE4E], NFKD: [0x1101, 0x1161, 0x11A9] },
+{ source: [0xAE4F], NFC: [0xAE4F], NFD: [0x1101, 0x1161, 0x11AA], NFKC: [0xAE4F], NFKD: [0x1101, 0x1161, 0x11AA] },
+{ source: [0xAE50], NFC: [0xAE50], NFD: [0x1101, 0x1161, 0x11AB], NFKC: [0xAE50], NFKD: [0x1101, 0x1161, 0x11AB] },
+{ source: [0xAE51], NFC: [0xAE51], NFD: [0x1101, 0x1161, 0x11AC], NFKC: [0xAE51], NFKD: [0x1101, 0x1161, 0x11AC] },
+{ source: [0xAE52], NFC: [0xAE52], NFD: [0x1101, 0x1161, 0x11AD], NFKC: [0xAE52], NFKD: [0x1101, 0x1161, 0x11AD] },
+{ source: [0xAE53], NFC: [0xAE53], NFD: [0x1101, 0x1161, 0x11AE], NFKC: [0xAE53], NFKD: [0x1101, 0x1161, 0x11AE] },
+{ source: [0xAE54], NFC: [0xAE54], NFD: [0x1101, 0x1161, 0x11AF], NFKC: [0xAE54], NFKD: [0x1101, 0x1161, 0x11AF] },
+{ source: [0xAE55], NFC: [0xAE55], NFD: [0x1101, 0x1161, 0x11B0], NFKC: [0xAE55], NFKD: [0x1101, 0x1161, 0x11B0] },
+{ source: [0xAE56], NFC: [0xAE56], NFD: [0x1101, 0x1161, 0x11B1], NFKC: [0xAE56], NFKD: [0x1101, 0x1161, 0x11B1] },
+{ source: [0xAE57], NFC: [0xAE57], NFD: [0x1101, 0x1161, 0x11B2], NFKC: [0xAE57], NFKD: [0x1101, 0x1161, 0x11B2] },
+{ source: [0xAE58], NFC: [0xAE58], NFD: [0x1101, 0x1161, 0x11B3], NFKC: [0xAE58], NFKD: [0x1101, 0x1161, 0x11B3] },
+{ source: [0xAE59], NFC: [0xAE59], NFD: [0x1101, 0x1161, 0x11B4], NFKC: [0xAE59], NFKD: [0x1101, 0x1161, 0x11B4] },
+{ source: [0xAE5A], NFC: [0xAE5A], NFD: [0x1101, 0x1161, 0x11B5], NFKC: [0xAE5A], NFKD: [0x1101, 0x1161, 0x11B5] },
+{ source: [0xAE5B], NFC: [0xAE5B], NFD: [0x1101, 0x1161, 0x11B6], NFKC: [0xAE5B], NFKD: [0x1101, 0x1161, 0x11B6] },
+{ source: [0xAE5C], NFC: [0xAE5C], NFD: [0x1101, 0x1161, 0x11B7], NFKC: [0xAE5C], NFKD: [0x1101, 0x1161, 0x11B7] },
+{ source: [0xAE5D], NFC: [0xAE5D], NFD: [0x1101, 0x1161, 0x11B8], NFKC: [0xAE5D], NFKD: [0x1101, 0x1161, 0x11B8] },
+{ source: [0xAE5E], NFC: [0xAE5E], NFD: [0x1101, 0x1161, 0x11B9], NFKC: [0xAE5E], NFKD: [0x1101, 0x1161, 0x11B9] },
+{ source: [0xAE5F], NFC: [0xAE5F], NFD: [0x1101, 0x1161, 0x11BA], NFKC: [0xAE5F], NFKD: [0x1101, 0x1161, 0x11BA] },
+{ source: [0xAE60], NFC: [0xAE60], NFD: [0x1101, 0x1161, 0x11BB], NFKC: [0xAE60], NFKD: [0x1101, 0x1161, 0x11BB] },
+{ source: [0xAE61], NFC: [0xAE61], NFD: [0x1101, 0x1161, 0x11BC], NFKC: [0xAE61], NFKD: [0x1101, 0x1161, 0x11BC] },
+{ source: [0xAE62], NFC: [0xAE62], NFD: [0x1101, 0x1161, 0x11BD], NFKC: [0xAE62], NFKD: [0x1101, 0x1161, 0x11BD] },
+{ source: [0xAE63], NFC: [0xAE63], NFD: [0x1101, 0x1161, 0x11BE], NFKC: [0xAE63], NFKD: [0x1101, 0x1161, 0x11BE] },
+{ source: [0xAE64], NFC: [0xAE64], NFD: [0x1101, 0x1161, 0x11BF], NFKC: [0xAE64], NFKD: [0x1101, 0x1161, 0x11BF] },
+{ source: [0xAE65], NFC: [0xAE65], NFD: [0x1101, 0x1161, 0x11C0], NFKC: [0xAE65], NFKD: [0x1101, 0x1161, 0x11C0] },
+{ source: [0xAE66], NFC: [0xAE66], NFD: [0x1101, 0x1161, 0x11C1], NFKC: [0xAE66], NFKD: [0x1101, 0x1161, 0x11C1] },
+{ source: [0xAE67], NFC: [0xAE67], NFD: [0x1101, 0x1161, 0x11C2], NFKC: [0xAE67], NFKD: [0x1101, 0x1161, 0x11C2] },
+{ source: [0xAE68], NFC: [0xAE68], NFD: [0x1101, 0x1162], NFKC: [0xAE68], NFKD: [0x1101, 0x1162] },
+{ source: [0xAE69], NFC: [0xAE69], NFD: [0x1101, 0x1162, 0x11A8], NFKC: [0xAE69], NFKD: [0x1101, 0x1162, 0x11A8] },
+{ source: [0xAE6A], NFC: [0xAE6A], NFD: [0x1101, 0x1162, 0x11A9], NFKC: [0xAE6A], NFKD: [0x1101, 0x1162, 0x11A9] },
+{ source: [0xAE6B], NFC: [0xAE6B], NFD: [0x1101, 0x1162, 0x11AA], NFKC: [0xAE6B], NFKD: [0x1101, 0x1162, 0x11AA] },
+{ source: [0xAE6C], NFC: [0xAE6C], NFD: [0x1101, 0x1162, 0x11AB], NFKC: [0xAE6C], NFKD: [0x1101, 0x1162, 0x11AB] },
+{ source: [0xAE6D], NFC: [0xAE6D], NFD: [0x1101, 0x1162, 0x11AC], NFKC: [0xAE6D], NFKD: [0x1101, 0x1162, 0x11AC] },
+{ source: [0xAE6E], NFC: [0xAE6E], NFD: [0x1101, 0x1162, 0x11AD], NFKC: [0xAE6E], NFKD: [0x1101, 0x1162, 0x11AD] },
+{ source: [0xAE6F], NFC: [0xAE6F], NFD: [0x1101, 0x1162, 0x11AE], NFKC: [0xAE6F], NFKD: [0x1101, 0x1162, 0x11AE] },
+{ source: [0xAE70], NFC: [0xAE70], NFD: [0x1101, 0x1162, 0x11AF], NFKC: [0xAE70], NFKD: [0x1101, 0x1162, 0x11AF] },
+{ source: [0xAE71], NFC: [0xAE71], NFD: [0x1101, 0x1162, 0x11B0], NFKC: [0xAE71], NFKD: [0x1101, 0x1162, 0x11B0] },
+{ source: [0xAE72], NFC: [0xAE72], NFD: [0x1101, 0x1162, 0x11B1], NFKC: [0xAE72], NFKD: [0x1101, 0x1162, 0x11B1] },
+{ source: [0xAE73], NFC: [0xAE73], NFD: [0x1101, 0x1162, 0x11B2], NFKC: [0xAE73], NFKD: [0x1101, 0x1162, 0x11B2] },
+{ source: [0xAE74], NFC: [0xAE74], NFD: [0x1101, 0x1162, 0x11B3], NFKC: [0xAE74], NFKD: [0x1101, 0x1162, 0x11B3] },
+{ source: [0xAE75], NFC: [0xAE75], NFD: [0x1101, 0x1162, 0x11B4], NFKC: [0xAE75], NFKD: [0x1101, 0x1162, 0x11B4] },
+{ source: [0xAE76], NFC: [0xAE76], NFD: [0x1101, 0x1162, 0x11B5], NFKC: [0xAE76], NFKD: [0x1101, 0x1162, 0x11B5] },
+{ source: [0xAE77], NFC: [0xAE77], NFD: [0x1101, 0x1162, 0x11B6], NFKC: [0xAE77], NFKD: [0x1101, 0x1162, 0x11B6] },
+{ source: [0xAE78], NFC: [0xAE78], NFD: [0x1101, 0x1162, 0x11B7], NFKC: [0xAE78], NFKD: [0x1101, 0x1162, 0x11B7] },
+{ source: [0xAE79], NFC: [0xAE79], NFD: [0x1101, 0x1162, 0x11B8], NFKC: [0xAE79], NFKD: [0x1101, 0x1162, 0x11B8] },
+{ source: [0xAE7A], NFC: [0xAE7A], NFD: [0x1101, 0x1162, 0x11B9], NFKC: [0xAE7A], NFKD: [0x1101, 0x1162, 0x11B9] },
+{ source: [0xAE7B], NFC: [0xAE7B], NFD: [0x1101, 0x1162, 0x11BA], NFKC: [0xAE7B], NFKD: [0x1101, 0x1162, 0x11BA] },
+{ source: [0xAE7C], NFC: [0xAE7C], NFD: [0x1101, 0x1162, 0x11BB], NFKC: [0xAE7C], NFKD: [0x1101, 0x1162, 0x11BB] },
+{ source: [0xAE7D], NFC: [0xAE7D], NFD: [0x1101, 0x1162, 0x11BC], NFKC: [0xAE7D], NFKD: [0x1101, 0x1162, 0x11BC] },
+{ source: [0xAE7E], NFC: [0xAE7E], NFD: [0x1101, 0x1162, 0x11BD], NFKC: [0xAE7E], NFKD: [0x1101, 0x1162, 0x11BD] },
+{ source: [0xAE7F], NFC: [0xAE7F], NFD: [0x1101, 0x1162, 0x11BE], NFKC: [0xAE7F], NFKD: [0x1101, 0x1162, 0x11BE] },
+{ source: [0xAE80], NFC: [0xAE80], NFD: [0x1101, 0x1162, 0x11BF], NFKC: [0xAE80], NFKD: [0x1101, 0x1162, 0x11BF] },
+{ source: [0xAE81], NFC: [0xAE81], NFD: [0x1101, 0x1162, 0x11C0], NFKC: [0xAE81], NFKD: [0x1101, 0x1162, 0x11C0] },
+{ source: [0xAE82], NFC: [0xAE82], NFD: [0x1101, 0x1162, 0x11C1], NFKC: [0xAE82], NFKD: [0x1101, 0x1162, 0x11C1] },
+{ source: [0xAE83], NFC: [0xAE83], NFD: [0x1101, 0x1162, 0x11C2], NFKC: [0xAE83], NFKD: [0x1101, 0x1162, 0x11C2] },
+{ source: [0xAE84], NFC: [0xAE84], NFD: [0x1101, 0x1163], NFKC: [0xAE84], NFKD: [0x1101, 0x1163] },
+{ source: [0xAE85], NFC: [0xAE85], NFD: [0x1101, 0x1163, 0x11A8], NFKC: [0xAE85], NFKD: [0x1101, 0x1163, 0x11A8] },
+{ source: [0xAE86], NFC: [0xAE86], NFD: [0x1101, 0x1163, 0x11A9], NFKC: [0xAE86], NFKD: [0x1101, 0x1163, 0x11A9] },
+{ source: [0xAE87], NFC: [0xAE87], NFD: [0x1101, 0x1163, 0x11AA], NFKC: [0xAE87], NFKD: [0x1101, 0x1163, 0x11AA] },
+{ source: [0xAE88], NFC: [0xAE88], NFD: [0x1101, 0x1163, 0x11AB], NFKC: [0xAE88], NFKD: [0x1101, 0x1163, 0x11AB] },
+{ source: [0xAE89], NFC: [0xAE89], NFD: [0x1101, 0x1163, 0x11AC], NFKC: [0xAE89], NFKD: [0x1101, 0x1163, 0x11AC] },
+{ source: [0xAE8A], NFC: [0xAE8A], NFD: [0x1101, 0x1163, 0x11AD], NFKC: [0xAE8A], NFKD: [0x1101, 0x1163, 0x11AD] },
+{ source: [0xAE8B], NFC: [0xAE8B], NFD: [0x1101, 0x1163, 0x11AE], NFKC: [0xAE8B], NFKD: [0x1101, 0x1163, 0x11AE] },
+{ source: [0xAE8C], NFC: [0xAE8C], NFD: [0x1101, 0x1163, 0x11AF], NFKC: [0xAE8C], NFKD: [0x1101, 0x1163, 0x11AF] },
+{ source: [0xAE8D], NFC: [0xAE8D], NFD: [0x1101, 0x1163, 0x11B0], NFKC: [0xAE8D], NFKD: [0x1101, 0x1163, 0x11B0] },
+{ source: [0xAE8E], NFC: [0xAE8E], NFD: [0x1101, 0x1163, 0x11B1], NFKC: [0xAE8E], NFKD: [0x1101, 0x1163, 0x11B1] },
+{ source: [0xAE8F], NFC: [0xAE8F], NFD: [0x1101, 0x1163, 0x11B2], NFKC: [0xAE8F], NFKD: [0x1101, 0x1163, 0x11B2] },
+{ source: [0xAE90], NFC: [0xAE90], NFD: [0x1101, 0x1163, 0x11B3], NFKC: [0xAE90], NFKD: [0x1101, 0x1163, 0x11B3] },
+{ source: [0xAE91], NFC: [0xAE91], NFD: [0x1101, 0x1163, 0x11B4], NFKC: [0xAE91], NFKD: [0x1101, 0x1163, 0x11B4] },
+{ source: [0xAE92], NFC: [0xAE92], NFD: [0x1101, 0x1163, 0x11B5], NFKC: [0xAE92], NFKD: [0x1101, 0x1163, 0x11B5] },
+{ source: [0xAE93], NFC: [0xAE93], NFD: [0x1101, 0x1163, 0x11B6], NFKC: [0xAE93], NFKD: [0x1101, 0x1163, 0x11B6] },
+{ source: [0xAE94], NFC: [0xAE94], NFD: [0x1101, 0x1163, 0x11B7], NFKC: [0xAE94], NFKD: [0x1101, 0x1163, 0x11B7] },
+{ source: [0xAE95], NFC: [0xAE95], NFD: [0x1101, 0x1163, 0x11B8], NFKC: [0xAE95], NFKD: [0x1101, 0x1163, 0x11B8] },
+{ source: [0xAE96], NFC: [0xAE96], NFD: [0x1101, 0x1163, 0x11B9], NFKC: [0xAE96], NFKD: [0x1101, 0x1163, 0x11B9] },
+{ source: [0xAE97], NFC: [0xAE97], NFD: [0x1101, 0x1163, 0x11BA], NFKC: [0xAE97], NFKD: [0x1101, 0x1163, 0x11BA] },
+{ source: [0xAE98], NFC: [0xAE98], NFD: [0x1101, 0x1163, 0x11BB], NFKC: [0xAE98], NFKD: [0x1101, 0x1163, 0x11BB] },
+{ source: [0xAE99], NFC: [0xAE99], NFD: [0x1101, 0x1163, 0x11BC], NFKC: [0xAE99], NFKD: [0x1101, 0x1163, 0x11BC] },
+{ source: [0xAE9A], NFC: [0xAE9A], NFD: [0x1101, 0x1163, 0x11BD], NFKC: [0xAE9A], NFKD: [0x1101, 0x1163, 0x11BD] },
+{ source: [0xAE9B], NFC: [0xAE9B], NFD: [0x1101, 0x1163, 0x11BE], NFKC: [0xAE9B], NFKD: [0x1101, 0x1163, 0x11BE] },
+{ source: [0xAE9C], NFC: [0xAE9C], NFD: [0x1101, 0x1163, 0x11BF], NFKC: [0xAE9C], NFKD: [0x1101, 0x1163, 0x11BF] },
+{ source: [0xAE9D], NFC: [0xAE9D], NFD: [0x1101, 0x1163, 0x11C0], NFKC: [0xAE9D], NFKD: [0x1101, 0x1163, 0x11C0] },
+{ source: [0xAE9E], NFC: [0xAE9E], NFD: [0x1101, 0x1163, 0x11C1], NFKC: [0xAE9E], NFKD: [0x1101, 0x1163, 0x11C1] },
+{ source: [0xAE9F], NFC: [0xAE9F], NFD: [0x1101, 0x1163, 0x11C2], NFKC: [0xAE9F], NFKD: [0x1101, 0x1163, 0x11C2] },
+{ source: [0xAEA0], NFC: [0xAEA0], NFD: [0x1101, 0x1164], NFKC: [0xAEA0], NFKD: [0x1101, 0x1164] },
+{ source: [0xAEA1], NFC: [0xAEA1], NFD: [0x1101, 0x1164, 0x11A8], NFKC: [0xAEA1], NFKD: [0x1101, 0x1164, 0x11A8] },
+{ source: [0xAEA2], NFC: [0xAEA2], NFD: [0x1101, 0x1164, 0x11A9], NFKC: [0xAEA2], NFKD: [0x1101, 0x1164, 0x11A9] },
+{ source: [0xAEA3], NFC: [0xAEA3], NFD: [0x1101, 0x1164, 0x11AA], NFKC: [0xAEA3], NFKD: [0x1101, 0x1164, 0x11AA] },
+{ source: [0xAEA4], NFC: [0xAEA4], NFD: [0x1101, 0x1164, 0x11AB], NFKC: [0xAEA4], NFKD: [0x1101, 0x1164, 0x11AB] },
+{ source: [0xAEA5], NFC: [0xAEA5], NFD: [0x1101, 0x1164, 0x11AC], NFKC: [0xAEA5], NFKD: [0x1101, 0x1164, 0x11AC] },
+{ source: [0xAEA6], NFC: [0xAEA6], NFD: [0x1101, 0x1164, 0x11AD], NFKC: [0xAEA6], NFKD: [0x1101, 0x1164, 0x11AD] },
+{ source: [0xAEA7], NFC: [0xAEA7], NFD: [0x1101, 0x1164, 0x11AE], NFKC: [0xAEA7], NFKD: [0x1101, 0x1164, 0x11AE] },
+{ source: [0xAEA8], NFC: [0xAEA8], NFD: [0x1101, 0x1164, 0x11AF], NFKC: [0xAEA8], NFKD: [0x1101, 0x1164, 0x11AF] },
+{ source: [0xAEA9], NFC: [0xAEA9], NFD: [0x1101, 0x1164, 0x11B0], NFKC: [0xAEA9], NFKD: [0x1101, 0x1164, 0x11B0] },
+{ source: [0xAEAA], NFC: [0xAEAA], NFD: [0x1101, 0x1164, 0x11B1], NFKC: [0xAEAA], NFKD: [0x1101, 0x1164, 0x11B1] },
+{ source: [0xAEAB], NFC: [0xAEAB], NFD: [0x1101, 0x1164, 0x11B2], NFKC: [0xAEAB], NFKD: [0x1101, 0x1164, 0x11B2] },
+{ source: [0xAEAC], NFC: [0xAEAC], NFD: [0x1101, 0x1164, 0x11B3], NFKC: [0xAEAC], NFKD: [0x1101, 0x1164, 0x11B3] },
+{ source: [0xAEAD], NFC: [0xAEAD], NFD: [0x1101, 0x1164, 0x11B4], NFKC: [0xAEAD], NFKD: [0x1101, 0x1164, 0x11B4] },
+{ source: [0xAEAE], NFC: [0xAEAE], NFD: [0x1101, 0x1164, 0x11B5], NFKC: [0xAEAE], NFKD: [0x1101, 0x1164, 0x11B5] },
+{ source: [0xAEAF], NFC: [0xAEAF], NFD: [0x1101, 0x1164, 0x11B6], NFKC: [0xAEAF], NFKD: [0x1101, 0x1164, 0x11B6] },
+{ source: [0xAEB0], NFC: [0xAEB0], NFD: [0x1101, 0x1164, 0x11B7], NFKC: [0xAEB0], NFKD: [0x1101, 0x1164, 0x11B7] },
+{ source: [0xAEB1], NFC: [0xAEB1], NFD: [0x1101, 0x1164, 0x11B8], NFKC: [0xAEB1], NFKD: [0x1101, 0x1164, 0x11B8] },
+{ source: [0xAEB2], NFC: [0xAEB2], NFD: [0x1101, 0x1164, 0x11B9], NFKC: [0xAEB2], NFKD: [0x1101, 0x1164, 0x11B9] },
+{ source: [0xAEB3], NFC: [0xAEB3], NFD: [0x1101, 0x1164, 0x11BA], NFKC: [0xAEB3], NFKD: [0x1101, 0x1164, 0x11BA] },
+{ source: [0xAEB4], NFC: [0xAEB4], NFD: [0x1101, 0x1164, 0x11BB], NFKC: [0xAEB4], NFKD: [0x1101, 0x1164, 0x11BB] },
+{ source: [0xAEB5], NFC: [0xAEB5], NFD: [0x1101, 0x1164, 0x11BC], NFKC: [0xAEB5], NFKD: [0x1101, 0x1164, 0x11BC] },
+{ source: [0xAEB6], NFC: [0xAEB6], NFD: [0x1101, 0x1164, 0x11BD], NFKC: [0xAEB6], NFKD: [0x1101, 0x1164, 0x11BD] },
+{ source: [0xAEB7], NFC: [0xAEB7], NFD: [0x1101, 0x1164, 0x11BE], NFKC: [0xAEB7], NFKD: [0x1101, 0x1164, 0x11BE] },
+{ source: [0xAEB8], NFC: [0xAEB8], NFD: [0x1101, 0x1164, 0x11BF], NFKC: [0xAEB8], NFKD: [0x1101, 0x1164, 0x11BF] },
+{ source: [0xAEB9], NFC: [0xAEB9], NFD: [0x1101, 0x1164, 0x11C0], NFKC: [0xAEB9], NFKD: [0x1101, 0x1164, 0x11C0] },
+{ source: [0xAEBA], NFC: [0xAEBA], NFD: [0x1101, 0x1164, 0x11C1], NFKC: [0xAEBA], NFKD: [0x1101, 0x1164, 0x11C1] },
+{ source: [0xAEBB], NFC: [0xAEBB], NFD: [0x1101, 0x1164, 0x11C2], NFKC: [0xAEBB], NFKD: [0x1101, 0x1164, 0x11C2] },
+{ source: [0xAEBC], NFC: [0xAEBC], NFD: [0x1101, 0x1165], NFKC: [0xAEBC], NFKD: [0x1101, 0x1165] },
+{ source: [0xAEBD], NFC: [0xAEBD], NFD: [0x1101, 0x1165, 0x11A8], NFKC: [0xAEBD], NFKD: [0x1101, 0x1165, 0x11A8] },
+{ source: [0xAEBE], NFC: [0xAEBE], NFD: [0x1101, 0x1165, 0x11A9], NFKC: [0xAEBE], NFKD: [0x1101, 0x1165, 0x11A9] },
+{ source: [0xAEBF], NFC: [0xAEBF], NFD: [0x1101, 0x1165, 0x11AA], NFKC: [0xAEBF], NFKD: [0x1101, 0x1165, 0x11AA] },
+{ source: [0xAEC0], NFC: [0xAEC0], NFD: [0x1101, 0x1165, 0x11AB], NFKC: [0xAEC0], NFKD: [0x1101, 0x1165, 0x11AB] },
+{ source: [0xAEC1], NFC: [0xAEC1], NFD: [0x1101, 0x1165, 0x11AC], NFKC: [0xAEC1], NFKD: [0x1101, 0x1165, 0x11AC] },
+{ source: [0xAEC2], NFC: [0xAEC2], NFD: [0x1101, 0x1165, 0x11AD], NFKC: [0xAEC2], NFKD: [0x1101, 0x1165, 0x11AD] },
+{ source: [0xAEC3], NFC: [0xAEC3], NFD: [0x1101, 0x1165, 0x11AE], NFKC: [0xAEC3], NFKD: [0x1101, 0x1165, 0x11AE] },
+{ source: [0xAEC4], NFC: [0xAEC4], NFD: [0x1101, 0x1165, 0x11AF], NFKC: [0xAEC4], NFKD: [0x1101, 0x1165, 0x11AF] },
+{ source: [0xAEC5], NFC: [0xAEC5], NFD: [0x1101, 0x1165, 0x11B0], NFKC: [0xAEC5], NFKD: [0x1101, 0x1165, 0x11B0] },
+{ source: [0xAEC6], NFC: [0xAEC6], NFD: [0x1101, 0x1165, 0x11B1], NFKC: [0xAEC6], NFKD: [0x1101, 0x1165, 0x11B1] },
+{ source: [0xAEC7], NFC: [0xAEC7], NFD: [0x1101, 0x1165, 0x11B2], NFKC: [0xAEC7], NFKD: [0x1101, 0x1165, 0x11B2] },
+{ source: [0xAEC8], NFC: [0xAEC8], NFD: [0x1101, 0x1165, 0x11B3], NFKC: [0xAEC8], NFKD: [0x1101, 0x1165, 0x11B3] },
+{ source: [0xAEC9], NFC: [0xAEC9], NFD: [0x1101, 0x1165, 0x11B4], NFKC: [0xAEC9], NFKD: [0x1101, 0x1165, 0x11B4] },
+{ source: [0xAECA], NFC: [0xAECA], NFD: [0x1101, 0x1165, 0x11B5], NFKC: [0xAECA], NFKD: [0x1101, 0x1165, 0x11B5] },
+{ source: [0xAECB], NFC: [0xAECB], NFD: [0x1101, 0x1165, 0x11B6], NFKC: [0xAECB], NFKD: [0x1101, 0x1165, 0x11B6] },
+{ source: [0xAECC], NFC: [0xAECC], NFD: [0x1101, 0x1165, 0x11B7], NFKC: [0xAECC], NFKD: [0x1101, 0x1165, 0x11B7] },
+{ source: [0xAECD], NFC: [0xAECD], NFD: [0x1101, 0x1165, 0x11B8], NFKC: [0xAECD], NFKD: [0x1101, 0x1165, 0x11B8] },
+{ source: [0xAECE], NFC: [0xAECE], NFD: [0x1101, 0x1165, 0x11B9], NFKC: [0xAECE], NFKD: [0x1101, 0x1165, 0x11B9] },
+{ source: [0xAECF], NFC: [0xAECF], NFD: [0x1101, 0x1165, 0x11BA], NFKC: [0xAECF], NFKD: [0x1101, 0x1165, 0x11BA] },
+{ source: [0xAED0], NFC: [0xAED0], NFD: [0x1101, 0x1165, 0x11BB], NFKC: [0xAED0], NFKD: [0x1101, 0x1165, 0x11BB] },
+{ source: [0xAED1], NFC: [0xAED1], NFD: [0x1101, 0x1165, 0x11BC], NFKC: [0xAED1], NFKD: [0x1101, 0x1165, 0x11BC] },
+{ source: [0xAED2], NFC: [0xAED2], NFD: [0x1101, 0x1165, 0x11BD], NFKC: [0xAED2], NFKD: [0x1101, 0x1165, 0x11BD] },
+{ source: [0xAED3], NFC: [0xAED3], NFD: [0x1101, 0x1165, 0x11BE], NFKC: [0xAED3], NFKD: [0x1101, 0x1165, 0x11BE] },
+{ source: [0xAED4], NFC: [0xAED4], NFD: [0x1101, 0x1165, 0x11BF], NFKC: [0xAED4], NFKD: [0x1101, 0x1165, 0x11BF] },
+{ source: [0xAED5], NFC: [0xAED5], NFD: [0x1101, 0x1165, 0x11C0], NFKC: [0xAED5], NFKD: [0x1101, 0x1165, 0x11C0] },
+{ source: [0xAED6], NFC: [0xAED6], NFD: [0x1101, 0x1165, 0x11C1], NFKC: [0xAED6], NFKD: [0x1101, 0x1165, 0x11C1] },
+{ source: [0xAED7], NFC: [0xAED7], NFD: [0x1101, 0x1165, 0x11C2], NFKC: [0xAED7], NFKD: [0x1101, 0x1165, 0x11C2] },
+{ source: [0xAED8], NFC: [0xAED8], NFD: [0x1101, 0x1166], NFKC: [0xAED8], NFKD: [0x1101, 0x1166] },
+{ source: [0xAED9], NFC: [0xAED9], NFD: [0x1101, 0x1166, 0x11A8], NFKC: [0xAED9], NFKD: [0x1101, 0x1166, 0x11A8] },
+{ source: [0xAEDA], NFC: [0xAEDA], NFD: [0x1101, 0x1166, 0x11A9], NFKC: [0xAEDA], NFKD: [0x1101, 0x1166, 0x11A9] },
+{ source: [0xAEDB], NFC: [0xAEDB], NFD: [0x1101, 0x1166, 0x11AA], NFKC: [0xAEDB], NFKD: [0x1101, 0x1166, 0x11AA] },
+{ source: [0xAEDC], NFC: [0xAEDC], NFD: [0x1101, 0x1166, 0x11AB], NFKC: [0xAEDC], NFKD: [0x1101, 0x1166, 0x11AB] },
+{ source: [0xAEDD], NFC: [0xAEDD], NFD: [0x1101, 0x1166, 0x11AC], NFKC: [0xAEDD], NFKD: [0x1101, 0x1166, 0x11AC] },
+{ source: [0xAEDE], NFC: [0xAEDE], NFD: [0x1101, 0x1166, 0x11AD], NFKC: [0xAEDE], NFKD: [0x1101, 0x1166, 0x11AD] },
+{ source: [0xAEDF], NFC: [0xAEDF], NFD: [0x1101, 0x1166, 0x11AE], NFKC: [0xAEDF], NFKD: [0x1101, 0x1166, 0x11AE] },
+{ source: [0xAEE0], NFC: [0xAEE0], NFD: [0x1101, 0x1166, 0x11AF], NFKC: [0xAEE0], NFKD: [0x1101, 0x1166, 0x11AF] },
+{ source: [0xAEE1], NFC: [0xAEE1], NFD: [0x1101, 0x1166, 0x11B0], NFKC: [0xAEE1], NFKD: [0x1101, 0x1166, 0x11B0] },
+{ source: [0xAEE2], NFC: [0xAEE2], NFD: [0x1101, 0x1166, 0x11B1], NFKC: [0xAEE2], NFKD: [0x1101, 0x1166, 0x11B1] },
+{ source: [0xAEE3], NFC: [0xAEE3], NFD: [0x1101, 0x1166, 0x11B2], NFKC: [0xAEE3], NFKD: [0x1101, 0x1166, 0x11B2] },
+{ source: [0xAEE4], NFC: [0xAEE4], NFD: [0x1101, 0x1166, 0x11B3], NFKC: [0xAEE4], NFKD: [0x1101, 0x1166, 0x11B3] },
+{ source: [0xAEE5], NFC: [0xAEE5], NFD: [0x1101, 0x1166, 0x11B4], NFKC: [0xAEE5], NFKD: [0x1101, 0x1166, 0x11B4] },
+{ source: [0xAEE6], NFC: [0xAEE6], NFD: [0x1101, 0x1166, 0x11B5], NFKC: [0xAEE6], NFKD: [0x1101, 0x1166, 0x11B5] },
+{ source: [0xAEE7], NFC: [0xAEE7], NFD: [0x1101, 0x1166, 0x11B6], NFKC: [0xAEE7], NFKD: [0x1101, 0x1166, 0x11B6] },
+{ source: [0xAEE8], NFC: [0xAEE8], NFD: [0x1101, 0x1166, 0x11B7], NFKC: [0xAEE8], NFKD: [0x1101, 0x1166, 0x11B7] },
+{ source: [0xAEE9], NFC: [0xAEE9], NFD: [0x1101, 0x1166, 0x11B8], NFKC: [0xAEE9], NFKD: [0x1101, 0x1166, 0x11B8] },
+{ source: [0xAEEA], NFC: [0xAEEA], NFD: [0x1101, 0x1166, 0x11B9], NFKC: [0xAEEA], NFKD: [0x1101, 0x1166, 0x11B9] },
+{ source: [0xAEEB], NFC: [0xAEEB], NFD: [0x1101, 0x1166, 0x11BA], NFKC: [0xAEEB], NFKD: [0x1101, 0x1166, 0x11BA] },
+{ source: [0xAEEC], NFC: [0xAEEC], NFD: [0x1101, 0x1166, 0x11BB], NFKC: [0xAEEC], NFKD: [0x1101, 0x1166, 0x11BB] },
+{ source: [0xAEED], NFC: [0xAEED], NFD: [0x1101, 0x1166, 0x11BC], NFKC: [0xAEED], NFKD: [0x1101, 0x1166, 0x11BC] },
+{ source: [0xAEEE], NFC: [0xAEEE], NFD: [0x1101, 0x1166, 0x11BD], NFKC: [0xAEEE], NFKD: [0x1101, 0x1166, 0x11BD] },
+{ source: [0xAEEF], NFC: [0xAEEF], NFD: [0x1101, 0x1166, 0x11BE], NFKC: [0xAEEF], NFKD: [0x1101, 0x1166, 0x11BE] },
+{ source: [0xAEF0], NFC: [0xAEF0], NFD: [0x1101, 0x1166, 0x11BF], NFKC: [0xAEF0], NFKD: [0x1101, 0x1166, 0x11BF] },
+{ source: [0xAEF1], NFC: [0xAEF1], NFD: [0x1101, 0x1166, 0x11C0], NFKC: [0xAEF1], NFKD: [0x1101, 0x1166, 0x11C0] },
+{ source: [0xAEF2], NFC: [0xAEF2], NFD: [0x1101, 0x1166, 0x11C1], NFKC: [0xAEF2], NFKD: [0x1101, 0x1166, 0x11C1] },
+{ source: [0xAEF3], NFC: [0xAEF3], NFD: [0x1101, 0x1166, 0x11C2], NFKC: [0xAEF3], NFKD: [0x1101, 0x1166, 0x11C2] },
+{ source: [0xAEF4], NFC: [0xAEF4], NFD: [0x1101, 0x1167], NFKC: [0xAEF4], NFKD: [0x1101, 0x1167] },
+{ source: [0xAEF5], NFC: [0xAEF5], NFD: [0x1101, 0x1167, 0x11A8], NFKC: [0xAEF5], NFKD: [0x1101, 0x1167, 0x11A8] },
+{ source: [0xAEF6], NFC: [0xAEF6], NFD: [0x1101, 0x1167, 0x11A9], NFKC: [0xAEF6], NFKD: [0x1101, 0x1167, 0x11A9] },
+{ source: [0xAEF7], NFC: [0xAEF7], NFD: [0x1101, 0x1167, 0x11AA], NFKC: [0xAEF7], NFKD: [0x1101, 0x1167, 0x11AA] },
+{ source: [0xAEF8], NFC: [0xAEF8], NFD: [0x1101, 0x1167, 0x11AB], NFKC: [0xAEF8], NFKD: [0x1101, 0x1167, 0x11AB] },
+{ source: [0xAEF9], NFC: [0xAEF9], NFD: [0x1101, 0x1167, 0x11AC], NFKC: [0xAEF9], NFKD: [0x1101, 0x1167, 0x11AC] },
+{ source: [0xAEFA], NFC: [0xAEFA], NFD: [0x1101, 0x1167, 0x11AD], NFKC: [0xAEFA], NFKD: [0x1101, 0x1167, 0x11AD] },
+{ source: [0xAEFB], NFC: [0xAEFB], NFD: [0x1101, 0x1167, 0x11AE], NFKC: [0xAEFB], NFKD: [0x1101, 0x1167, 0x11AE] },
+{ source: [0xAEFC], NFC: [0xAEFC], NFD: [0x1101, 0x1167, 0x11AF], NFKC: [0xAEFC], NFKD: [0x1101, 0x1167, 0x11AF] },
+{ source: [0xAEFD], NFC: [0xAEFD], NFD: [0x1101, 0x1167, 0x11B0], NFKC: [0xAEFD], NFKD: [0x1101, 0x1167, 0x11B0] },
+{ source: [0xAEFE], NFC: [0xAEFE], NFD: [0x1101, 0x1167, 0x11B1], NFKC: [0xAEFE], NFKD: [0x1101, 0x1167, 0x11B1] },
+{ source: [0xAEFF], NFC: [0xAEFF], NFD: [0x1101, 0x1167, 0x11B2], NFKC: [0xAEFF], NFKD: [0x1101, 0x1167, 0x11B2] },
+{ source: [0xAF00], NFC: [0xAF00], NFD: [0x1101, 0x1167, 0x11B3], NFKC: [0xAF00], NFKD: [0x1101, 0x1167, 0x11B3] },
+{ source: [0xAF01], NFC: [0xAF01], NFD: [0x1101, 0x1167, 0x11B4], NFKC: [0xAF01], NFKD: [0x1101, 0x1167, 0x11B4] },
+{ source: [0xAF02], NFC: [0xAF02], NFD: [0x1101, 0x1167, 0x11B5], NFKC: [0xAF02], NFKD: [0x1101, 0x1167, 0x11B5] },
+{ source: [0xAF03], NFC: [0xAF03], NFD: [0x1101, 0x1167, 0x11B6], NFKC: [0xAF03], NFKD: [0x1101, 0x1167, 0x11B6] },
+{ source: [0xAF04], NFC: [0xAF04], NFD: [0x1101, 0x1167, 0x11B7], NFKC: [0xAF04], NFKD: [0x1101, 0x1167, 0x11B7] },
+{ source: [0xAF05], NFC: [0xAF05], NFD: [0x1101, 0x1167, 0x11B8], NFKC: [0xAF05], NFKD: [0x1101, 0x1167, 0x11B8] },
+{ source: [0xAF06], NFC: [0xAF06], NFD: [0x1101, 0x1167, 0x11B9], NFKC: [0xAF06], NFKD: [0x1101, 0x1167, 0x11B9] },
+{ source: [0xAF07], NFC: [0xAF07], NFD: [0x1101, 0x1167, 0x11BA], NFKC: [0xAF07], NFKD: [0x1101, 0x1167, 0x11BA] },
+{ source: [0xAF08], NFC: [0xAF08], NFD: [0x1101, 0x1167, 0x11BB], NFKC: [0xAF08], NFKD: [0x1101, 0x1167, 0x11BB] },
+{ source: [0xAF09], NFC: [0xAF09], NFD: [0x1101, 0x1167, 0x11BC], NFKC: [0xAF09], NFKD: [0x1101, 0x1167, 0x11BC] },
+{ source: [0xAF0A], NFC: [0xAF0A], NFD: [0x1101, 0x1167, 0x11BD], NFKC: [0xAF0A], NFKD: [0x1101, 0x1167, 0x11BD] },
+{ source: [0xAF0B], NFC: [0xAF0B], NFD: [0x1101, 0x1167, 0x11BE], NFKC: [0xAF0B], NFKD: [0x1101, 0x1167, 0x11BE] },
+{ source: [0xAF0C], NFC: [0xAF0C], NFD: [0x1101, 0x1167, 0x11BF], NFKC: [0xAF0C], NFKD: [0x1101, 0x1167, 0x11BF] },
+{ source: [0xAF0D], NFC: [0xAF0D], NFD: [0x1101, 0x1167, 0x11C0], NFKC: [0xAF0D], NFKD: [0x1101, 0x1167, 0x11C0] },
+{ source: [0xAF0E], NFC: [0xAF0E], NFD: [0x1101, 0x1167, 0x11C1], NFKC: [0xAF0E], NFKD: [0x1101, 0x1167, 0x11C1] },
+{ source: [0xAF0F], NFC: [0xAF0F], NFD: [0x1101, 0x1167, 0x11C2], NFKC: [0xAF0F], NFKD: [0x1101, 0x1167, 0x11C2] },
+{ source: [0xAF10], NFC: [0xAF10], NFD: [0x1101, 0x1168], NFKC: [0xAF10], NFKD: [0x1101, 0x1168] },
+{ source: [0xAF11], NFC: [0xAF11], NFD: [0x1101, 0x1168, 0x11A8], NFKC: [0xAF11], NFKD: [0x1101, 0x1168, 0x11A8] },
+{ source: [0xAF12], NFC: [0xAF12], NFD: [0x1101, 0x1168, 0x11A9], NFKC: [0xAF12], NFKD: [0x1101, 0x1168, 0x11A9] },
+{ source: [0xAF13], NFC: [0xAF13], NFD: [0x1101, 0x1168, 0x11AA], NFKC: [0xAF13], NFKD: [0x1101, 0x1168, 0x11AA] },
+{ source: [0xAF14], NFC: [0xAF14], NFD: [0x1101, 0x1168, 0x11AB], NFKC: [0xAF14], NFKD: [0x1101, 0x1168, 0x11AB] },
+{ source: [0xAF15], NFC: [0xAF15], NFD: [0x1101, 0x1168, 0x11AC], NFKC: [0xAF15], NFKD: [0x1101, 0x1168, 0x11AC] },
+{ source: [0xAF16], NFC: [0xAF16], NFD: [0x1101, 0x1168, 0x11AD], NFKC: [0xAF16], NFKD: [0x1101, 0x1168, 0x11AD] },
+{ source: [0xAF17], NFC: [0xAF17], NFD: [0x1101, 0x1168, 0x11AE], NFKC: [0xAF17], NFKD: [0x1101, 0x1168, 0x11AE] },
+{ source: [0xAF18], NFC: [0xAF18], NFD: [0x1101, 0x1168, 0x11AF], NFKC: [0xAF18], NFKD: [0x1101, 0x1168, 0x11AF] },
+{ source: [0xAF19], NFC: [0xAF19], NFD: [0x1101, 0x1168, 0x11B0], NFKC: [0xAF19], NFKD: [0x1101, 0x1168, 0x11B0] },
+{ source: [0xAF1A], NFC: [0xAF1A], NFD: [0x1101, 0x1168, 0x11B1], NFKC: [0xAF1A], NFKD: [0x1101, 0x1168, 0x11B1] },
+{ source: [0xAF1B], NFC: [0xAF1B], NFD: [0x1101, 0x1168, 0x11B2], NFKC: [0xAF1B], NFKD: [0x1101, 0x1168, 0x11B2] },
+{ source: [0xAF1C], NFC: [0xAF1C], NFD: [0x1101, 0x1168, 0x11B3], NFKC: [0xAF1C], NFKD: [0x1101, 0x1168, 0x11B3] },
+{ source: [0xAF1D], NFC: [0xAF1D], NFD: [0x1101, 0x1168, 0x11B4], NFKC: [0xAF1D], NFKD: [0x1101, 0x1168, 0x11B4] },
+{ source: [0xAF1E], NFC: [0xAF1E], NFD: [0x1101, 0x1168, 0x11B5], NFKC: [0xAF1E], NFKD: [0x1101, 0x1168, 0x11B5] },
+{ source: [0xAF1F], NFC: [0xAF1F], NFD: [0x1101, 0x1168, 0x11B6], NFKC: [0xAF1F], NFKD: [0x1101, 0x1168, 0x11B6] },
+{ source: [0xAF20], NFC: [0xAF20], NFD: [0x1101, 0x1168, 0x11B7], NFKC: [0xAF20], NFKD: [0x1101, 0x1168, 0x11B7] },
+{ source: [0xAF21], NFC: [0xAF21], NFD: [0x1101, 0x1168, 0x11B8], NFKC: [0xAF21], NFKD: [0x1101, 0x1168, 0x11B8] },
+{ source: [0xAF22], NFC: [0xAF22], NFD: [0x1101, 0x1168, 0x11B9], NFKC: [0xAF22], NFKD: [0x1101, 0x1168, 0x11B9] },
+{ source: [0xAF23], NFC: [0xAF23], NFD: [0x1101, 0x1168, 0x11BA], NFKC: [0xAF23], NFKD: [0x1101, 0x1168, 0x11BA] },
+{ source: [0xAF24], NFC: [0xAF24], NFD: [0x1101, 0x1168, 0x11BB], NFKC: [0xAF24], NFKD: [0x1101, 0x1168, 0x11BB] },
+{ source: [0xAF25], NFC: [0xAF25], NFD: [0x1101, 0x1168, 0x11BC], NFKC: [0xAF25], NFKD: [0x1101, 0x1168, 0x11BC] },
+{ source: [0xAF26], NFC: [0xAF26], NFD: [0x1101, 0x1168, 0x11BD], NFKC: [0xAF26], NFKD: [0x1101, 0x1168, 0x11BD] },
+{ source: [0xAF27], NFC: [0xAF27], NFD: [0x1101, 0x1168, 0x11BE], NFKC: [0xAF27], NFKD: [0x1101, 0x1168, 0x11BE] },
+{ source: [0xAF28], NFC: [0xAF28], NFD: [0x1101, 0x1168, 0x11BF], NFKC: [0xAF28], NFKD: [0x1101, 0x1168, 0x11BF] },
+{ source: [0xAF29], NFC: [0xAF29], NFD: [0x1101, 0x1168, 0x11C0], NFKC: [0xAF29], NFKD: [0x1101, 0x1168, 0x11C0] },
+{ source: [0xAF2A], NFC: [0xAF2A], NFD: [0x1101, 0x1168, 0x11C1], NFKC: [0xAF2A], NFKD: [0x1101, 0x1168, 0x11C1] },
+{ source: [0xAF2B], NFC: [0xAF2B], NFD: [0x1101, 0x1168, 0x11C2], NFKC: [0xAF2B], NFKD: [0x1101, 0x1168, 0x11C2] },
+{ source: [0xAF2C], NFC: [0xAF2C], NFD: [0x1101, 0x1169], NFKC: [0xAF2C], NFKD: [0x1101, 0x1169] },
+{ source: [0xAF2D], NFC: [0xAF2D], NFD: [0x1101, 0x1169, 0x11A8], NFKC: [0xAF2D], NFKD: [0x1101, 0x1169, 0x11A8] },
+{ source: [0xAF2E], NFC: [0xAF2E], NFD: [0x1101, 0x1169, 0x11A9], NFKC: [0xAF2E], NFKD: [0x1101, 0x1169, 0x11A9] },
+{ source: [0xAF2F], NFC: [0xAF2F], NFD: [0x1101, 0x1169, 0x11AA], NFKC: [0xAF2F], NFKD: [0x1101, 0x1169, 0x11AA] },
+{ source: [0xAF30], NFC: [0xAF30], NFD: [0x1101, 0x1169, 0x11AB], NFKC: [0xAF30], NFKD: [0x1101, 0x1169, 0x11AB] },
+{ source: [0xAF31], NFC: [0xAF31], NFD: [0x1101, 0x1169, 0x11AC], NFKC: [0xAF31], NFKD: [0x1101, 0x1169, 0x11AC] },
+{ source: [0xAF32], NFC: [0xAF32], NFD: [0x1101, 0x1169, 0x11AD], NFKC: [0xAF32], NFKD: [0x1101, 0x1169, 0x11AD] },
+{ source: [0xAF33], NFC: [0xAF33], NFD: [0x1101, 0x1169, 0x11AE], NFKC: [0xAF33], NFKD: [0x1101, 0x1169, 0x11AE] },
+{ source: [0xAF34], NFC: [0xAF34], NFD: [0x1101, 0x1169, 0x11AF], NFKC: [0xAF34], NFKD: [0x1101, 0x1169, 0x11AF] },
+{ source: [0xAF35], NFC: [0xAF35], NFD: [0x1101, 0x1169, 0x11B0], NFKC: [0xAF35], NFKD: [0x1101, 0x1169, 0x11B0] },
+{ source: [0xAF36], NFC: [0xAF36], NFD: [0x1101, 0x1169, 0x11B1], NFKC: [0xAF36], NFKD: [0x1101, 0x1169, 0x11B1] },
+{ source: [0xAF37], NFC: [0xAF37], NFD: [0x1101, 0x1169, 0x11B2], NFKC: [0xAF37], NFKD: [0x1101, 0x1169, 0x11B2] },
+{ source: [0xAF38], NFC: [0xAF38], NFD: [0x1101, 0x1169, 0x11B3], NFKC: [0xAF38], NFKD: [0x1101, 0x1169, 0x11B3] },
+{ source: [0xAF39], NFC: [0xAF39], NFD: [0x1101, 0x1169, 0x11B4], NFKC: [0xAF39], NFKD: [0x1101, 0x1169, 0x11B4] },
+{ source: [0xAF3A], NFC: [0xAF3A], NFD: [0x1101, 0x1169, 0x11B5], NFKC: [0xAF3A], NFKD: [0x1101, 0x1169, 0x11B5] },
+{ source: [0xAF3B], NFC: [0xAF3B], NFD: [0x1101, 0x1169, 0x11B6], NFKC: [0xAF3B], NFKD: [0x1101, 0x1169, 0x11B6] },
+{ source: [0xAF3C], NFC: [0xAF3C], NFD: [0x1101, 0x1169, 0x11B7], NFKC: [0xAF3C], NFKD: [0x1101, 0x1169, 0x11B7] },
+{ source: [0xAF3D], NFC: [0xAF3D], NFD: [0x1101, 0x1169, 0x11B8], NFKC: [0xAF3D], NFKD: [0x1101, 0x1169, 0x11B8] },
+{ source: [0xAF3E], NFC: [0xAF3E], NFD: [0x1101, 0x1169, 0x11B9], NFKC: [0xAF3E], NFKD: [0x1101, 0x1169, 0x11B9] },
+{ source: [0xAF3F], NFC: [0xAF3F], NFD: [0x1101, 0x1169, 0x11BA], NFKC: [0xAF3F], NFKD: [0x1101, 0x1169, 0x11BA] },
+{ source: [0xAF40], NFC: [0xAF40], NFD: [0x1101, 0x1169, 0x11BB], NFKC: [0xAF40], NFKD: [0x1101, 0x1169, 0x11BB] },
+{ source: [0xAF41], NFC: [0xAF41], NFD: [0x1101, 0x1169, 0x11BC], NFKC: [0xAF41], NFKD: [0x1101, 0x1169, 0x11BC] },
+{ source: [0xAF42], NFC: [0xAF42], NFD: [0x1101, 0x1169, 0x11BD], NFKC: [0xAF42], NFKD: [0x1101, 0x1169, 0x11BD] },
+{ source: [0xAF43], NFC: [0xAF43], NFD: [0x1101, 0x1169, 0x11BE], NFKC: [0xAF43], NFKD: [0x1101, 0x1169, 0x11BE] },
+{ source: [0xAF44], NFC: [0xAF44], NFD: [0x1101, 0x1169, 0x11BF], NFKC: [0xAF44], NFKD: [0x1101, 0x1169, 0x11BF] },
+{ source: [0xAF45], NFC: [0xAF45], NFD: [0x1101, 0x1169, 0x11C0], NFKC: [0xAF45], NFKD: [0x1101, 0x1169, 0x11C0] },
+{ source: [0xAF46], NFC: [0xAF46], NFD: [0x1101, 0x1169, 0x11C1], NFKC: [0xAF46], NFKD: [0x1101, 0x1169, 0x11C1] },
+{ source: [0xAF47], NFC: [0xAF47], NFD: [0x1101, 0x1169, 0x11C2], NFKC: [0xAF47], NFKD: [0x1101, 0x1169, 0x11C2] },
+{ source: [0xAF48], NFC: [0xAF48], NFD: [0x1101, 0x116A], NFKC: [0xAF48], NFKD: [0x1101, 0x116A] },
+{ source: [0xAF49], NFC: [0xAF49], NFD: [0x1101, 0x116A, 0x11A8], NFKC: [0xAF49], NFKD: [0x1101, 0x116A, 0x11A8] },
+{ source: [0xAF4A], NFC: [0xAF4A], NFD: [0x1101, 0x116A, 0x11A9], NFKC: [0xAF4A], NFKD: [0x1101, 0x116A, 0x11A9] },
+{ source: [0xAF4B], NFC: [0xAF4B], NFD: [0x1101, 0x116A, 0x11AA], NFKC: [0xAF4B], NFKD: [0x1101, 0x116A, 0x11AA] },
+{ source: [0xAF4C], NFC: [0xAF4C], NFD: [0x1101, 0x116A, 0x11AB], NFKC: [0xAF4C], NFKD: [0x1101, 0x116A, 0x11AB] },
+{ source: [0xAF4D], NFC: [0xAF4D], NFD: [0x1101, 0x116A, 0x11AC], NFKC: [0xAF4D], NFKD: [0x1101, 0x116A, 0x11AC] },
+{ source: [0xAF4E], NFC: [0xAF4E], NFD: [0x1101, 0x116A, 0x11AD], NFKC: [0xAF4E], NFKD: [0x1101, 0x116A, 0x11AD] },
+{ source: [0xAF4F], NFC: [0xAF4F], NFD: [0x1101, 0x116A, 0x11AE], NFKC: [0xAF4F], NFKD: [0x1101, 0x116A, 0x11AE] },
+{ source: [0xAF50], NFC: [0xAF50], NFD: [0x1101, 0x116A, 0x11AF], NFKC: [0xAF50], NFKD: [0x1101, 0x116A, 0x11AF] },
+{ source: [0xAF51], NFC: [0xAF51], NFD: [0x1101, 0x116A, 0x11B0], NFKC: [0xAF51], NFKD: [0x1101, 0x116A, 0x11B0] },
+{ source: [0xAF52], NFC: [0xAF52], NFD: [0x1101, 0x116A, 0x11B1], NFKC: [0xAF52], NFKD: [0x1101, 0x116A, 0x11B1] },
+{ source: [0xAF53], NFC: [0xAF53], NFD: [0x1101, 0x116A, 0x11B2], NFKC: [0xAF53], NFKD: [0x1101, 0x116A, 0x11B2] },
+{ source: [0xAF54], NFC: [0xAF54], NFD: [0x1101, 0x116A, 0x11B3], NFKC: [0xAF54], NFKD: [0x1101, 0x116A, 0x11B3] },
+{ source: [0xAF55], NFC: [0xAF55], NFD: [0x1101, 0x116A, 0x11B4], NFKC: [0xAF55], NFKD: [0x1101, 0x116A, 0x11B4] },
+{ source: [0xAF56], NFC: [0xAF56], NFD: [0x1101, 0x116A, 0x11B5], NFKC: [0xAF56], NFKD: [0x1101, 0x116A, 0x11B5] },
+{ source: [0xAF57], NFC: [0xAF57], NFD: [0x1101, 0x116A, 0x11B6], NFKC: [0xAF57], NFKD: [0x1101, 0x116A, 0x11B6] },
+{ source: [0xAF58], NFC: [0xAF58], NFD: [0x1101, 0x116A, 0x11B7], NFKC: [0xAF58], NFKD: [0x1101, 0x116A, 0x11B7] },
+{ source: [0xAF59], NFC: [0xAF59], NFD: [0x1101, 0x116A, 0x11B8], NFKC: [0xAF59], NFKD: [0x1101, 0x116A, 0x11B8] },
+{ source: [0xAF5A], NFC: [0xAF5A], NFD: [0x1101, 0x116A, 0x11B9], NFKC: [0xAF5A], NFKD: [0x1101, 0x116A, 0x11B9] },
+{ source: [0xAF5B], NFC: [0xAF5B], NFD: [0x1101, 0x116A, 0x11BA], NFKC: [0xAF5B], NFKD: [0x1101, 0x116A, 0x11BA] },
+{ source: [0xAF5C], NFC: [0xAF5C], NFD: [0x1101, 0x116A, 0x11BB], NFKC: [0xAF5C], NFKD: [0x1101, 0x116A, 0x11BB] },
+{ source: [0xAF5D], NFC: [0xAF5D], NFD: [0x1101, 0x116A, 0x11BC], NFKC: [0xAF5D], NFKD: [0x1101, 0x116A, 0x11BC] },
+{ source: [0xAF5E], NFC: [0xAF5E], NFD: [0x1101, 0x116A, 0x11BD], NFKC: [0xAF5E], NFKD: [0x1101, 0x116A, 0x11BD] },
+{ source: [0xAF5F], NFC: [0xAF5F], NFD: [0x1101, 0x116A, 0x11BE], NFKC: [0xAF5F], NFKD: [0x1101, 0x116A, 0x11BE] },
+{ source: [0xAF60], NFC: [0xAF60], NFD: [0x1101, 0x116A, 0x11BF], NFKC: [0xAF60], NFKD: [0x1101, 0x116A, 0x11BF] },
+{ source: [0xAF61], NFC: [0xAF61], NFD: [0x1101, 0x116A, 0x11C0], NFKC: [0xAF61], NFKD: [0x1101, 0x116A, 0x11C0] },
+{ source: [0xAF62], NFC: [0xAF62], NFD: [0x1101, 0x116A, 0x11C1], NFKC: [0xAF62], NFKD: [0x1101, 0x116A, 0x11C1] },
+{ source: [0xAF63], NFC: [0xAF63], NFD: [0x1101, 0x116A, 0x11C2], NFKC: [0xAF63], NFKD: [0x1101, 0x116A, 0x11C2] },
+{ source: [0xAF64], NFC: [0xAF64], NFD: [0x1101, 0x116B], NFKC: [0xAF64], NFKD: [0x1101, 0x116B] },
+{ source: [0xAF65], NFC: [0xAF65], NFD: [0x1101, 0x116B, 0x11A8], NFKC: [0xAF65], NFKD: [0x1101, 0x116B, 0x11A8] },
+{ source: [0xAF66], NFC: [0xAF66], NFD: [0x1101, 0x116B, 0x11A9], NFKC: [0xAF66], NFKD: [0x1101, 0x116B, 0x11A9] },
+{ source: [0xAF67], NFC: [0xAF67], NFD: [0x1101, 0x116B, 0x11AA], NFKC: [0xAF67], NFKD: [0x1101, 0x116B, 0x11AA] },
+{ source: [0xAF68], NFC: [0xAF68], NFD: [0x1101, 0x116B, 0x11AB], NFKC: [0xAF68], NFKD: [0x1101, 0x116B, 0x11AB] },
+{ source: [0xAF69], NFC: [0xAF69], NFD: [0x1101, 0x116B, 0x11AC], NFKC: [0xAF69], NFKD: [0x1101, 0x116B, 0x11AC] },
+{ source: [0xAF6A], NFC: [0xAF6A], NFD: [0x1101, 0x116B, 0x11AD], NFKC: [0xAF6A], NFKD: [0x1101, 0x116B, 0x11AD] },
+{ source: [0xAF6B], NFC: [0xAF6B], NFD: [0x1101, 0x116B, 0x11AE], NFKC: [0xAF6B], NFKD: [0x1101, 0x116B, 0x11AE] },
+{ source: [0xAF6C], NFC: [0xAF6C], NFD: [0x1101, 0x116B, 0x11AF], NFKC: [0xAF6C], NFKD: [0x1101, 0x116B, 0x11AF] },
+{ source: [0xAF6D], NFC: [0xAF6D], NFD: [0x1101, 0x116B, 0x11B0], NFKC: [0xAF6D], NFKD: [0x1101, 0x116B, 0x11B0] },
+{ source: [0xAF6E], NFC: [0xAF6E], NFD: [0x1101, 0x116B, 0x11B1], NFKC: [0xAF6E], NFKD: [0x1101, 0x116B, 0x11B1] },
+{ source: [0xAF6F], NFC: [0xAF6F], NFD: [0x1101, 0x116B, 0x11B2], NFKC: [0xAF6F], NFKD: [0x1101, 0x116B, 0x11B2] },
+{ source: [0xAF70], NFC: [0xAF70], NFD: [0x1101, 0x116B, 0x11B3], NFKC: [0xAF70], NFKD: [0x1101, 0x116B, 0x11B3] },
+{ source: [0xAF71], NFC: [0xAF71], NFD: [0x1101, 0x116B, 0x11B4], NFKC: [0xAF71], NFKD: [0x1101, 0x116B, 0x11B4] },
+{ source: [0xAF72], NFC: [0xAF72], NFD: [0x1101, 0x116B, 0x11B5], NFKC: [0xAF72], NFKD: [0x1101, 0x116B, 0x11B5] },
+{ source: [0xAF73], NFC: [0xAF73], NFD: [0x1101, 0x116B, 0x11B6], NFKC: [0xAF73], NFKD: [0x1101, 0x116B, 0x11B6] },
+{ source: [0xAF74], NFC: [0xAF74], NFD: [0x1101, 0x116B, 0x11B7], NFKC: [0xAF74], NFKD: [0x1101, 0x116B, 0x11B7] },
+{ source: [0xAF75], NFC: [0xAF75], NFD: [0x1101, 0x116B, 0x11B8], NFKC: [0xAF75], NFKD: [0x1101, 0x116B, 0x11B8] },
+{ source: [0xAF76], NFC: [0xAF76], NFD: [0x1101, 0x116B, 0x11B9], NFKC: [0xAF76], NFKD: [0x1101, 0x116B, 0x11B9] },
+{ source: [0xAF77], NFC: [0xAF77], NFD: [0x1101, 0x116B, 0x11BA], NFKC: [0xAF77], NFKD: [0x1101, 0x116B, 0x11BA] },
+{ source: [0xAF78], NFC: [0xAF78], NFD: [0x1101, 0x116B, 0x11BB], NFKC: [0xAF78], NFKD: [0x1101, 0x116B, 0x11BB] },
+{ source: [0xAF79], NFC: [0xAF79], NFD: [0x1101, 0x116B, 0x11BC], NFKC: [0xAF79], NFKD: [0x1101, 0x116B, 0x11BC] },
+{ source: [0xAF7A], NFC: [0xAF7A], NFD: [0x1101, 0x116B, 0x11BD], NFKC: [0xAF7A], NFKD: [0x1101, 0x116B, 0x11BD] },
+{ source: [0xAF7B], NFC: [0xAF7B], NFD: [0x1101, 0x116B, 0x11BE], NFKC: [0xAF7B], NFKD: [0x1101, 0x116B, 0x11BE] },
+{ source: [0xAF7C], NFC: [0xAF7C], NFD: [0x1101, 0x116B, 0x11BF], NFKC: [0xAF7C], NFKD: [0x1101, 0x116B, 0x11BF] },
+{ source: [0xAF7D], NFC: [0xAF7D], NFD: [0x1101, 0x116B, 0x11C0], NFKC: [0xAF7D], NFKD: [0x1101, 0x116B, 0x11C0] },
+{ source: [0xAF7E], NFC: [0xAF7E], NFD: [0x1101, 0x116B, 0x11C1], NFKC: [0xAF7E], NFKD: [0x1101, 0x116B, 0x11C1] },
+{ source: [0xAF7F], NFC: [0xAF7F], NFD: [0x1101, 0x116B, 0x11C2], NFKC: [0xAF7F], NFKD: [0x1101, 0x116B, 0x11C2] },
+{ source: [0xAF80], NFC: [0xAF80], NFD: [0x1101, 0x116C], NFKC: [0xAF80], NFKD: [0x1101, 0x116C] },
+{ source: [0xAF81], NFC: [0xAF81], NFD: [0x1101, 0x116C, 0x11A8], NFKC: [0xAF81], NFKD: [0x1101, 0x116C, 0x11A8] },
+{ source: [0xAF82], NFC: [0xAF82], NFD: [0x1101, 0x116C, 0x11A9], NFKC: [0xAF82], NFKD: [0x1101, 0x116C, 0x11A9] },
+{ source: [0xAF83], NFC: [0xAF83], NFD: [0x1101, 0x116C, 0x11AA], NFKC: [0xAF83], NFKD: [0x1101, 0x116C, 0x11AA] },
+{ source: [0xAF84], NFC: [0xAF84], NFD: [0x1101, 0x116C, 0x11AB], NFKC: [0xAF84], NFKD: [0x1101, 0x116C, 0x11AB] },
+{ source: [0xAF85], NFC: [0xAF85], NFD: [0x1101, 0x116C, 0x11AC], NFKC: [0xAF85], NFKD: [0x1101, 0x116C, 0x11AC] },
+{ source: [0xAF86], NFC: [0xAF86], NFD: [0x1101, 0x116C, 0x11AD], NFKC: [0xAF86], NFKD: [0x1101, 0x116C, 0x11AD] },
+{ source: [0xAF87], NFC: [0xAF87], NFD: [0x1101, 0x116C, 0x11AE], NFKC: [0xAF87], NFKD: [0x1101, 0x116C, 0x11AE] },
+{ source: [0xAF88], NFC: [0xAF88], NFD: [0x1101, 0x116C, 0x11AF], NFKC: [0xAF88], NFKD: [0x1101, 0x116C, 0x11AF] },
+{ source: [0xAF89], NFC: [0xAF89], NFD: [0x1101, 0x116C, 0x11B0], NFKC: [0xAF89], NFKD: [0x1101, 0x116C, 0x11B0] },
+{ source: [0xAF8A], NFC: [0xAF8A], NFD: [0x1101, 0x116C, 0x11B1], NFKC: [0xAF8A], NFKD: [0x1101, 0x116C, 0x11B1] },
+{ source: [0xAF8B], NFC: [0xAF8B], NFD: [0x1101, 0x116C, 0x11B2], NFKC: [0xAF8B], NFKD: [0x1101, 0x116C, 0x11B2] },
+{ source: [0xAF8C], NFC: [0xAF8C], NFD: [0x1101, 0x116C, 0x11B3], NFKC: [0xAF8C], NFKD: [0x1101, 0x116C, 0x11B3] },
+{ source: [0xAF8D], NFC: [0xAF8D], NFD: [0x1101, 0x116C, 0x11B4], NFKC: [0xAF8D], NFKD: [0x1101, 0x116C, 0x11B4] },
+{ source: [0xAF8E], NFC: [0xAF8E], NFD: [0x1101, 0x116C, 0x11B5], NFKC: [0xAF8E], NFKD: [0x1101, 0x116C, 0x11B5] },
+{ source: [0xAF8F], NFC: [0xAF8F], NFD: [0x1101, 0x116C, 0x11B6], NFKC: [0xAF8F], NFKD: [0x1101, 0x116C, 0x11B6] },
+{ source: [0xAF90], NFC: [0xAF90], NFD: [0x1101, 0x116C, 0x11B7], NFKC: [0xAF90], NFKD: [0x1101, 0x116C, 0x11B7] },
+{ source: [0xAF91], NFC: [0xAF91], NFD: [0x1101, 0x116C, 0x11B8], NFKC: [0xAF91], NFKD: [0x1101, 0x116C, 0x11B8] },
+{ source: [0xAF92], NFC: [0xAF92], NFD: [0x1101, 0x116C, 0x11B9], NFKC: [0xAF92], NFKD: [0x1101, 0x116C, 0x11B9] },
+{ source: [0xAF93], NFC: [0xAF93], NFD: [0x1101, 0x116C, 0x11BA], NFKC: [0xAF93], NFKD: [0x1101, 0x116C, 0x11BA] },
+{ source: [0xAF94], NFC: [0xAF94], NFD: [0x1101, 0x116C, 0x11BB], NFKC: [0xAF94], NFKD: [0x1101, 0x116C, 0x11BB] },
+{ source: [0xAF95], NFC: [0xAF95], NFD: [0x1101, 0x116C, 0x11BC], NFKC: [0xAF95], NFKD: [0x1101, 0x116C, 0x11BC] },
+{ source: [0xAF96], NFC: [0xAF96], NFD: [0x1101, 0x116C, 0x11BD], NFKC: [0xAF96], NFKD: [0x1101, 0x116C, 0x11BD] },
+{ source: [0xAF97], NFC: [0xAF97], NFD: [0x1101, 0x116C, 0x11BE], NFKC: [0xAF97], NFKD: [0x1101, 0x116C, 0x11BE] },
+{ source: [0xAF98], NFC: [0xAF98], NFD: [0x1101, 0x116C, 0x11BF], NFKC: [0xAF98], NFKD: [0x1101, 0x116C, 0x11BF] },
+{ source: [0xAF99], NFC: [0xAF99], NFD: [0x1101, 0x116C, 0x11C0], NFKC: [0xAF99], NFKD: [0x1101, 0x116C, 0x11C0] },
+{ source: [0xAF9A], NFC: [0xAF9A], NFD: [0x1101, 0x116C, 0x11C1], NFKC: [0xAF9A], NFKD: [0x1101, 0x116C, 0x11C1] },
+{ source: [0xAF9B], NFC: [0xAF9B], NFD: [0x1101, 0x116C, 0x11C2], NFKC: [0xAF9B], NFKD: [0x1101, 0x116C, 0x11C2] },
+{ source: [0xAF9C], NFC: [0xAF9C], NFD: [0x1101, 0x116D], NFKC: [0xAF9C], NFKD: [0x1101, 0x116D] },
+{ source: [0xAF9D], NFC: [0xAF9D], NFD: [0x1101, 0x116D, 0x11A8], NFKC: [0xAF9D], NFKD: [0x1101, 0x116D, 0x11A8] },
+{ source: [0xAF9E], NFC: [0xAF9E], NFD: [0x1101, 0x116D, 0x11A9], NFKC: [0xAF9E], NFKD: [0x1101, 0x116D, 0x11A9] },
+{ source: [0xAF9F], NFC: [0xAF9F], NFD: [0x1101, 0x116D, 0x11AA], NFKC: [0xAF9F], NFKD: [0x1101, 0x116D, 0x11AA] },
+{ source: [0xAFA0], NFC: [0xAFA0], NFD: [0x1101, 0x116D, 0x11AB], NFKC: [0xAFA0], NFKD: [0x1101, 0x116D, 0x11AB] },
+{ source: [0xAFA1], NFC: [0xAFA1], NFD: [0x1101, 0x116D, 0x11AC], NFKC: [0xAFA1], NFKD: [0x1101, 0x116D, 0x11AC] },
+{ source: [0xAFA2], NFC: [0xAFA2], NFD: [0x1101, 0x116D, 0x11AD], NFKC: [0xAFA2], NFKD: [0x1101, 0x116D, 0x11AD] },
+{ source: [0xAFA3], NFC: [0xAFA3], NFD: [0x1101, 0x116D, 0x11AE], NFKC: [0xAFA3], NFKD: [0x1101, 0x116D, 0x11AE] },
+{ source: [0xAFA4], NFC: [0xAFA4], NFD: [0x1101, 0x116D, 0x11AF], NFKC: [0xAFA4], NFKD: [0x1101, 0x116D, 0x11AF] },
+{ source: [0xAFA5], NFC: [0xAFA5], NFD: [0x1101, 0x116D, 0x11B0], NFKC: [0xAFA5], NFKD: [0x1101, 0x116D, 0x11B0] },
+{ source: [0xAFA6], NFC: [0xAFA6], NFD: [0x1101, 0x116D, 0x11B1], NFKC: [0xAFA6], NFKD: [0x1101, 0x116D, 0x11B1] },
+{ source: [0xAFA7], NFC: [0xAFA7], NFD: [0x1101, 0x116D, 0x11B2], NFKC: [0xAFA7], NFKD: [0x1101, 0x116D, 0x11B2] },
+{ source: [0xAFA8], NFC: [0xAFA8], NFD: [0x1101, 0x116D, 0x11B3], NFKC: [0xAFA8], NFKD: [0x1101, 0x116D, 0x11B3] },
+{ source: [0xAFA9], NFC: [0xAFA9], NFD: [0x1101, 0x116D, 0x11B4], NFKC: [0xAFA9], NFKD: [0x1101, 0x116D, 0x11B4] },
+{ source: [0xAFAA], NFC: [0xAFAA], NFD: [0x1101, 0x116D, 0x11B5], NFKC: [0xAFAA], NFKD: [0x1101, 0x116D, 0x11B5] },
+{ source: [0xAFAB], NFC: [0xAFAB], NFD: [0x1101, 0x116D, 0x11B6], NFKC: [0xAFAB], NFKD: [0x1101, 0x116D, 0x11B6] },
+{ source: [0xAFAC], NFC: [0xAFAC], NFD: [0x1101, 0x116D, 0x11B7], NFKC: [0xAFAC], NFKD: [0x1101, 0x116D, 0x11B7] },
+{ source: [0xAFAD], NFC: [0xAFAD], NFD: [0x1101, 0x116D, 0x11B8], NFKC: [0xAFAD], NFKD: [0x1101, 0x116D, 0x11B8] },
+{ source: [0xAFAE], NFC: [0xAFAE], NFD: [0x1101, 0x116D, 0x11B9], NFKC: [0xAFAE], NFKD: [0x1101, 0x116D, 0x11B9] },
+{ source: [0xAFAF], NFC: [0xAFAF], NFD: [0x1101, 0x116D, 0x11BA], NFKC: [0xAFAF], NFKD: [0x1101, 0x116D, 0x11BA] },
+{ source: [0xAFB0], NFC: [0xAFB0], NFD: [0x1101, 0x116D, 0x11BB], NFKC: [0xAFB0], NFKD: [0x1101, 0x116D, 0x11BB] },
+{ source: [0xAFB1], NFC: [0xAFB1], NFD: [0x1101, 0x116D, 0x11BC], NFKC: [0xAFB1], NFKD: [0x1101, 0x116D, 0x11BC] },
+{ source: [0xAFB2], NFC: [0xAFB2], NFD: [0x1101, 0x116D, 0x11BD], NFKC: [0xAFB2], NFKD: [0x1101, 0x116D, 0x11BD] },
+{ source: [0xAFB3], NFC: [0xAFB3], NFD: [0x1101, 0x116D, 0x11BE], NFKC: [0xAFB3], NFKD: [0x1101, 0x116D, 0x11BE] },
+{ source: [0xAFB4], NFC: [0xAFB4], NFD: [0x1101, 0x116D, 0x11BF], NFKC: [0xAFB4], NFKD: [0x1101, 0x116D, 0x11BF] },
+{ source: [0xAFB5], NFC: [0xAFB5], NFD: [0x1101, 0x116D, 0x11C0], NFKC: [0xAFB5], NFKD: [0x1101, 0x116D, 0x11C0] },
+{ source: [0xAFB6], NFC: [0xAFB6], NFD: [0x1101, 0x116D, 0x11C1], NFKC: [0xAFB6], NFKD: [0x1101, 0x116D, 0x11C1] },
+{ source: [0xAFB7], NFC: [0xAFB7], NFD: [0x1101, 0x116D, 0x11C2], NFKC: [0xAFB7], NFKD: [0x1101, 0x116D, 0x11C2] },
+{ source: [0xAFB8], NFC: [0xAFB8], NFD: [0x1101, 0x116E], NFKC: [0xAFB8], NFKD: [0x1101, 0x116E] },
+{ source: [0xAFB9], NFC: [0xAFB9], NFD: [0x1101, 0x116E, 0x11A8], NFKC: [0xAFB9], NFKD: [0x1101, 0x116E, 0x11A8] },
+{ source: [0xAFBA], NFC: [0xAFBA], NFD: [0x1101, 0x116E, 0x11A9], NFKC: [0xAFBA], NFKD: [0x1101, 0x116E, 0x11A9] },
+{ source: [0xAFBB], NFC: [0xAFBB], NFD: [0x1101, 0x116E, 0x11AA], NFKC: [0xAFBB], NFKD: [0x1101, 0x116E, 0x11AA] },
+{ source: [0xAFBC], NFC: [0xAFBC], NFD: [0x1101, 0x116E, 0x11AB], NFKC: [0xAFBC], NFKD: [0x1101, 0x116E, 0x11AB] },
+{ source: [0xAFBD], NFC: [0xAFBD], NFD: [0x1101, 0x116E, 0x11AC], NFKC: [0xAFBD], NFKD: [0x1101, 0x116E, 0x11AC] },
+{ source: [0xAFBE], NFC: [0xAFBE], NFD: [0x1101, 0x116E, 0x11AD], NFKC: [0xAFBE], NFKD: [0x1101, 0x116E, 0x11AD] },
+{ source: [0xAFBF], NFC: [0xAFBF], NFD: [0x1101, 0x116E, 0x11AE], NFKC: [0xAFBF], NFKD: [0x1101, 0x116E, 0x11AE] },
+{ source: [0xAFC0], NFC: [0xAFC0], NFD: [0x1101, 0x116E, 0x11AF], NFKC: [0xAFC0], NFKD: [0x1101, 0x116E, 0x11AF] },
+{ source: [0xAFC1], NFC: [0xAFC1], NFD: [0x1101, 0x116E, 0x11B0], NFKC: [0xAFC1], NFKD: [0x1101, 0x116E, 0x11B0] },
+{ source: [0xAFC2], NFC: [0xAFC2], NFD: [0x1101, 0x116E, 0x11B1], NFKC: [0xAFC2], NFKD: [0x1101, 0x116E, 0x11B1] },
+{ source: [0xAFC3], NFC: [0xAFC3], NFD: [0x1101, 0x116E, 0x11B2], NFKC: [0xAFC3], NFKD: [0x1101, 0x116E, 0x11B2] },
+{ source: [0xAFC4], NFC: [0xAFC4], NFD: [0x1101, 0x116E, 0x11B3], NFKC: [0xAFC4], NFKD: [0x1101, 0x116E, 0x11B3] },
+{ source: [0xAFC5], NFC: [0xAFC5], NFD: [0x1101, 0x116E, 0x11B4], NFKC: [0xAFC5], NFKD: [0x1101, 0x116E, 0x11B4] },
+{ source: [0xAFC6], NFC: [0xAFC6], NFD: [0x1101, 0x116E, 0x11B5], NFKC: [0xAFC6], NFKD: [0x1101, 0x116E, 0x11B5] },
+{ source: [0xAFC7], NFC: [0xAFC7], NFD: [0x1101, 0x116E, 0x11B6], NFKC: [0xAFC7], NFKD: [0x1101, 0x116E, 0x11B6] },
+{ source: [0xAFC8], NFC: [0xAFC8], NFD: [0x1101, 0x116E, 0x11B7], NFKC: [0xAFC8], NFKD: [0x1101, 0x116E, 0x11B7] },
+{ source: [0xAFC9], NFC: [0xAFC9], NFD: [0x1101, 0x116E, 0x11B8], NFKC: [0xAFC9], NFKD: [0x1101, 0x116E, 0x11B8] },
+{ source: [0xAFCA], NFC: [0xAFCA], NFD: [0x1101, 0x116E, 0x11B9], NFKC: [0xAFCA], NFKD: [0x1101, 0x116E, 0x11B9] },
+{ source: [0xAFCB], NFC: [0xAFCB], NFD: [0x1101, 0x116E, 0x11BA], NFKC: [0xAFCB], NFKD: [0x1101, 0x116E, 0x11BA] },
+{ source: [0xAFCC], NFC: [0xAFCC], NFD: [0x1101, 0x116E, 0x11BB], NFKC: [0xAFCC], NFKD: [0x1101, 0x116E, 0x11BB] },
+{ source: [0xAFCD], NFC: [0xAFCD], NFD: [0x1101, 0x116E, 0x11BC], NFKC: [0xAFCD], NFKD: [0x1101, 0x116E, 0x11BC] },
+{ source: [0xAFCE], NFC: [0xAFCE], NFD: [0x1101, 0x116E, 0x11BD], NFKC: [0xAFCE], NFKD: [0x1101, 0x116E, 0x11BD] },
+{ source: [0xAFCF], NFC: [0xAFCF], NFD: [0x1101, 0x116E, 0x11BE], NFKC: [0xAFCF], NFKD: [0x1101, 0x116E, 0x11BE] },
+{ source: [0xAFD0], NFC: [0xAFD0], NFD: [0x1101, 0x116E, 0x11BF], NFKC: [0xAFD0], NFKD: [0x1101, 0x116E, 0x11BF] },
+{ source: [0xAFD1], NFC: [0xAFD1], NFD: [0x1101, 0x116E, 0x11C0], NFKC: [0xAFD1], NFKD: [0x1101, 0x116E, 0x11C0] },
+{ source: [0xAFD2], NFC: [0xAFD2], NFD: [0x1101, 0x116E, 0x11C1], NFKC: [0xAFD2], NFKD: [0x1101, 0x116E, 0x11C1] },
+{ source: [0xAFD3], NFC: [0xAFD3], NFD: [0x1101, 0x116E, 0x11C2], NFKC: [0xAFD3], NFKD: [0x1101, 0x116E, 0x11C2] },
+{ source: [0xAFD4], NFC: [0xAFD4], NFD: [0x1101, 0x116F], NFKC: [0xAFD4], NFKD: [0x1101, 0x116F] },
+{ source: [0xAFD5], NFC: [0xAFD5], NFD: [0x1101, 0x116F, 0x11A8], NFKC: [0xAFD5], NFKD: [0x1101, 0x116F, 0x11A8] },
+{ source: [0xAFD6], NFC: [0xAFD6], NFD: [0x1101, 0x116F, 0x11A9], NFKC: [0xAFD6], NFKD: [0x1101, 0x116F, 0x11A9] },
+{ source: [0xAFD7], NFC: [0xAFD7], NFD: [0x1101, 0x116F, 0x11AA], NFKC: [0xAFD7], NFKD: [0x1101, 0x116F, 0x11AA] },
+{ source: [0xAFD8], NFC: [0xAFD8], NFD: [0x1101, 0x116F, 0x11AB], NFKC: [0xAFD8], NFKD: [0x1101, 0x116F, 0x11AB] },
+{ source: [0xAFD9], NFC: [0xAFD9], NFD: [0x1101, 0x116F, 0x11AC], NFKC: [0xAFD9], NFKD: [0x1101, 0x116F, 0x11AC] },
+{ source: [0xAFDA], NFC: [0xAFDA], NFD: [0x1101, 0x116F, 0x11AD], NFKC: [0xAFDA], NFKD: [0x1101, 0x116F, 0x11AD] },
+{ source: [0xAFDB], NFC: [0xAFDB], NFD: [0x1101, 0x116F, 0x11AE], NFKC: [0xAFDB], NFKD: [0x1101, 0x116F, 0x11AE] },
+{ source: [0xAFDC], NFC: [0xAFDC], NFD: [0x1101, 0x116F, 0x11AF], NFKC: [0xAFDC], NFKD: [0x1101, 0x116F, 0x11AF] },
+{ source: [0xAFDD], NFC: [0xAFDD], NFD: [0x1101, 0x116F, 0x11B0], NFKC: [0xAFDD], NFKD: [0x1101, 0x116F, 0x11B0] },
+{ source: [0xAFDE], NFC: [0xAFDE], NFD: [0x1101, 0x116F, 0x11B1], NFKC: [0xAFDE], NFKD: [0x1101, 0x116F, 0x11B1] },
+{ source: [0xAFDF], NFC: [0xAFDF], NFD: [0x1101, 0x116F, 0x11B2], NFKC: [0xAFDF], NFKD: [0x1101, 0x116F, 0x11B2] },
+{ source: [0xAFE0], NFC: [0xAFE0], NFD: [0x1101, 0x116F, 0x11B3], NFKC: [0xAFE0], NFKD: [0x1101, 0x116F, 0x11B3] },
+{ source: [0xAFE1], NFC: [0xAFE1], NFD: [0x1101, 0x116F, 0x11B4], NFKC: [0xAFE1], NFKD: [0x1101, 0x116F, 0x11B4] },
+{ source: [0xAFE2], NFC: [0xAFE2], NFD: [0x1101, 0x116F, 0x11B5], NFKC: [0xAFE2], NFKD: [0x1101, 0x116F, 0x11B5] },
+{ source: [0xAFE3], NFC: [0xAFE3], NFD: [0x1101, 0x116F, 0x11B6], NFKC: [0xAFE3], NFKD: [0x1101, 0x116F, 0x11B6] },
+{ source: [0xAFE4], NFC: [0xAFE4], NFD: [0x1101, 0x116F, 0x11B7], NFKC: [0xAFE4], NFKD: [0x1101, 0x116F, 0x11B7] },
+{ source: [0xAFE5], NFC: [0xAFE5], NFD: [0x1101, 0x116F, 0x11B8], NFKC: [0xAFE5], NFKD: [0x1101, 0x116F, 0x11B8] },
+{ source: [0xAFE6], NFC: [0xAFE6], NFD: [0x1101, 0x116F, 0x11B9], NFKC: [0xAFE6], NFKD: [0x1101, 0x116F, 0x11B9] },
+{ source: [0xAFE7], NFC: [0xAFE7], NFD: [0x1101, 0x116F, 0x11BA], NFKC: [0xAFE7], NFKD: [0x1101, 0x116F, 0x11BA] },
+{ source: [0xAFE8], NFC: [0xAFE8], NFD: [0x1101, 0x116F, 0x11BB], NFKC: [0xAFE8], NFKD: [0x1101, 0x116F, 0x11BB] },
+{ source: [0xAFE9], NFC: [0xAFE9], NFD: [0x1101, 0x116F, 0x11BC], NFKC: [0xAFE9], NFKD: [0x1101, 0x116F, 0x11BC] },
+{ source: [0xAFEA], NFC: [0xAFEA], NFD: [0x1101, 0x116F, 0x11BD], NFKC: [0xAFEA], NFKD: [0x1101, 0x116F, 0x11BD] },
+{ source: [0xAFEB], NFC: [0xAFEB], NFD: [0x1101, 0x116F, 0x11BE], NFKC: [0xAFEB], NFKD: [0x1101, 0x116F, 0x11BE] },
+{ source: [0xAFEC], NFC: [0xAFEC], NFD: [0x1101, 0x116F, 0x11BF], NFKC: [0xAFEC], NFKD: [0x1101, 0x116F, 0x11BF] },
+{ source: [0xAFED], NFC: [0xAFED], NFD: [0x1101, 0x116F, 0x11C0], NFKC: [0xAFED], NFKD: [0x1101, 0x116F, 0x11C0] },
+{ source: [0xAFEE], NFC: [0xAFEE], NFD: [0x1101, 0x116F, 0x11C1], NFKC: [0xAFEE], NFKD: [0x1101, 0x116F, 0x11C1] },
+{ source: [0xAFEF], NFC: [0xAFEF], NFD: [0x1101, 0x116F, 0x11C2], NFKC: [0xAFEF], NFKD: [0x1101, 0x116F, 0x11C2] },
+{ source: [0xAFF0], NFC: [0xAFF0], NFD: [0x1101, 0x1170], NFKC: [0xAFF0], NFKD: [0x1101, 0x1170] },
+{ source: [0xAFF1], NFC: [0xAFF1], NFD: [0x1101, 0x1170, 0x11A8], NFKC: [0xAFF1], NFKD: [0x1101, 0x1170, 0x11A8] },
+{ source: [0xAFF2], NFC: [0xAFF2], NFD: [0x1101, 0x1170, 0x11A9], NFKC: [0xAFF2], NFKD: [0x1101, 0x1170, 0x11A9] },
+{ source: [0xAFF3], NFC: [0xAFF3], NFD: [0x1101, 0x1170, 0x11AA], NFKC: [0xAFF3], NFKD: [0x1101, 0x1170, 0x11AA] },
+{ source: [0xAFF4], NFC: [0xAFF4], NFD: [0x1101, 0x1170, 0x11AB], NFKC: [0xAFF4], NFKD: [0x1101, 0x1170, 0x11AB] },
+{ source: [0xAFF5], NFC: [0xAFF5], NFD: [0x1101, 0x1170, 0x11AC], NFKC: [0xAFF5], NFKD: [0x1101, 0x1170, 0x11AC] },
+{ source: [0xAFF6], NFC: [0xAFF6], NFD: [0x1101, 0x1170, 0x11AD], NFKC: [0xAFF6], NFKD: [0x1101, 0x1170, 0x11AD] },
+{ source: [0xAFF7], NFC: [0xAFF7], NFD: [0x1101, 0x1170, 0x11AE], NFKC: [0xAFF7], NFKD: [0x1101, 0x1170, 0x11AE] },
+{ source: [0xAFF8], NFC: [0xAFF8], NFD: [0x1101, 0x1170, 0x11AF], NFKC: [0xAFF8], NFKD: [0x1101, 0x1170, 0x11AF] },
+{ source: [0xAFF9], NFC: [0xAFF9], NFD: [0x1101, 0x1170, 0x11B0], NFKC: [0xAFF9], NFKD: [0x1101, 0x1170, 0x11B0] },
+{ source: [0xAFFA], NFC: [0xAFFA], NFD: [0x1101, 0x1170, 0x11B1], NFKC: [0xAFFA], NFKD: [0x1101, 0x1170, 0x11B1] },
+{ source: [0xAFFB], NFC: [0xAFFB], NFD: [0x1101, 0x1170, 0x11B2], NFKC: [0xAFFB], NFKD: [0x1101, 0x1170, 0x11B2] },
+{ source: [0xAFFC], NFC: [0xAFFC], NFD: [0x1101, 0x1170, 0x11B3], NFKC: [0xAFFC], NFKD: [0x1101, 0x1170, 0x11B3] },
+{ source: [0xAFFD], NFC: [0xAFFD], NFD: [0x1101, 0x1170, 0x11B4], NFKC: [0xAFFD], NFKD: [0x1101, 0x1170, 0x11B4] },
+{ source: [0xAFFE], NFC: [0xAFFE], NFD: [0x1101, 0x1170, 0x11B5], NFKC: [0xAFFE], NFKD: [0x1101, 0x1170, 0x11B5] },
+{ source: [0xAFFF], NFC: [0xAFFF], NFD: [0x1101, 0x1170, 0x11B6], NFKC: [0xAFFF], NFKD: [0x1101, 0x1170, 0x11B6] },
+{ source: [0xB000], NFC: [0xB000], NFD: [0x1101, 0x1170, 0x11B7], NFKC: [0xB000], NFKD: [0x1101, 0x1170, 0x11B7] },
+{ source: [0xB001], NFC: [0xB001], NFD: [0x1101, 0x1170, 0x11B8], NFKC: [0xB001], NFKD: [0x1101, 0x1170, 0x11B8] },
+{ source: [0xB002], NFC: [0xB002], NFD: [0x1101, 0x1170, 0x11B9], NFKC: [0xB002], NFKD: [0x1101, 0x1170, 0x11B9] },
+{ source: [0xB003], NFC: [0xB003], NFD: [0x1101, 0x1170, 0x11BA], NFKC: [0xB003], NFKD: [0x1101, 0x1170, 0x11BA] },
+{ source: [0xB004], NFC: [0xB004], NFD: [0x1101, 0x1170, 0x11BB], NFKC: [0xB004], NFKD: [0x1101, 0x1170, 0x11BB] },
+{ source: [0xB005], NFC: [0xB005], NFD: [0x1101, 0x1170, 0x11BC], NFKC: [0xB005], NFKD: [0x1101, 0x1170, 0x11BC] },
+{ source: [0xB006], NFC: [0xB006], NFD: [0x1101, 0x1170, 0x11BD], NFKC: [0xB006], NFKD: [0x1101, 0x1170, 0x11BD] },
+{ source: [0xB007], NFC: [0xB007], NFD: [0x1101, 0x1170, 0x11BE], NFKC: [0xB007], NFKD: [0x1101, 0x1170, 0x11BE] },
+{ source: [0xB008], NFC: [0xB008], NFD: [0x1101, 0x1170, 0x11BF], NFKC: [0xB008], NFKD: [0x1101, 0x1170, 0x11BF] },
+{ source: [0xB009], NFC: [0xB009], NFD: [0x1101, 0x1170, 0x11C0], NFKC: [0xB009], NFKD: [0x1101, 0x1170, 0x11C0] },
+{ source: [0xB00A], NFC: [0xB00A], NFD: [0x1101, 0x1170, 0x11C1], NFKC: [0xB00A], NFKD: [0x1101, 0x1170, 0x11C1] },
+{ source: [0xB00B], NFC: [0xB00B], NFD: [0x1101, 0x1170, 0x11C2], NFKC: [0xB00B], NFKD: [0x1101, 0x1170, 0x11C2] },
+{ source: [0xB00C], NFC: [0xB00C], NFD: [0x1101, 0x1171], NFKC: [0xB00C], NFKD: [0x1101, 0x1171] },
+{ source: [0xB00D], NFC: [0xB00D], NFD: [0x1101, 0x1171, 0x11A8], NFKC: [0xB00D], NFKD: [0x1101, 0x1171, 0x11A8] },
+{ source: [0xB00E], NFC: [0xB00E], NFD: [0x1101, 0x1171, 0x11A9], NFKC: [0xB00E], NFKD: [0x1101, 0x1171, 0x11A9] },
+{ source: [0xB00F], NFC: [0xB00F], NFD: [0x1101, 0x1171, 0x11AA], NFKC: [0xB00F], NFKD: [0x1101, 0x1171, 0x11AA] },
+{ source: [0xB010], NFC: [0xB010], NFD: [0x1101, 0x1171, 0x11AB], NFKC: [0xB010], NFKD: [0x1101, 0x1171, 0x11AB] },
+{ source: [0xB011], NFC: [0xB011], NFD: [0x1101, 0x1171, 0x11AC], NFKC: [0xB011], NFKD: [0x1101, 0x1171, 0x11AC] },
+{ source: [0xB012], NFC: [0xB012], NFD: [0x1101, 0x1171, 0x11AD], NFKC: [0xB012], NFKD: [0x1101, 0x1171, 0x11AD] },
+{ source: [0xB013], NFC: [0xB013], NFD: [0x1101, 0x1171, 0x11AE], NFKC: [0xB013], NFKD: [0x1101, 0x1171, 0x11AE] },
+{ source: [0xB014], NFC: [0xB014], NFD: [0x1101, 0x1171, 0x11AF], NFKC: [0xB014], NFKD: [0x1101, 0x1171, 0x11AF] },
+{ source: [0xB015], NFC: [0xB015], NFD: [0x1101, 0x1171, 0x11B0], NFKC: [0xB015], NFKD: [0x1101, 0x1171, 0x11B0] },
+{ source: [0xB016], NFC: [0xB016], NFD: [0x1101, 0x1171, 0x11B1], NFKC: [0xB016], NFKD: [0x1101, 0x1171, 0x11B1] },
+{ source: [0xB017], NFC: [0xB017], NFD: [0x1101, 0x1171, 0x11B2], NFKC: [0xB017], NFKD: [0x1101, 0x1171, 0x11B2] },
+{ source: [0xB018], NFC: [0xB018], NFD: [0x1101, 0x1171, 0x11B3], NFKC: [0xB018], NFKD: [0x1101, 0x1171, 0x11B3] },
+{ source: [0xB019], NFC: [0xB019], NFD: [0x1101, 0x1171, 0x11B4], NFKC: [0xB019], NFKD: [0x1101, 0x1171, 0x11B4] },
+{ source: [0xB01A], NFC: [0xB01A], NFD: [0x1101, 0x1171, 0x11B5], NFKC: [0xB01A], NFKD: [0x1101, 0x1171, 0x11B5] },
+{ source: [0xB01B], NFC: [0xB01B], NFD: [0x1101, 0x1171, 0x11B6], NFKC: [0xB01B], NFKD: [0x1101, 0x1171, 0x11B6] },
+{ source: [0xB01C], NFC: [0xB01C], NFD: [0x1101, 0x1171, 0x11B7], NFKC: [0xB01C], NFKD: [0x1101, 0x1171, 0x11B7] },
+{ source: [0xB01D], NFC: [0xB01D], NFD: [0x1101, 0x1171, 0x11B8], NFKC: [0xB01D], NFKD: [0x1101, 0x1171, 0x11B8] },
+{ source: [0xB01E], NFC: [0xB01E], NFD: [0x1101, 0x1171, 0x11B9], NFKC: [0xB01E], NFKD: [0x1101, 0x1171, 0x11B9] },
+{ source: [0xB01F], NFC: [0xB01F], NFD: [0x1101, 0x1171, 0x11BA], NFKC: [0xB01F], NFKD: [0x1101, 0x1171, 0x11BA] },
+{ source: [0xB020], NFC: [0xB020], NFD: [0x1101, 0x1171, 0x11BB], NFKC: [0xB020], NFKD: [0x1101, 0x1171, 0x11BB] },
+{ source: [0xB021], NFC: [0xB021], NFD: [0x1101, 0x1171, 0x11BC], NFKC: [0xB021], NFKD: [0x1101, 0x1171, 0x11BC] },
+{ source: [0xB022], NFC: [0xB022], NFD: [0x1101, 0x1171, 0x11BD], NFKC: [0xB022], NFKD: [0x1101, 0x1171, 0x11BD] },
+{ source: [0xB023], NFC: [0xB023], NFD: [0x1101, 0x1171, 0x11BE], NFKC: [0xB023], NFKD: [0x1101, 0x1171, 0x11BE] },
+{ source: [0xB024], NFC: [0xB024], NFD: [0x1101, 0x1171, 0x11BF], NFKC: [0xB024], NFKD: [0x1101, 0x1171, 0x11BF] },
+{ source: [0xB025], NFC: [0xB025], NFD: [0x1101, 0x1171, 0x11C0], NFKC: [0xB025], NFKD: [0x1101, 0x1171, 0x11C0] },
+{ source: [0xB026], NFC: [0xB026], NFD: [0x1101, 0x1171, 0x11C1], NFKC: [0xB026], NFKD: [0x1101, 0x1171, 0x11C1] },
+{ source: [0xB027], NFC: [0xB027], NFD: [0x1101, 0x1171, 0x11C2], NFKC: [0xB027], NFKD: [0x1101, 0x1171, 0x11C2] },
+{ source: [0xB028], NFC: [0xB028], NFD: [0x1101, 0x1172], NFKC: [0xB028], NFKD: [0x1101, 0x1172] },
+{ source: [0xB029], NFC: [0xB029], NFD: [0x1101, 0x1172, 0x11A8], NFKC: [0xB029], NFKD: [0x1101, 0x1172, 0x11A8] },
+{ source: [0xB02A], NFC: [0xB02A], NFD: [0x1101, 0x1172, 0x11A9], NFKC: [0xB02A], NFKD: [0x1101, 0x1172, 0x11A9] },
+{ source: [0xB02B], NFC: [0xB02B], NFD: [0x1101, 0x1172, 0x11AA], NFKC: [0xB02B], NFKD: [0x1101, 0x1172, 0x11AA] },
+{ source: [0xB02C], NFC: [0xB02C], NFD: [0x1101, 0x1172, 0x11AB], NFKC: [0xB02C], NFKD: [0x1101, 0x1172, 0x11AB] },
+{ source: [0xB02D], NFC: [0xB02D], NFD: [0x1101, 0x1172, 0x11AC], NFKC: [0xB02D], NFKD: [0x1101, 0x1172, 0x11AC] },
+{ source: [0xB02E], NFC: [0xB02E], NFD: [0x1101, 0x1172, 0x11AD], NFKC: [0xB02E], NFKD: [0x1101, 0x1172, 0x11AD] },
+{ source: [0xB02F], NFC: [0xB02F], NFD: [0x1101, 0x1172, 0x11AE], NFKC: [0xB02F], NFKD: [0x1101, 0x1172, 0x11AE] },
+{ source: [0xB030], NFC: [0xB030], NFD: [0x1101, 0x1172, 0x11AF], NFKC: [0xB030], NFKD: [0x1101, 0x1172, 0x11AF] },
+{ source: [0xB031], NFC: [0xB031], NFD: [0x1101, 0x1172, 0x11B0], NFKC: [0xB031], NFKD: [0x1101, 0x1172, 0x11B0] },
+{ source: [0xB032], NFC: [0xB032], NFD: [0x1101, 0x1172, 0x11B1], NFKC: [0xB032], NFKD: [0x1101, 0x1172, 0x11B1] },
+{ source: [0xB033], NFC: [0xB033], NFD: [0x1101, 0x1172, 0x11B2], NFKC: [0xB033], NFKD: [0x1101, 0x1172, 0x11B2] },
+{ source: [0xB034], NFC: [0xB034], NFD: [0x1101, 0x1172, 0x11B3], NFKC: [0xB034], NFKD: [0x1101, 0x1172, 0x11B3] },
+{ source: [0xB035], NFC: [0xB035], NFD: [0x1101, 0x1172, 0x11B4], NFKC: [0xB035], NFKD: [0x1101, 0x1172, 0x11B4] },
+{ source: [0xB036], NFC: [0xB036], NFD: [0x1101, 0x1172, 0x11B5], NFKC: [0xB036], NFKD: [0x1101, 0x1172, 0x11B5] },
+{ source: [0xB037], NFC: [0xB037], NFD: [0x1101, 0x1172, 0x11B6], NFKC: [0xB037], NFKD: [0x1101, 0x1172, 0x11B6] },
+{ source: [0xB038], NFC: [0xB038], NFD: [0x1101, 0x1172, 0x11B7], NFKC: [0xB038], NFKD: [0x1101, 0x1172, 0x11B7] },
+{ source: [0xB039], NFC: [0xB039], NFD: [0x1101, 0x1172, 0x11B8], NFKC: [0xB039], NFKD: [0x1101, 0x1172, 0x11B8] },
+{ source: [0xB03A], NFC: [0xB03A], NFD: [0x1101, 0x1172, 0x11B9], NFKC: [0xB03A], NFKD: [0x1101, 0x1172, 0x11B9] },
+{ source: [0xB03B], NFC: [0xB03B], NFD: [0x1101, 0x1172, 0x11BA], NFKC: [0xB03B], NFKD: [0x1101, 0x1172, 0x11BA] },
+{ source: [0xB03C], NFC: [0xB03C], NFD: [0x1101, 0x1172, 0x11BB], NFKC: [0xB03C], NFKD: [0x1101, 0x1172, 0x11BB] },
+{ source: [0xB03D], NFC: [0xB03D], NFD: [0x1101, 0x1172, 0x11BC], NFKC: [0xB03D], NFKD: [0x1101, 0x1172, 0x11BC] },
+{ source: [0xB03E], NFC: [0xB03E], NFD: [0x1101, 0x1172, 0x11BD], NFKC: [0xB03E], NFKD: [0x1101, 0x1172, 0x11BD] },
+{ source: [0xB03F], NFC: [0xB03F], NFD: [0x1101, 0x1172, 0x11BE], NFKC: [0xB03F], NFKD: [0x1101, 0x1172, 0x11BE] },
+{ source: [0xB040], NFC: [0xB040], NFD: [0x1101, 0x1172, 0x11BF], NFKC: [0xB040], NFKD: [0x1101, 0x1172, 0x11BF] },
+{ source: [0xB041], NFC: [0xB041], NFD: [0x1101, 0x1172, 0x11C0], NFKC: [0xB041], NFKD: [0x1101, 0x1172, 0x11C0] },
+{ source: [0xB042], NFC: [0xB042], NFD: [0x1101, 0x1172, 0x11C1], NFKC: [0xB042], NFKD: [0x1101, 0x1172, 0x11C1] },
+{ source: [0xB043], NFC: [0xB043], NFD: [0x1101, 0x1172, 0x11C2], NFKC: [0xB043], NFKD: [0x1101, 0x1172, 0x11C2] },
+{ source: [0xB044], NFC: [0xB044], NFD: [0x1101, 0x1173], NFKC: [0xB044], NFKD: [0x1101, 0x1173] },
+{ source: [0xB045], NFC: [0xB045], NFD: [0x1101, 0x1173, 0x11A8], NFKC: [0xB045], NFKD: [0x1101, 0x1173, 0x11A8] },
+{ source: [0xB046], NFC: [0xB046], NFD: [0x1101, 0x1173, 0x11A9], NFKC: [0xB046], NFKD: [0x1101, 0x1173, 0x11A9] },
+{ source: [0xB047], NFC: [0xB047], NFD: [0x1101, 0x1173, 0x11AA], NFKC: [0xB047], NFKD: [0x1101, 0x1173, 0x11AA] },
+{ source: [0xB048], NFC: [0xB048], NFD: [0x1101, 0x1173, 0x11AB], NFKC: [0xB048], NFKD: [0x1101, 0x1173, 0x11AB] },
+{ source: [0xB049], NFC: [0xB049], NFD: [0x1101, 0x1173, 0x11AC], NFKC: [0xB049], NFKD: [0x1101, 0x1173, 0x11AC] },
+{ source: [0xB04A], NFC: [0xB04A], NFD: [0x1101, 0x1173, 0x11AD], NFKC: [0xB04A], NFKD: [0x1101, 0x1173, 0x11AD] },
+{ source: [0xB04B], NFC: [0xB04B], NFD: [0x1101, 0x1173, 0x11AE], NFKC: [0xB04B], NFKD: [0x1101, 0x1173, 0x11AE] },
+{ source: [0xB04C], NFC: [0xB04C], NFD: [0x1101, 0x1173, 0x11AF], NFKC: [0xB04C], NFKD: [0x1101, 0x1173, 0x11AF] },
+{ source: [0xB04D], NFC: [0xB04D], NFD: [0x1101, 0x1173, 0x11B0], NFKC: [0xB04D], NFKD: [0x1101, 0x1173, 0x11B0] },
+{ source: [0xB04E], NFC: [0xB04E], NFD: [0x1101, 0x1173, 0x11B1], NFKC: [0xB04E], NFKD: [0x1101, 0x1173, 0x11B1] },
+{ source: [0xB04F], NFC: [0xB04F], NFD: [0x1101, 0x1173, 0x11B2], NFKC: [0xB04F], NFKD: [0x1101, 0x1173, 0x11B2] },
+{ source: [0xB050], NFC: [0xB050], NFD: [0x1101, 0x1173, 0x11B3], NFKC: [0xB050], NFKD: [0x1101, 0x1173, 0x11B3] },
+{ source: [0xB051], NFC: [0xB051], NFD: [0x1101, 0x1173, 0x11B4], NFKC: [0xB051], NFKD: [0x1101, 0x1173, 0x11B4] },
+{ source: [0xB052], NFC: [0xB052], NFD: [0x1101, 0x1173, 0x11B5], NFKC: [0xB052], NFKD: [0x1101, 0x1173, 0x11B5] },
+{ source: [0xB053], NFC: [0xB053], NFD: [0x1101, 0x1173, 0x11B6], NFKC: [0xB053], NFKD: [0x1101, 0x1173, 0x11B6] },
+{ source: [0xB054], NFC: [0xB054], NFD: [0x1101, 0x1173, 0x11B7], NFKC: [0xB054], NFKD: [0x1101, 0x1173, 0x11B7] },
+{ source: [0xB055], NFC: [0xB055], NFD: [0x1101, 0x1173, 0x11B8], NFKC: [0xB055], NFKD: [0x1101, 0x1173, 0x11B8] },
+{ source: [0xB056], NFC: [0xB056], NFD: [0x1101, 0x1173, 0x11B9], NFKC: [0xB056], NFKD: [0x1101, 0x1173, 0x11B9] },
+{ source: [0xB057], NFC: [0xB057], NFD: [0x1101, 0x1173, 0x11BA], NFKC: [0xB057], NFKD: [0x1101, 0x1173, 0x11BA] },
+{ source: [0xB058], NFC: [0xB058], NFD: [0x1101, 0x1173, 0x11BB], NFKC: [0xB058], NFKD: [0x1101, 0x1173, 0x11BB] },
+{ source: [0xB059], NFC: [0xB059], NFD: [0x1101, 0x1173, 0x11BC], NFKC: [0xB059], NFKD: [0x1101, 0x1173, 0x11BC] },
+{ source: [0xB05A], NFC: [0xB05A], NFD: [0x1101, 0x1173, 0x11BD], NFKC: [0xB05A], NFKD: [0x1101, 0x1173, 0x11BD] },
+{ source: [0xB05B], NFC: [0xB05B], NFD: [0x1101, 0x1173, 0x11BE], NFKC: [0xB05B], NFKD: [0x1101, 0x1173, 0x11BE] },
+{ source: [0xB05C], NFC: [0xB05C], NFD: [0x1101, 0x1173, 0x11BF], NFKC: [0xB05C], NFKD: [0x1101, 0x1173, 0x11BF] },
+{ source: [0xB05D], NFC: [0xB05D], NFD: [0x1101, 0x1173, 0x11C0], NFKC: [0xB05D], NFKD: [0x1101, 0x1173, 0x11C0] },
+{ source: [0xB05E], NFC: [0xB05E], NFD: [0x1101, 0x1173, 0x11C1], NFKC: [0xB05E], NFKD: [0x1101, 0x1173, 0x11C1] },
+{ source: [0xB05F], NFC: [0xB05F], NFD: [0x1101, 0x1173, 0x11C2], NFKC: [0xB05F], NFKD: [0x1101, 0x1173, 0x11C2] },
+{ source: [0xB060], NFC: [0xB060], NFD: [0x1101, 0x1174], NFKC: [0xB060], NFKD: [0x1101, 0x1174] },
+{ source: [0xB061], NFC: [0xB061], NFD: [0x1101, 0x1174, 0x11A8], NFKC: [0xB061], NFKD: [0x1101, 0x1174, 0x11A8] },
+{ source: [0xB062], NFC: [0xB062], NFD: [0x1101, 0x1174, 0x11A9], NFKC: [0xB062], NFKD: [0x1101, 0x1174, 0x11A9] },
+{ source: [0xB063], NFC: [0xB063], NFD: [0x1101, 0x1174, 0x11AA], NFKC: [0xB063], NFKD: [0x1101, 0x1174, 0x11AA] },
+{ source: [0xB064], NFC: [0xB064], NFD: [0x1101, 0x1174, 0x11AB], NFKC: [0xB064], NFKD: [0x1101, 0x1174, 0x11AB] },
+{ source: [0xB065], NFC: [0xB065], NFD: [0x1101, 0x1174, 0x11AC], NFKC: [0xB065], NFKD: [0x1101, 0x1174, 0x11AC] },
+{ source: [0xB066], NFC: [0xB066], NFD: [0x1101, 0x1174, 0x11AD], NFKC: [0xB066], NFKD: [0x1101, 0x1174, 0x11AD] },
+{ source: [0xB067], NFC: [0xB067], NFD: [0x1101, 0x1174, 0x11AE], NFKC: [0xB067], NFKD: [0x1101, 0x1174, 0x11AE] },
+{ source: [0xB068], NFC: [0xB068], NFD: [0x1101, 0x1174, 0x11AF], NFKC: [0xB068], NFKD: [0x1101, 0x1174, 0x11AF] },
+{ source: [0xB069], NFC: [0xB069], NFD: [0x1101, 0x1174, 0x11B0], NFKC: [0xB069], NFKD: [0x1101, 0x1174, 0x11B0] },
+{ source: [0xB06A], NFC: [0xB06A], NFD: [0x1101, 0x1174, 0x11B1], NFKC: [0xB06A], NFKD: [0x1101, 0x1174, 0x11B1] },
+{ source: [0xB06B], NFC: [0xB06B], NFD: [0x1101, 0x1174, 0x11B2], NFKC: [0xB06B], NFKD: [0x1101, 0x1174, 0x11B2] },
+{ source: [0xB06C], NFC: [0xB06C], NFD: [0x1101, 0x1174, 0x11B3], NFKC: [0xB06C], NFKD: [0x1101, 0x1174, 0x11B3] },
+{ source: [0xB06D], NFC: [0xB06D], NFD: [0x1101, 0x1174, 0x11B4], NFKC: [0xB06D], NFKD: [0x1101, 0x1174, 0x11B4] },
+{ source: [0xB06E], NFC: [0xB06E], NFD: [0x1101, 0x1174, 0x11B5], NFKC: [0xB06E], NFKD: [0x1101, 0x1174, 0x11B5] },
+{ source: [0xB06F], NFC: [0xB06F], NFD: [0x1101, 0x1174, 0x11B6], NFKC: [0xB06F], NFKD: [0x1101, 0x1174, 0x11B6] },
+{ source: [0xB070], NFC: [0xB070], NFD: [0x1101, 0x1174, 0x11B7], NFKC: [0xB070], NFKD: [0x1101, 0x1174, 0x11B7] },
+{ source: [0xB071], NFC: [0xB071], NFD: [0x1101, 0x1174, 0x11B8], NFKC: [0xB071], NFKD: [0x1101, 0x1174, 0x11B8] },
+{ source: [0xB072], NFC: [0xB072], NFD: [0x1101, 0x1174, 0x11B9], NFKC: [0xB072], NFKD: [0x1101, 0x1174, 0x11B9] },
+{ source: [0xB073], NFC: [0xB073], NFD: [0x1101, 0x1174, 0x11BA], NFKC: [0xB073], NFKD: [0x1101, 0x1174, 0x11BA] },
+{ source: [0xB074], NFC: [0xB074], NFD: [0x1101, 0x1174, 0x11BB], NFKC: [0xB074], NFKD: [0x1101, 0x1174, 0x11BB] },
+{ source: [0xB075], NFC: [0xB075], NFD: [0x1101, 0x1174, 0x11BC], NFKC: [0xB075], NFKD: [0x1101, 0x1174, 0x11BC] },
+{ source: [0xB076], NFC: [0xB076], NFD: [0x1101, 0x1174, 0x11BD], NFKC: [0xB076], NFKD: [0x1101, 0x1174, 0x11BD] },
+{ source: [0xB077], NFC: [0xB077], NFD: [0x1101, 0x1174, 0x11BE], NFKC: [0xB077], NFKD: [0x1101, 0x1174, 0x11BE] },
+{ source: [0xB078], NFC: [0xB078], NFD: [0x1101, 0x1174, 0x11BF], NFKC: [0xB078], NFKD: [0x1101, 0x1174, 0x11BF] },
+{ source: [0xB079], NFC: [0xB079], NFD: [0x1101, 0x1174, 0x11C0], NFKC: [0xB079], NFKD: [0x1101, 0x1174, 0x11C0] },
+{ source: [0xB07A], NFC: [0xB07A], NFD: [0x1101, 0x1174, 0x11C1], NFKC: [0xB07A], NFKD: [0x1101, 0x1174, 0x11C1] },
+{ source: [0xB07B], NFC: [0xB07B], NFD: [0x1101, 0x1174, 0x11C2], NFKC: [0xB07B], NFKD: [0x1101, 0x1174, 0x11C2] },
+{ source: [0xB07C], NFC: [0xB07C], NFD: [0x1101, 0x1175], NFKC: [0xB07C], NFKD: [0x1101, 0x1175] },
+{ source: [0xB07D], NFC: [0xB07D], NFD: [0x1101, 0x1175, 0x11A8], NFKC: [0xB07D], NFKD: [0x1101, 0x1175, 0x11A8] },
+{ source: [0xB07E], NFC: [0xB07E], NFD: [0x1101, 0x1175, 0x11A9], NFKC: [0xB07E], NFKD: [0x1101, 0x1175, 0x11A9] },
+{ source: [0xB07F], NFC: [0xB07F], NFD: [0x1101, 0x1175, 0x11AA], NFKC: [0xB07F], NFKD: [0x1101, 0x1175, 0x11AA] },
+{ source: [0xB080], NFC: [0xB080], NFD: [0x1101, 0x1175, 0x11AB], NFKC: [0xB080], NFKD: [0x1101, 0x1175, 0x11AB] },
+{ source: [0xB081], NFC: [0xB081], NFD: [0x1101, 0x1175, 0x11AC], NFKC: [0xB081], NFKD: [0x1101, 0x1175, 0x11AC] },
+{ source: [0xB082], NFC: [0xB082], NFD: [0x1101, 0x1175, 0x11AD], NFKC: [0xB082], NFKD: [0x1101, 0x1175, 0x11AD] },
+{ source: [0xB083], NFC: [0xB083], NFD: [0x1101, 0x1175, 0x11AE], NFKC: [0xB083], NFKD: [0x1101, 0x1175, 0x11AE] },
+{ source: [0xB084], NFC: [0xB084], NFD: [0x1101, 0x1175, 0x11AF], NFKC: [0xB084], NFKD: [0x1101, 0x1175, 0x11AF] },
+{ source: [0xB085], NFC: [0xB085], NFD: [0x1101, 0x1175, 0x11B0], NFKC: [0xB085], NFKD: [0x1101, 0x1175, 0x11B0] },
+{ source: [0xB086], NFC: [0xB086], NFD: [0x1101, 0x1175, 0x11B1], NFKC: [0xB086], NFKD: [0x1101, 0x1175, 0x11B1] },
+{ source: [0xB087], NFC: [0xB087], NFD: [0x1101, 0x1175, 0x11B2], NFKC: [0xB087], NFKD: [0x1101, 0x1175, 0x11B2] },
+{ source: [0xB088], NFC: [0xB088], NFD: [0x1101, 0x1175, 0x11B3], NFKC: [0xB088], NFKD: [0x1101, 0x1175, 0x11B3] },
+{ source: [0xB089], NFC: [0xB089], NFD: [0x1101, 0x1175, 0x11B4], NFKC: [0xB089], NFKD: [0x1101, 0x1175, 0x11B4] },
+{ source: [0xB08A], NFC: [0xB08A], NFD: [0x1101, 0x1175, 0x11B5], NFKC: [0xB08A], NFKD: [0x1101, 0x1175, 0x11B5] },
+{ source: [0xB08B], NFC: [0xB08B], NFD: [0x1101, 0x1175, 0x11B6], NFKC: [0xB08B], NFKD: [0x1101, 0x1175, 0x11B6] },
+{ source: [0xB08C], NFC: [0xB08C], NFD: [0x1101, 0x1175, 0x11B7], NFKC: [0xB08C], NFKD: [0x1101, 0x1175, 0x11B7] },
+{ source: [0xB08D], NFC: [0xB08D], NFD: [0x1101, 0x1175, 0x11B8], NFKC: [0xB08D], NFKD: [0x1101, 0x1175, 0x11B8] },
+{ source: [0xB08E], NFC: [0xB08E], NFD: [0x1101, 0x1175, 0x11B9], NFKC: [0xB08E], NFKD: [0x1101, 0x1175, 0x11B9] },
+{ source: [0xB08F], NFC: [0xB08F], NFD: [0x1101, 0x1175, 0x11BA], NFKC: [0xB08F], NFKD: [0x1101, 0x1175, 0x11BA] },
+{ source: [0xB090], NFC: [0xB090], NFD: [0x1101, 0x1175, 0x11BB], NFKC: [0xB090], NFKD: [0x1101, 0x1175, 0x11BB] },
+{ source: [0xB091], NFC: [0xB091], NFD: [0x1101, 0x1175, 0x11BC], NFKC: [0xB091], NFKD: [0x1101, 0x1175, 0x11BC] },
+{ source: [0xB092], NFC: [0xB092], NFD: [0x1101, 0x1175, 0x11BD], NFKC: [0xB092], NFKD: [0x1101, 0x1175, 0x11BD] },
+{ source: [0xB093], NFC: [0xB093], NFD: [0x1101, 0x1175, 0x11BE], NFKC: [0xB093], NFKD: [0x1101, 0x1175, 0x11BE] },
+{ source: [0xB094], NFC: [0xB094], NFD: [0x1101, 0x1175, 0x11BF], NFKC: [0xB094], NFKD: [0x1101, 0x1175, 0x11BF] },
+{ source: [0xB095], NFC: [0xB095], NFD: [0x1101, 0x1175, 0x11C0], NFKC: [0xB095], NFKD: [0x1101, 0x1175, 0x11C0] },
+{ source: [0xB096], NFC: [0xB096], NFD: [0x1101, 0x1175, 0x11C1], NFKC: [0xB096], NFKD: [0x1101, 0x1175, 0x11C1] },
+{ source: [0xB097], NFC: [0xB097], NFD: [0x1101, 0x1175, 0x11C2], NFKC: [0xB097], NFKD: [0x1101, 0x1175, 0x11C2] },
+{ source: [0xB098], NFC: [0xB098], NFD: [0x1102, 0x1161], NFKC: [0xB098], NFKD: [0x1102, 0x1161] },
+{ source: [0xB099], NFC: [0xB099], NFD: [0x1102, 0x1161, 0x11A8], NFKC: [0xB099], NFKD: [0x1102, 0x1161, 0x11A8] },
+{ source: [0xB09A], NFC: [0xB09A], NFD: [0x1102, 0x1161, 0x11A9], NFKC: [0xB09A], NFKD: [0x1102, 0x1161, 0x11A9] },
+{ source: [0xB09B], NFC: [0xB09B], NFD: [0x1102, 0x1161, 0x11AA], NFKC: [0xB09B], NFKD: [0x1102, 0x1161, 0x11AA] },
+{ source: [0xB09C], NFC: [0xB09C], NFD: [0x1102, 0x1161, 0x11AB], NFKC: [0xB09C], NFKD: [0x1102, 0x1161, 0x11AB] },
+{ source: [0xB09D], NFC: [0xB09D], NFD: [0x1102, 0x1161, 0x11AC], NFKC: [0xB09D], NFKD: [0x1102, 0x1161, 0x11AC] },
+{ source: [0xB09E], NFC: [0xB09E], NFD: [0x1102, 0x1161, 0x11AD], NFKC: [0xB09E], NFKD: [0x1102, 0x1161, 0x11AD] },
+{ source: [0xB09F], NFC: [0xB09F], NFD: [0x1102, 0x1161, 0x11AE], NFKC: [0xB09F], NFKD: [0x1102, 0x1161, 0x11AE] },
+{ source: [0xB0A0], NFC: [0xB0A0], NFD: [0x1102, 0x1161, 0x11AF], NFKC: [0xB0A0], NFKD: [0x1102, 0x1161, 0x11AF] },
+{ source: [0xB0A1], NFC: [0xB0A1], NFD: [0x1102, 0x1161, 0x11B0], NFKC: [0xB0A1], NFKD: [0x1102, 0x1161, 0x11B0] },
+{ source: [0xB0A2], NFC: [0xB0A2], NFD: [0x1102, 0x1161, 0x11B1], NFKC: [0xB0A2], NFKD: [0x1102, 0x1161, 0x11B1] },
+{ source: [0xB0A3], NFC: [0xB0A3], NFD: [0x1102, 0x1161, 0x11B2], NFKC: [0xB0A3], NFKD: [0x1102, 0x1161, 0x11B2] },
+{ source: [0xB0A4], NFC: [0xB0A4], NFD: [0x1102, 0x1161, 0x11B3], NFKC: [0xB0A4], NFKD: [0x1102, 0x1161, 0x11B3] },
+{ source: [0xB0A5], NFC: [0xB0A5], NFD: [0x1102, 0x1161, 0x11B4], NFKC: [0xB0A5], NFKD: [0x1102, 0x1161, 0x11B4] },
+{ source: [0xB0A6], NFC: [0xB0A6], NFD: [0x1102, 0x1161, 0x11B5], NFKC: [0xB0A6], NFKD: [0x1102, 0x1161, 0x11B5] },
+{ source: [0xB0A7], NFC: [0xB0A7], NFD: [0x1102, 0x1161, 0x11B6], NFKC: [0xB0A7], NFKD: [0x1102, 0x1161, 0x11B6] },
+{ source: [0xB0A8], NFC: [0xB0A8], NFD: [0x1102, 0x1161, 0x11B7], NFKC: [0xB0A8], NFKD: [0x1102, 0x1161, 0x11B7] },
+{ source: [0xB0A9], NFC: [0xB0A9], NFD: [0x1102, 0x1161, 0x11B8], NFKC: [0xB0A9], NFKD: [0x1102, 0x1161, 0x11B8] },
+{ source: [0xB0AA], NFC: [0xB0AA], NFD: [0x1102, 0x1161, 0x11B9], NFKC: [0xB0AA], NFKD: [0x1102, 0x1161, 0x11B9] },
+{ source: [0xB0AB], NFC: [0xB0AB], NFD: [0x1102, 0x1161, 0x11BA], NFKC: [0xB0AB], NFKD: [0x1102, 0x1161, 0x11BA] },
+{ source: [0xB0AC], NFC: [0xB0AC], NFD: [0x1102, 0x1161, 0x11BB], NFKC: [0xB0AC], NFKD: [0x1102, 0x1161, 0x11BB] },
+{ source: [0xB0AD], NFC: [0xB0AD], NFD: [0x1102, 0x1161, 0x11BC], NFKC: [0xB0AD], NFKD: [0x1102, 0x1161, 0x11BC] },
+{ source: [0xB0AE], NFC: [0xB0AE], NFD: [0x1102, 0x1161, 0x11BD], NFKC: [0xB0AE], NFKD: [0x1102, 0x1161, 0x11BD] },
+{ source: [0xB0AF], NFC: [0xB0AF], NFD: [0x1102, 0x1161, 0x11BE], NFKC: [0xB0AF], NFKD: [0x1102, 0x1161, 0x11BE] },
+{ source: [0xB0B0], NFC: [0xB0B0], NFD: [0x1102, 0x1161, 0x11BF], NFKC: [0xB0B0], NFKD: [0x1102, 0x1161, 0x11BF] },
+{ source: [0xB0B1], NFC: [0xB0B1], NFD: [0x1102, 0x1161, 0x11C0], NFKC: [0xB0B1], NFKD: [0x1102, 0x1161, 0x11C0] },
+{ source: [0xB0B2], NFC: [0xB0B2], NFD: [0x1102, 0x1161, 0x11C1], NFKC: [0xB0B2], NFKD: [0x1102, 0x1161, 0x11C1] },
+{ source: [0xB0B3], NFC: [0xB0B3], NFD: [0x1102, 0x1161, 0x11C2], NFKC: [0xB0B3], NFKD: [0x1102, 0x1161, 0x11C2] },
+{ source: [0xB0B4], NFC: [0xB0B4], NFD: [0x1102, 0x1162], NFKC: [0xB0B4], NFKD: [0x1102, 0x1162] },
+{ source: [0xB0B5], NFC: [0xB0B5], NFD: [0x1102, 0x1162, 0x11A8], NFKC: [0xB0B5], NFKD: [0x1102, 0x1162, 0x11A8] },
+{ source: [0xB0B6], NFC: [0xB0B6], NFD: [0x1102, 0x1162, 0x11A9], NFKC: [0xB0B6], NFKD: [0x1102, 0x1162, 0x11A9] },
+{ source: [0xB0B7], NFC: [0xB0B7], NFD: [0x1102, 0x1162, 0x11AA], NFKC: [0xB0B7], NFKD: [0x1102, 0x1162, 0x11AA] },
+{ source: [0xB0B8], NFC: [0xB0B8], NFD: [0x1102, 0x1162, 0x11AB], NFKC: [0xB0B8], NFKD: [0x1102, 0x1162, 0x11AB] },
+{ source: [0xB0B9], NFC: [0xB0B9], NFD: [0x1102, 0x1162, 0x11AC], NFKC: [0xB0B9], NFKD: [0x1102, 0x1162, 0x11AC] },
+{ source: [0xB0BA], NFC: [0xB0BA], NFD: [0x1102, 0x1162, 0x11AD], NFKC: [0xB0BA], NFKD: [0x1102, 0x1162, 0x11AD] },
+{ source: [0xB0BB], NFC: [0xB0BB], NFD: [0x1102, 0x1162, 0x11AE], NFKC: [0xB0BB], NFKD: [0x1102, 0x1162, 0x11AE] },
+{ source: [0xB0BC], NFC: [0xB0BC], NFD: [0x1102, 0x1162, 0x11AF], NFKC: [0xB0BC], NFKD: [0x1102, 0x1162, 0x11AF] },
+{ source: [0xB0BD], NFC: [0xB0BD], NFD: [0x1102, 0x1162, 0x11B0], NFKC: [0xB0BD], NFKD: [0x1102, 0x1162, 0x11B0] },
+{ source: [0xB0BE], NFC: [0xB0BE], NFD: [0x1102, 0x1162, 0x11B1], NFKC: [0xB0BE], NFKD: [0x1102, 0x1162, 0x11B1] },
+{ source: [0xB0BF], NFC: [0xB0BF], NFD: [0x1102, 0x1162, 0x11B2], NFKC: [0xB0BF], NFKD: [0x1102, 0x1162, 0x11B2] },
+{ source: [0xB0C0], NFC: [0xB0C0], NFD: [0x1102, 0x1162, 0x11B3], NFKC: [0xB0C0], NFKD: [0x1102, 0x1162, 0x11B3] },
+{ source: [0xB0C1], NFC: [0xB0C1], NFD: [0x1102, 0x1162, 0x11B4], NFKC: [0xB0C1], NFKD: [0x1102, 0x1162, 0x11B4] },
+{ source: [0xB0C2], NFC: [0xB0C2], NFD: [0x1102, 0x1162, 0x11B5], NFKC: [0xB0C2], NFKD: [0x1102, 0x1162, 0x11B5] },
+{ source: [0xB0C3], NFC: [0xB0C3], NFD: [0x1102, 0x1162, 0x11B6], NFKC: [0xB0C3], NFKD: [0x1102, 0x1162, 0x11B6] },
+{ source: [0xB0C4], NFC: [0xB0C4], NFD: [0x1102, 0x1162, 0x11B7], NFKC: [0xB0C4], NFKD: [0x1102, 0x1162, 0x11B7] },
+{ source: [0xB0C5], NFC: [0xB0C5], NFD: [0x1102, 0x1162, 0x11B8], NFKC: [0xB0C5], NFKD: [0x1102, 0x1162, 0x11B8] },
+{ source: [0xB0C6], NFC: [0xB0C6], NFD: [0x1102, 0x1162, 0x11B9], NFKC: [0xB0C6], NFKD: [0x1102, 0x1162, 0x11B9] },
+{ source: [0xB0C7], NFC: [0xB0C7], NFD: [0x1102, 0x1162, 0x11BA], NFKC: [0xB0C7], NFKD: [0x1102, 0x1162, 0x11BA] },
+{ source: [0xB0C8], NFC: [0xB0C8], NFD: [0x1102, 0x1162, 0x11BB], NFKC: [0xB0C8], NFKD: [0x1102, 0x1162, 0x11BB] },
+{ source: [0xB0C9], NFC: [0xB0C9], NFD: [0x1102, 0x1162, 0x11BC], NFKC: [0xB0C9], NFKD: [0x1102, 0x1162, 0x11BC] },
+{ source: [0xB0CA], NFC: [0xB0CA], NFD: [0x1102, 0x1162, 0x11BD], NFKC: [0xB0CA], NFKD: [0x1102, 0x1162, 0x11BD] },
+{ source: [0xB0CB], NFC: [0xB0CB], NFD: [0x1102, 0x1162, 0x11BE], NFKC: [0xB0CB], NFKD: [0x1102, 0x1162, 0x11BE] },
+{ source: [0xB0CC], NFC: [0xB0CC], NFD: [0x1102, 0x1162, 0x11BF], NFKC: [0xB0CC], NFKD: [0x1102, 0x1162, 0x11BF] },
+{ source: [0xB0CD], NFC: [0xB0CD], NFD: [0x1102, 0x1162, 0x11C0], NFKC: [0xB0CD], NFKD: [0x1102, 0x1162, 0x11C0] },
+{ source: [0xB0CE], NFC: [0xB0CE], NFD: [0x1102, 0x1162, 0x11C1], NFKC: [0xB0CE], NFKD: [0x1102, 0x1162, 0x11C1] },
+{ source: [0xB0CF], NFC: [0xB0CF], NFD: [0x1102, 0x1162, 0x11C2], NFKC: [0xB0CF], NFKD: [0x1102, 0x1162, 0x11C2] },
+{ source: [0xB0D0], NFC: [0xB0D0], NFD: [0x1102, 0x1163], NFKC: [0xB0D0], NFKD: [0x1102, 0x1163] },
+{ source: [0xB0D1], NFC: [0xB0D1], NFD: [0x1102, 0x1163, 0x11A8], NFKC: [0xB0D1], NFKD: [0x1102, 0x1163, 0x11A8] },
+{ source: [0xB0D2], NFC: [0xB0D2], NFD: [0x1102, 0x1163, 0x11A9], NFKC: [0xB0D2], NFKD: [0x1102, 0x1163, 0x11A9] },
+{ source: [0xB0D3], NFC: [0xB0D3], NFD: [0x1102, 0x1163, 0x11AA], NFKC: [0xB0D3], NFKD: [0x1102, 0x1163, 0x11AA] },
+{ source: [0xB0D4], NFC: [0xB0D4], NFD: [0x1102, 0x1163, 0x11AB], NFKC: [0xB0D4], NFKD: [0x1102, 0x1163, 0x11AB] },
+{ source: [0xB0D5], NFC: [0xB0D5], NFD: [0x1102, 0x1163, 0x11AC], NFKC: [0xB0D5], NFKD: [0x1102, 0x1163, 0x11AC] },
+{ source: [0xB0D6], NFC: [0xB0D6], NFD: [0x1102, 0x1163, 0x11AD], NFKC: [0xB0D6], NFKD: [0x1102, 0x1163, 0x11AD] },
+{ source: [0xB0D7], NFC: [0xB0D7], NFD: [0x1102, 0x1163, 0x11AE], NFKC: [0xB0D7], NFKD: [0x1102, 0x1163, 0x11AE] },
+{ source: [0xB0D8], NFC: [0xB0D8], NFD: [0x1102, 0x1163, 0x11AF], NFKC: [0xB0D8], NFKD: [0x1102, 0x1163, 0x11AF] },
+{ source: [0xB0D9], NFC: [0xB0D9], NFD: [0x1102, 0x1163, 0x11B0], NFKC: [0xB0D9], NFKD: [0x1102, 0x1163, 0x11B0] },
+{ source: [0xB0DA], NFC: [0xB0DA], NFD: [0x1102, 0x1163, 0x11B1], NFKC: [0xB0DA], NFKD: [0x1102, 0x1163, 0x11B1] },
+{ source: [0xB0DB], NFC: [0xB0DB], NFD: [0x1102, 0x1163, 0x11B2], NFKC: [0xB0DB], NFKD: [0x1102, 0x1163, 0x11B2] },
+{ source: [0xB0DC], NFC: [0xB0DC], NFD: [0x1102, 0x1163, 0x11B3], NFKC: [0xB0DC], NFKD: [0x1102, 0x1163, 0x11B3] },
+{ source: [0xB0DD], NFC: [0xB0DD], NFD: [0x1102, 0x1163, 0x11B4], NFKC: [0xB0DD], NFKD: [0x1102, 0x1163, 0x11B4] },
+{ source: [0xB0DE], NFC: [0xB0DE], NFD: [0x1102, 0x1163, 0x11B5], NFKC: [0xB0DE], NFKD: [0x1102, 0x1163, 0x11B5] },
+{ source: [0xB0DF], NFC: [0xB0DF], NFD: [0x1102, 0x1163, 0x11B6], NFKC: [0xB0DF], NFKD: [0x1102, 0x1163, 0x11B6] },
+{ source: [0xB0E0], NFC: [0xB0E0], NFD: [0x1102, 0x1163, 0x11B7], NFKC: [0xB0E0], NFKD: [0x1102, 0x1163, 0x11B7] },
+{ source: [0xB0E1], NFC: [0xB0E1], NFD: [0x1102, 0x1163, 0x11B8], NFKC: [0xB0E1], NFKD: [0x1102, 0x1163, 0x11B8] },
+{ source: [0xB0E2], NFC: [0xB0E2], NFD: [0x1102, 0x1163, 0x11B9], NFKC: [0xB0E2], NFKD: [0x1102, 0x1163, 0x11B9] },
+{ source: [0xB0E3], NFC: [0xB0E3], NFD: [0x1102, 0x1163, 0x11BA], NFKC: [0xB0E3], NFKD: [0x1102, 0x1163, 0x11BA] },
+{ source: [0xB0E4], NFC: [0xB0E4], NFD: [0x1102, 0x1163, 0x11BB], NFKC: [0xB0E4], NFKD: [0x1102, 0x1163, 0x11BB] },
+{ source: [0xB0E5], NFC: [0xB0E5], NFD: [0x1102, 0x1163, 0x11BC], NFKC: [0xB0E5], NFKD: [0x1102, 0x1163, 0x11BC] },
+{ source: [0xB0E6], NFC: [0xB0E6], NFD: [0x1102, 0x1163, 0x11BD], NFKC: [0xB0E6], NFKD: [0x1102, 0x1163, 0x11BD] },
+{ source: [0xB0E7], NFC: [0xB0E7], NFD: [0x1102, 0x1163, 0x11BE], NFKC: [0xB0E7], NFKD: [0x1102, 0x1163, 0x11BE] },
+{ source: [0xB0E8], NFC: [0xB0E8], NFD: [0x1102, 0x1163, 0x11BF], NFKC: [0xB0E8], NFKD: [0x1102, 0x1163, 0x11BF] },
+{ source: [0xB0E9], NFC: [0xB0E9], NFD: [0x1102, 0x1163, 0x11C0], NFKC: [0xB0E9], NFKD: [0x1102, 0x1163, 0x11C0] },
+{ source: [0xB0EA], NFC: [0xB0EA], NFD: [0x1102, 0x1163, 0x11C1], NFKC: [0xB0EA], NFKD: [0x1102, 0x1163, 0x11C1] },
+{ source: [0xB0EB], NFC: [0xB0EB], NFD: [0x1102, 0x1163, 0x11C2], NFKC: [0xB0EB], NFKD: [0x1102, 0x1163, 0x11C2] },
+{ source: [0xB0EC], NFC: [0xB0EC], NFD: [0x1102, 0x1164], NFKC: [0xB0EC], NFKD: [0x1102, 0x1164] },
+{ source: [0xB0ED], NFC: [0xB0ED], NFD: [0x1102, 0x1164, 0x11A8], NFKC: [0xB0ED], NFKD: [0x1102, 0x1164, 0x11A8] },
+{ source: [0xB0EE], NFC: [0xB0EE], NFD: [0x1102, 0x1164, 0x11A9], NFKC: [0xB0EE], NFKD: [0x1102, 0x1164, 0x11A9] },
+{ source: [0xB0EF], NFC: [0xB0EF], NFD: [0x1102, 0x1164, 0x11AA], NFKC: [0xB0EF], NFKD: [0x1102, 0x1164, 0x11AA] },
+{ source: [0xB0F0], NFC: [0xB0F0], NFD: [0x1102, 0x1164, 0x11AB], NFKC: [0xB0F0], NFKD: [0x1102, 0x1164, 0x11AB] },
+{ source: [0xB0F1], NFC: [0xB0F1], NFD: [0x1102, 0x1164, 0x11AC], NFKC: [0xB0F1], NFKD: [0x1102, 0x1164, 0x11AC] },
+{ source: [0xB0F2], NFC: [0xB0F2], NFD: [0x1102, 0x1164, 0x11AD], NFKC: [0xB0F2], NFKD: [0x1102, 0x1164, 0x11AD] },
+{ source: [0xB0F3], NFC: [0xB0F3], NFD: [0x1102, 0x1164, 0x11AE], NFKC: [0xB0F3], NFKD: [0x1102, 0x1164, 0x11AE] },
+{ source: [0xB0F4], NFC: [0xB0F4], NFD: [0x1102, 0x1164, 0x11AF], NFKC: [0xB0F4], NFKD: [0x1102, 0x1164, 0x11AF] },
+{ source: [0xB0F5], NFC: [0xB0F5], NFD: [0x1102, 0x1164, 0x11B0], NFKC: [0xB0F5], NFKD: [0x1102, 0x1164, 0x11B0] },
+{ source: [0xB0F6], NFC: [0xB0F6], NFD: [0x1102, 0x1164, 0x11B1], NFKC: [0xB0F6], NFKD: [0x1102, 0x1164, 0x11B1] },
+{ source: [0xB0F7], NFC: [0xB0F7], NFD: [0x1102, 0x1164, 0x11B2], NFKC: [0xB0F7], NFKD: [0x1102, 0x1164, 0x11B2] },
+{ source: [0xB0F8], NFC: [0xB0F8], NFD: [0x1102, 0x1164, 0x11B3], NFKC: [0xB0F8], NFKD: [0x1102, 0x1164, 0x11B3] },
+{ source: [0xB0F9], NFC: [0xB0F9], NFD: [0x1102, 0x1164, 0x11B4], NFKC: [0xB0F9], NFKD: [0x1102, 0x1164, 0x11B4] },
+{ source: [0xB0FA], NFC: [0xB0FA], NFD: [0x1102, 0x1164, 0x11B5], NFKC: [0xB0FA], NFKD: [0x1102, 0x1164, 0x11B5] },
+{ source: [0xB0FB], NFC: [0xB0FB], NFD: [0x1102, 0x1164, 0x11B6], NFKC: [0xB0FB], NFKD: [0x1102, 0x1164, 0x11B6] },
+{ source: [0xB0FC], NFC: [0xB0FC], NFD: [0x1102, 0x1164, 0x11B7], NFKC: [0xB0FC], NFKD: [0x1102, 0x1164, 0x11B7] },
+{ source: [0xB0FD], NFC: [0xB0FD], NFD: [0x1102, 0x1164, 0x11B8], NFKC: [0xB0FD], NFKD: [0x1102, 0x1164, 0x11B8] },
+{ source: [0xB0FE], NFC: [0xB0FE], NFD: [0x1102, 0x1164, 0x11B9], NFKC: [0xB0FE], NFKD: [0x1102, 0x1164, 0x11B9] },
+{ source: [0xB0FF], NFC: [0xB0FF], NFD: [0x1102, 0x1164, 0x11BA], NFKC: [0xB0FF], NFKD: [0x1102, 0x1164, 0x11BA] },
+{ source: [0xB100], NFC: [0xB100], NFD: [0x1102, 0x1164, 0x11BB], NFKC: [0xB100], NFKD: [0x1102, 0x1164, 0x11BB] },
+{ source: [0xB101], NFC: [0xB101], NFD: [0x1102, 0x1164, 0x11BC], NFKC: [0xB101], NFKD: [0x1102, 0x1164, 0x11BC] },
+{ source: [0xB102], NFC: [0xB102], NFD: [0x1102, 0x1164, 0x11BD], NFKC: [0xB102], NFKD: [0x1102, 0x1164, 0x11BD] },
+{ source: [0xB103], NFC: [0xB103], NFD: [0x1102, 0x1164, 0x11BE], NFKC: [0xB103], NFKD: [0x1102, 0x1164, 0x11BE] },
+{ source: [0xB104], NFC: [0xB104], NFD: [0x1102, 0x1164, 0x11BF], NFKC: [0xB104], NFKD: [0x1102, 0x1164, 0x11BF] },
+{ source: [0xB105], NFC: [0xB105], NFD: [0x1102, 0x1164, 0x11C0], NFKC: [0xB105], NFKD: [0x1102, 0x1164, 0x11C0] },
+{ source: [0xB106], NFC: [0xB106], NFD: [0x1102, 0x1164, 0x11C1], NFKC: [0xB106], NFKD: [0x1102, 0x1164, 0x11C1] },
+{ source: [0xB107], NFC: [0xB107], NFD: [0x1102, 0x1164, 0x11C2], NFKC: [0xB107], NFKD: [0x1102, 0x1164, 0x11C2] },
+{ source: [0xB108], NFC: [0xB108], NFD: [0x1102, 0x1165], NFKC: [0xB108], NFKD: [0x1102, 0x1165] },
+{ source: [0xB109], NFC: [0xB109], NFD: [0x1102, 0x1165, 0x11A8], NFKC: [0xB109], NFKD: [0x1102, 0x1165, 0x11A8] },
+{ source: [0xB10A], NFC: [0xB10A], NFD: [0x1102, 0x1165, 0x11A9], NFKC: [0xB10A], NFKD: [0x1102, 0x1165, 0x11A9] },
+{ source: [0xB10B], NFC: [0xB10B], NFD: [0x1102, 0x1165, 0x11AA], NFKC: [0xB10B], NFKD: [0x1102, 0x1165, 0x11AA] },
+{ source: [0xB10C], NFC: [0xB10C], NFD: [0x1102, 0x1165, 0x11AB], NFKC: [0xB10C], NFKD: [0x1102, 0x1165, 0x11AB] },
+{ source: [0xB10D], NFC: [0xB10D], NFD: [0x1102, 0x1165, 0x11AC], NFKC: [0xB10D], NFKD: [0x1102, 0x1165, 0x11AC] },
+{ source: [0xB10E], NFC: [0xB10E], NFD: [0x1102, 0x1165, 0x11AD], NFKC: [0xB10E], NFKD: [0x1102, 0x1165, 0x11AD] },
+{ source: [0xB10F], NFC: [0xB10F], NFD: [0x1102, 0x1165, 0x11AE], NFKC: [0xB10F], NFKD: [0x1102, 0x1165, 0x11AE] },
+{ source: [0xB110], NFC: [0xB110], NFD: [0x1102, 0x1165, 0x11AF], NFKC: [0xB110], NFKD: [0x1102, 0x1165, 0x11AF] },
+{ source: [0xB111], NFC: [0xB111], NFD: [0x1102, 0x1165, 0x11B0], NFKC: [0xB111], NFKD: [0x1102, 0x1165, 0x11B0] },
+{ source: [0xB112], NFC: [0xB112], NFD: [0x1102, 0x1165, 0x11B1], NFKC: [0xB112], NFKD: [0x1102, 0x1165, 0x11B1] },
+{ source: [0xB113], NFC: [0xB113], NFD: [0x1102, 0x1165, 0x11B2], NFKC: [0xB113], NFKD: [0x1102, 0x1165, 0x11B2] },
+{ source: [0xB114], NFC: [0xB114], NFD: [0x1102, 0x1165, 0x11B3], NFKC: [0xB114], NFKD: [0x1102, 0x1165, 0x11B3] },
+{ source: [0xB115], NFC: [0xB115], NFD: [0x1102, 0x1165, 0x11B4], NFKC: [0xB115], NFKD: [0x1102, 0x1165, 0x11B4] },
+{ source: [0xB116], NFC: [0xB116], NFD: [0x1102, 0x1165, 0x11B5], NFKC: [0xB116], NFKD: [0x1102, 0x1165, 0x11B5] },
+{ source: [0xB117], NFC: [0xB117], NFD: [0x1102, 0x1165, 0x11B6], NFKC: [0xB117], NFKD: [0x1102, 0x1165, 0x11B6] },
+{ source: [0xB118], NFC: [0xB118], NFD: [0x1102, 0x1165, 0x11B7], NFKC: [0xB118], NFKD: [0x1102, 0x1165, 0x11B7] },
+{ source: [0xB119], NFC: [0xB119], NFD: [0x1102, 0x1165, 0x11B8], NFKC: [0xB119], NFKD: [0x1102, 0x1165, 0x11B8] },
+{ source: [0xB11A], NFC: [0xB11A], NFD: [0x1102, 0x1165, 0x11B9], NFKC: [0xB11A], NFKD: [0x1102, 0x1165, 0x11B9] },
+{ source: [0xB11B], NFC: [0xB11B], NFD: [0x1102, 0x1165, 0x11BA], NFKC: [0xB11B], NFKD: [0x1102, 0x1165, 0x11BA] },
+{ source: [0xB11C], NFC: [0xB11C], NFD: [0x1102, 0x1165, 0x11BB], NFKC: [0xB11C], NFKD: [0x1102, 0x1165, 0x11BB] },
+{ source: [0xB11D], NFC: [0xB11D], NFD: [0x1102, 0x1165, 0x11BC], NFKC: [0xB11D], NFKD: [0x1102, 0x1165, 0x11BC] },
+{ source: [0xB11E], NFC: [0xB11E], NFD: [0x1102, 0x1165, 0x11BD], NFKC: [0xB11E], NFKD: [0x1102, 0x1165, 0x11BD] },
+{ source: [0xB11F], NFC: [0xB11F], NFD: [0x1102, 0x1165, 0x11BE], NFKC: [0xB11F], NFKD: [0x1102, 0x1165, 0x11BE] },
+{ source: [0xB120], NFC: [0xB120], NFD: [0x1102, 0x1165, 0x11BF], NFKC: [0xB120], NFKD: [0x1102, 0x1165, 0x11BF] },
+{ source: [0xB121], NFC: [0xB121], NFD: [0x1102, 0x1165, 0x11C0], NFKC: [0xB121], NFKD: [0x1102, 0x1165, 0x11C0] },
+{ source: [0xB122], NFC: [0xB122], NFD: [0x1102, 0x1165, 0x11C1], NFKC: [0xB122], NFKD: [0x1102, 0x1165, 0x11C1] },
+{ source: [0xB123], NFC: [0xB123], NFD: [0x1102, 0x1165, 0x11C2], NFKC: [0xB123], NFKD: [0x1102, 0x1165, 0x11C2] },
+{ source: [0xB124], NFC: [0xB124], NFD: [0x1102, 0x1166], NFKC: [0xB124], NFKD: [0x1102, 0x1166] },
+{ source: [0xB125], NFC: [0xB125], NFD: [0x1102, 0x1166, 0x11A8], NFKC: [0xB125], NFKD: [0x1102, 0x1166, 0x11A8] },
+{ source: [0xB126], NFC: [0xB126], NFD: [0x1102, 0x1166, 0x11A9], NFKC: [0xB126], NFKD: [0x1102, 0x1166, 0x11A9] },
+{ source: [0xB127], NFC: [0xB127], NFD: [0x1102, 0x1166, 0x11AA], NFKC: [0xB127], NFKD: [0x1102, 0x1166, 0x11AA] },
+{ source: [0xB128], NFC: [0xB128], NFD: [0x1102, 0x1166, 0x11AB], NFKC: [0xB128], NFKD: [0x1102, 0x1166, 0x11AB] },
+{ source: [0xB129], NFC: [0xB129], NFD: [0x1102, 0x1166, 0x11AC], NFKC: [0xB129], NFKD: [0x1102, 0x1166, 0x11AC] },
+{ source: [0xB12A], NFC: [0xB12A], NFD: [0x1102, 0x1166, 0x11AD], NFKC: [0xB12A], NFKD: [0x1102, 0x1166, 0x11AD] },
+{ source: [0xB12B], NFC: [0xB12B], NFD: [0x1102, 0x1166, 0x11AE], NFKC: [0xB12B], NFKD: [0x1102, 0x1166, 0x11AE] },
+{ source: [0xB12C], NFC: [0xB12C], NFD: [0x1102, 0x1166, 0x11AF], NFKC: [0xB12C], NFKD: [0x1102, 0x1166, 0x11AF] },
+{ source: [0xB12D], NFC: [0xB12D], NFD: [0x1102, 0x1166, 0x11B0], NFKC: [0xB12D], NFKD: [0x1102, 0x1166, 0x11B0] },
+{ source: [0xB12E], NFC: [0xB12E], NFD: [0x1102, 0x1166, 0x11B1], NFKC: [0xB12E], NFKD: [0x1102, 0x1166, 0x11B1] },
+{ source: [0xB12F], NFC: [0xB12F], NFD: [0x1102, 0x1166, 0x11B2], NFKC: [0xB12F], NFKD: [0x1102, 0x1166, 0x11B2] },
+{ source: [0xB130], NFC: [0xB130], NFD: [0x1102, 0x1166, 0x11B3], NFKC: [0xB130], NFKD: [0x1102, 0x1166, 0x11B3] },
+{ source: [0xB131], NFC: [0xB131], NFD: [0x1102, 0x1166, 0x11B4], NFKC: [0xB131], NFKD: [0x1102, 0x1166, 0x11B4] },
+{ source: [0xB132], NFC: [0xB132], NFD: [0x1102, 0x1166, 0x11B5], NFKC: [0xB132], NFKD: [0x1102, 0x1166, 0x11B5] },
+{ source: [0xB133], NFC: [0xB133], NFD: [0x1102, 0x1166, 0x11B6], NFKC: [0xB133], NFKD: [0x1102, 0x1166, 0x11B6] },
+{ source: [0xB134], NFC: [0xB134], NFD: [0x1102, 0x1166, 0x11B7], NFKC: [0xB134], NFKD: [0x1102, 0x1166, 0x11B7] },
+{ source: [0xB135], NFC: [0xB135], NFD: [0x1102, 0x1166, 0x11B8], NFKC: [0xB135], NFKD: [0x1102, 0x1166, 0x11B8] },
+{ source: [0xB136], NFC: [0xB136], NFD: [0x1102, 0x1166, 0x11B9], NFKC: [0xB136], NFKD: [0x1102, 0x1166, 0x11B9] },
+{ source: [0xB137], NFC: [0xB137], NFD: [0x1102, 0x1166, 0x11BA], NFKC: [0xB137], NFKD: [0x1102, 0x1166, 0x11BA] },
+{ source: [0xB138], NFC: [0xB138], NFD: [0x1102, 0x1166, 0x11BB], NFKC: [0xB138], NFKD: [0x1102, 0x1166, 0x11BB] },
+{ source: [0xB139], NFC: [0xB139], NFD: [0x1102, 0x1166, 0x11BC], NFKC: [0xB139], NFKD: [0x1102, 0x1166, 0x11BC] },
+{ source: [0xB13A], NFC: [0xB13A], NFD: [0x1102, 0x1166, 0x11BD], NFKC: [0xB13A], NFKD: [0x1102, 0x1166, 0x11BD] },
+{ source: [0xB13B], NFC: [0xB13B], NFD: [0x1102, 0x1166, 0x11BE], NFKC: [0xB13B], NFKD: [0x1102, 0x1166, 0x11BE] },
+{ source: [0xB13C], NFC: [0xB13C], NFD: [0x1102, 0x1166, 0x11BF], NFKC: [0xB13C], NFKD: [0x1102, 0x1166, 0x11BF] },
+{ source: [0xB13D], NFC: [0xB13D], NFD: [0x1102, 0x1166, 0x11C0], NFKC: [0xB13D], NFKD: [0x1102, 0x1166, 0x11C0] },
+{ source: [0xB13E], NFC: [0xB13E], NFD: [0x1102, 0x1166, 0x11C1], NFKC: [0xB13E], NFKD: [0x1102, 0x1166, 0x11C1] },
+{ source: [0xB13F], NFC: [0xB13F], NFD: [0x1102, 0x1166, 0x11C2], NFKC: [0xB13F], NFKD: [0x1102, 0x1166, 0x11C2] },
+{ source: [0xB140], NFC: [0xB140], NFD: [0x1102, 0x1167], NFKC: [0xB140], NFKD: [0x1102, 0x1167] },
+{ source: [0xB141], NFC: [0xB141], NFD: [0x1102, 0x1167, 0x11A8], NFKC: [0xB141], NFKD: [0x1102, 0x1167, 0x11A8] },
+{ source: [0xB142], NFC: [0xB142], NFD: [0x1102, 0x1167, 0x11A9], NFKC: [0xB142], NFKD: [0x1102, 0x1167, 0x11A9] },
+{ source: [0xB143], NFC: [0xB143], NFD: [0x1102, 0x1167, 0x11AA], NFKC: [0xB143], NFKD: [0x1102, 0x1167, 0x11AA] },
+{ source: [0xB144], NFC: [0xB144], NFD: [0x1102, 0x1167, 0x11AB], NFKC: [0xB144], NFKD: [0x1102, 0x1167, 0x11AB] },
+{ source: [0xB145], NFC: [0xB145], NFD: [0x1102, 0x1167, 0x11AC], NFKC: [0xB145], NFKD: [0x1102, 0x1167, 0x11AC] },
+{ source: [0xB146], NFC: [0xB146], NFD: [0x1102, 0x1167, 0x11AD], NFKC: [0xB146], NFKD: [0x1102, 0x1167, 0x11AD] },
+{ source: [0xB147], NFC: [0xB147], NFD: [0x1102, 0x1167, 0x11AE], NFKC: [0xB147], NFKD: [0x1102, 0x1167, 0x11AE] },
+{ source: [0xB148], NFC: [0xB148], NFD: [0x1102, 0x1167, 0x11AF], NFKC: [0xB148], NFKD: [0x1102, 0x1167, 0x11AF] },
+{ source: [0xB149], NFC: [0xB149], NFD: [0x1102, 0x1167, 0x11B0], NFKC: [0xB149], NFKD: [0x1102, 0x1167, 0x11B0] },
+{ source: [0xB14A], NFC: [0xB14A], NFD: [0x1102, 0x1167, 0x11B1], NFKC: [0xB14A], NFKD: [0x1102, 0x1167, 0x11B1] },
+{ source: [0xB14B], NFC: [0xB14B], NFD: [0x1102, 0x1167, 0x11B2], NFKC: [0xB14B], NFKD: [0x1102, 0x1167, 0x11B2] },
+{ source: [0xB14C], NFC: [0xB14C], NFD: [0x1102, 0x1167, 0x11B3], NFKC: [0xB14C], NFKD: [0x1102, 0x1167, 0x11B3] },
+{ source: [0xB14D], NFC: [0xB14D], NFD: [0x1102, 0x1167, 0x11B4], NFKC: [0xB14D], NFKD: [0x1102, 0x1167, 0x11B4] },
+{ source: [0xB14E], NFC: [0xB14E], NFD: [0x1102, 0x1167, 0x11B5], NFKC: [0xB14E], NFKD: [0x1102, 0x1167, 0x11B5] },
+{ source: [0xB14F], NFC: [0xB14F], NFD: [0x1102, 0x1167, 0x11B6], NFKC: [0xB14F], NFKD: [0x1102, 0x1167, 0x11B6] },
+{ source: [0xB150], NFC: [0xB150], NFD: [0x1102, 0x1167, 0x11B7], NFKC: [0xB150], NFKD: [0x1102, 0x1167, 0x11B7] },
+{ source: [0xB151], NFC: [0xB151], NFD: [0x1102, 0x1167, 0x11B8], NFKC: [0xB151], NFKD: [0x1102, 0x1167, 0x11B8] },
+{ source: [0xB152], NFC: [0xB152], NFD: [0x1102, 0x1167, 0x11B9], NFKC: [0xB152], NFKD: [0x1102, 0x1167, 0x11B9] },
+{ source: [0xB153], NFC: [0xB153], NFD: [0x1102, 0x1167, 0x11BA], NFKC: [0xB153], NFKD: [0x1102, 0x1167, 0x11BA] },
+{ source: [0xB154], NFC: [0xB154], NFD: [0x1102, 0x1167, 0x11BB], NFKC: [0xB154], NFKD: [0x1102, 0x1167, 0x11BB] },
+{ source: [0xB155], NFC: [0xB155], NFD: [0x1102, 0x1167, 0x11BC], NFKC: [0xB155], NFKD: [0x1102, 0x1167, 0x11BC] },
+{ source: [0xB156], NFC: [0xB156], NFD: [0x1102, 0x1167, 0x11BD], NFKC: [0xB156], NFKD: [0x1102, 0x1167, 0x11BD] },
+{ source: [0xB157], NFC: [0xB157], NFD: [0x1102, 0x1167, 0x11BE], NFKC: [0xB157], NFKD: [0x1102, 0x1167, 0x11BE] },
+{ source: [0xB158], NFC: [0xB158], NFD: [0x1102, 0x1167, 0x11BF], NFKC: [0xB158], NFKD: [0x1102, 0x1167, 0x11BF] },
+{ source: [0xB159], NFC: [0xB159], NFD: [0x1102, 0x1167, 0x11C0], NFKC: [0xB159], NFKD: [0x1102, 0x1167, 0x11C0] },
+{ source: [0xB15A], NFC: [0xB15A], NFD: [0x1102, 0x1167, 0x11C1], NFKC: [0xB15A], NFKD: [0x1102, 0x1167, 0x11C1] },
+{ source: [0xB15B], NFC: [0xB15B], NFD: [0x1102, 0x1167, 0x11C2], NFKC: [0xB15B], NFKD: [0x1102, 0x1167, 0x11C2] },
+{ source: [0xB15C], NFC: [0xB15C], NFD: [0x1102, 0x1168], NFKC: [0xB15C], NFKD: [0x1102, 0x1168] },
+{ source: [0xB15D], NFC: [0xB15D], NFD: [0x1102, 0x1168, 0x11A8], NFKC: [0xB15D], NFKD: [0x1102, 0x1168, 0x11A8] },
+{ source: [0xB15E], NFC: [0xB15E], NFD: [0x1102, 0x1168, 0x11A9], NFKC: [0xB15E], NFKD: [0x1102, 0x1168, 0x11A9] },
+{ source: [0xB15F], NFC: [0xB15F], NFD: [0x1102, 0x1168, 0x11AA], NFKC: [0xB15F], NFKD: [0x1102, 0x1168, 0x11AA] },
+{ source: [0xB160], NFC: [0xB160], NFD: [0x1102, 0x1168, 0x11AB], NFKC: [0xB160], NFKD: [0x1102, 0x1168, 0x11AB] },
+{ source: [0xB161], NFC: [0xB161], NFD: [0x1102, 0x1168, 0x11AC], NFKC: [0xB161], NFKD: [0x1102, 0x1168, 0x11AC] },
+{ source: [0xB162], NFC: [0xB162], NFD: [0x1102, 0x1168, 0x11AD], NFKC: [0xB162], NFKD: [0x1102, 0x1168, 0x11AD] },
+{ source: [0xB163], NFC: [0xB163], NFD: [0x1102, 0x1168, 0x11AE], NFKC: [0xB163], NFKD: [0x1102, 0x1168, 0x11AE] },
+{ source: [0xB164], NFC: [0xB164], NFD: [0x1102, 0x1168, 0x11AF], NFKC: [0xB164], NFKD: [0x1102, 0x1168, 0x11AF] },
+{ source: [0xB165], NFC: [0xB165], NFD: [0x1102, 0x1168, 0x11B0], NFKC: [0xB165], NFKD: [0x1102, 0x1168, 0x11B0] },
+{ source: [0xB166], NFC: [0xB166], NFD: [0x1102, 0x1168, 0x11B1], NFKC: [0xB166], NFKD: [0x1102, 0x1168, 0x11B1] },
+{ source: [0xB167], NFC: [0xB167], NFD: [0x1102, 0x1168, 0x11B2], NFKC: [0xB167], NFKD: [0x1102, 0x1168, 0x11B2] },
+{ source: [0xB168], NFC: [0xB168], NFD: [0x1102, 0x1168, 0x11B3], NFKC: [0xB168], NFKD: [0x1102, 0x1168, 0x11B3] },
+{ source: [0xB169], NFC: [0xB169], NFD: [0x1102, 0x1168, 0x11B4], NFKC: [0xB169], NFKD: [0x1102, 0x1168, 0x11B4] },
+{ source: [0xB16A], NFC: [0xB16A], NFD: [0x1102, 0x1168, 0x11B5], NFKC: [0xB16A], NFKD: [0x1102, 0x1168, 0x11B5] },
+{ source: [0xB16B], NFC: [0xB16B], NFD: [0x1102, 0x1168, 0x11B6], NFKC: [0xB16B], NFKD: [0x1102, 0x1168, 0x11B6] },
+{ source: [0xB16C], NFC: [0xB16C], NFD: [0x1102, 0x1168, 0x11B7], NFKC: [0xB16C], NFKD: [0x1102, 0x1168, 0x11B7] },
+{ source: [0xB16D], NFC: [0xB16D], NFD: [0x1102, 0x1168, 0x11B8], NFKC: [0xB16D], NFKD: [0x1102, 0x1168, 0x11B8] },
+{ source: [0xB16E], NFC: [0xB16E], NFD: [0x1102, 0x1168, 0x11B9], NFKC: [0xB16E], NFKD: [0x1102, 0x1168, 0x11B9] },
+{ source: [0xB16F], NFC: [0xB16F], NFD: [0x1102, 0x1168, 0x11BA], NFKC: [0xB16F], NFKD: [0x1102, 0x1168, 0x11BA] },
+{ source: [0xB170], NFC: [0xB170], NFD: [0x1102, 0x1168, 0x11BB], NFKC: [0xB170], NFKD: [0x1102, 0x1168, 0x11BB] },
+{ source: [0xB171], NFC: [0xB171], NFD: [0x1102, 0x1168, 0x11BC], NFKC: [0xB171], NFKD: [0x1102, 0x1168, 0x11BC] },
+{ source: [0xB172], NFC: [0xB172], NFD: [0x1102, 0x1168, 0x11BD], NFKC: [0xB172], NFKD: [0x1102, 0x1168, 0x11BD] },
+{ source: [0xB173], NFC: [0xB173], NFD: [0x1102, 0x1168, 0x11BE], NFKC: [0xB173], NFKD: [0x1102, 0x1168, 0x11BE] },
+{ source: [0xB174], NFC: [0xB174], NFD: [0x1102, 0x1168, 0x11BF], NFKC: [0xB174], NFKD: [0x1102, 0x1168, 0x11BF] },
+{ source: [0xB175], NFC: [0xB175], NFD: [0x1102, 0x1168, 0x11C0], NFKC: [0xB175], NFKD: [0x1102, 0x1168, 0x11C0] },
+{ source: [0xB176], NFC: [0xB176], NFD: [0x1102, 0x1168, 0x11C1], NFKC: [0xB176], NFKD: [0x1102, 0x1168, 0x11C1] },
+{ source: [0xB177], NFC: [0xB177], NFD: [0x1102, 0x1168, 0x11C2], NFKC: [0xB177], NFKD: [0x1102, 0x1168, 0x11C2] },
+{ source: [0xB178], NFC: [0xB178], NFD: [0x1102, 0x1169], NFKC: [0xB178], NFKD: [0x1102, 0x1169] },
+{ source: [0xB179], NFC: [0xB179], NFD: [0x1102, 0x1169, 0x11A8], NFKC: [0xB179], NFKD: [0x1102, 0x1169, 0x11A8] },
+{ source: [0xB17A], NFC: [0xB17A], NFD: [0x1102, 0x1169, 0x11A9], NFKC: [0xB17A], NFKD: [0x1102, 0x1169, 0x11A9] },
+{ source: [0xB17B], NFC: [0xB17B], NFD: [0x1102, 0x1169, 0x11AA], NFKC: [0xB17B], NFKD: [0x1102, 0x1169, 0x11AA] },
+{ source: [0xB17C], NFC: [0xB17C], NFD: [0x1102, 0x1169, 0x11AB], NFKC: [0xB17C], NFKD: [0x1102, 0x1169, 0x11AB] },
+{ source: [0xB17D], NFC: [0xB17D], NFD: [0x1102, 0x1169, 0x11AC], NFKC: [0xB17D], NFKD: [0x1102, 0x1169, 0x11AC] },
+{ source: [0xB17E], NFC: [0xB17E], NFD: [0x1102, 0x1169, 0x11AD], NFKC: [0xB17E], NFKD: [0x1102, 0x1169, 0x11AD] },
+{ source: [0xB17F], NFC: [0xB17F], NFD: [0x1102, 0x1169, 0x11AE], NFKC: [0xB17F], NFKD: [0x1102, 0x1169, 0x11AE] },
+{ source: [0xB180], NFC: [0xB180], NFD: [0x1102, 0x1169, 0x11AF], NFKC: [0xB180], NFKD: [0x1102, 0x1169, 0x11AF] },
+{ source: [0xB181], NFC: [0xB181], NFD: [0x1102, 0x1169, 0x11B0], NFKC: [0xB181], NFKD: [0x1102, 0x1169, 0x11B0] },
+{ source: [0xB182], NFC: [0xB182], NFD: [0x1102, 0x1169, 0x11B1], NFKC: [0xB182], NFKD: [0x1102, 0x1169, 0x11B1] },
+{ source: [0xB183], NFC: [0xB183], NFD: [0x1102, 0x1169, 0x11B2], NFKC: [0xB183], NFKD: [0x1102, 0x1169, 0x11B2] },
+{ source: [0xB184], NFC: [0xB184], NFD: [0x1102, 0x1169, 0x11B3], NFKC: [0xB184], NFKD: [0x1102, 0x1169, 0x11B3] },
+{ source: [0xB185], NFC: [0xB185], NFD: [0x1102, 0x1169, 0x11B4], NFKC: [0xB185], NFKD: [0x1102, 0x1169, 0x11B4] },
+{ source: [0xB186], NFC: [0xB186], NFD: [0x1102, 0x1169, 0x11B5], NFKC: [0xB186], NFKD: [0x1102, 0x1169, 0x11B5] },
+{ source: [0xB187], NFC: [0xB187], NFD: [0x1102, 0x1169, 0x11B6], NFKC: [0xB187], NFKD: [0x1102, 0x1169, 0x11B6] },
+{ source: [0xB188], NFC: [0xB188], NFD: [0x1102, 0x1169, 0x11B7], NFKC: [0xB188], NFKD: [0x1102, 0x1169, 0x11B7] },
+{ source: [0xB189], NFC: [0xB189], NFD: [0x1102, 0x1169, 0x11B8], NFKC: [0xB189], NFKD: [0x1102, 0x1169, 0x11B8] },
+{ source: [0xB18A], NFC: [0xB18A], NFD: [0x1102, 0x1169, 0x11B9], NFKC: [0xB18A], NFKD: [0x1102, 0x1169, 0x11B9] },
+{ source: [0xB18B], NFC: [0xB18B], NFD: [0x1102, 0x1169, 0x11BA], NFKC: [0xB18B], NFKD: [0x1102, 0x1169, 0x11BA] },
+{ source: [0xB18C], NFC: [0xB18C], NFD: [0x1102, 0x1169, 0x11BB], NFKC: [0xB18C], NFKD: [0x1102, 0x1169, 0x11BB] },
+{ source: [0xB18D], NFC: [0xB18D], NFD: [0x1102, 0x1169, 0x11BC], NFKC: [0xB18D], NFKD: [0x1102, 0x1169, 0x11BC] },
+{ source: [0xB18E], NFC: [0xB18E], NFD: [0x1102, 0x1169, 0x11BD], NFKC: [0xB18E], NFKD: [0x1102, 0x1169, 0x11BD] },
+{ source: [0xB18F], NFC: [0xB18F], NFD: [0x1102, 0x1169, 0x11BE], NFKC: [0xB18F], NFKD: [0x1102, 0x1169, 0x11BE] },
+{ source: [0xB190], NFC: [0xB190], NFD: [0x1102, 0x1169, 0x11BF], NFKC: [0xB190], NFKD: [0x1102, 0x1169, 0x11BF] },
+{ source: [0xB191], NFC: [0xB191], NFD: [0x1102, 0x1169, 0x11C0], NFKC: [0xB191], NFKD: [0x1102, 0x1169, 0x11C0] },
+{ source: [0xB192], NFC: [0xB192], NFD: [0x1102, 0x1169, 0x11C1], NFKC: [0xB192], NFKD: [0x1102, 0x1169, 0x11C1] },
+{ source: [0xB193], NFC: [0xB193], NFD: [0x1102, 0x1169, 0x11C2], NFKC: [0xB193], NFKD: [0x1102, 0x1169, 0x11C2] },
+{ source: [0xB194], NFC: [0xB194], NFD: [0x1102, 0x116A], NFKC: [0xB194], NFKD: [0x1102, 0x116A] },
+{ source: [0xB195], NFC: [0xB195], NFD: [0x1102, 0x116A, 0x11A8], NFKC: [0xB195], NFKD: [0x1102, 0x116A, 0x11A8] },
+{ source: [0xB196], NFC: [0xB196], NFD: [0x1102, 0x116A, 0x11A9], NFKC: [0xB196], NFKD: [0x1102, 0x116A, 0x11A9] },
+{ source: [0xB197], NFC: [0xB197], NFD: [0x1102, 0x116A, 0x11AA], NFKC: [0xB197], NFKD: [0x1102, 0x116A, 0x11AA] },
+{ source: [0xB198], NFC: [0xB198], NFD: [0x1102, 0x116A, 0x11AB], NFKC: [0xB198], NFKD: [0x1102, 0x116A, 0x11AB] },
+{ source: [0xB199], NFC: [0xB199], NFD: [0x1102, 0x116A, 0x11AC], NFKC: [0xB199], NFKD: [0x1102, 0x116A, 0x11AC] },
+{ source: [0xB19A], NFC: [0xB19A], NFD: [0x1102, 0x116A, 0x11AD], NFKC: [0xB19A], NFKD: [0x1102, 0x116A, 0x11AD] },
+{ source: [0xB19B], NFC: [0xB19B], NFD: [0x1102, 0x116A, 0x11AE], NFKC: [0xB19B], NFKD: [0x1102, 0x116A, 0x11AE] },
+{ source: [0xB19C], NFC: [0xB19C], NFD: [0x1102, 0x116A, 0x11AF], NFKC: [0xB19C], NFKD: [0x1102, 0x116A, 0x11AF] },
+{ source: [0xB19D], NFC: [0xB19D], NFD: [0x1102, 0x116A, 0x11B0], NFKC: [0xB19D], NFKD: [0x1102, 0x116A, 0x11B0] },
+{ source: [0xB19E], NFC: [0xB19E], NFD: [0x1102, 0x116A, 0x11B1], NFKC: [0xB19E], NFKD: [0x1102, 0x116A, 0x11B1] },
+{ source: [0xB19F], NFC: [0xB19F], NFD: [0x1102, 0x116A, 0x11B2], NFKC: [0xB19F], NFKD: [0x1102, 0x116A, 0x11B2] },
+{ source: [0xB1A0], NFC: [0xB1A0], NFD: [0x1102, 0x116A, 0x11B3], NFKC: [0xB1A0], NFKD: [0x1102, 0x116A, 0x11B3] },
+{ source: [0xB1A1], NFC: [0xB1A1], NFD: [0x1102, 0x116A, 0x11B4], NFKC: [0xB1A1], NFKD: [0x1102, 0x116A, 0x11B4] },
+{ source: [0xB1A2], NFC: [0xB1A2], NFD: [0x1102, 0x116A, 0x11B5], NFKC: [0xB1A2], NFKD: [0x1102, 0x116A, 0x11B5] },
+{ source: [0xB1A3], NFC: [0xB1A3], NFD: [0x1102, 0x116A, 0x11B6], NFKC: [0xB1A3], NFKD: [0x1102, 0x116A, 0x11B6] },
+{ source: [0xB1A4], NFC: [0xB1A4], NFD: [0x1102, 0x116A, 0x11B7], NFKC: [0xB1A4], NFKD: [0x1102, 0x116A, 0x11B7] },
+{ source: [0xB1A5], NFC: [0xB1A5], NFD: [0x1102, 0x116A, 0x11B8], NFKC: [0xB1A5], NFKD: [0x1102, 0x116A, 0x11B8] },
+{ source: [0xB1A6], NFC: [0xB1A6], NFD: [0x1102, 0x116A, 0x11B9], NFKC: [0xB1A6], NFKD: [0x1102, 0x116A, 0x11B9] },
+{ source: [0xB1A7], NFC: [0xB1A7], NFD: [0x1102, 0x116A, 0x11BA], NFKC: [0xB1A7], NFKD: [0x1102, 0x116A, 0x11BA] },
+{ source: [0xB1A8], NFC: [0xB1A8], NFD: [0x1102, 0x116A, 0x11BB], NFKC: [0xB1A8], NFKD: [0x1102, 0x116A, 0x11BB] },
+{ source: [0xB1A9], NFC: [0xB1A9], NFD: [0x1102, 0x116A, 0x11BC], NFKC: [0xB1A9], NFKD: [0x1102, 0x116A, 0x11BC] },
+{ source: [0xB1AA], NFC: [0xB1AA], NFD: [0x1102, 0x116A, 0x11BD], NFKC: [0xB1AA], NFKD: [0x1102, 0x116A, 0x11BD] },
+{ source: [0xB1AB], NFC: [0xB1AB], NFD: [0x1102, 0x116A, 0x11BE], NFKC: [0xB1AB], NFKD: [0x1102, 0x116A, 0x11BE] },
+{ source: [0xB1AC], NFC: [0xB1AC], NFD: [0x1102, 0x116A, 0x11BF], NFKC: [0xB1AC], NFKD: [0x1102, 0x116A, 0x11BF] },
+{ source: [0xB1AD], NFC: [0xB1AD], NFD: [0x1102, 0x116A, 0x11C0], NFKC: [0xB1AD], NFKD: [0x1102, 0x116A, 0x11C0] },
+{ source: [0xB1AE], NFC: [0xB1AE], NFD: [0x1102, 0x116A, 0x11C1], NFKC: [0xB1AE], NFKD: [0x1102, 0x116A, 0x11C1] },
+{ source: [0xB1AF], NFC: [0xB1AF], NFD: [0x1102, 0x116A, 0x11C2], NFKC: [0xB1AF], NFKD: [0x1102, 0x116A, 0x11C2] },
+{ source: [0xB1B0], NFC: [0xB1B0], NFD: [0x1102, 0x116B], NFKC: [0xB1B0], NFKD: [0x1102, 0x116B] },
+{ source: [0xB1B1], NFC: [0xB1B1], NFD: [0x1102, 0x116B, 0x11A8], NFKC: [0xB1B1], NFKD: [0x1102, 0x116B, 0x11A8] },
+{ source: [0xB1B2], NFC: [0xB1B2], NFD: [0x1102, 0x116B, 0x11A9], NFKC: [0xB1B2], NFKD: [0x1102, 0x116B, 0x11A9] },
+{ source: [0xB1B3], NFC: [0xB1B3], NFD: [0x1102, 0x116B, 0x11AA], NFKC: [0xB1B3], NFKD: [0x1102, 0x116B, 0x11AA] },
+{ source: [0xB1B4], NFC: [0xB1B4], NFD: [0x1102, 0x116B, 0x11AB], NFKC: [0xB1B4], NFKD: [0x1102, 0x116B, 0x11AB] },
+{ source: [0xB1B5], NFC: [0xB1B5], NFD: [0x1102, 0x116B, 0x11AC], NFKC: [0xB1B5], NFKD: [0x1102, 0x116B, 0x11AC] },
+{ source: [0xB1B6], NFC: [0xB1B6], NFD: [0x1102, 0x116B, 0x11AD], NFKC: [0xB1B6], NFKD: [0x1102, 0x116B, 0x11AD] },
+{ source: [0xB1B7], NFC: [0xB1B7], NFD: [0x1102, 0x116B, 0x11AE], NFKC: [0xB1B7], NFKD: [0x1102, 0x116B, 0x11AE] },
+{ source: [0xB1B8], NFC: [0xB1B8], NFD: [0x1102, 0x116B, 0x11AF], NFKC: [0xB1B8], NFKD: [0x1102, 0x116B, 0x11AF] },
+{ source: [0xB1B9], NFC: [0xB1B9], NFD: [0x1102, 0x116B, 0x11B0], NFKC: [0xB1B9], NFKD: [0x1102, 0x116B, 0x11B0] },
+{ source: [0xB1BA], NFC: [0xB1BA], NFD: [0x1102, 0x116B, 0x11B1], NFKC: [0xB1BA], NFKD: [0x1102, 0x116B, 0x11B1] },
+{ source: [0xB1BB], NFC: [0xB1BB], NFD: [0x1102, 0x116B, 0x11B2], NFKC: [0xB1BB], NFKD: [0x1102, 0x116B, 0x11B2] },
+{ source: [0xB1BC], NFC: [0xB1BC], NFD: [0x1102, 0x116B, 0x11B3], NFKC: [0xB1BC], NFKD: [0x1102, 0x116B, 0x11B3] },
+{ source: [0xB1BD], NFC: [0xB1BD], NFD: [0x1102, 0x116B, 0x11B4], NFKC: [0xB1BD], NFKD: [0x1102, 0x116B, 0x11B4] },
+{ source: [0xB1BE], NFC: [0xB1BE], NFD: [0x1102, 0x116B, 0x11B5], NFKC: [0xB1BE], NFKD: [0x1102, 0x116B, 0x11B5] },
+{ source: [0xB1BF], NFC: [0xB1BF], NFD: [0x1102, 0x116B, 0x11B6], NFKC: [0xB1BF], NFKD: [0x1102, 0x116B, 0x11B6] },
+{ source: [0xB1C0], NFC: [0xB1C0], NFD: [0x1102, 0x116B, 0x11B7], NFKC: [0xB1C0], NFKD: [0x1102, 0x116B, 0x11B7] },
+{ source: [0xB1C1], NFC: [0xB1C1], NFD: [0x1102, 0x116B, 0x11B8], NFKC: [0xB1C1], NFKD: [0x1102, 0x116B, 0x11B8] },
+{ source: [0xB1C2], NFC: [0xB1C2], NFD: [0x1102, 0x116B, 0x11B9], NFKC: [0xB1C2], NFKD: [0x1102, 0x116B, 0x11B9] },
+{ source: [0xB1C3], NFC: [0xB1C3], NFD: [0x1102, 0x116B, 0x11BA], NFKC: [0xB1C3], NFKD: [0x1102, 0x116B, 0x11BA] },
+{ source: [0xB1C4], NFC: [0xB1C4], NFD: [0x1102, 0x116B, 0x11BB], NFKC: [0xB1C4], NFKD: [0x1102, 0x116B, 0x11BB] },
+{ source: [0xB1C5], NFC: [0xB1C5], NFD: [0x1102, 0x116B, 0x11BC], NFKC: [0xB1C5], NFKD: [0x1102, 0x116B, 0x11BC] },
+{ source: [0xB1C6], NFC: [0xB1C6], NFD: [0x1102, 0x116B, 0x11BD], NFKC: [0xB1C6], NFKD: [0x1102, 0x116B, 0x11BD] },
+{ source: [0xB1C7], NFC: [0xB1C7], NFD: [0x1102, 0x116B, 0x11BE], NFKC: [0xB1C7], NFKD: [0x1102, 0x116B, 0x11BE] },
+{ source: [0xB1C8], NFC: [0xB1C8], NFD: [0x1102, 0x116B, 0x11BF], NFKC: [0xB1C8], NFKD: [0x1102, 0x116B, 0x11BF] },
+{ source: [0xB1C9], NFC: [0xB1C9], NFD: [0x1102, 0x116B, 0x11C0], NFKC: [0xB1C9], NFKD: [0x1102, 0x116B, 0x11C0] },
+{ source: [0xB1CA], NFC: [0xB1CA], NFD: [0x1102, 0x116B, 0x11C1], NFKC: [0xB1CA], NFKD: [0x1102, 0x116B, 0x11C1] },
+{ source: [0xB1CB], NFC: [0xB1CB], NFD: [0x1102, 0x116B, 0x11C2], NFKC: [0xB1CB], NFKD: [0x1102, 0x116B, 0x11C2] },
+{ source: [0xB1CC], NFC: [0xB1CC], NFD: [0x1102, 0x116C], NFKC: [0xB1CC], NFKD: [0x1102, 0x116C] },
+{ source: [0xB1CD], NFC: [0xB1CD], NFD: [0x1102, 0x116C, 0x11A8], NFKC: [0xB1CD], NFKD: [0x1102, 0x116C, 0x11A8] },
+{ source: [0xB1CE], NFC: [0xB1CE], NFD: [0x1102, 0x116C, 0x11A9], NFKC: [0xB1CE], NFKD: [0x1102, 0x116C, 0x11A9] },
+{ source: [0xB1CF], NFC: [0xB1CF], NFD: [0x1102, 0x116C, 0x11AA], NFKC: [0xB1CF], NFKD: [0x1102, 0x116C, 0x11AA] },
+{ source: [0xB1D0], NFC: [0xB1D0], NFD: [0x1102, 0x116C, 0x11AB], NFKC: [0xB1D0], NFKD: [0x1102, 0x116C, 0x11AB] },
+{ source: [0xB1D1], NFC: [0xB1D1], NFD: [0x1102, 0x116C, 0x11AC], NFKC: [0xB1D1], NFKD: [0x1102, 0x116C, 0x11AC] },
+{ source: [0xB1D2], NFC: [0xB1D2], NFD: [0x1102, 0x116C, 0x11AD], NFKC: [0xB1D2], NFKD: [0x1102, 0x116C, 0x11AD] },
+{ source: [0xB1D3], NFC: [0xB1D3], NFD: [0x1102, 0x116C, 0x11AE], NFKC: [0xB1D3], NFKD: [0x1102, 0x116C, 0x11AE] },
+{ source: [0xB1D4], NFC: [0xB1D4], NFD: [0x1102, 0x116C, 0x11AF], NFKC: [0xB1D4], NFKD: [0x1102, 0x116C, 0x11AF] },
+{ source: [0xB1D5], NFC: [0xB1D5], NFD: [0x1102, 0x116C, 0x11B0], NFKC: [0xB1D5], NFKD: [0x1102, 0x116C, 0x11B0] },
+{ source: [0xB1D6], NFC: [0xB1D6], NFD: [0x1102, 0x116C, 0x11B1], NFKC: [0xB1D6], NFKD: [0x1102, 0x116C, 0x11B1] },
+{ source: [0xB1D7], NFC: [0xB1D7], NFD: [0x1102, 0x116C, 0x11B2], NFKC: [0xB1D7], NFKD: [0x1102, 0x116C, 0x11B2] },
+{ source: [0xB1D8], NFC: [0xB1D8], NFD: [0x1102, 0x116C, 0x11B3], NFKC: [0xB1D8], NFKD: [0x1102, 0x116C, 0x11B3] },
+{ source: [0xB1D9], NFC: [0xB1D9], NFD: [0x1102, 0x116C, 0x11B4], NFKC: [0xB1D9], NFKD: [0x1102, 0x116C, 0x11B4] },
+{ source: [0xB1DA], NFC: [0xB1DA], NFD: [0x1102, 0x116C, 0x11B5], NFKC: [0xB1DA], NFKD: [0x1102, 0x116C, 0x11B5] },
+{ source: [0xB1DB], NFC: [0xB1DB], NFD: [0x1102, 0x116C, 0x11B6], NFKC: [0xB1DB], NFKD: [0x1102, 0x116C, 0x11B6] },
+{ source: [0xB1DC], NFC: [0xB1DC], NFD: [0x1102, 0x116C, 0x11B7], NFKC: [0xB1DC], NFKD: [0x1102, 0x116C, 0x11B7] },
+{ source: [0xB1DD], NFC: [0xB1DD], NFD: [0x1102, 0x116C, 0x11B8], NFKC: [0xB1DD], NFKD: [0x1102, 0x116C, 0x11B8] },
+{ source: [0xB1DE], NFC: [0xB1DE], NFD: [0x1102, 0x116C, 0x11B9], NFKC: [0xB1DE], NFKD: [0x1102, 0x116C, 0x11B9] },
+{ source: [0xB1DF], NFC: [0xB1DF], NFD: [0x1102, 0x116C, 0x11BA], NFKC: [0xB1DF], NFKD: [0x1102, 0x116C, 0x11BA] },
+{ source: [0xB1E0], NFC: [0xB1E0], NFD: [0x1102, 0x116C, 0x11BB], NFKC: [0xB1E0], NFKD: [0x1102, 0x116C, 0x11BB] },
+{ source: [0xB1E1], NFC: [0xB1E1], NFD: [0x1102, 0x116C, 0x11BC], NFKC: [0xB1E1], NFKD: [0x1102, 0x116C, 0x11BC] },
+{ source: [0xB1E2], NFC: [0xB1E2], NFD: [0x1102, 0x116C, 0x11BD], NFKC: [0xB1E2], NFKD: [0x1102, 0x116C, 0x11BD] },
+{ source: [0xB1E3], NFC: [0xB1E3], NFD: [0x1102, 0x116C, 0x11BE], NFKC: [0xB1E3], NFKD: [0x1102, 0x116C, 0x11BE] },
+{ source: [0xB1E4], NFC: [0xB1E4], NFD: [0x1102, 0x116C, 0x11BF], NFKC: [0xB1E4], NFKD: [0x1102, 0x116C, 0x11BF] },
+{ source: [0xB1E5], NFC: [0xB1E5], NFD: [0x1102, 0x116C, 0x11C0], NFKC: [0xB1E5], NFKD: [0x1102, 0x116C, 0x11C0] },
+{ source: [0xB1E6], NFC: [0xB1E6], NFD: [0x1102, 0x116C, 0x11C1], NFKC: [0xB1E6], NFKD: [0x1102, 0x116C, 0x11C1] },
+{ source: [0xB1E7], NFC: [0xB1E7], NFD: [0x1102, 0x116C, 0x11C2], NFKC: [0xB1E7], NFKD: [0x1102, 0x116C, 0x11C2] },
+{ source: [0xB1E8], NFC: [0xB1E8], NFD: [0x1102, 0x116D], NFKC: [0xB1E8], NFKD: [0x1102, 0x116D] },
+{ source: [0xB1E9], NFC: [0xB1E9], NFD: [0x1102, 0x116D, 0x11A8], NFKC: [0xB1E9], NFKD: [0x1102, 0x116D, 0x11A8] },
+{ source: [0xB1EA], NFC: [0xB1EA], NFD: [0x1102, 0x116D, 0x11A9], NFKC: [0xB1EA], NFKD: [0x1102, 0x116D, 0x11A9] },
+{ source: [0xB1EB], NFC: [0xB1EB], NFD: [0x1102, 0x116D, 0x11AA], NFKC: [0xB1EB], NFKD: [0x1102, 0x116D, 0x11AA] },
+{ source: [0xB1EC], NFC: [0xB1EC], NFD: [0x1102, 0x116D, 0x11AB], NFKC: [0xB1EC], NFKD: [0x1102, 0x116D, 0x11AB] },
+{ source: [0xB1ED], NFC: [0xB1ED], NFD: [0x1102, 0x116D, 0x11AC], NFKC: [0xB1ED], NFKD: [0x1102, 0x116D, 0x11AC] },
+{ source: [0xB1EE], NFC: [0xB1EE], NFD: [0x1102, 0x116D, 0x11AD], NFKC: [0xB1EE], NFKD: [0x1102, 0x116D, 0x11AD] },
+{ source: [0xB1EF], NFC: [0xB1EF], NFD: [0x1102, 0x116D, 0x11AE], NFKC: [0xB1EF], NFKD: [0x1102, 0x116D, 0x11AE] },
+{ source: [0xB1F0], NFC: [0xB1F0], NFD: [0x1102, 0x116D, 0x11AF], NFKC: [0xB1F0], NFKD: [0x1102, 0x116D, 0x11AF] },
+{ source: [0xB1F1], NFC: [0xB1F1], NFD: [0x1102, 0x116D, 0x11B0], NFKC: [0xB1F1], NFKD: [0x1102, 0x116D, 0x11B0] },
+{ source: [0xB1F2], NFC: [0xB1F2], NFD: [0x1102, 0x116D, 0x11B1], NFKC: [0xB1F2], NFKD: [0x1102, 0x116D, 0x11B1] },
+{ source: [0xB1F3], NFC: [0xB1F3], NFD: [0x1102, 0x116D, 0x11B2], NFKC: [0xB1F3], NFKD: [0x1102, 0x116D, 0x11B2] },
+{ source: [0xB1F4], NFC: [0xB1F4], NFD: [0x1102, 0x116D, 0x11B3], NFKC: [0xB1F4], NFKD: [0x1102, 0x116D, 0x11B3] },
+{ source: [0xB1F5], NFC: [0xB1F5], NFD: [0x1102, 0x116D, 0x11B4], NFKC: [0xB1F5], NFKD: [0x1102, 0x116D, 0x11B4] },
+{ source: [0xB1F6], NFC: [0xB1F6], NFD: [0x1102, 0x116D, 0x11B5], NFKC: [0xB1F6], NFKD: [0x1102, 0x116D, 0x11B5] },
+{ source: [0xB1F7], NFC: [0xB1F7], NFD: [0x1102, 0x116D, 0x11B6], NFKC: [0xB1F7], NFKD: [0x1102, 0x116D, 0x11B6] },
+{ source: [0xB1F8], NFC: [0xB1F8], NFD: [0x1102, 0x116D, 0x11B7], NFKC: [0xB1F8], NFKD: [0x1102, 0x116D, 0x11B7] },
+{ source: [0xB1F9], NFC: [0xB1F9], NFD: [0x1102, 0x116D, 0x11B8], NFKC: [0xB1F9], NFKD: [0x1102, 0x116D, 0x11B8] },
+{ source: [0xB1FA], NFC: [0xB1FA], NFD: [0x1102, 0x116D, 0x11B9], NFKC: [0xB1FA], NFKD: [0x1102, 0x116D, 0x11B9] },
+{ source: [0xB1FB], NFC: [0xB1FB], NFD: [0x1102, 0x116D, 0x11BA], NFKC: [0xB1FB], NFKD: [0x1102, 0x116D, 0x11BA] },
+{ source: [0xB1FC], NFC: [0xB1FC], NFD: [0x1102, 0x116D, 0x11BB], NFKC: [0xB1FC], NFKD: [0x1102, 0x116D, 0x11BB] },
+{ source: [0xB1FD], NFC: [0xB1FD], NFD: [0x1102, 0x116D, 0x11BC], NFKC: [0xB1FD], NFKD: [0x1102, 0x116D, 0x11BC] },
+{ source: [0xB1FE], NFC: [0xB1FE], NFD: [0x1102, 0x116D, 0x11BD], NFKC: [0xB1FE], NFKD: [0x1102, 0x116D, 0x11BD] },
+{ source: [0xB1FF], NFC: [0xB1FF], NFD: [0x1102, 0x116D, 0x11BE], NFKC: [0xB1FF], NFKD: [0x1102, 0x116D, 0x11BE] },
+{ source: [0xB200], NFC: [0xB200], NFD: [0x1102, 0x116D, 0x11BF], NFKC: [0xB200], NFKD: [0x1102, 0x116D, 0x11BF] },
+{ source: [0xB201], NFC: [0xB201], NFD: [0x1102, 0x116D, 0x11C0], NFKC: [0xB201], NFKD: [0x1102, 0x116D, 0x11C0] },
+{ source: [0xB202], NFC: [0xB202], NFD: [0x1102, 0x116D, 0x11C1], NFKC: [0xB202], NFKD: [0x1102, 0x116D, 0x11C1] },
+{ source: [0xB203], NFC: [0xB203], NFD: [0x1102, 0x116D, 0x11C2], NFKC: [0xB203], NFKD: [0x1102, 0x116D, 0x11C2] },
+{ source: [0xB204], NFC: [0xB204], NFD: [0x1102, 0x116E], NFKC: [0xB204], NFKD: [0x1102, 0x116E] },
+{ source: [0xB205], NFC: [0xB205], NFD: [0x1102, 0x116E, 0x11A8], NFKC: [0xB205], NFKD: [0x1102, 0x116E, 0x11A8] },
+{ source: [0xB206], NFC: [0xB206], NFD: [0x1102, 0x116E, 0x11A9], NFKC: [0xB206], NFKD: [0x1102, 0x116E, 0x11A9] },
+{ source: [0xB207], NFC: [0xB207], NFD: [0x1102, 0x116E, 0x11AA], NFKC: [0xB207], NFKD: [0x1102, 0x116E, 0x11AA] },
+{ source: [0xB208], NFC: [0xB208], NFD: [0x1102, 0x116E, 0x11AB], NFKC: [0xB208], NFKD: [0x1102, 0x116E, 0x11AB] },
+{ source: [0xB209], NFC: [0xB209], NFD: [0x1102, 0x116E, 0x11AC], NFKC: [0xB209], NFKD: [0x1102, 0x116E, 0x11AC] },
+{ source: [0xB20A], NFC: [0xB20A], NFD: [0x1102, 0x116E, 0x11AD], NFKC: [0xB20A], NFKD: [0x1102, 0x116E, 0x11AD] },
+{ source: [0xB20B], NFC: [0xB20B], NFD: [0x1102, 0x116E, 0x11AE], NFKC: [0xB20B], NFKD: [0x1102, 0x116E, 0x11AE] },
+{ source: [0xB20C], NFC: [0xB20C], NFD: [0x1102, 0x116E, 0x11AF], NFKC: [0xB20C], NFKD: [0x1102, 0x116E, 0x11AF] },
+{ source: [0xB20D], NFC: [0xB20D], NFD: [0x1102, 0x116E, 0x11B0], NFKC: [0xB20D], NFKD: [0x1102, 0x116E, 0x11B0] },
+{ source: [0xB20E], NFC: [0xB20E], NFD: [0x1102, 0x116E, 0x11B1], NFKC: [0xB20E], NFKD: [0x1102, 0x116E, 0x11B1] },
+{ source: [0xB20F], NFC: [0xB20F], NFD: [0x1102, 0x116E, 0x11B2], NFKC: [0xB20F], NFKD: [0x1102, 0x116E, 0x11B2] },
+{ source: [0xB210], NFC: [0xB210], NFD: [0x1102, 0x116E, 0x11B3], NFKC: [0xB210], NFKD: [0x1102, 0x116E, 0x11B3] },
+{ source: [0xB211], NFC: [0xB211], NFD: [0x1102, 0x116E, 0x11B4], NFKC: [0xB211], NFKD: [0x1102, 0x116E, 0x11B4] },
+{ source: [0xB212], NFC: [0xB212], NFD: [0x1102, 0x116E, 0x11B5], NFKC: [0xB212], NFKD: [0x1102, 0x116E, 0x11B5] },
+{ source: [0xB213], NFC: [0xB213], NFD: [0x1102, 0x116E, 0x11B6], NFKC: [0xB213], NFKD: [0x1102, 0x116E, 0x11B6] },
+{ source: [0xB214], NFC: [0xB214], NFD: [0x1102, 0x116E, 0x11B7], NFKC: [0xB214], NFKD: [0x1102, 0x116E, 0x11B7] },
+{ source: [0xB215], NFC: [0xB215], NFD: [0x1102, 0x116E, 0x11B8], NFKC: [0xB215], NFKD: [0x1102, 0x116E, 0x11B8] },
+{ source: [0xB216], NFC: [0xB216], NFD: [0x1102, 0x116E, 0x11B9], NFKC: [0xB216], NFKD: [0x1102, 0x116E, 0x11B9] },
+{ source: [0xB217], NFC: [0xB217], NFD: [0x1102, 0x116E, 0x11BA], NFKC: [0xB217], NFKD: [0x1102, 0x116E, 0x11BA] },
+{ source: [0xB218], NFC: [0xB218], NFD: [0x1102, 0x116E, 0x11BB], NFKC: [0xB218], NFKD: [0x1102, 0x116E, 0x11BB] },
+{ source: [0xB219], NFC: [0xB219], NFD: [0x1102, 0x116E, 0x11BC], NFKC: [0xB219], NFKD: [0x1102, 0x116E, 0x11BC] },
+{ source: [0xB21A], NFC: [0xB21A], NFD: [0x1102, 0x116E, 0x11BD], NFKC: [0xB21A], NFKD: [0x1102, 0x116E, 0x11BD] },
+{ source: [0xB21B], NFC: [0xB21B], NFD: [0x1102, 0x116E, 0x11BE], NFKC: [0xB21B], NFKD: [0x1102, 0x116E, 0x11BE] },
+{ source: [0xB21C], NFC: [0xB21C], NFD: [0x1102, 0x116E, 0x11BF], NFKC: [0xB21C], NFKD: [0x1102, 0x116E, 0x11BF] },
+{ source: [0xB21D], NFC: [0xB21D], NFD: [0x1102, 0x116E, 0x11C0], NFKC: [0xB21D], NFKD: [0x1102, 0x116E, 0x11C0] },
+{ source: [0xB21E], NFC: [0xB21E], NFD: [0x1102, 0x116E, 0x11C1], NFKC: [0xB21E], NFKD: [0x1102, 0x116E, 0x11C1] },
+{ source: [0xB21F], NFC: [0xB21F], NFD: [0x1102, 0x116E, 0x11C2], NFKC: [0xB21F], NFKD: [0x1102, 0x116E, 0x11C2] },
+{ source: [0xB220], NFC: [0xB220], NFD: [0x1102, 0x116F], NFKC: [0xB220], NFKD: [0x1102, 0x116F] },
+{ source: [0xB221], NFC: [0xB221], NFD: [0x1102, 0x116F, 0x11A8], NFKC: [0xB221], NFKD: [0x1102, 0x116F, 0x11A8] },
+{ source: [0xB222], NFC: [0xB222], NFD: [0x1102, 0x116F, 0x11A9], NFKC: [0xB222], NFKD: [0x1102, 0x116F, 0x11A9] },
+{ source: [0xB223], NFC: [0xB223], NFD: [0x1102, 0x116F, 0x11AA], NFKC: [0xB223], NFKD: [0x1102, 0x116F, 0x11AA] },
+{ source: [0xB224], NFC: [0xB224], NFD: [0x1102, 0x116F, 0x11AB], NFKC: [0xB224], NFKD: [0x1102, 0x116F, 0x11AB] },
+{ source: [0xB225], NFC: [0xB225], NFD: [0x1102, 0x116F, 0x11AC], NFKC: [0xB225], NFKD: [0x1102, 0x116F, 0x11AC] },
+{ source: [0xB226], NFC: [0xB226], NFD: [0x1102, 0x116F, 0x11AD], NFKC: [0xB226], NFKD: [0x1102, 0x116F, 0x11AD] },
+{ source: [0xB227], NFC: [0xB227], NFD: [0x1102, 0x116F, 0x11AE], NFKC: [0xB227], NFKD: [0x1102, 0x116F, 0x11AE] },
+{ source: [0xB228], NFC: [0xB228], NFD: [0x1102, 0x116F, 0x11AF], NFKC: [0xB228], NFKD: [0x1102, 0x116F, 0x11AF] },
+{ source: [0xB229], NFC: [0xB229], NFD: [0x1102, 0x116F, 0x11B0], NFKC: [0xB229], NFKD: [0x1102, 0x116F, 0x11B0] },
+{ source: [0xB22A], NFC: [0xB22A], NFD: [0x1102, 0x116F, 0x11B1], NFKC: [0xB22A], NFKD: [0x1102, 0x116F, 0x11B1] },
+{ source: [0xB22B], NFC: [0xB22B], NFD: [0x1102, 0x116F, 0x11B2], NFKC: [0xB22B], NFKD: [0x1102, 0x116F, 0x11B2] },
+{ source: [0xB22C], NFC: [0xB22C], NFD: [0x1102, 0x116F, 0x11B3], NFKC: [0xB22C], NFKD: [0x1102, 0x116F, 0x11B3] },
+{ source: [0xB22D], NFC: [0xB22D], NFD: [0x1102, 0x116F, 0x11B4], NFKC: [0xB22D], NFKD: [0x1102, 0x116F, 0x11B4] },
+{ source: [0xB22E], NFC: [0xB22E], NFD: [0x1102, 0x116F, 0x11B5], NFKC: [0xB22E], NFKD: [0x1102, 0x116F, 0x11B5] },
+{ source: [0xB22F], NFC: [0xB22F], NFD: [0x1102, 0x116F, 0x11B6], NFKC: [0xB22F], NFKD: [0x1102, 0x116F, 0x11B6] },
+{ source: [0xB230], NFC: [0xB230], NFD: [0x1102, 0x116F, 0x11B7], NFKC: [0xB230], NFKD: [0x1102, 0x116F, 0x11B7] },
+{ source: [0xB231], NFC: [0xB231], NFD: [0x1102, 0x116F, 0x11B8], NFKC: [0xB231], NFKD: [0x1102, 0x116F, 0x11B8] },
+{ source: [0xB232], NFC: [0xB232], NFD: [0x1102, 0x116F, 0x11B9], NFKC: [0xB232], NFKD: [0x1102, 0x116F, 0x11B9] },
+{ source: [0xB233], NFC: [0xB233], NFD: [0x1102, 0x116F, 0x11BA], NFKC: [0xB233], NFKD: [0x1102, 0x116F, 0x11BA] },
+{ source: [0xB234], NFC: [0xB234], NFD: [0x1102, 0x116F, 0x11BB], NFKC: [0xB234], NFKD: [0x1102, 0x116F, 0x11BB] },
+{ source: [0xB235], NFC: [0xB235], NFD: [0x1102, 0x116F, 0x11BC], NFKC: [0xB235], NFKD: [0x1102, 0x116F, 0x11BC] },
+{ source: [0xB236], NFC: [0xB236], NFD: [0x1102, 0x116F, 0x11BD], NFKC: [0xB236], NFKD: [0x1102, 0x116F, 0x11BD] },
+{ source: [0xB237], NFC: [0xB237], NFD: [0x1102, 0x116F, 0x11BE], NFKC: [0xB237], NFKD: [0x1102, 0x116F, 0x11BE] },
+{ source: [0xB238], NFC: [0xB238], NFD: [0x1102, 0x116F, 0x11BF], NFKC: [0xB238], NFKD: [0x1102, 0x116F, 0x11BF] },
+{ source: [0xB239], NFC: [0xB239], NFD: [0x1102, 0x116F, 0x11C0], NFKC: [0xB239], NFKD: [0x1102, 0x116F, 0x11C0] },
+{ source: [0xB23A], NFC: [0xB23A], NFD: [0x1102, 0x116F, 0x11C1], NFKC: [0xB23A], NFKD: [0x1102, 0x116F, 0x11C1] },
+{ source: [0xB23B], NFC: [0xB23B], NFD: [0x1102, 0x116F, 0x11C2], NFKC: [0xB23B], NFKD: [0x1102, 0x116F, 0x11C2] },
+{ source: [0xB23C], NFC: [0xB23C], NFD: [0x1102, 0x1170], NFKC: [0xB23C], NFKD: [0x1102, 0x1170] },
+{ source: [0xB23D], NFC: [0xB23D], NFD: [0x1102, 0x1170, 0x11A8], NFKC: [0xB23D], NFKD: [0x1102, 0x1170, 0x11A8] },
+{ source: [0xB23E], NFC: [0xB23E], NFD: [0x1102, 0x1170, 0x11A9], NFKC: [0xB23E], NFKD: [0x1102, 0x1170, 0x11A9] },
+{ source: [0xB23F], NFC: [0xB23F], NFD: [0x1102, 0x1170, 0x11AA], NFKC: [0xB23F], NFKD: [0x1102, 0x1170, 0x11AA] },
+{ source: [0xB240], NFC: [0xB240], NFD: [0x1102, 0x1170, 0x11AB], NFKC: [0xB240], NFKD: [0x1102, 0x1170, 0x11AB] },
+{ source: [0xB241], NFC: [0xB241], NFD: [0x1102, 0x1170, 0x11AC], NFKC: [0xB241], NFKD: [0x1102, 0x1170, 0x11AC] },
+{ source: [0xB242], NFC: [0xB242], NFD: [0x1102, 0x1170, 0x11AD], NFKC: [0xB242], NFKD: [0x1102, 0x1170, 0x11AD] },
+{ source: [0xB243], NFC: [0xB243], NFD: [0x1102, 0x1170, 0x11AE], NFKC: [0xB243], NFKD: [0x1102, 0x1170, 0x11AE] },
+{ source: [0xB244], NFC: [0xB244], NFD: [0x1102, 0x1170, 0x11AF], NFKC: [0xB244], NFKD: [0x1102, 0x1170, 0x11AF] },
+{ source: [0xB245], NFC: [0xB245], NFD: [0x1102, 0x1170, 0x11B0], NFKC: [0xB245], NFKD: [0x1102, 0x1170, 0x11B0] },
+{ source: [0xB246], NFC: [0xB246], NFD: [0x1102, 0x1170, 0x11B1], NFKC: [0xB246], NFKD: [0x1102, 0x1170, 0x11B1] },
+{ source: [0xB247], NFC: [0xB247], NFD: [0x1102, 0x1170, 0x11B2], NFKC: [0xB247], NFKD: [0x1102, 0x1170, 0x11B2] },
+{ source: [0xB248], NFC: [0xB248], NFD: [0x1102, 0x1170, 0x11B3], NFKC: [0xB248], NFKD: [0x1102, 0x1170, 0x11B3] },
+{ source: [0xB249], NFC: [0xB249], NFD: [0x1102, 0x1170, 0x11B4], NFKC: [0xB249], NFKD: [0x1102, 0x1170, 0x11B4] },
+{ source: [0xB24A], NFC: [0xB24A], NFD: [0x1102, 0x1170, 0x11B5], NFKC: [0xB24A], NFKD: [0x1102, 0x1170, 0x11B5] },
+{ source: [0xB24B], NFC: [0xB24B], NFD: [0x1102, 0x1170, 0x11B6], NFKC: [0xB24B], NFKD: [0x1102, 0x1170, 0x11B6] },
+{ source: [0xB24C], NFC: [0xB24C], NFD: [0x1102, 0x1170, 0x11B7], NFKC: [0xB24C], NFKD: [0x1102, 0x1170, 0x11B7] },
+{ source: [0xB24D], NFC: [0xB24D], NFD: [0x1102, 0x1170, 0x11B8], NFKC: [0xB24D], NFKD: [0x1102, 0x1170, 0x11B8] },
+{ source: [0xB24E], NFC: [0xB24E], NFD: [0x1102, 0x1170, 0x11B9], NFKC: [0xB24E], NFKD: [0x1102, 0x1170, 0x11B9] },
+{ source: [0xB24F], NFC: [0xB24F], NFD: [0x1102, 0x1170, 0x11BA], NFKC: [0xB24F], NFKD: [0x1102, 0x1170, 0x11BA] },
+{ source: [0xB250], NFC: [0xB250], NFD: [0x1102, 0x1170, 0x11BB], NFKC: [0xB250], NFKD: [0x1102, 0x1170, 0x11BB] },
+{ source: [0xB251], NFC: [0xB251], NFD: [0x1102, 0x1170, 0x11BC], NFKC: [0xB251], NFKD: [0x1102, 0x1170, 0x11BC] },
+{ source: [0xB252], NFC: [0xB252], NFD: [0x1102, 0x1170, 0x11BD], NFKC: [0xB252], NFKD: [0x1102, 0x1170, 0x11BD] },
+{ source: [0xB253], NFC: [0xB253], NFD: [0x1102, 0x1170, 0x11BE], NFKC: [0xB253], NFKD: [0x1102, 0x1170, 0x11BE] },
+{ source: [0xB254], NFC: [0xB254], NFD: [0x1102, 0x1170, 0x11BF], NFKC: [0xB254], NFKD: [0x1102, 0x1170, 0x11BF] },
+{ source: [0xB255], NFC: [0xB255], NFD: [0x1102, 0x1170, 0x11C0], NFKC: [0xB255], NFKD: [0x1102, 0x1170, 0x11C0] },
+{ source: [0xB256], NFC: [0xB256], NFD: [0x1102, 0x1170, 0x11C1], NFKC: [0xB256], NFKD: [0x1102, 0x1170, 0x11C1] },
+{ source: [0xB257], NFC: [0xB257], NFD: [0x1102, 0x1170, 0x11C2], NFKC: [0xB257], NFKD: [0x1102, 0x1170, 0x11C2] },
+{ source: [0xB258], NFC: [0xB258], NFD: [0x1102, 0x1171], NFKC: [0xB258], NFKD: [0x1102, 0x1171] },
+{ source: [0xB259], NFC: [0xB259], NFD: [0x1102, 0x1171, 0x11A8], NFKC: [0xB259], NFKD: [0x1102, 0x1171, 0x11A8] },
+{ source: [0xB25A], NFC: [0xB25A], NFD: [0x1102, 0x1171, 0x11A9], NFKC: [0xB25A], NFKD: [0x1102, 0x1171, 0x11A9] },
+{ source: [0xB25B], NFC: [0xB25B], NFD: [0x1102, 0x1171, 0x11AA], NFKC: [0xB25B], NFKD: [0x1102, 0x1171, 0x11AA] },
+{ source: [0xB25C], NFC: [0xB25C], NFD: [0x1102, 0x1171, 0x11AB], NFKC: [0xB25C], NFKD: [0x1102, 0x1171, 0x11AB] },
+{ source: [0xB25D], NFC: [0xB25D], NFD: [0x1102, 0x1171, 0x11AC], NFKC: [0xB25D], NFKD: [0x1102, 0x1171, 0x11AC] },
+{ source: [0xB25E], NFC: [0xB25E], NFD: [0x1102, 0x1171, 0x11AD], NFKC: [0xB25E], NFKD: [0x1102, 0x1171, 0x11AD] },
+{ source: [0xB25F], NFC: [0xB25F], NFD: [0x1102, 0x1171, 0x11AE], NFKC: [0xB25F], NFKD: [0x1102, 0x1171, 0x11AE] },
+{ source: [0xB260], NFC: [0xB260], NFD: [0x1102, 0x1171, 0x11AF], NFKC: [0xB260], NFKD: [0x1102, 0x1171, 0x11AF] },
+{ source: [0xB261], NFC: [0xB261], NFD: [0x1102, 0x1171, 0x11B0], NFKC: [0xB261], NFKD: [0x1102, 0x1171, 0x11B0] },
+{ source: [0xB262], NFC: [0xB262], NFD: [0x1102, 0x1171, 0x11B1], NFKC: [0xB262], NFKD: [0x1102, 0x1171, 0x11B1] },
+{ source: [0xB263], NFC: [0xB263], NFD: [0x1102, 0x1171, 0x11B2], NFKC: [0xB263], NFKD: [0x1102, 0x1171, 0x11B2] },
+{ source: [0xB264], NFC: [0xB264], NFD: [0x1102, 0x1171, 0x11B3], NFKC: [0xB264], NFKD: [0x1102, 0x1171, 0x11B3] },
+{ source: [0xB265], NFC: [0xB265], NFD: [0x1102, 0x1171, 0x11B4], NFKC: [0xB265], NFKD: [0x1102, 0x1171, 0x11B4] },
+{ source: [0xB266], NFC: [0xB266], NFD: [0x1102, 0x1171, 0x11B5], NFKC: [0xB266], NFKD: [0x1102, 0x1171, 0x11B5] },
+{ source: [0xB267], NFC: [0xB267], NFD: [0x1102, 0x1171, 0x11B6], NFKC: [0xB267], NFKD: [0x1102, 0x1171, 0x11B6] },
+{ source: [0xB268], NFC: [0xB268], NFD: [0x1102, 0x1171, 0x11B7], NFKC: [0xB268], NFKD: [0x1102, 0x1171, 0x11B7] },
+{ source: [0xB269], NFC: [0xB269], NFD: [0x1102, 0x1171, 0x11B8], NFKC: [0xB269], NFKD: [0x1102, 0x1171, 0x11B8] },
+{ source: [0xB26A], NFC: [0xB26A], NFD: [0x1102, 0x1171, 0x11B9], NFKC: [0xB26A], NFKD: [0x1102, 0x1171, 0x11B9] },
+{ source: [0xB26B], NFC: [0xB26B], NFD: [0x1102, 0x1171, 0x11BA], NFKC: [0xB26B], NFKD: [0x1102, 0x1171, 0x11BA] },
+{ source: [0xB26C], NFC: [0xB26C], NFD: [0x1102, 0x1171, 0x11BB], NFKC: [0xB26C], NFKD: [0x1102, 0x1171, 0x11BB] },
+{ source: [0xB26D], NFC: [0xB26D], NFD: [0x1102, 0x1171, 0x11BC], NFKC: [0xB26D], NFKD: [0x1102, 0x1171, 0x11BC] },
+{ source: [0xB26E], NFC: [0xB26E], NFD: [0x1102, 0x1171, 0x11BD], NFKC: [0xB26E], NFKD: [0x1102, 0x1171, 0x11BD] },
+{ source: [0xB26F], NFC: [0xB26F], NFD: [0x1102, 0x1171, 0x11BE], NFKC: [0xB26F], NFKD: [0x1102, 0x1171, 0x11BE] },
+{ source: [0xB270], NFC: [0xB270], NFD: [0x1102, 0x1171, 0x11BF], NFKC: [0xB270], NFKD: [0x1102, 0x1171, 0x11BF] },
+{ source: [0xB271], NFC: [0xB271], NFD: [0x1102, 0x1171, 0x11C0], NFKC: [0xB271], NFKD: [0x1102, 0x1171, 0x11C0] },
+{ source: [0xB272], NFC: [0xB272], NFD: [0x1102, 0x1171, 0x11C1], NFKC: [0xB272], NFKD: [0x1102, 0x1171, 0x11C1] },
+{ source: [0xB273], NFC: [0xB273], NFD: [0x1102, 0x1171, 0x11C2], NFKC: [0xB273], NFKD: [0x1102, 0x1171, 0x11C2] },
+{ source: [0xB274], NFC: [0xB274], NFD: [0x1102, 0x1172], NFKC: [0xB274], NFKD: [0x1102, 0x1172] },
+{ source: [0xB275], NFC: [0xB275], NFD: [0x1102, 0x1172, 0x11A8], NFKC: [0xB275], NFKD: [0x1102, 0x1172, 0x11A8] },
+{ source: [0xB276], NFC: [0xB276], NFD: [0x1102, 0x1172, 0x11A9], NFKC: [0xB276], NFKD: [0x1102, 0x1172, 0x11A9] },
+{ source: [0xB277], NFC: [0xB277], NFD: [0x1102, 0x1172, 0x11AA], NFKC: [0xB277], NFKD: [0x1102, 0x1172, 0x11AA] },
+{ source: [0xB278], NFC: [0xB278], NFD: [0x1102, 0x1172, 0x11AB], NFKC: [0xB278], NFKD: [0x1102, 0x1172, 0x11AB] },
+{ source: [0xB279], NFC: [0xB279], NFD: [0x1102, 0x1172, 0x11AC], NFKC: [0xB279], NFKD: [0x1102, 0x1172, 0x11AC] },
+{ source: [0xB27A], NFC: [0xB27A], NFD: [0x1102, 0x1172, 0x11AD], NFKC: [0xB27A], NFKD: [0x1102, 0x1172, 0x11AD] },
+{ source: [0xB27B], NFC: [0xB27B], NFD: [0x1102, 0x1172, 0x11AE], NFKC: [0xB27B], NFKD: [0x1102, 0x1172, 0x11AE] },
+{ source: [0xB27C], NFC: [0xB27C], NFD: [0x1102, 0x1172, 0x11AF], NFKC: [0xB27C], NFKD: [0x1102, 0x1172, 0x11AF] },
+{ source: [0xB27D], NFC: [0xB27D], NFD: [0x1102, 0x1172, 0x11B0], NFKC: [0xB27D], NFKD: [0x1102, 0x1172, 0x11B0] },
+{ source: [0xB27E], NFC: [0xB27E], NFD: [0x1102, 0x1172, 0x11B1], NFKC: [0xB27E], NFKD: [0x1102, 0x1172, 0x11B1] },
+{ source: [0xB27F], NFC: [0xB27F], NFD: [0x1102, 0x1172, 0x11B2], NFKC: [0xB27F], NFKD: [0x1102, 0x1172, 0x11B2] },
+{ source: [0xB280], NFC: [0xB280], NFD: [0x1102, 0x1172, 0x11B3], NFKC: [0xB280], NFKD: [0x1102, 0x1172, 0x11B3] },
+{ source: [0xB281], NFC: [0xB281], NFD: [0x1102, 0x1172, 0x11B4], NFKC: [0xB281], NFKD: [0x1102, 0x1172, 0x11B4] },
+{ source: [0xB282], NFC: [0xB282], NFD: [0x1102, 0x1172, 0x11B5], NFKC: [0xB282], NFKD: [0x1102, 0x1172, 0x11B5] },
+{ source: [0xB283], NFC: [0xB283], NFD: [0x1102, 0x1172, 0x11B6], NFKC: [0xB283], NFKD: [0x1102, 0x1172, 0x11B6] },
+{ source: [0xB284], NFC: [0xB284], NFD: [0x1102, 0x1172, 0x11B7], NFKC: [0xB284], NFKD: [0x1102, 0x1172, 0x11B7] },
+{ source: [0xB285], NFC: [0xB285], NFD: [0x1102, 0x1172, 0x11B8], NFKC: [0xB285], NFKD: [0x1102, 0x1172, 0x11B8] },
+{ source: [0xB286], NFC: [0xB286], NFD: [0x1102, 0x1172, 0x11B9], NFKC: [0xB286], NFKD: [0x1102, 0x1172, 0x11B9] },
+{ source: [0xB287], NFC: [0xB287], NFD: [0x1102, 0x1172, 0x11BA], NFKC: [0xB287], NFKD: [0x1102, 0x1172, 0x11BA] },
+{ source: [0xB288], NFC: [0xB288], NFD: [0x1102, 0x1172, 0x11BB], NFKC: [0xB288], NFKD: [0x1102, 0x1172, 0x11BB] },
+{ source: [0xB289], NFC: [0xB289], NFD: [0x1102, 0x1172, 0x11BC], NFKC: [0xB289], NFKD: [0x1102, 0x1172, 0x11BC] },
+{ source: [0xB28A], NFC: [0xB28A], NFD: [0x1102, 0x1172, 0x11BD], NFKC: [0xB28A], NFKD: [0x1102, 0x1172, 0x11BD] },
+{ source: [0xB28B], NFC: [0xB28B], NFD: [0x1102, 0x1172, 0x11BE], NFKC: [0xB28B], NFKD: [0x1102, 0x1172, 0x11BE] },
+{ source: [0xB28C], NFC: [0xB28C], NFD: [0x1102, 0x1172, 0x11BF], NFKC: [0xB28C], NFKD: [0x1102, 0x1172, 0x11BF] },
+{ source: [0xB28D], NFC: [0xB28D], NFD: [0x1102, 0x1172, 0x11C0], NFKC: [0xB28D], NFKD: [0x1102, 0x1172, 0x11C0] },
+{ source: [0xB28E], NFC: [0xB28E], NFD: [0x1102, 0x1172, 0x11C1], NFKC: [0xB28E], NFKD: [0x1102, 0x1172, 0x11C1] },
+{ source: [0xB28F], NFC: [0xB28F], NFD: [0x1102, 0x1172, 0x11C2], NFKC: [0xB28F], NFKD: [0x1102, 0x1172, 0x11C2] },
+{ source: [0xB290], NFC: [0xB290], NFD: [0x1102, 0x1173], NFKC: [0xB290], NFKD: [0x1102, 0x1173] },
+{ source: [0xB291], NFC: [0xB291], NFD: [0x1102, 0x1173, 0x11A8], NFKC: [0xB291], NFKD: [0x1102, 0x1173, 0x11A8] },
+{ source: [0xB292], NFC: [0xB292], NFD: [0x1102, 0x1173, 0x11A9], NFKC: [0xB292], NFKD: [0x1102, 0x1173, 0x11A9] },
+{ source: [0xB293], NFC: [0xB293], NFD: [0x1102, 0x1173, 0x11AA], NFKC: [0xB293], NFKD: [0x1102, 0x1173, 0x11AA] },
+{ source: [0xB294], NFC: [0xB294], NFD: [0x1102, 0x1173, 0x11AB], NFKC: [0xB294], NFKD: [0x1102, 0x1173, 0x11AB] },
+{ source: [0xB295], NFC: [0xB295], NFD: [0x1102, 0x1173, 0x11AC], NFKC: [0xB295], NFKD: [0x1102, 0x1173, 0x11AC] },
+{ source: [0xB296], NFC: [0xB296], NFD: [0x1102, 0x1173, 0x11AD], NFKC: [0xB296], NFKD: [0x1102, 0x1173, 0x11AD] },
+{ source: [0xB297], NFC: [0xB297], NFD: [0x1102, 0x1173, 0x11AE], NFKC: [0xB297], NFKD: [0x1102, 0x1173, 0x11AE] },
+{ source: [0xB298], NFC: [0xB298], NFD: [0x1102, 0x1173, 0x11AF], NFKC: [0xB298], NFKD: [0x1102, 0x1173, 0x11AF] },
+{ source: [0xB299], NFC: [0xB299], NFD: [0x1102, 0x1173, 0x11B0], NFKC: [0xB299], NFKD: [0x1102, 0x1173, 0x11B0] },
+{ source: [0xB29A], NFC: [0xB29A], NFD: [0x1102, 0x1173, 0x11B1], NFKC: [0xB29A], NFKD: [0x1102, 0x1173, 0x11B1] },
+{ source: [0xB29B], NFC: [0xB29B], NFD: [0x1102, 0x1173, 0x11B2], NFKC: [0xB29B], NFKD: [0x1102, 0x1173, 0x11B2] },
+{ source: [0xB29C], NFC: [0xB29C], NFD: [0x1102, 0x1173, 0x11B3], NFKC: [0xB29C], NFKD: [0x1102, 0x1173, 0x11B3] },
+{ source: [0xB29D], NFC: [0xB29D], NFD: [0x1102, 0x1173, 0x11B4], NFKC: [0xB29D], NFKD: [0x1102, 0x1173, 0x11B4] },
+{ source: [0xB29E], NFC: [0xB29E], NFD: [0x1102, 0x1173, 0x11B5], NFKC: [0xB29E], NFKD: [0x1102, 0x1173, 0x11B5] },
+{ source: [0xB29F], NFC: [0xB29F], NFD: [0x1102, 0x1173, 0x11B6], NFKC: [0xB29F], NFKD: [0x1102, 0x1173, 0x11B6] },
+{ source: [0xB2A0], NFC: [0xB2A0], NFD: [0x1102, 0x1173, 0x11B7], NFKC: [0xB2A0], NFKD: [0x1102, 0x1173, 0x11B7] },
+{ source: [0xB2A1], NFC: [0xB2A1], NFD: [0x1102, 0x1173, 0x11B8], NFKC: [0xB2A1], NFKD: [0x1102, 0x1173, 0x11B8] },
+{ source: [0xB2A2], NFC: [0xB2A2], NFD: [0x1102, 0x1173, 0x11B9], NFKC: [0xB2A2], NFKD: [0x1102, 0x1173, 0x11B9] },
+{ source: [0xB2A3], NFC: [0xB2A3], NFD: [0x1102, 0x1173, 0x11BA], NFKC: [0xB2A3], NFKD: [0x1102, 0x1173, 0x11BA] },
+{ source: [0xB2A4], NFC: [0xB2A4], NFD: [0x1102, 0x1173, 0x11BB], NFKC: [0xB2A4], NFKD: [0x1102, 0x1173, 0x11BB] },
+{ source: [0xB2A5], NFC: [0xB2A5], NFD: [0x1102, 0x1173, 0x11BC], NFKC: [0xB2A5], NFKD: [0x1102, 0x1173, 0x11BC] },
+{ source: [0xB2A6], NFC: [0xB2A6], NFD: [0x1102, 0x1173, 0x11BD], NFKC: [0xB2A6], NFKD: [0x1102, 0x1173, 0x11BD] },
+{ source: [0xB2A7], NFC: [0xB2A7], NFD: [0x1102, 0x1173, 0x11BE], NFKC: [0xB2A7], NFKD: [0x1102, 0x1173, 0x11BE] },
+{ source: [0xB2A8], NFC: [0xB2A8], NFD: [0x1102, 0x1173, 0x11BF], NFKC: [0xB2A8], NFKD: [0x1102, 0x1173, 0x11BF] },
+{ source: [0xB2A9], NFC: [0xB2A9], NFD: [0x1102, 0x1173, 0x11C0], NFKC: [0xB2A9], NFKD: [0x1102, 0x1173, 0x11C0] },
+{ source: [0xB2AA], NFC: [0xB2AA], NFD: [0x1102, 0x1173, 0x11C1], NFKC: [0xB2AA], NFKD: [0x1102, 0x1173, 0x11C1] },
+{ source: [0xB2AB], NFC: [0xB2AB], NFD: [0x1102, 0x1173, 0x11C2], NFKC: [0xB2AB], NFKD: [0x1102, 0x1173, 0x11C2] },
+{ source: [0xB2AC], NFC: [0xB2AC], NFD: [0x1102, 0x1174], NFKC: [0xB2AC], NFKD: [0x1102, 0x1174] },
+{ source: [0xB2AD], NFC: [0xB2AD], NFD: [0x1102, 0x1174, 0x11A8], NFKC: [0xB2AD], NFKD: [0x1102, 0x1174, 0x11A8] },
+{ source: [0xB2AE], NFC: [0xB2AE], NFD: [0x1102, 0x1174, 0x11A9], NFKC: [0xB2AE], NFKD: [0x1102, 0x1174, 0x11A9] },
+{ source: [0xB2AF], NFC: [0xB2AF], NFD: [0x1102, 0x1174, 0x11AA], NFKC: [0xB2AF], NFKD: [0x1102, 0x1174, 0x11AA] },
+{ source: [0xB2B0], NFC: [0xB2B0], NFD: [0x1102, 0x1174, 0x11AB], NFKC: [0xB2B0], NFKD: [0x1102, 0x1174, 0x11AB] },
+{ source: [0xB2B1], NFC: [0xB2B1], NFD: [0x1102, 0x1174, 0x11AC], NFKC: [0xB2B1], NFKD: [0x1102, 0x1174, 0x11AC] },
+{ source: [0xB2B2], NFC: [0xB2B2], NFD: [0x1102, 0x1174, 0x11AD], NFKC: [0xB2B2], NFKD: [0x1102, 0x1174, 0x11AD] },
+{ source: [0xB2B3], NFC: [0xB2B3], NFD: [0x1102, 0x1174, 0x11AE], NFKC: [0xB2B3], NFKD: [0x1102, 0x1174, 0x11AE] },
+{ source: [0xB2B4], NFC: [0xB2B4], NFD: [0x1102, 0x1174, 0x11AF], NFKC: [0xB2B4], NFKD: [0x1102, 0x1174, 0x11AF] },
+{ source: [0xB2B5], NFC: [0xB2B5], NFD: [0x1102, 0x1174, 0x11B0], NFKC: [0xB2B5], NFKD: [0x1102, 0x1174, 0x11B0] },
+{ source: [0xB2B6], NFC: [0xB2B6], NFD: [0x1102, 0x1174, 0x11B1], NFKC: [0xB2B6], NFKD: [0x1102, 0x1174, 0x11B1] },
+{ source: [0xB2B7], NFC: [0xB2B7], NFD: [0x1102, 0x1174, 0x11B2], NFKC: [0xB2B7], NFKD: [0x1102, 0x1174, 0x11B2] },
+{ source: [0xB2B8], NFC: [0xB2B8], NFD: [0x1102, 0x1174, 0x11B3], NFKC: [0xB2B8], NFKD: [0x1102, 0x1174, 0x11B3] },
+{ source: [0xB2B9], NFC: [0xB2B9], NFD: [0x1102, 0x1174, 0x11B4], NFKC: [0xB2B9], NFKD: [0x1102, 0x1174, 0x11B4] },
+{ source: [0xB2BA], NFC: [0xB2BA], NFD: [0x1102, 0x1174, 0x11B5], NFKC: [0xB2BA], NFKD: [0x1102, 0x1174, 0x11B5] },
+{ source: [0xB2BB], NFC: [0xB2BB], NFD: [0x1102, 0x1174, 0x11B6], NFKC: [0xB2BB], NFKD: [0x1102, 0x1174, 0x11B6] },
+{ source: [0xB2BC], NFC: [0xB2BC], NFD: [0x1102, 0x1174, 0x11B7], NFKC: [0xB2BC], NFKD: [0x1102, 0x1174, 0x11B7] },
+{ source: [0xB2BD], NFC: [0xB2BD], NFD: [0x1102, 0x1174, 0x11B8], NFKC: [0xB2BD], NFKD: [0x1102, 0x1174, 0x11B8] },
+{ source: [0xB2BE], NFC: [0xB2BE], NFD: [0x1102, 0x1174, 0x11B9], NFKC: [0xB2BE], NFKD: [0x1102, 0x1174, 0x11B9] },
+{ source: [0xB2BF], NFC: [0xB2BF], NFD: [0x1102, 0x1174, 0x11BA], NFKC: [0xB2BF], NFKD: [0x1102, 0x1174, 0x11BA] },
+{ source: [0xB2C0], NFC: [0xB2C0], NFD: [0x1102, 0x1174, 0x11BB], NFKC: [0xB2C0], NFKD: [0x1102, 0x1174, 0x11BB] },
+{ source: [0xB2C1], NFC: [0xB2C1], NFD: [0x1102, 0x1174, 0x11BC], NFKC: [0xB2C1], NFKD: [0x1102, 0x1174, 0x11BC] },
+{ source: [0xB2C2], NFC: [0xB2C2], NFD: [0x1102, 0x1174, 0x11BD], NFKC: [0xB2C2], NFKD: [0x1102, 0x1174, 0x11BD] },
+{ source: [0xB2C3], NFC: [0xB2C3], NFD: [0x1102, 0x1174, 0x11BE], NFKC: [0xB2C3], NFKD: [0x1102, 0x1174, 0x11BE] },
+{ source: [0xB2C4], NFC: [0xB2C4], NFD: [0x1102, 0x1174, 0x11BF], NFKC: [0xB2C4], NFKD: [0x1102, 0x1174, 0x11BF] },
+{ source: [0xB2C5], NFC: [0xB2C5], NFD: [0x1102, 0x1174, 0x11C0], NFKC: [0xB2C5], NFKD: [0x1102, 0x1174, 0x11C0] },
+{ source: [0xB2C6], NFC: [0xB2C6], NFD: [0x1102, 0x1174, 0x11C1], NFKC: [0xB2C6], NFKD: [0x1102, 0x1174, 0x11C1] },
+{ source: [0xB2C7], NFC: [0xB2C7], NFD: [0x1102, 0x1174, 0x11C2], NFKC: [0xB2C7], NFKD: [0x1102, 0x1174, 0x11C2] },
+{ source: [0xB2C8], NFC: [0xB2C8], NFD: [0x1102, 0x1175], NFKC: [0xB2C8], NFKD: [0x1102, 0x1175] },
+{ source: [0xB2C9], NFC: [0xB2C9], NFD: [0x1102, 0x1175, 0x11A8], NFKC: [0xB2C9], NFKD: [0x1102, 0x1175, 0x11A8] },
+{ source: [0xB2CA], NFC: [0xB2CA], NFD: [0x1102, 0x1175, 0x11A9], NFKC: [0xB2CA], NFKD: [0x1102, 0x1175, 0x11A9] },
+{ source: [0xB2CB], NFC: [0xB2CB], NFD: [0x1102, 0x1175, 0x11AA], NFKC: [0xB2CB], NFKD: [0x1102, 0x1175, 0x11AA] },
+{ source: [0xB2CC], NFC: [0xB2CC], NFD: [0x1102, 0x1175, 0x11AB], NFKC: [0xB2CC], NFKD: [0x1102, 0x1175, 0x11AB] },
+{ source: [0xB2CD], NFC: [0xB2CD], NFD: [0x1102, 0x1175, 0x11AC], NFKC: [0xB2CD], NFKD: [0x1102, 0x1175, 0x11AC] },
+{ source: [0xB2CE], NFC: [0xB2CE], NFD: [0x1102, 0x1175, 0x11AD], NFKC: [0xB2CE], NFKD: [0x1102, 0x1175, 0x11AD] },
+{ source: [0xB2CF], NFC: [0xB2CF], NFD: [0x1102, 0x1175, 0x11AE], NFKC: [0xB2CF], NFKD: [0x1102, 0x1175, 0x11AE] },
+{ source: [0xB2D0], NFC: [0xB2D0], NFD: [0x1102, 0x1175, 0x11AF], NFKC: [0xB2D0], NFKD: [0x1102, 0x1175, 0x11AF] },
+{ source: [0xB2D1], NFC: [0xB2D1], NFD: [0x1102, 0x1175, 0x11B0], NFKC: [0xB2D1], NFKD: [0x1102, 0x1175, 0x11B0] },
+{ source: [0xB2D2], NFC: [0xB2D2], NFD: [0x1102, 0x1175, 0x11B1], NFKC: [0xB2D2], NFKD: [0x1102, 0x1175, 0x11B1] },
+{ source: [0xB2D3], NFC: [0xB2D3], NFD: [0x1102, 0x1175, 0x11B2], NFKC: [0xB2D3], NFKD: [0x1102, 0x1175, 0x11B2] },
+{ source: [0xB2D4], NFC: [0xB2D4], NFD: [0x1102, 0x1175, 0x11B3], NFKC: [0xB2D4], NFKD: [0x1102, 0x1175, 0x11B3] },
+{ source: [0xB2D5], NFC: [0xB2D5], NFD: [0x1102, 0x1175, 0x11B4], NFKC: [0xB2D5], NFKD: [0x1102, 0x1175, 0x11B4] },
+{ source: [0xB2D6], NFC: [0xB2D6], NFD: [0x1102, 0x1175, 0x11B5], NFKC: [0xB2D6], NFKD: [0x1102, 0x1175, 0x11B5] },
+{ source: [0xB2D7], NFC: [0xB2D7], NFD: [0x1102, 0x1175, 0x11B6], NFKC: [0xB2D7], NFKD: [0x1102, 0x1175, 0x11B6] },
+{ source: [0xB2D8], NFC: [0xB2D8], NFD: [0x1102, 0x1175, 0x11B7], NFKC: [0xB2D8], NFKD: [0x1102, 0x1175, 0x11B7] },
+{ source: [0xB2D9], NFC: [0xB2D9], NFD: [0x1102, 0x1175, 0x11B8], NFKC: [0xB2D9], NFKD: [0x1102, 0x1175, 0x11B8] },
+{ source: [0xB2DA], NFC: [0xB2DA], NFD: [0x1102, 0x1175, 0x11B9], NFKC: [0xB2DA], NFKD: [0x1102, 0x1175, 0x11B9] },
+{ source: [0xB2DB], NFC: [0xB2DB], NFD: [0x1102, 0x1175, 0x11BA], NFKC: [0xB2DB], NFKD: [0x1102, 0x1175, 0x11BA] },
+{ source: [0xB2DC], NFC: [0xB2DC], NFD: [0x1102, 0x1175, 0x11BB], NFKC: [0xB2DC], NFKD: [0x1102, 0x1175, 0x11BB] },
+{ source: [0xB2DD], NFC: [0xB2DD], NFD: [0x1102, 0x1175, 0x11BC], NFKC: [0xB2DD], NFKD: [0x1102, 0x1175, 0x11BC] },
+{ source: [0xB2DE], NFC: [0xB2DE], NFD: [0x1102, 0x1175, 0x11BD], NFKC: [0xB2DE], NFKD: [0x1102, 0x1175, 0x11BD] },
+{ source: [0xB2DF], NFC: [0xB2DF], NFD: [0x1102, 0x1175, 0x11BE], NFKC: [0xB2DF], NFKD: [0x1102, 0x1175, 0x11BE] },
+{ source: [0xB2E0], NFC: [0xB2E0], NFD: [0x1102, 0x1175, 0x11BF], NFKC: [0xB2E0], NFKD: [0x1102, 0x1175, 0x11BF] },
+{ source: [0xB2E1], NFC: [0xB2E1], NFD: [0x1102, 0x1175, 0x11C0], NFKC: [0xB2E1], NFKD: [0x1102, 0x1175, 0x11C0] },
+{ source: [0xB2E2], NFC: [0xB2E2], NFD: [0x1102, 0x1175, 0x11C1], NFKC: [0xB2E2], NFKD: [0x1102, 0x1175, 0x11C1] },
+{ source: [0xB2E3], NFC: [0xB2E3], NFD: [0x1102, 0x1175, 0x11C2], NFKC: [0xB2E3], NFKD: [0x1102, 0x1175, 0x11C2] },
+{ source: [0xB2E4], NFC: [0xB2E4], NFD: [0x1103, 0x1161], NFKC: [0xB2E4], NFKD: [0x1103, 0x1161] },
+{ source: [0xB2E5], NFC: [0xB2E5], NFD: [0x1103, 0x1161, 0x11A8], NFKC: [0xB2E5], NFKD: [0x1103, 0x1161, 0x11A8] },
+{ source: [0xB2E6], NFC: [0xB2E6], NFD: [0x1103, 0x1161, 0x11A9], NFKC: [0xB2E6], NFKD: [0x1103, 0x1161, 0x11A9] },
+{ source: [0xB2E7], NFC: [0xB2E7], NFD: [0x1103, 0x1161, 0x11AA], NFKC: [0xB2E7], NFKD: [0x1103, 0x1161, 0x11AA] },
+{ source: [0xB2E8], NFC: [0xB2E8], NFD: [0x1103, 0x1161, 0x11AB], NFKC: [0xB2E8], NFKD: [0x1103, 0x1161, 0x11AB] },
+{ source: [0xB2E9], NFC: [0xB2E9], NFD: [0x1103, 0x1161, 0x11AC], NFKC: [0xB2E9], NFKD: [0x1103, 0x1161, 0x11AC] },
+{ source: [0xB2EA], NFC: [0xB2EA], NFD: [0x1103, 0x1161, 0x11AD], NFKC: [0xB2EA], NFKD: [0x1103, 0x1161, 0x11AD] },
+{ source: [0xB2EB], NFC: [0xB2EB], NFD: [0x1103, 0x1161, 0x11AE], NFKC: [0xB2EB], NFKD: [0x1103, 0x1161, 0x11AE] },
+{ source: [0xB2EC], NFC: [0xB2EC], NFD: [0x1103, 0x1161, 0x11AF], NFKC: [0xB2EC], NFKD: [0x1103, 0x1161, 0x11AF] },
+{ source: [0xB2ED], NFC: [0xB2ED], NFD: [0x1103, 0x1161, 0x11B0], NFKC: [0xB2ED], NFKD: [0x1103, 0x1161, 0x11B0] },
+{ source: [0xB2EE], NFC: [0xB2EE], NFD: [0x1103, 0x1161, 0x11B1], NFKC: [0xB2EE], NFKD: [0x1103, 0x1161, 0x11B1] },
+{ source: [0xB2EF], NFC: [0xB2EF], NFD: [0x1103, 0x1161, 0x11B2], NFKC: [0xB2EF], NFKD: [0x1103, 0x1161, 0x11B2] },
+{ source: [0xB2F0], NFC: [0xB2F0], NFD: [0x1103, 0x1161, 0x11B3], NFKC: [0xB2F0], NFKD: [0x1103, 0x1161, 0x11B3] },
+{ source: [0xB2F1], NFC: [0xB2F1], NFD: [0x1103, 0x1161, 0x11B4], NFKC: [0xB2F1], NFKD: [0x1103, 0x1161, 0x11B4] },
+{ source: [0xB2F2], NFC: [0xB2F2], NFD: [0x1103, 0x1161, 0x11B5], NFKC: [0xB2F2], NFKD: [0x1103, 0x1161, 0x11B5] },
+{ source: [0xB2F3], NFC: [0xB2F3], NFD: [0x1103, 0x1161, 0x11B6], NFKC: [0xB2F3], NFKD: [0x1103, 0x1161, 0x11B6] },
+{ source: [0xB2F4], NFC: [0xB2F4], NFD: [0x1103, 0x1161, 0x11B7], NFKC: [0xB2F4], NFKD: [0x1103, 0x1161, 0x11B7] },
+{ source: [0xB2F5], NFC: [0xB2F5], NFD: [0x1103, 0x1161, 0x11B8], NFKC: [0xB2F5], NFKD: [0x1103, 0x1161, 0x11B8] },
+{ source: [0xB2F6], NFC: [0xB2F6], NFD: [0x1103, 0x1161, 0x11B9], NFKC: [0xB2F6], NFKD: [0x1103, 0x1161, 0x11B9] },
+{ source: [0xB2F7], NFC: [0xB2F7], NFD: [0x1103, 0x1161, 0x11BA], NFKC: [0xB2F7], NFKD: [0x1103, 0x1161, 0x11BA] },
+{ source: [0xB2F8], NFC: [0xB2F8], NFD: [0x1103, 0x1161, 0x11BB], NFKC: [0xB2F8], NFKD: [0x1103, 0x1161, 0x11BB] },
+{ source: [0xB2F9], NFC: [0xB2F9], NFD: [0x1103, 0x1161, 0x11BC], NFKC: [0xB2F9], NFKD: [0x1103, 0x1161, 0x11BC] },
+{ source: [0xB2FA], NFC: [0xB2FA], NFD: [0x1103, 0x1161, 0x11BD], NFKC: [0xB2FA], NFKD: [0x1103, 0x1161, 0x11BD] },
+{ source: [0xB2FB], NFC: [0xB2FB], NFD: [0x1103, 0x1161, 0x11BE], NFKC: [0xB2FB], NFKD: [0x1103, 0x1161, 0x11BE] },
+{ source: [0xB2FC], NFC: [0xB2FC], NFD: [0x1103, 0x1161, 0x11BF], NFKC: [0xB2FC], NFKD: [0x1103, 0x1161, 0x11BF] },
+{ source: [0xB2FD], NFC: [0xB2FD], NFD: [0x1103, 0x1161, 0x11C0], NFKC: [0xB2FD], NFKD: [0x1103, 0x1161, 0x11C0] },
+{ source: [0xB2FE], NFC: [0xB2FE], NFD: [0x1103, 0x1161, 0x11C1], NFKC: [0xB2FE], NFKD: [0x1103, 0x1161, 0x11C1] },
+{ source: [0xB2FF], NFC: [0xB2FF], NFD: [0x1103, 0x1161, 0x11C2], NFKC: [0xB2FF], NFKD: [0x1103, 0x1161, 0x11C2] },
+{ source: [0xB300], NFC: [0xB300], NFD: [0x1103, 0x1162], NFKC: [0xB300], NFKD: [0x1103, 0x1162] },
+{ source: [0xB301], NFC: [0xB301], NFD: [0x1103, 0x1162, 0x11A8], NFKC: [0xB301], NFKD: [0x1103, 0x1162, 0x11A8] },
+{ source: [0xB302], NFC: [0xB302], NFD: [0x1103, 0x1162, 0x11A9], NFKC: [0xB302], NFKD: [0x1103, 0x1162, 0x11A9] },
+{ source: [0xB303], NFC: [0xB303], NFD: [0x1103, 0x1162, 0x11AA], NFKC: [0xB303], NFKD: [0x1103, 0x1162, 0x11AA] },
+{ source: [0xB304], NFC: [0xB304], NFD: [0x1103, 0x1162, 0x11AB], NFKC: [0xB304], NFKD: [0x1103, 0x1162, 0x11AB] },
+{ source: [0xB305], NFC: [0xB305], NFD: [0x1103, 0x1162, 0x11AC], NFKC: [0xB305], NFKD: [0x1103, 0x1162, 0x11AC] },
+{ source: [0xB306], NFC: [0xB306], NFD: [0x1103, 0x1162, 0x11AD], NFKC: [0xB306], NFKD: [0x1103, 0x1162, 0x11AD] },
+{ source: [0xB307], NFC: [0xB307], NFD: [0x1103, 0x1162, 0x11AE], NFKC: [0xB307], NFKD: [0x1103, 0x1162, 0x11AE] },
+{ source: [0xB308], NFC: [0xB308], NFD: [0x1103, 0x1162, 0x11AF], NFKC: [0xB308], NFKD: [0x1103, 0x1162, 0x11AF] },
+{ source: [0xB309], NFC: [0xB309], NFD: [0x1103, 0x1162, 0x11B0], NFKC: [0xB309], NFKD: [0x1103, 0x1162, 0x11B0] },
+{ source: [0xB30A], NFC: [0xB30A], NFD: [0x1103, 0x1162, 0x11B1], NFKC: [0xB30A], NFKD: [0x1103, 0x1162, 0x11B1] },
+{ source: [0xB30B], NFC: [0xB30B], NFD: [0x1103, 0x1162, 0x11B2], NFKC: [0xB30B], NFKD: [0x1103, 0x1162, 0x11B2] },
+{ source: [0xB30C], NFC: [0xB30C], NFD: [0x1103, 0x1162, 0x11B3], NFKC: [0xB30C], NFKD: [0x1103, 0x1162, 0x11B3] },
+{ source: [0xB30D], NFC: [0xB30D], NFD: [0x1103, 0x1162, 0x11B4], NFKC: [0xB30D], NFKD: [0x1103, 0x1162, 0x11B4] },
+{ source: [0xB30E], NFC: [0xB30E], NFD: [0x1103, 0x1162, 0x11B5], NFKC: [0xB30E], NFKD: [0x1103, 0x1162, 0x11B5] },
+{ source: [0xB30F], NFC: [0xB30F], NFD: [0x1103, 0x1162, 0x11B6], NFKC: [0xB30F], NFKD: [0x1103, 0x1162, 0x11B6] },
+{ source: [0xB310], NFC: [0xB310], NFD: [0x1103, 0x1162, 0x11B7], NFKC: [0xB310], NFKD: [0x1103, 0x1162, 0x11B7] },
+{ source: [0xB311], NFC: [0xB311], NFD: [0x1103, 0x1162, 0x11B8], NFKC: [0xB311], NFKD: [0x1103, 0x1162, 0x11B8] },
+{ source: [0xB312], NFC: [0xB312], NFD: [0x1103, 0x1162, 0x11B9], NFKC: [0xB312], NFKD: [0x1103, 0x1162, 0x11B9] },
+{ source: [0xB313], NFC: [0xB313], NFD: [0x1103, 0x1162, 0x11BA], NFKC: [0xB313], NFKD: [0x1103, 0x1162, 0x11BA] },
+{ source: [0xB314], NFC: [0xB314], NFD: [0x1103, 0x1162, 0x11BB], NFKC: [0xB314], NFKD: [0x1103, 0x1162, 0x11BB] },
+{ source: [0xB315], NFC: [0xB315], NFD: [0x1103, 0x1162, 0x11BC], NFKC: [0xB315], NFKD: [0x1103, 0x1162, 0x11BC] },
+{ source: [0xB316], NFC: [0xB316], NFD: [0x1103, 0x1162, 0x11BD], NFKC: [0xB316], NFKD: [0x1103, 0x1162, 0x11BD] },
+{ source: [0xB317], NFC: [0xB317], NFD: [0x1103, 0x1162, 0x11BE], NFKC: [0xB317], NFKD: [0x1103, 0x1162, 0x11BE] },
+{ source: [0xB318], NFC: [0xB318], NFD: [0x1103, 0x1162, 0x11BF], NFKC: [0xB318], NFKD: [0x1103, 0x1162, 0x11BF] },
+{ source: [0xB319], NFC: [0xB319], NFD: [0x1103, 0x1162, 0x11C0], NFKC: [0xB319], NFKD: [0x1103, 0x1162, 0x11C0] },
+{ source: [0xB31A], NFC: [0xB31A], NFD: [0x1103, 0x1162, 0x11C1], NFKC: [0xB31A], NFKD: [0x1103, 0x1162, 0x11C1] },
+{ source: [0xB31B], NFC: [0xB31B], NFD: [0x1103, 0x1162, 0x11C2], NFKC: [0xB31B], NFKD: [0x1103, 0x1162, 0x11C2] },
+{ source: [0xB31C], NFC: [0xB31C], NFD: [0x1103, 0x1163], NFKC: [0xB31C], NFKD: [0x1103, 0x1163] },
+{ source: [0xB31D], NFC: [0xB31D], NFD: [0x1103, 0x1163, 0x11A8], NFKC: [0xB31D], NFKD: [0x1103, 0x1163, 0x11A8] },
+{ source: [0xB31E], NFC: [0xB31E], NFD: [0x1103, 0x1163, 0x11A9], NFKC: [0xB31E], NFKD: [0x1103, 0x1163, 0x11A9] },
+{ source: [0xB31F], NFC: [0xB31F], NFD: [0x1103, 0x1163, 0x11AA], NFKC: [0xB31F], NFKD: [0x1103, 0x1163, 0x11AA] },
+{ source: [0xB320], NFC: [0xB320], NFD: [0x1103, 0x1163, 0x11AB], NFKC: [0xB320], NFKD: [0x1103, 0x1163, 0x11AB] },
+{ source: [0xB321], NFC: [0xB321], NFD: [0x1103, 0x1163, 0x11AC], NFKC: [0xB321], NFKD: [0x1103, 0x1163, 0x11AC] },
+{ source: [0xB322], NFC: [0xB322], NFD: [0x1103, 0x1163, 0x11AD], NFKC: [0xB322], NFKD: [0x1103, 0x1163, 0x11AD] },
+{ source: [0xB323], NFC: [0xB323], NFD: [0x1103, 0x1163, 0x11AE], NFKC: [0xB323], NFKD: [0x1103, 0x1163, 0x11AE] },
+{ source: [0xB324], NFC: [0xB324], NFD: [0x1103, 0x1163, 0x11AF], NFKC: [0xB324], NFKD: [0x1103, 0x1163, 0x11AF] },
+{ source: [0xB325], NFC: [0xB325], NFD: [0x1103, 0x1163, 0x11B0], NFKC: [0xB325], NFKD: [0x1103, 0x1163, 0x11B0] },
+{ source: [0xB326], NFC: [0xB326], NFD: [0x1103, 0x1163, 0x11B1], NFKC: [0xB326], NFKD: [0x1103, 0x1163, 0x11B1] },
+{ source: [0xB327], NFC: [0xB327], NFD: [0x1103, 0x1163, 0x11B2], NFKC: [0xB327], NFKD: [0x1103, 0x1163, 0x11B2] },
+{ source: [0xB328], NFC: [0xB328], NFD: [0x1103, 0x1163, 0x11B3], NFKC: [0xB328], NFKD: [0x1103, 0x1163, 0x11B3] },
+{ source: [0xB329], NFC: [0xB329], NFD: [0x1103, 0x1163, 0x11B4], NFKC: [0xB329], NFKD: [0x1103, 0x1163, 0x11B4] },
+{ source: [0xB32A], NFC: [0xB32A], NFD: [0x1103, 0x1163, 0x11B5], NFKC: [0xB32A], NFKD: [0x1103, 0x1163, 0x11B5] },
+{ source: [0xB32B], NFC: [0xB32B], NFD: [0x1103, 0x1163, 0x11B6], NFKC: [0xB32B], NFKD: [0x1103, 0x1163, 0x11B6] },
+{ source: [0xB32C], NFC: [0xB32C], NFD: [0x1103, 0x1163, 0x11B7], NFKC: [0xB32C], NFKD: [0x1103, 0x1163, 0x11B7] },
+{ source: [0xB32D], NFC: [0xB32D], NFD: [0x1103, 0x1163, 0x11B8], NFKC: [0xB32D], NFKD: [0x1103, 0x1163, 0x11B8] },
+{ source: [0xB32E], NFC: [0xB32E], NFD: [0x1103, 0x1163, 0x11B9], NFKC: [0xB32E], NFKD: [0x1103, 0x1163, 0x11B9] },
+{ source: [0xB32F], NFC: [0xB32F], NFD: [0x1103, 0x1163, 0x11BA], NFKC: [0xB32F], NFKD: [0x1103, 0x1163, 0x11BA] },
+{ source: [0xB330], NFC: [0xB330], NFD: [0x1103, 0x1163, 0x11BB], NFKC: [0xB330], NFKD: [0x1103, 0x1163, 0x11BB] },
+{ source: [0xB331], NFC: [0xB331], NFD: [0x1103, 0x1163, 0x11BC], NFKC: [0xB331], NFKD: [0x1103, 0x1163, 0x11BC] },
+{ source: [0xB332], NFC: [0xB332], NFD: [0x1103, 0x1163, 0x11BD], NFKC: [0xB332], NFKD: [0x1103, 0x1163, 0x11BD] },
+{ source: [0xB333], NFC: [0xB333], NFD: [0x1103, 0x1163, 0x11BE], NFKC: [0xB333], NFKD: [0x1103, 0x1163, 0x11BE] },
+{ source: [0xB334], NFC: [0xB334], NFD: [0x1103, 0x1163, 0x11BF], NFKC: [0xB334], NFKD: [0x1103, 0x1163, 0x11BF] },
+{ source: [0xB335], NFC: [0xB335], NFD: [0x1103, 0x1163, 0x11C0], NFKC: [0xB335], NFKD: [0x1103, 0x1163, 0x11C0] },
+{ source: [0xB336], NFC: [0xB336], NFD: [0x1103, 0x1163, 0x11C1], NFKC: [0xB336], NFKD: [0x1103, 0x1163, 0x11C1] },
+{ source: [0xB337], NFC: [0xB337], NFD: [0x1103, 0x1163, 0x11C2], NFKC: [0xB337], NFKD: [0x1103, 0x1163, 0x11C2] },
+{ source: [0xB338], NFC: [0xB338], NFD: [0x1103, 0x1164], NFKC: [0xB338], NFKD: [0x1103, 0x1164] },
+{ source: [0xB339], NFC: [0xB339], NFD: [0x1103, 0x1164, 0x11A8], NFKC: [0xB339], NFKD: [0x1103, 0x1164, 0x11A8] },
+{ source: [0xB33A], NFC: [0xB33A], NFD: [0x1103, 0x1164, 0x11A9], NFKC: [0xB33A], NFKD: [0x1103, 0x1164, 0x11A9] },
+{ source: [0xB33B], NFC: [0xB33B], NFD: [0x1103, 0x1164, 0x11AA], NFKC: [0xB33B], NFKD: [0x1103, 0x1164, 0x11AA] },
+{ source: [0xB33C], NFC: [0xB33C], NFD: [0x1103, 0x1164, 0x11AB], NFKC: [0xB33C], NFKD: [0x1103, 0x1164, 0x11AB] },
+{ source: [0xB33D], NFC: [0xB33D], NFD: [0x1103, 0x1164, 0x11AC], NFKC: [0xB33D], NFKD: [0x1103, 0x1164, 0x11AC] },
+{ source: [0xB33E], NFC: [0xB33E], NFD: [0x1103, 0x1164, 0x11AD], NFKC: [0xB33E], NFKD: [0x1103, 0x1164, 0x11AD] },
+{ source: [0xB33F], NFC: [0xB33F], NFD: [0x1103, 0x1164, 0x11AE], NFKC: [0xB33F], NFKD: [0x1103, 0x1164, 0x11AE] },
+{ source: [0xB340], NFC: [0xB340], NFD: [0x1103, 0x1164, 0x11AF], NFKC: [0xB340], NFKD: [0x1103, 0x1164, 0x11AF] },
+{ source: [0xB341], NFC: [0xB341], NFD: [0x1103, 0x1164, 0x11B0], NFKC: [0xB341], NFKD: [0x1103, 0x1164, 0x11B0] },
+{ source: [0xB342], NFC: [0xB342], NFD: [0x1103, 0x1164, 0x11B1], NFKC: [0xB342], NFKD: [0x1103, 0x1164, 0x11B1] },
+{ source: [0xB343], NFC: [0xB343], NFD: [0x1103, 0x1164, 0x11B2], NFKC: [0xB343], NFKD: [0x1103, 0x1164, 0x11B2] },
+{ source: [0xB344], NFC: [0xB344], NFD: [0x1103, 0x1164, 0x11B3], NFKC: [0xB344], NFKD: [0x1103, 0x1164, 0x11B3] },
+{ source: [0xB345], NFC: [0xB345], NFD: [0x1103, 0x1164, 0x11B4], NFKC: [0xB345], NFKD: [0x1103, 0x1164, 0x11B4] },
+{ source: [0xB346], NFC: [0xB346], NFD: [0x1103, 0x1164, 0x11B5], NFKC: [0xB346], NFKD: [0x1103, 0x1164, 0x11B5] },
+{ source: [0xB347], NFC: [0xB347], NFD: [0x1103, 0x1164, 0x11B6], NFKC: [0xB347], NFKD: [0x1103, 0x1164, 0x11B6] },
+{ source: [0xB348], NFC: [0xB348], NFD: [0x1103, 0x1164, 0x11B7], NFKC: [0xB348], NFKD: [0x1103, 0x1164, 0x11B7] },
+{ source: [0xB349], NFC: [0xB349], NFD: [0x1103, 0x1164, 0x11B8], NFKC: [0xB349], NFKD: [0x1103, 0x1164, 0x11B8] },
+{ source: [0xB34A], NFC: [0xB34A], NFD: [0x1103, 0x1164, 0x11B9], NFKC: [0xB34A], NFKD: [0x1103, 0x1164, 0x11B9] },
+{ source: [0xB34B], NFC: [0xB34B], NFD: [0x1103, 0x1164, 0x11BA], NFKC: [0xB34B], NFKD: [0x1103, 0x1164, 0x11BA] },
+{ source: [0xB34C], NFC: [0xB34C], NFD: [0x1103, 0x1164, 0x11BB], NFKC: [0xB34C], NFKD: [0x1103, 0x1164, 0x11BB] },
+{ source: [0xB34D], NFC: [0xB34D], NFD: [0x1103, 0x1164, 0x11BC], NFKC: [0xB34D], NFKD: [0x1103, 0x1164, 0x11BC] },
+{ source: [0xB34E], NFC: [0xB34E], NFD: [0x1103, 0x1164, 0x11BD], NFKC: [0xB34E], NFKD: [0x1103, 0x1164, 0x11BD] },
+{ source: [0xB34F], NFC: [0xB34F], NFD: [0x1103, 0x1164, 0x11BE], NFKC: [0xB34F], NFKD: [0x1103, 0x1164, 0x11BE] },
+{ source: [0xB350], NFC: [0xB350], NFD: [0x1103, 0x1164, 0x11BF], NFKC: [0xB350], NFKD: [0x1103, 0x1164, 0x11BF] },
+{ source: [0xB351], NFC: [0xB351], NFD: [0x1103, 0x1164, 0x11C0], NFKC: [0xB351], NFKD: [0x1103, 0x1164, 0x11C0] },
+{ source: [0xB352], NFC: [0xB352], NFD: [0x1103, 0x1164, 0x11C1], NFKC: [0xB352], NFKD: [0x1103, 0x1164, 0x11C1] },
+{ source: [0xB353], NFC: [0xB353], NFD: [0x1103, 0x1164, 0x11C2], NFKC: [0xB353], NFKD: [0x1103, 0x1164, 0x11C2] },
+{ source: [0xB354], NFC: [0xB354], NFD: [0x1103, 0x1165], NFKC: [0xB354], NFKD: [0x1103, 0x1165] },
+{ source: [0xB355], NFC: [0xB355], NFD: [0x1103, 0x1165, 0x11A8], NFKC: [0xB355], NFKD: [0x1103, 0x1165, 0x11A8] },
+{ source: [0xB356], NFC: [0xB356], NFD: [0x1103, 0x1165, 0x11A9], NFKC: [0xB356], NFKD: [0x1103, 0x1165, 0x11A9] },
+{ source: [0xB357], NFC: [0xB357], NFD: [0x1103, 0x1165, 0x11AA], NFKC: [0xB357], NFKD: [0x1103, 0x1165, 0x11AA] },
+{ source: [0xB358], NFC: [0xB358], NFD: [0x1103, 0x1165, 0x11AB], NFKC: [0xB358], NFKD: [0x1103, 0x1165, 0x11AB] },
+{ source: [0xB359], NFC: [0xB359], NFD: [0x1103, 0x1165, 0x11AC], NFKC: [0xB359], NFKD: [0x1103, 0x1165, 0x11AC] },
+{ source: [0xB35A], NFC: [0xB35A], NFD: [0x1103, 0x1165, 0x11AD], NFKC: [0xB35A], NFKD: [0x1103, 0x1165, 0x11AD] },
+{ source: [0xB35B], NFC: [0xB35B], NFD: [0x1103, 0x1165, 0x11AE], NFKC: [0xB35B], NFKD: [0x1103, 0x1165, 0x11AE] },
+{ source: [0xB35C], NFC: [0xB35C], NFD: [0x1103, 0x1165, 0x11AF], NFKC: [0xB35C], NFKD: [0x1103, 0x1165, 0x11AF] },
+{ source: [0xB35D], NFC: [0xB35D], NFD: [0x1103, 0x1165, 0x11B0], NFKC: [0xB35D], NFKD: [0x1103, 0x1165, 0x11B0] },
+{ source: [0xB35E], NFC: [0xB35E], NFD: [0x1103, 0x1165, 0x11B1], NFKC: [0xB35E], NFKD: [0x1103, 0x1165, 0x11B1] },
+{ source: [0xB35F], NFC: [0xB35F], NFD: [0x1103, 0x1165, 0x11B2], NFKC: [0xB35F], NFKD: [0x1103, 0x1165, 0x11B2] },
+{ source: [0xB360], NFC: [0xB360], NFD: [0x1103, 0x1165, 0x11B3], NFKC: [0xB360], NFKD: [0x1103, 0x1165, 0x11B3] },
+{ source: [0xB361], NFC: [0xB361], NFD: [0x1103, 0x1165, 0x11B4], NFKC: [0xB361], NFKD: [0x1103, 0x1165, 0x11B4] },
+{ source: [0xB362], NFC: [0xB362], NFD: [0x1103, 0x1165, 0x11B5], NFKC: [0xB362], NFKD: [0x1103, 0x1165, 0x11B5] },
+{ source: [0xB363], NFC: [0xB363], NFD: [0x1103, 0x1165, 0x11B6], NFKC: [0xB363], NFKD: [0x1103, 0x1165, 0x11B6] },
+{ source: [0xB364], NFC: [0xB364], NFD: [0x1103, 0x1165, 0x11B7], NFKC: [0xB364], NFKD: [0x1103, 0x1165, 0x11B7] },
+{ source: [0xB365], NFC: [0xB365], NFD: [0x1103, 0x1165, 0x11B8], NFKC: [0xB365], NFKD: [0x1103, 0x1165, 0x11B8] },
+{ source: [0xB366], NFC: [0xB366], NFD: [0x1103, 0x1165, 0x11B9], NFKC: [0xB366], NFKD: [0x1103, 0x1165, 0x11B9] },
+{ source: [0xB367], NFC: [0xB367], NFD: [0x1103, 0x1165, 0x11BA], NFKC: [0xB367], NFKD: [0x1103, 0x1165, 0x11BA] },
+{ source: [0xB368], NFC: [0xB368], NFD: [0x1103, 0x1165, 0x11BB], NFKC: [0xB368], NFKD: [0x1103, 0x1165, 0x11BB] },
+{ source: [0xB369], NFC: [0xB369], NFD: [0x1103, 0x1165, 0x11BC], NFKC: [0xB369], NFKD: [0x1103, 0x1165, 0x11BC] },
+{ source: [0xB36A], NFC: [0xB36A], NFD: [0x1103, 0x1165, 0x11BD], NFKC: [0xB36A], NFKD: [0x1103, 0x1165, 0x11BD] },
+{ source: [0xB36B], NFC: [0xB36B], NFD: [0x1103, 0x1165, 0x11BE], NFKC: [0xB36B], NFKD: [0x1103, 0x1165, 0x11BE] },
+{ source: [0xB36C], NFC: [0xB36C], NFD: [0x1103, 0x1165, 0x11BF], NFKC: [0xB36C], NFKD: [0x1103, 0x1165, 0x11BF] },
+{ source: [0xB36D], NFC: [0xB36D], NFD: [0x1103, 0x1165, 0x11C0], NFKC: [0xB36D], NFKD: [0x1103, 0x1165, 0x11C0] },
+{ source: [0xB36E], NFC: [0xB36E], NFD: [0x1103, 0x1165, 0x11C1], NFKC: [0xB36E], NFKD: [0x1103, 0x1165, 0x11C1] },
+{ source: [0xB36F], NFC: [0xB36F], NFD: [0x1103, 0x1165, 0x11C2], NFKC: [0xB36F], NFKD: [0x1103, 0x1165, 0x11C2] },
+{ source: [0xB370], NFC: [0xB370], NFD: [0x1103, 0x1166], NFKC: [0xB370], NFKD: [0x1103, 0x1166] },
+{ source: [0xB371], NFC: [0xB371], NFD: [0x1103, 0x1166, 0x11A8], NFKC: [0xB371], NFKD: [0x1103, 0x1166, 0x11A8] },
+{ source: [0xB372], NFC: [0xB372], NFD: [0x1103, 0x1166, 0x11A9], NFKC: [0xB372], NFKD: [0x1103, 0x1166, 0x11A9] },
+{ source: [0xB373], NFC: [0xB373], NFD: [0x1103, 0x1166, 0x11AA], NFKC: [0xB373], NFKD: [0x1103, 0x1166, 0x11AA] },
+{ source: [0xB374], NFC: [0xB374], NFD: [0x1103, 0x1166, 0x11AB], NFKC: [0xB374], NFKD: [0x1103, 0x1166, 0x11AB] },
+{ source: [0xB375], NFC: [0xB375], NFD: [0x1103, 0x1166, 0x11AC], NFKC: [0xB375], NFKD: [0x1103, 0x1166, 0x11AC] },
+{ source: [0xB376], NFC: [0xB376], NFD: [0x1103, 0x1166, 0x11AD], NFKC: [0xB376], NFKD: [0x1103, 0x1166, 0x11AD] },
+{ source: [0xB377], NFC: [0xB377], NFD: [0x1103, 0x1166, 0x11AE], NFKC: [0xB377], NFKD: [0x1103, 0x1166, 0x11AE] },
+{ source: [0xB378], NFC: [0xB378], NFD: [0x1103, 0x1166, 0x11AF], NFKC: [0xB378], NFKD: [0x1103, 0x1166, 0x11AF] },
+{ source: [0xB379], NFC: [0xB379], NFD: [0x1103, 0x1166, 0x11B0], NFKC: [0xB379], NFKD: [0x1103, 0x1166, 0x11B0] },
+{ source: [0xB37A], NFC: [0xB37A], NFD: [0x1103, 0x1166, 0x11B1], NFKC: [0xB37A], NFKD: [0x1103, 0x1166, 0x11B1] },
+{ source: [0xB37B], NFC: [0xB37B], NFD: [0x1103, 0x1166, 0x11B2], NFKC: [0xB37B], NFKD: [0x1103, 0x1166, 0x11B2] },
+{ source: [0xB37C], NFC: [0xB37C], NFD: [0x1103, 0x1166, 0x11B3], NFKC: [0xB37C], NFKD: [0x1103, 0x1166, 0x11B3] },
+{ source: [0xB37D], NFC: [0xB37D], NFD: [0x1103, 0x1166, 0x11B4], NFKC: [0xB37D], NFKD: [0x1103, 0x1166, 0x11B4] },
+{ source: [0xB37E], NFC: [0xB37E], NFD: [0x1103, 0x1166, 0x11B5], NFKC: [0xB37E], NFKD: [0x1103, 0x1166, 0x11B5] },
+{ source: [0xB37F], NFC: [0xB37F], NFD: [0x1103, 0x1166, 0x11B6], NFKC: [0xB37F], NFKD: [0x1103, 0x1166, 0x11B6] },
+{ source: [0xB380], NFC: [0xB380], NFD: [0x1103, 0x1166, 0x11B7], NFKC: [0xB380], NFKD: [0x1103, 0x1166, 0x11B7] },
+{ source: [0xB381], NFC: [0xB381], NFD: [0x1103, 0x1166, 0x11B8], NFKC: [0xB381], NFKD: [0x1103, 0x1166, 0x11B8] },
+{ source: [0xB382], NFC: [0xB382], NFD: [0x1103, 0x1166, 0x11B9], NFKC: [0xB382], NFKD: [0x1103, 0x1166, 0x11B9] },
+{ source: [0xB383], NFC: [0xB383], NFD: [0x1103, 0x1166, 0x11BA], NFKC: [0xB383], NFKD: [0x1103, 0x1166, 0x11BA] },
+{ source: [0xB384], NFC: [0xB384], NFD: [0x1103, 0x1166, 0x11BB], NFKC: [0xB384], NFKD: [0x1103, 0x1166, 0x11BB] },
+{ source: [0xB385], NFC: [0xB385], NFD: [0x1103, 0x1166, 0x11BC], NFKC: [0xB385], NFKD: [0x1103, 0x1166, 0x11BC] },
+{ source: [0xB386], NFC: [0xB386], NFD: [0x1103, 0x1166, 0x11BD], NFKC: [0xB386], NFKD: [0x1103, 0x1166, 0x11BD] },
+{ source: [0xB387], NFC: [0xB387], NFD: [0x1103, 0x1166, 0x11BE], NFKC: [0xB387], NFKD: [0x1103, 0x1166, 0x11BE] },
+{ source: [0xB388], NFC: [0xB388], NFD: [0x1103, 0x1166, 0x11BF], NFKC: [0xB388], NFKD: [0x1103, 0x1166, 0x11BF] },
+{ source: [0xB389], NFC: [0xB389], NFD: [0x1103, 0x1166, 0x11C0], NFKC: [0xB389], NFKD: [0x1103, 0x1166, 0x11C0] },
+{ source: [0xB38A], NFC: [0xB38A], NFD: [0x1103, 0x1166, 0x11C1], NFKC: [0xB38A], NFKD: [0x1103, 0x1166, 0x11C1] },
+{ source: [0xB38B], NFC: [0xB38B], NFD: [0x1103, 0x1166, 0x11C2], NFKC: [0xB38B], NFKD: [0x1103, 0x1166, 0x11C2] },
+{ source: [0xB38C], NFC: [0xB38C], NFD: [0x1103, 0x1167], NFKC: [0xB38C], NFKD: [0x1103, 0x1167] },
+{ source: [0xB38D], NFC: [0xB38D], NFD: [0x1103, 0x1167, 0x11A8], NFKC: [0xB38D], NFKD: [0x1103, 0x1167, 0x11A8] },
+{ source: [0xB38E], NFC: [0xB38E], NFD: [0x1103, 0x1167, 0x11A9], NFKC: [0xB38E], NFKD: [0x1103, 0x1167, 0x11A9] },
+{ source: [0xB38F], NFC: [0xB38F], NFD: [0x1103, 0x1167, 0x11AA], NFKC: [0xB38F], NFKD: [0x1103, 0x1167, 0x11AA] },
+{ source: [0xB390], NFC: [0xB390], NFD: [0x1103, 0x1167, 0x11AB], NFKC: [0xB390], NFKD: [0x1103, 0x1167, 0x11AB] },
+{ source: [0xB391], NFC: [0xB391], NFD: [0x1103, 0x1167, 0x11AC], NFKC: [0xB391], NFKD: [0x1103, 0x1167, 0x11AC] },
+{ source: [0xB392], NFC: [0xB392], NFD: [0x1103, 0x1167, 0x11AD], NFKC: [0xB392], NFKD: [0x1103, 0x1167, 0x11AD] },
+{ source: [0xB393], NFC: [0xB393], NFD: [0x1103, 0x1167, 0x11AE], NFKC: [0xB393], NFKD: [0x1103, 0x1167, 0x11AE] },
+{ source: [0xB394], NFC: [0xB394], NFD: [0x1103, 0x1167, 0x11AF], NFKC: [0xB394], NFKD: [0x1103, 0x1167, 0x11AF] },
+{ source: [0xB395], NFC: [0xB395], NFD: [0x1103, 0x1167, 0x11B0], NFKC: [0xB395], NFKD: [0x1103, 0x1167, 0x11B0] },
+{ source: [0xB396], NFC: [0xB396], NFD: [0x1103, 0x1167, 0x11B1], NFKC: [0xB396], NFKD: [0x1103, 0x1167, 0x11B1] },
+{ source: [0xB397], NFC: [0xB397], NFD: [0x1103, 0x1167, 0x11B2], NFKC: [0xB397], NFKD: [0x1103, 0x1167, 0x11B2] },
+{ source: [0xB398], NFC: [0xB398], NFD: [0x1103, 0x1167, 0x11B3], NFKC: [0xB398], NFKD: [0x1103, 0x1167, 0x11B3] },
+{ source: [0xB399], NFC: [0xB399], NFD: [0x1103, 0x1167, 0x11B4], NFKC: [0xB399], NFKD: [0x1103, 0x1167, 0x11B4] },
+{ source: [0xB39A], NFC: [0xB39A], NFD: [0x1103, 0x1167, 0x11B5], NFKC: [0xB39A], NFKD: [0x1103, 0x1167, 0x11B5] },
+{ source: [0xB39B], NFC: [0xB39B], NFD: [0x1103, 0x1167, 0x11B6], NFKC: [0xB39B], NFKD: [0x1103, 0x1167, 0x11B6] },
+{ source: [0xB39C], NFC: [0xB39C], NFD: [0x1103, 0x1167, 0x11B7], NFKC: [0xB39C], NFKD: [0x1103, 0x1167, 0x11B7] },
+{ source: [0xB39D], NFC: [0xB39D], NFD: [0x1103, 0x1167, 0x11B8], NFKC: [0xB39D], NFKD: [0x1103, 0x1167, 0x11B8] },
+{ source: [0xB39E], NFC: [0xB39E], NFD: [0x1103, 0x1167, 0x11B9], NFKC: [0xB39E], NFKD: [0x1103, 0x1167, 0x11B9] },
+{ source: [0xB39F], NFC: [0xB39F], NFD: [0x1103, 0x1167, 0x11BA], NFKC: [0xB39F], NFKD: [0x1103, 0x1167, 0x11BA] },
+{ source: [0xB3A0], NFC: [0xB3A0], NFD: [0x1103, 0x1167, 0x11BB], NFKC: [0xB3A0], NFKD: [0x1103, 0x1167, 0x11BB] },
+{ source: [0xB3A1], NFC: [0xB3A1], NFD: [0x1103, 0x1167, 0x11BC], NFKC: [0xB3A1], NFKD: [0x1103, 0x1167, 0x11BC] },
+{ source: [0xB3A2], NFC: [0xB3A2], NFD: [0x1103, 0x1167, 0x11BD], NFKC: [0xB3A2], NFKD: [0x1103, 0x1167, 0x11BD] },
+{ source: [0xB3A3], NFC: [0xB3A3], NFD: [0x1103, 0x1167, 0x11BE], NFKC: [0xB3A3], NFKD: [0x1103, 0x1167, 0x11BE] },
+{ source: [0xB3A4], NFC: [0xB3A4], NFD: [0x1103, 0x1167, 0x11BF], NFKC: [0xB3A4], NFKD: [0x1103, 0x1167, 0x11BF] },
+{ source: [0xB3A5], NFC: [0xB3A5], NFD: [0x1103, 0x1167, 0x11C0], NFKC: [0xB3A5], NFKD: [0x1103, 0x1167, 0x11C0] },
+{ source: [0xB3A6], NFC: [0xB3A6], NFD: [0x1103, 0x1167, 0x11C1], NFKC: [0xB3A6], NFKD: [0x1103, 0x1167, 0x11C1] },
+{ source: [0xB3A7], NFC: [0xB3A7], NFD: [0x1103, 0x1167, 0x11C2], NFKC: [0xB3A7], NFKD: [0x1103, 0x1167, 0x11C2] },
+{ source: [0xB3A8], NFC: [0xB3A8], NFD: [0x1103, 0x1168], NFKC: [0xB3A8], NFKD: [0x1103, 0x1168] },
+{ source: [0xB3A9], NFC: [0xB3A9], NFD: [0x1103, 0x1168, 0x11A8], NFKC: [0xB3A9], NFKD: [0x1103, 0x1168, 0x11A8] },
+{ source: [0xB3AA], NFC: [0xB3AA], NFD: [0x1103, 0x1168, 0x11A9], NFKC: [0xB3AA], NFKD: [0x1103, 0x1168, 0x11A9] },
+{ source: [0xB3AB], NFC: [0xB3AB], NFD: [0x1103, 0x1168, 0x11AA], NFKC: [0xB3AB], NFKD: [0x1103, 0x1168, 0x11AA] },
+{ source: [0xB3AC], NFC: [0xB3AC], NFD: [0x1103, 0x1168, 0x11AB], NFKC: [0xB3AC], NFKD: [0x1103, 0x1168, 0x11AB] },
+{ source: [0xB3AD], NFC: [0xB3AD], NFD: [0x1103, 0x1168, 0x11AC], NFKC: [0xB3AD], NFKD: [0x1103, 0x1168, 0x11AC] },
+{ source: [0xB3AE], NFC: [0xB3AE], NFD: [0x1103, 0x1168, 0x11AD], NFKC: [0xB3AE], NFKD: [0x1103, 0x1168, 0x11AD] },
+{ source: [0xB3AF], NFC: [0xB3AF], NFD: [0x1103, 0x1168, 0x11AE], NFKC: [0xB3AF], NFKD: [0x1103, 0x1168, 0x11AE] },
+{ source: [0xB3B0], NFC: [0xB3B0], NFD: [0x1103, 0x1168, 0x11AF], NFKC: [0xB3B0], NFKD: [0x1103, 0x1168, 0x11AF] },
+{ source: [0xB3B1], NFC: [0xB3B1], NFD: [0x1103, 0x1168, 0x11B0], NFKC: [0xB3B1], NFKD: [0x1103, 0x1168, 0x11B0] },
+{ source: [0xB3B2], NFC: [0xB3B2], NFD: [0x1103, 0x1168, 0x11B1], NFKC: [0xB3B2], NFKD: [0x1103, 0x1168, 0x11B1] },
+{ source: [0xB3B3], NFC: [0xB3B3], NFD: [0x1103, 0x1168, 0x11B2], NFKC: [0xB3B3], NFKD: [0x1103, 0x1168, 0x11B2] },
+{ source: [0xB3B4], NFC: [0xB3B4], NFD: [0x1103, 0x1168, 0x11B3], NFKC: [0xB3B4], NFKD: [0x1103, 0x1168, 0x11B3] },
+{ source: [0xB3B5], NFC: [0xB3B5], NFD: [0x1103, 0x1168, 0x11B4], NFKC: [0xB3B5], NFKD: [0x1103, 0x1168, 0x11B4] },
+{ source: [0xB3B6], NFC: [0xB3B6], NFD: [0x1103, 0x1168, 0x11B5], NFKC: [0xB3B6], NFKD: [0x1103, 0x1168, 0x11B5] },
+{ source: [0xB3B7], NFC: [0xB3B7], NFD: [0x1103, 0x1168, 0x11B6], NFKC: [0xB3B7], NFKD: [0x1103, 0x1168, 0x11B6] },
+{ source: [0xB3B8], NFC: [0xB3B8], NFD: [0x1103, 0x1168, 0x11B7], NFKC: [0xB3B8], NFKD: [0x1103, 0x1168, 0x11B7] },
+{ source: [0xB3B9], NFC: [0xB3B9], NFD: [0x1103, 0x1168, 0x11B8], NFKC: [0xB3B9], NFKD: [0x1103, 0x1168, 0x11B8] },
+{ source: [0xB3BA], NFC: [0xB3BA], NFD: [0x1103, 0x1168, 0x11B9], NFKC: [0xB3BA], NFKD: [0x1103, 0x1168, 0x11B9] },
+{ source: [0xB3BB], NFC: [0xB3BB], NFD: [0x1103, 0x1168, 0x11BA], NFKC: [0xB3BB], NFKD: [0x1103, 0x1168, 0x11BA] },
+{ source: [0xB3BC], NFC: [0xB3BC], NFD: [0x1103, 0x1168, 0x11BB], NFKC: [0xB3BC], NFKD: [0x1103, 0x1168, 0x11BB] },
+{ source: [0xB3BD], NFC: [0xB3BD], NFD: [0x1103, 0x1168, 0x11BC], NFKC: [0xB3BD], NFKD: [0x1103, 0x1168, 0x11BC] },
+{ source: [0xB3BE], NFC: [0xB3BE], NFD: [0x1103, 0x1168, 0x11BD], NFKC: [0xB3BE], NFKD: [0x1103, 0x1168, 0x11BD] },
+{ source: [0xB3BF], NFC: [0xB3BF], NFD: [0x1103, 0x1168, 0x11BE], NFKC: [0xB3BF], NFKD: [0x1103, 0x1168, 0x11BE] },
+{ source: [0xB3C0], NFC: [0xB3C0], NFD: [0x1103, 0x1168, 0x11BF], NFKC: [0xB3C0], NFKD: [0x1103, 0x1168, 0x11BF] },
+{ source: [0xB3C1], NFC: [0xB3C1], NFD: [0x1103, 0x1168, 0x11C0], NFKC: [0xB3C1], NFKD: [0x1103, 0x1168, 0x11C0] },
+{ source: [0xB3C2], NFC: [0xB3C2], NFD: [0x1103, 0x1168, 0x11C1], NFKC: [0xB3C2], NFKD: [0x1103, 0x1168, 0x11C1] },
+{ source: [0xB3C3], NFC: [0xB3C3], NFD: [0x1103, 0x1168, 0x11C2], NFKC: [0xB3C3], NFKD: [0x1103, 0x1168, 0x11C2] },
+{ source: [0xB3C4], NFC: [0xB3C4], NFD: [0x1103, 0x1169], NFKC: [0xB3C4], NFKD: [0x1103, 0x1169] },
+{ source: [0xB3C5], NFC: [0xB3C5], NFD: [0x1103, 0x1169, 0x11A8], NFKC: [0xB3C5], NFKD: [0x1103, 0x1169, 0x11A8] },
+{ source: [0xB3C6], NFC: [0xB3C6], NFD: [0x1103, 0x1169, 0x11A9], NFKC: [0xB3C6], NFKD: [0x1103, 0x1169, 0x11A9] },
+{ source: [0xB3C7], NFC: [0xB3C7], NFD: [0x1103, 0x1169, 0x11AA], NFKC: [0xB3C7], NFKD: [0x1103, 0x1169, 0x11AA] },
+{ source: [0xB3C8], NFC: [0xB3C8], NFD: [0x1103, 0x1169, 0x11AB], NFKC: [0xB3C8], NFKD: [0x1103, 0x1169, 0x11AB] },
+{ source: [0xB3C9], NFC: [0xB3C9], NFD: [0x1103, 0x1169, 0x11AC], NFKC: [0xB3C9], NFKD: [0x1103, 0x1169, 0x11AC] },
+{ source: [0xB3CA], NFC: [0xB3CA], NFD: [0x1103, 0x1169, 0x11AD], NFKC: [0xB3CA], NFKD: [0x1103, 0x1169, 0x11AD] },
+{ source: [0xB3CB], NFC: [0xB3CB], NFD: [0x1103, 0x1169, 0x11AE], NFKC: [0xB3CB], NFKD: [0x1103, 0x1169, 0x11AE] },
+{ source: [0xB3CC], NFC: [0xB3CC], NFD: [0x1103, 0x1169, 0x11AF], NFKC: [0xB3CC], NFKD: [0x1103, 0x1169, 0x11AF] },
+{ source: [0xB3CD], NFC: [0xB3CD], NFD: [0x1103, 0x1169, 0x11B0], NFKC: [0xB3CD], NFKD: [0x1103, 0x1169, 0x11B0] },
+{ source: [0xB3CE], NFC: [0xB3CE], NFD: [0x1103, 0x1169, 0x11B1], NFKC: [0xB3CE], NFKD: [0x1103, 0x1169, 0x11B1] },
+{ source: [0xB3CF], NFC: [0xB3CF], NFD: [0x1103, 0x1169, 0x11B2], NFKC: [0xB3CF], NFKD: [0x1103, 0x1169, 0x11B2] },
+{ source: [0xB3D0], NFC: [0xB3D0], NFD: [0x1103, 0x1169, 0x11B3], NFKC: [0xB3D0], NFKD: [0x1103, 0x1169, 0x11B3] },
+{ source: [0xB3D1], NFC: [0xB3D1], NFD: [0x1103, 0x1169, 0x11B4], NFKC: [0xB3D1], NFKD: [0x1103, 0x1169, 0x11B4] },
+{ source: [0xB3D2], NFC: [0xB3D2], NFD: [0x1103, 0x1169, 0x11B5], NFKC: [0xB3D2], NFKD: [0x1103, 0x1169, 0x11B5] },
+{ source: [0xB3D3], NFC: [0xB3D3], NFD: [0x1103, 0x1169, 0x11B6], NFKC: [0xB3D3], NFKD: [0x1103, 0x1169, 0x11B6] },
+{ source: [0xB3D4], NFC: [0xB3D4], NFD: [0x1103, 0x1169, 0x11B7], NFKC: [0xB3D4], NFKD: [0x1103, 0x1169, 0x11B7] },
+{ source: [0xB3D5], NFC: [0xB3D5], NFD: [0x1103, 0x1169, 0x11B8], NFKC: [0xB3D5], NFKD: [0x1103, 0x1169, 0x11B8] },
+{ source: [0xB3D6], NFC: [0xB3D6], NFD: [0x1103, 0x1169, 0x11B9], NFKC: [0xB3D6], NFKD: [0x1103, 0x1169, 0x11B9] },
+{ source: [0xB3D7], NFC: [0xB3D7], NFD: [0x1103, 0x1169, 0x11BA], NFKC: [0xB3D7], NFKD: [0x1103, 0x1169, 0x11BA] },
+{ source: [0xB3D8], NFC: [0xB3D8], NFD: [0x1103, 0x1169, 0x11BB], NFKC: [0xB3D8], NFKD: [0x1103, 0x1169, 0x11BB] },
+{ source: [0xB3D9], NFC: [0xB3D9], NFD: [0x1103, 0x1169, 0x11BC], NFKC: [0xB3D9], NFKD: [0x1103, 0x1169, 0x11BC] },
+{ source: [0xB3DA], NFC: [0xB3DA], NFD: [0x1103, 0x1169, 0x11BD], NFKC: [0xB3DA], NFKD: [0x1103, 0x1169, 0x11BD] },
+{ source: [0xB3DB], NFC: [0xB3DB], NFD: [0x1103, 0x1169, 0x11BE], NFKC: [0xB3DB], NFKD: [0x1103, 0x1169, 0x11BE] },
+{ source: [0xB3DC], NFC: [0xB3DC], NFD: [0x1103, 0x1169, 0x11BF], NFKC: [0xB3DC], NFKD: [0x1103, 0x1169, 0x11BF] },
+{ source: [0xB3DD], NFC: [0xB3DD], NFD: [0x1103, 0x1169, 0x11C0], NFKC: [0xB3DD], NFKD: [0x1103, 0x1169, 0x11C0] },
+{ source: [0xB3DE], NFC: [0xB3DE], NFD: [0x1103, 0x1169, 0x11C1], NFKC: [0xB3DE], NFKD: [0x1103, 0x1169, 0x11C1] },
+{ source: [0xB3DF], NFC: [0xB3DF], NFD: [0x1103, 0x1169, 0x11C2], NFKC: [0xB3DF], NFKD: [0x1103, 0x1169, 0x11C2] },
+{ source: [0xB3E0], NFC: [0xB3E0], NFD: [0x1103, 0x116A], NFKC: [0xB3E0], NFKD: [0x1103, 0x116A] },
+{ source: [0xB3E1], NFC: [0xB3E1], NFD: [0x1103, 0x116A, 0x11A8], NFKC: [0xB3E1], NFKD: [0x1103, 0x116A, 0x11A8] },
+{ source: [0xB3E2], NFC: [0xB3E2], NFD: [0x1103, 0x116A, 0x11A9], NFKC: [0xB3E2], NFKD: [0x1103, 0x116A, 0x11A9] },
+{ source: [0xB3E3], NFC: [0xB3E3], NFD: [0x1103, 0x116A, 0x11AA], NFKC: [0xB3E3], NFKD: [0x1103, 0x116A, 0x11AA] },
+{ source: [0xB3E4], NFC: [0xB3E4], NFD: [0x1103, 0x116A, 0x11AB], NFKC: [0xB3E4], NFKD: [0x1103, 0x116A, 0x11AB] },
+{ source: [0xB3E5], NFC: [0xB3E5], NFD: [0x1103, 0x116A, 0x11AC], NFKC: [0xB3E5], NFKD: [0x1103, 0x116A, 0x11AC] },
+{ source: [0xB3E6], NFC: [0xB3E6], NFD: [0x1103, 0x116A, 0x11AD], NFKC: [0xB3E6], NFKD: [0x1103, 0x116A, 0x11AD] },
+{ source: [0xB3E7], NFC: [0xB3E7], NFD: [0x1103, 0x116A, 0x11AE], NFKC: [0xB3E7], NFKD: [0x1103, 0x116A, 0x11AE] },
+{ source: [0xB3E8], NFC: [0xB3E8], NFD: [0x1103, 0x116A, 0x11AF], NFKC: [0xB3E8], NFKD: [0x1103, 0x116A, 0x11AF] },
+{ source: [0xB3E9], NFC: [0xB3E9], NFD: [0x1103, 0x116A, 0x11B0], NFKC: [0xB3E9], NFKD: [0x1103, 0x116A, 0x11B0] },
+{ source: [0xB3EA], NFC: [0xB3EA], NFD: [0x1103, 0x116A, 0x11B1], NFKC: [0xB3EA], NFKD: [0x1103, 0x116A, 0x11B1] },
+{ source: [0xB3EB], NFC: [0xB3EB], NFD: [0x1103, 0x116A, 0x11B2], NFKC: [0xB3EB], NFKD: [0x1103, 0x116A, 0x11B2] },
+{ source: [0xB3EC], NFC: [0xB3EC], NFD: [0x1103, 0x116A, 0x11B3], NFKC: [0xB3EC], NFKD: [0x1103, 0x116A, 0x11B3] },
+{ source: [0xB3ED], NFC: [0xB3ED], NFD: [0x1103, 0x116A, 0x11B4], NFKC: [0xB3ED], NFKD: [0x1103, 0x116A, 0x11B4] },
+{ source: [0xB3EE], NFC: [0xB3EE], NFD: [0x1103, 0x116A, 0x11B5], NFKC: [0xB3EE], NFKD: [0x1103, 0x116A, 0x11B5] },
+{ source: [0xB3EF], NFC: [0xB3EF], NFD: [0x1103, 0x116A, 0x11B6], NFKC: [0xB3EF], NFKD: [0x1103, 0x116A, 0x11B6] },
+{ source: [0xB3F0], NFC: [0xB3F0], NFD: [0x1103, 0x116A, 0x11B7], NFKC: [0xB3F0], NFKD: [0x1103, 0x116A, 0x11B7] },
+{ source: [0xB3F1], NFC: [0xB3F1], NFD: [0x1103, 0x116A, 0x11B8], NFKC: [0xB3F1], NFKD: [0x1103, 0x116A, 0x11B8] },
+{ source: [0xB3F2], NFC: [0xB3F2], NFD: [0x1103, 0x116A, 0x11B9], NFKC: [0xB3F2], NFKD: [0x1103, 0x116A, 0x11B9] },
+{ source: [0xB3F3], NFC: [0xB3F3], NFD: [0x1103, 0x116A, 0x11BA], NFKC: [0xB3F3], NFKD: [0x1103, 0x116A, 0x11BA] },
+{ source: [0xB3F4], NFC: [0xB3F4], NFD: [0x1103, 0x116A, 0x11BB], NFKC: [0xB3F4], NFKD: [0x1103, 0x116A, 0x11BB] },
+{ source: [0xB3F5], NFC: [0xB3F5], NFD: [0x1103, 0x116A, 0x11BC], NFKC: [0xB3F5], NFKD: [0x1103, 0x116A, 0x11BC] },
+{ source: [0xB3F6], NFC: [0xB3F6], NFD: [0x1103, 0x116A, 0x11BD], NFKC: [0xB3F6], NFKD: [0x1103, 0x116A, 0x11BD] },
+{ source: [0xB3F7], NFC: [0xB3F7], NFD: [0x1103, 0x116A, 0x11BE], NFKC: [0xB3F7], NFKD: [0x1103, 0x116A, 0x11BE] },
+{ source: [0xB3F8], NFC: [0xB3F8], NFD: [0x1103, 0x116A, 0x11BF], NFKC: [0xB3F8], NFKD: [0x1103, 0x116A, 0x11BF] },
+{ source: [0xB3F9], NFC: [0xB3F9], NFD: [0x1103, 0x116A, 0x11C0], NFKC: [0xB3F9], NFKD: [0x1103, 0x116A, 0x11C0] },
+{ source: [0xB3FA], NFC: [0xB3FA], NFD: [0x1103, 0x116A, 0x11C1], NFKC: [0xB3FA], NFKD: [0x1103, 0x116A, 0x11C1] },
+{ source: [0xB3FB], NFC: [0xB3FB], NFD: [0x1103, 0x116A, 0x11C2], NFKC: [0xB3FB], NFKD: [0x1103, 0x116A, 0x11C2] },
+{ source: [0xB3FC], NFC: [0xB3FC], NFD: [0x1103, 0x116B], NFKC: [0xB3FC], NFKD: [0x1103, 0x116B] },
+{ source: [0xB3FD], NFC: [0xB3FD], NFD: [0x1103, 0x116B, 0x11A8], NFKC: [0xB3FD], NFKD: [0x1103, 0x116B, 0x11A8] },
+{ source: [0xB3FE], NFC: [0xB3FE], NFD: [0x1103, 0x116B, 0x11A9], NFKC: [0xB3FE], NFKD: [0x1103, 0x116B, 0x11A9] },
+{ source: [0xB3FF], NFC: [0xB3FF], NFD: [0x1103, 0x116B, 0x11AA], NFKC: [0xB3FF], NFKD: [0x1103, 0x116B, 0x11AA] },
+{ source: [0xB400], NFC: [0xB400], NFD: [0x1103, 0x116B, 0x11AB], NFKC: [0xB400], NFKD: [0x1103, 0x116B, 0x11AB] },
+{ source: [0xB401], NFC: [0xB401], NFD: [0x1103, 0x116B, 0x11AC], NFKC: [0xB401], NFKD: [0x1103, 0x116B, 0x11AC] },
+{ source: [0xB402], NFC: [0xB402], NFD: [0x1103, 0x116B, 0x11AD], NFKC: [0xB402], NFKD: [0x1103, 0x116B, 0x11AD] },
+{ source: [0xB403], NFC: [0xB403], NFD: [0x1103, 0x116B, 0x11AE], NFKC: [0xB403], NFKD: [0x1103, 0x116B, 0x11AE] },
+{ source: [0xB404], NFC: [0xB404], NFD: [0x1103, 0x116B, 0x11AF], NFKC: [0xB404], NFKD: [0x1103, 0x116B, 0x11AF] },
+{ source: [0xB405], NFC: [0xB405], NFD: [0x1103, 0x116B, 0x11B0], NFKC: [0xB405], NFKD: [0x1103, 0x116B, 0x11B0] },
+{ source: [0xB406], NFC: [0xB406], NFD: [0x1103, 0x116B, 0x11B1], NFKC: [0xB406], NFKD: [0x1103, 0x116B, 0x11B1] },
+{ source: [0xB407], NFC: [0xB407], NFD: [0x1103, 0x116B, 0x11B2], NFKC: [0xB407], NFKD: [0x1103, 0x116B, 0x11B2] },
+{ source: [0xB408], NFC: [0xB408], NFD: [0x1103, 0x116B, 0x11B3], NFKC: [0xB408], NFKD: [0x1103, 0x116B, 0x11B3] },
+{ source: [0xB409], NFC: [0xB409], NFD: [0x1103, 0x116B, 0x11B4], NFKC: [0xB409], NFKD: [0x1103, 0x116B, 0x11B4] },
+{ source: [0xB40A], NFC: [0xB40A], NFD: [0x1103, 0x116B, 0x11B5], NFKC: [0xB40A], NFKD: [0x1103, 0x116B, 0x11B5] },
+{ source: [0xB40B], NFC: [0xB40B], NFD: [0x1103, 0x116B, 0x11B6], NFKC: [0xB40B], NFKD: [0x1103, 0x116B, 0x11B6] },
+{ source: [0xB40C], NFC: [0xB40C], NFD: [0x1103, 0x116B, 0x11B7], NFKC: [0xB40C], NFKD: [0x1103, 0x116B, 0x11B7] },
+{ source: [0xB40D], NFC: [0xB40D], NFD: [0x1103, 0x116B, 0x11B8], NFKC: [0xB40D], NFKD: [0x1103, 0x116B, 0x11B8] },
+{ source: [0xB40E], NFC: [0xB40E], NFD: [0x1103, 0x116B, 0x11B9], NFKC: [0xB40E], NFKD: [0x1103, 0x116B, 0x11B9] },
+{ source: [0xB40F], NFC: [0xB40F], NFD: [0x1103, 0x116B, 0x11BA], NFKC: [0xB40F], NFKD: [0x1103, 0x116B, 0x11BA] },
+{ source: [0xB410], NFC: [0xB410], NFD: [0x1103, 0x116B, 0x11BB], NFKC: [0xB410], NFKD: [0x1103, 0x116B, 0x11BB] },
+{ source: [0xB411], NFC: [0xB411], NFD: [0x1103, 0x116B, 0x11BC], NFKC: [0xB411], NFKD: [0x1103, 0x116B, 0x11BC] },
+{ source: [0xB412], NFC: [0xB412], NFD: [0x1103, 0x116B, 0x11BD], NFKC: [0xB412], NFKD: [0x1103, 0x116B, 0x11BD] },
+{ source: [0xB413], NFC: [0xB413], NFD: [0x1103, 0x116B, 0x11BE], NFKC: [0xB413], NFKD: [0x1103, 0x116B, 0x11BE] },
+{ source: [0xB414], NFC: [0xB414], NFD: [0x1103, 0x116B, 0x11BF], NFKC: [0xB414], NFKD: [0x1103, 0x116B, 0x11BF] },
+{ source: [0xB415], NFC: [0xB415], NFD: [0x1103, 0x116B, 0x11C0], NFKC: [0xB415], NFKD: [0x1103, 0x116B, 0x11C0] },
+{ source: [0xB416], NFC: [0xB416], NFD: [0x1103, 0x116B, 0x11C1], NFKC: [0xB416], NFKD: [0x1103, 0x116B, 0x11C1] },
+{ source: [0xB417], NFC: [0xB417], NFD: [0x1103, 0x116B, 0x11C2], NFKC: [0xB417], NFKD: [0x1103, 0x116B, 0x11C2] },
+{ source: [0xB418], NFC: [0xB418], NFD: [0x1103, 0x116C], NFKC: [0xB418], NFKD: [0x1103, 0x116C] },
+{ source: [0xB419], NFC: [0xB419], NFD: [0x1103, 0x116C, 0x11A8], NFKC: [0xB419], NFKD: [0x1103, 0x116C, 0x11A8] },
+{ source: [0xB41A], NFC: [0xB41A], NFD: [0x1103, 0x116C, 0x11A9], NFKC: [0xB41A], NFKD: [0x1103, 0x116C, 0x11A9] },
+{ source: [0xB41B], NFC: [0xB41B], NFD: [0x1103, 0x116C, 0x11AA], NFKC: [0xB41B], NFKD: [0x1103, 0x116C, 0x11AA] },
+{ source: [0xB41C], NFC: [0xB41C], NFD: [0x1103, 0x116C, 0x11AB], NFKC: [0xB41C], NFKD: [0x1103, 0x116C, 0x11AB] },
+{ source: [0xB41D], NFC: [0xB41D], NFD: [0x1103, 0x116C, 0x11AC], NFKC: [0xB41D], NFKD: [0x1103, 0x116C, 0x11AC] },
+{ source: [0xB41E], NFC: [0xB41E], NFD: [0x1103, 0x116C, 0x11AD], NFKC: [0xB41E], NFKD: [0x1103, 0x116C, 0x11AD] },
+{ source: [0xB41F], NFC: [0xB41F], NFD: [0x1103, 0x116C, 0x11AE], NFKC: [0xB41F], NFKD: [0x1103, 0x116C, 0x11AE] },
+{ source: [0xB420], NFC: [0xB420], NFD: [0x1103, 0x116C, 0x11AF], NFKC: [0xB420], NFKD: [0x1103, 0x116C, 0x11AF] },
+{ source: [0xB421], NFC: [0xB421], NFD: [0x1103, 0x116C, 0x11B0], NFKC: [0xB421], NFKD: [0x1103, 0x116C, 0x11B0] },
+{ source: [0xB422], NFC: [0xB422], NFD: [0x1103, 0x116C, 0x11B1], NFKC: [0xB422], NFKD: [0x1103, 0x116C, 0x11B1] },
+{ source: [0xB423], NFC: [0xB423], NFD: [0x1103, 0x116C, 0x11B2], NFKC: [0xB423], NFKD: [0x1103, 0x116C, 0x11B2] },
+{ source: [0xB424], NFC: [0xB424], NFD: [0x1103, 0x116C, 0x11B3], NFKC: [0xB424], NFKD: [0x1103, 0x116C, 0x11B3] },
+{ source: [0xB425], NFC: [0xB425], NFD: [0x1103, 0x116C, 0x11B4], NFKC: [0xB425], NFKD: [0x1103, 0x116C, 0x11B4] },
+{ source: [0xB426], NFC: [0xB426], NFD: [0x1103, 0x116C, 0x11B5], NFKC: [0xB426], NFKD: [0x1103, 0x116C, 0x11B5] },
+{ source: [0xB427], NFC: [0xB427], NFD: [0x1103, 0x116C, 0x11B6], NFKC: [0xB427], NFKD: [0x1103, 0x116C, 0x11B6] },
+{ source: [0xB428], NFC: [0xB428], NFD: [0x1103, 0x116C, 0x11B7], NFKC: [0xB428], NFKD: [0x1103, 0x116C, 0x11B7] },
+{ source: [0xB429], NFC: [0xB429], NFD: [0x1103, 0x116C, 0x11B8], NFKC: [0xB429], NFKD: [0x1103, 0x116C, 0x11B8] },
+{ source: [0xB42A], NFC: [0xB42A], NFD: [0x1103, 0x116C, 0x11B9], NFKC: [0xB42A], NFKD: [0x1103, 0x116C, 0x11B9] },
+{ source: [0xB42B], NFC: [0xB42B], NFD: [0x1103, 0x116C, 0x11BA], NFKC: [0xB42B], NFKD: [0x1103, 0x116C, 0x11BA] },
+{ source: [0xB42C], NFC: [0xB42C], NFD: [0x1103, 0x116C, 0x11BB], NFKC: [0xB42C], NFKD: [0x1103, 0x116C, 0x11BB] },
+{ source: [0xB42D], NFC: [0xB42D], NFD: [0x1103, 0x116C, 0x11BC], NFKC: [0xB42D], NFKD: [0x1103, 0x116C, 0x11BC] },
+{ source: [0xB42E], NFC: [0xB42E], NFD: [0x1103, 0x116C, 0x11BD], NFKC: [0xB42E], NFKD: [0x1103, 0x116C, 0x11BD] },
+{ source: [0xB42F], NFC: [0xB42F], NFD: [0x1103, 0x116C, 0x11BE], NFKC: [0xB42F], NFKD: [0x1103, 0x116C, 0x11BE] },
+{ source: [0xB430], NFC: [0xB430], NFD: [0x1103, 0x116C, 0x11BF], NFKC: [0xB430], NFKD: [0x1103, 0x116C, 0x11BF] },
+{ source: [0xB431], NFC: [0xB431], NFD: [0x1103, 0x116C, 0x11C0], NFKC: [0xB431], NFKD: [0x1103, 0x116C, 0x11C0] },
+{ source: [0xB432], NFC: [0xB432], NFD: [0x1103, 0x116C, 0x11C1], NFKC: [0xB432], NFKD: [0x1103, 0x116C, 0x11C1] },
+{ source: [0xB433], NFC: [0xB433], NFD: [0x1103, 0x116C, 0x11C2], NFKC: [0xB433], NFKD: [0x1103, 0x116C, 0x11C2] },
+{ source: [0xB434], NFC: [0xB434], NFD: [0x1103, 0x116D], NFKC: [0xB434], NFKD: [0x1103, 0x116D] },
+{ source: [0xB435], NFC: [0xB435], NFD: [0x1103, 0x116D, 0x11A8], NFKC: [0xB435], NFKD: [0x1103, 0x116D, 0x11A8] },
+{ source: [0xB436], NFC: [0xB436], NFD: [0x1103, 0x116D, 0x11A9], NFKC: [0xB436], NFKD: [0x1103, 0x116D, 0x11A9] },
+{ source: [0xB437], NFC: [0xB437], NFD: [0x1103, 0x116D, 0x11AA], NFKC: [0xB437], NFKD: [0x1103, 0x116D, 0x11AA] },
+{ source: [0xB438], NFC: [0xB438], NFD: [0x1103, 0x116D, 0x11AB], NFKC: [0xB438], NFKD: [0x1103, 0x116D, 0x11AB] },
+{ source: [0xB439], NFC: [0xB439], NFD: [0x1103, 0x116D, 0x11AC], NFKC: [0xB439], NFKD: [0x1103, 0x116D, 0x11AC] },
+{ source: [0xB43A], NFC: [0xB43A], NFD: [0x1103, 0x116D, 0x11AD], NFKC: [0xB43A], NFKD: [0x1103, 0x116D, 0x11AD] },
+{ source: [0xB43B], NFC: [0xB43B], NFD: [0x1103, 0x116D, 0x11AE], NFKC: [0xB43B], NFKD: [0x1103, 0x116D, 0x11AE] },
+{ source: [0xB43C], NFC: [0xB43C], NFD: [0x1103, 0x116D, 0x11AF], NFKC: [0xB43C], NFKD: [0x1103, 0x116D, 0x11AF] },
+{ source: [0xB43D], NFC: [0xB43D], NFD: [0x1103, 0x116D, 0x11B0], NFKC: [0xB43D], NFKD: [0x1103, 0x116D, 0x11B0] },
+{ source: [0xB43E], NFC: [0xB43E], NFD: [0x1103, 0x116D, 0x11B1], NFKC: [0xB43E], NFKD: [0x1103, 0x116D, 0x11B1] },
+{ source: [0xB43F], NFC: [0xB43F], NFD: [0x1103, 0x116D, 0x11B2], NFKC: [0xB43F], NFKD: [0x1103, 0x116D, 0x11B2] },
+{ source: [0xB440], NFC: [0xB440], NFD: [0x1103, 0x116D, 0x11B3], NFKC: [0xB440], NFKD: [0x1103, 0x116D, 0x11B3] },
+{ source: [0xB441], NFC: [0xB441], NFD: [0x1103, 0x116D, 0x11B4], NFKC: [0xB441], NFKD: [0x1103, 0x116D, 0x11B4] },
+{ source: [0xB442], NFC: [0xB442], NFD: [0x1103, 0x116D, 0x11B5], NFKC: [0xB442], NFKD: [0x1103, 0x116D, 0x11B5] },
+{ source: [0xB443], NFC: [0xB443], NFD: [0x1103, 0x116D, 0x11B6], NFKC: [0xB443], NFKD: [0x1103, 0x116D, 0x11B6] },
+{ source: [0xB444], NFC: [0xB444], NFD: [0x1103, 0x116D, 0x11B7], NFKC: [0xB444], NFKD: [0x1103, 0x116D, 0x11B7] },
+{ source: [0xB445], NFC: [0xB445], NFD: [0x1103, 0x116D, 0x11B8], NFKC: [0xB445], NFKD: [0x1103, 0x116D, 0x11B8] },
+{ source: [0xB446], NFC: [0xB446], NFD: [0x1103, 0x116D, 0x11B9], NFKC: [0xB446], NFKD: [0x1103, 0x116D, 0x11B9] },
+{ source: [0xB447], NFC: [0xB447], NFD: [0x1103, 0x116D, 0x11BA], NFKC: [0xB447], NFKD: [0x1103, 0x116D, 0x11BA] },
+{ source: [0xB448], NFC: [0xB448], NFD: [0x1103, 0x116D, 0x11BB], NFKC: [0xB448], NFKD: [0x1103, 0x116D, 0x11BB] },
+{ source: [0xB449], NFC: [0xB449], NFD: [0x1103, 0x116D, 0x11BC], NFKC: [0xB449], NFKD: [0x1103, 0x116D, 0x11BC] },
+{ source: [0xB44A], NFC: [0xB44A], NFD: [0x1103, 0x116D, 0x11BD], NFKC: [0xB44A], NFKD: [0x1103, 0x116D, 0x11BD] },
+{ source: [0xB44B], NFC: [0xB44B], NFD: [0x1103, 0x116D, 0x11BE], NFKC: [0xB44B], NFKD: [0x1103, 0x116D, 0x11BE] },
+{ source: [0xB44C], NFC: [0xB44C], NFD: [0x1103, 0x116D, 0x11BF], NFKC: [0xB44C], NFKD: [0x1103, 0x116D, 0x11BF] },
+{ source: [0xB44D], NFC: [0xB44D], NFD: [0x1103, 0x116D, 0x11C0], NFKC: [0xB44D], NFKD: [0x1103, 0x116D, 0x11C0] },
+{ source: [0xB44E], NFC: [0xB44E], NFD: [0x1103, 0x116D, 0x11C1], NFKC: [0xB44E], NFKD: [0x1103, 0x116D, 0x11C1] },
+{ source: [0xB44F], NFC: [0xB44F], NFD: [0x1103, 0x116D, 0x11C2], NFKC: [0xB44F], NFKD: [0x1103, 0x116D, 0x11C2] },
+{ source: [0xB450], NFC: [0xB450], NFD: [0x1103, 0x116E], NFKC: [0xB450], NFKD: [0x1103, 0x116E] },
+{ source: [0xB451], NFC: [0xB451], NFD: [0x1103, 0x116E, 0x11A8], NFKC: [0xB451], NFKD: [0x1103, 0x116E, 0x11A8] },
+{ source: [0xB452], NFC: [0xB452], NFD: [0x1103, 0x116E, 0x11A9], NFKC: [0xB452], NFKD: [0x1103, 0x116E, 0x11A9] },
+{ source: [0xB453], NFC: [0xB453], NFD: [0x1103, 0x116E, 0x11AA], NFKC: [0xB453], NFKD: [0x1103, 0x116E, 0x11AA] },
+{ source: [0xB454], NFC: [0xB454], NFD: [0x1103, 0x116E, 0x11AB], NFKC: [0xB454], NFKD: [0x1103, 0x116E, 0x11AB] },
+{ source: [0xB455], NFC: [0xB455], NFD: [0x1103, 0x116E, 0x11AC], NFKC: [0xB455], NFKD: [0x1103, 0x116E, 0x11AC] },
+{ source: [0xB456], NFC: [0xB456], NFD: [0x1103, 0x116E, 0x11AD], NFKC: [0xB456], NFKD: [0x1103, 0x116E, 0x11AD] },
+{ source: [0xB457], NFC: [0xB457], NFD: [0x1103, 0x116E, 0x11AE], NFKC: [0xB457], NFKD: [0x1103, 0x116E, 0x11AE] },
+{ source: [0xB458], NFC: [0xB458], NFD: [0x1103, 0x116E, 0x11AF], NFKC: [0xB458], NFKD: [0x1103, 0x116E, 0x11AF] },
+{ source: [0xB459], NFC: [0xB459], NFD: [0x1103, 0x116E, 0x11B0], NFKC: [0xB459], NFKD: [0x1103, 0x116E, 0x11B0] },
+{ source: [0xB45A], NFC: [0xB45A], NFD: [0x1103, 0x116E, 0x11B1], NFKC: [0xB45A], NFKD: [0x1103, 0x116E, 0x11B1] },
+{ source: [0xB45B], NFC: [0xB45B], NFD: [0x1103, 0x116E, 0x11B2], NFKC: [0xB45B], NFKD: [0x1103, 0x116E, 0x11B2] },
+{ source: [0xB45C], NFC: [0xB45C], NFD: [0x1103, 0x116E, 0x11B3], NFKC: [0xB45C], NFKD: [0x1103, 0x116E, 0x11B3] },
+{ source: [0xB45D], NFC: [0xB45D], NFD: [0x1103, 0x116E, 0x11B4], NFKC: [0xB45D], NFKD: [0x1103, 0x116E, 0x11B4] },
+{ source: [0xB45E], NFC: [0xB45E], NFD: [0x1103, 0x116E, 0x11B5], NFKC: [0xB45E], NFKD: [0x1103, 0x116E, 0x11B5] },
+{ source: [0xB45F], NFC: [0xB45F], NFD: [0x1103, 0x116E, 0x11B6], NFKC: [0xB45F], NFKD: [0x1103, 0x116E, 0x11B6] },
+{ source: [0xB460], NFC: [0xB460], NFD: [0x1103, 0x116E, 0x11B7], NFKC: [0xB460], NFKD: [0x1103, 0x116E, 0x11B7] },
+{ source: [0xB461], NFC: [0xB461], NFD: [0x1103, 0x116E, 0x11B8], NFKC: [0xB461], NFKD: [0x1103, 0x116E, 0x11B8] },
+{ source: [0xB462], NFC: [0xB462], NFD: [0x1103, 0x116E, 0x11B9], NFKC: [0xB462], NFKD: [0x1103, 0x116E, 0x11B9] },
+{ source: [0xB463], NFC: [0xB463], NFD: [0x1103, 0x116E, 0x11BA], NFKC: [0xB463], NFKD: [0x1103, 0x116E, 0x11BA] },
+{ source: [0xB464], NFC: [0xB464], NFD: [0x1103, 0x116E, 0x11BB], NFKC: [0xB464], NFKD: [0x1103, 0x116E, 0x11BB] },
+{ source: [0xB465], NFC: [0xB465], NFD: [0x1103, 0x116E, 0x11BC], NFKC: [0xB465], NFKD: [0x1103, 0x116E, 0x11BC] },
+{ source: [0xB466], NFC: [0xB466], NFD: [0x1103, 0x116E, 0x11BD], NFKC: [0xB466], NFKD: [0x1103, 0x116E, 0x11BD] },
+{ source: [0xB467], NFC: [0xB467], NFD: [0x1103, 0x116E, 0x11BE], NFKC: [0xB467], NFKD: [0x1103, 0x116E, 0x11BE] },
+{ source: [0xB468], NFC: [0xB468], NFD: [0x1103, 0x116E, 0x11BF], NFKC: [0xB468], NFKD: [0x1103, 0x116E, 0x11BF] },
+{ source: [0xB469], NFC: [0xB469], NFD: [0x1103, 0x116E, 0x11C0], NFKC: [0xB469], NFKD: [0x1103, 0x116E, 0x11C0] },
+{ source: [0xB46A], NFC: [0xB46A], NFD: [0x1103, 0x116E, 0x11C1], NFKC: [0xB46A], NFKD: [0x1103, 0x116E, 0x11C1] },
+{ source: [0xB46B], NFC: [0xB46B], NFD: [0x1103, 0x116E, 0x11C2], NFKC: [0xB46B], NFKD: [0x1103, 0x116E, 0x11C2] },
+{ source: [0xB46C], NFC: [0xB46C], NFD: [0x1103, 0x116F], NFKC: [0xB46C], NFKD: [0x1103, 0x116F] },
+{ source: [0xB46D], NFC: [0xB46D], NFD: [0x1103, 0x116F, 0x11A8], NFKC: [0xB46D], NFKD: [0x1103, 0x116F, 0x11A8] },
+{ source: [0xB46E], NFC: [0xB46E], NFD: [0x1103, 0x116F, 0x11A9], NFKC: [0xB46E], NFKD: [0x1103, 0x116F, 0x11A9] },
+{ source: [0xB46F], NFC: [0xB46F], NFD: [0x1103, 0x116F, 0x11AA], NFKC: [0xB46F], NFKD: [0x1103, 0x116F, 0x11AA] },
+{ source: [0xB470], NFC: [0xB470], NFD: [0x1103, 0x116F, 0x11AB], NFKC: [0xB470], NFKD: [0x1103, 0x116F, 0x11AB] },
+{ source: [0xB471], NFC: [0xB471], NFD: [0x1103, 0x116F, 0x11AC], NFKC: [0xB471], NFKD: [0x1103, 0x116F, 0x11AC] },
+{ source: [0xB472], NFC: [0xB472], NFD: [0x1103, 0x116F, 0x11AD], NFKC: [0xB472], NFKD: [0x1103, 0x116F, 0x11AD] },
+{ source: [0xB473], NFC: [0xB473], NFD: [0x1103, 0x116F, 0x11AE], NFKC: [0xB473], NFKD: [0x1103, 0x116F, 0x11AE] },
+{ source: [0xB474], NFC: [0xB474], NFD: [0x1103, 0x116F, 0x11AF], NFKC: [0xB474], NFKD: [0x1103, 0x116F, 0x11AF] },
+{ source: [0xB475], NFC: [0xB475], NFD: [0x1103, 0x116F, 0x11B0], NFKC: [0xB475], NFKD: [0x1103, 0x116F, 0x11B0] },
+{ source: [0xB476], NFC: [0xB476], NFD: [0x1103, 0x116F, 0x11B1], NFKC: [0xB476], NFKD: [0x1103, 0x116F, 0x11B1] },
+{ source: [0xB477], NFC: [0xB477], NFD: [0x1103, 0x116F, 0x11B2], NFKC: [0xB477], NFKD: [0x1103, 0x116F, 0x11B2] },
+{ source: [0xB478], NFC: [0xB478], NFD: [0x1103, 0x116F, 0x11B3], NFKC: [0xB478], NFKD: [0x1103, 0x116F, 0x11B3] },
+{ source: [0xB479], NFC: [0xB479], NFD: [0x1103, 0x116F, 0x11B4], NFKC: [0xB479], NFKD: [0x1103, 0x116F, 0x11B4] },
+{ source: [0xB47A], NFC: [0xB47A], NFD: [0x1103, 0x116F, 0x11B5], NFKC: [0xB47A], NFKD: [0x1103, 0x116F, 0x11B5] },
+{ source: [0xB47B], NFC: [0xB47B], NFD: [0x1103, 0x116F, 0x11B6], NFKC: [0xB47B], NFKD: [0x1103, 0x116F, 0x11B6] },
+{ source: [0xB47C], NFC: [0xB47C], NFD: [0x1103, 0x116F, 0x11B7], NFKC: [0xB47C], NFKD: [0x1103, 0x116F, 0x11B7] },
+{ source: [0xB47D], NFC: [0xB47D], NFD: [0x1103, 0x116F, 0x11B8], NFKC: [0xB47D], NFKD: [0x1103, 0x116F, 0x11B8] },
+{ source: [0xB47E], NFC: [0xB47E], NFD: [0x1103, 0x116F, 0x11B9], NFKC: [0xB47E], NFKD: [0x1103, 0x116F, 0x11B9] },
+{ source: [0xB47F], NFC: [0xB47F], NFD: [0x1103, 0x116F, 0x11BA], NFKC: [0xB47F], NFKD: [0x1103, 0x116F, 0x11BA] },
+{ source: [0xB480], NFC: [0xB480], NFD: [0x1103, 0x116F, 0x11BB], NFKC: [0xB480], NFKD: [0x1103, 0x116F, 0x11BB] },
+{ source: [0xB481], NFC: [0xB481], NFD: [0x1103, 0x116F, 0x11BC], NFKC: [0xB481], NFKD: [0x1103, 0x116F, 0x11BC] },
+{ source: [0xB482], NFC: [0xB482], NFD: [0x1103, 0x116F, 0x11BD], NFKC: [0xB482], NFKD: [0x1103, 0x116F, 0x11BD] },
+{ source: [0xB483], NFC: [0xB483], NFD: [0x1103, 0x116F, 0x11BE], NFKC: [0xB483], NFKD: [0x1103, 0x116F, 0x11BE] },
+{ source: [0xB484], NFC: [0xB484], NFD: [0x1103, 0x116F, 0x11BF], NFKC: [0xB484], NFKD: [0x1103, 0x116F, 0x11BF] },
+{ source: [0xB485], NFC: [0xB485], NFD: [0x1103, 0x116F, 0x11C0], NFKC: [0xB485], NFKD: [0x1103, 0x116F, 0x11C0] },
+{ source: [0xB486], NFC: [0xB486], NFD: [0x1103, 0x116F, 0x11C1], NFKC: [0xB486], NFKD: [0x1103, 0x116F, 0x11C1] },
+{ source: [0xB487], NFC: [0xB487], NFD: [0x1103, 0x116F, 0x11C2], NFKC: [0xB487], NFKD: [0x1103, 0x116F, 0x11C2] },
+{ source: [0xB488], NFC: [0xB488], NFD: [0x1103, 0x1170], NFKC: [0xB488], NFKD: [0x1103, 0x1170] },
+{ source: [0xB489], NFC: [0xB489], NFD: [0x1103, 0x1170, 0x11A8], NFKC: [0xB489], NFKD: [0x1103, 0x1170, 0x11A8] },
+{ source: [0xB48A], NFC: [0xB48A], NFD: [0x1103, 0x1170, 0x11A9], NFKC: [0xB48A], NFKD: [0x1103, 0x1170, 0x11A9] },
+{ source: [0xB48B], NFC: [0xB48B], NFD: [0x1103, 0x1170, 0x11AA], NFKC: [0xB48B], NFKD: [0x1103, 0x1170, 0x11AA] },
+{ source: [0xB48C], NFC: [0xB48C], NFD: [0x1103, 0x1170, 0x11AB], NFKC: [0xB48C], NFKD: [0x1103, 0x1170, 0x11AB] },
+{ source: [0xB48D], NFC: [0xB48D], NFD: [0x1103, 0x1170, 0x11AC], NFKC: [0xB48D], NFKD: [0x1103, 0x1170, 0x11AC] },
+{ source: [0xB48E], NFC: [0xB48E], NFD: [0x1103, 0x1170, 0x11AD], NFKC: [0xB48E], NFKD: [0x1103, 0x1170, 0x11AD] },
+{ source: [0xB48F], NFC: [0xB48F], NFD: [0x1103, 0x1170, 0x11AE], NFKC: [0xB48F], NFKD: [0x1103, 0x1170, 0x11AE] },
+{ source: [0xB490], NFC: [0xB490], NFD: [0x1103, 0x1170, 0x11AF], NFKC: [0xB490], NFKD: [0x1103, 0x1170, 0x11AF] },
+{ source: [0xB491], NFC: [0xB491], NFD: [0x1103, 0x1170, 0x11B0], NFKC: [0xB491], NFKD: [0x1103, 0x1170, 0x11B0] },
+{ source: [0xB492], NFC: [0xB492], NFD: [0x1103, 0x1170, 0x11B1], NFKC: [0xB492], NFKD: [0x1103, 0x1170, 0x11B1] },
+{ source: [0xB493], NFC: [0xB493], NFD: [0x1103, 0x1170, 0x11B2], NFKC: [0xB493], NFKD: [0x1103, 0x1170, 0x11B2] },
+{ source: [0xB494], NFC: [0xB494], NFD: [0x1103, 0x1170, 0x11B3], NFKC: [0xB494], NFKD: [0x1103, 0x1170, 0x11B3] },
+{ source: [0xB495], NFC: [0xB495], NFD: [0x1103, 0x1170, 0x11B4], NFKC: [0xB495], NFKD: [0x1103, 0x1170, 0x11B4] },
+{ source: [0xB496], NFC: [0xB496], NFD: [0x1103, 0x1170, 0x11B5], NFKC: [0xB496], NFKD: [0x1103, 0x1170, 0x11B5] },
+{ source: [0xB497], NFC: [0xB497], NFD: [0x1103, 0x1170, 0x11B6], NFKC: [0xB497], NFKD: [0x1103, 0x1170, 0x11B6] },
+{ source: [0xB498], NFC: [0xB498], NFD: [0x1103, 0x1170, 0x11B7], NFKC: [0xB498], NFKD: [0x1103, 0x1170, 0x11B7] },
+{ source: [0xB499], NFC: [0xB499], NFD: [0x1103, 0x1170, 0x11B8], NFKC: [0xB499], NFKD: [0x1103, 0x1170, 0x11B8] },
+{ source: [0xB49A], NFC: [0xB49A], NFD: [0x1103, 0x1170, 0x11B9], NFKC: [0xB49A], NFKD: [0x1103, 0x1170, 0x11B9] },
+{ source: [0xB49B], NFC: [0xB49B], NFD: [0x1103, 0x1170, 0x11BA], NFKC: [0xB49B], NFKD: [0x1103, 0x1170, 0x11BA] },
+{ source: [0xB49C], NFC: [0xB49C], NFD: [0x1103, 0x1170, 0x11BB], NFKC: [0xB49C], NFKD: [0x1103, 0x1170, 0x11BB] },
+{ source: [0xB49D], NFC: [0xB49D], NFD: [0x1103, 0x1170, 0x11BC], NFKC: [0xB49D], NFKD: [0x1103, 0x1170, 0x11BC] },
+{ source: [0xB49E], NFC: [0xB49E], NFD: [0x1103, 0x1170, 0x11BD], NFKC: [0xB49E], NFKD: [0x1103, 0x1170, 0x11BD] },
+{ source: [0xB49F], NFC: [0xB49F], NFD: [0x1103, 0x1170, 0x11BE], NFKC: [0xB49F], NFKD: [0x1103, 0x1170, 0x11BE] },
+{ source: [0xB4A0], NFC: [0xB4A0], NFD: [0x1103, 0x1170, 0x11BF], NFKC: [0xB4A0], NFKD: [0x1103, 0x1170, 0x11BF] },
+{ source: [0xB4A1], NFC: [0xB4A1], NFD: [0x1103, 0x1170, 0x11C0], NFKC: [0xB4A1], NFKD: [0x1103, 0x1170, 0x11C0] },
+{ source: [0xB4A2], NFC: [0xB4A2], NFD: [0x1103, 0x1170, 0x11C1], NFKC: [0xB4A2], NFKD: [0x1103, 0x1170, 0x11C1] },
+{ source: [0xB4A3], NFC: [0xB4A3], NFD: [0x1103, 0x1170, 0x11C2], NFKC: [0xB4A3], NFKD: [0x1103, 0x1170, 0x11C2] },
+{ source: [0xB4A4], NFC: [0xB4A4], NFD: [0x1103, 0x1171], NFKC: [0xB4A4], NFKD: [0x1103, 0x1171] },
+{ source: [0xB4A5], NFC: [0xB4A5], NFD: [0x1103, 0x1171, 0x11A8], NFKC: [0xB4A5], NFKD: [0x1103, 0x1171, 0x11A8] },
+{ source: [0xB4A6], NFC: [0xB4A6], NFD: [0x1103, 0x1171, 0x11A9], NFKC: [0xB4A6], NFKD: [0x1103, 0x1171, 0x11A9] },
+{ source: [0xB4A7], NFC: [0xB4A7], NFD: [0x1103, 0x1171, 0x11AA], NFKC: [0xB4A7], NFKD: [0x1103, 0x1171, 0x11AA] },
+{ source: [0xB4A8], NFC: [0xB4A8], NFD: [0x1103, 0x1171, 0x11AB], NFKC: [0xB4A8], NFKD: [0x1103, 0x1171, 0x11AB] },
+{ source: [0xB4A9], NFC: [0xB4A9], NFD: [0x1103, 0x1171, 0x11AC], NFKC: [0xB4A9], NFKD: [0x1103, 0x1171, 0x11AC] },
+{ source: [0xB4AA], NFC: [0xB4AA], NFD: [0x1103, 0x1171, 0x11AD], NFKC: [0xB4AA], NFKD: [0x1103, 0x1171, 0x11AD] },
+{ source: [0xB4AB], NFC: [0xB4AB], NFD: [0x1103, 0x1171, 0x11AE], NFKC: [0xB4AB], NFKD: [0x1103, 0x1171, 0x11AE] },
+{ source: [0xB4AC], NFC: [0xB4AC], NFD: [0x1103, 0x1171, 0x11AF], NFKC: [0xB4AC], NFKD: [0x1103, 0x1171, 0x11AF] },
+{ source: [0xB4AD], NFC: [0xB4AD], NFD: [0x1103, 0x1171, 0x11B0], NFKC: [0xB4AD], NFKD: [0x1103, 0x1171, 0x11B0] },
+{ source: [0xB4AE], NFC: [0xB4AE], NFD: [0x1103, 0x1171, 0x11B1], NFKC: [0xB4AE], NFKD: [0x1103, 0x1171, 0x11B1] },
+{ source: [0xB4AF], NFC: [0xB4AF], NFD: [0x1103, 0x1171, 0x11B2], NFKC: [0xB4AF], NFKD: [0x1103, 0x1171, 0x11B2] },
+{ source: [0xB4B0], NFC: [0xB4B0], NFD: [0x1103, 0x1171, 0x11B3], NFKC: [0xB4B0], NFKD: [0x1103, 0x1171, 0x11B3] },
+{ source: [0xB4B1], NFC: [0xB4B1], NFD: [0x1103, 0x1171, 0x11B4], NFKC: [0xB4B1], NFKD: [0x1103, 0x1171, 0x11B4] },
+{ source: [0xB4B2], NFC: [0xB4B2], NFD: [0x1103, 0x1171, 0x11B5], NFKC: [0xB4B2], NFKD: [0x1103, 0x1171, 0x11B5] },
+{ source: [0xB4B3], NFC: [0xB4B3], NFD: [0x1103, 0x1171, 0x11B6], NFKC: [0xB4B3], NFKD: [0x1103, 0x1171, 0x11B6] },
+{ source: [0xB4B4], NFC: [0xB4B4], NFD: [0x1103, 0x1171, 0x11B7], NFKC: [0xB4B4], NFKD: [0x1103, 0x1171, 0x11B7] },
+{ source: [0xB4B5], NFC: [0xB4B5], NFD: [0x1103, 0x1171, 0x11B8], NFKC: [0xB4B5], NFKD: [0x1103, 0x1171, 0x11B8] },
+{ source: [0xB4B6], NFC: [0xB4B6], NFD: [0x1103, 0x1171, 0x11B9], NFKC: [0xB4B6], NFKD: [0x1103, 0x1171, 0x11B9] },
+{ source: [0xB4B7], NFC: [0xB4B7], NFD: [0x1103, 0x1171, 0x11BA], NFKC: [0xB4B7], NFKD: [0x1103, 0x1171, 0x11BA] },
+{ source: [0xB4B8], NFC: [0xB4B8], NFD: [0x1103, 0x1171, 0x11BB], NFKC: [0xB4B8], NFKD: [0x1103, 0x1171, 0x11BB] },
+{ source: [0xB4B9], NFC: [0xB4B9], NFD: [0x1103, 0x1171, 0x11BC], NFKC: [0xB4B9], NFKD: [0x1103, 0x1171, 0x11BC] },
+{ source: [0xB4BA], NFC: [0xB4BA], NFD: [0x1103, 0x1171, 0x11BD], NFKC: [0xB4BA], NFKD: [0x1103, 0x1171, 0x11BD] },
+{ source: [0xB4BB], NFC: [0xB4BB], NFD: [0x1103, 0x1171, 0x11BE], NFKC: [0xB4BB], NFKD: [0x1103, 0x1171, 0x11BE] },
+{ source: [0xB4BC], NFC: [0xB4BC], NFD: [0x1103, 0x1171, 0x11BF], NFKC: [0xB4BC], NFKD: [0x1103, 0x1171, 0x11BF] },
+{ source: [0xB4BD], NFC: [0xB4BD], NFD: [0x1103, 0x1171, 0x11C0], NFKC: [0xB4BD], NFKD: [0x1103, 0x1171, 0x11C0] },
+{ source: [0xB4BE], NFC: [0xB4BE], NFD: [0x1103, 0x1171, 0x11C1], NFKC: [0xB4BE], NFKD: [0x1103, 0x1171, 0x11C1] },
+{ source: [0xB4BF], NFC: [0xB4BF], NFD: [0x1103, 0x1171, 0x11C2], NFKC: [0xB4BF], NFKD: [0x1103, 0x1171, 0x11C2] },
+{ source: [0xB4C0], NFC: [0xB4C0], NFD: [0x1103, 0x1172], NFKC: [0xB4C0], NFKD: [0x1103, 0x1172] },
+{ source: [0xB4C1], NFC: [0xB4C1], NFD: [0x1103, 0x1172, 0x11A8], NFKC: [0xB4C1], NFKD: [0x1103, 0x1172, 0x11A8] },
+{ source: [0xB4C2], NFC: [0xB4C2], NFD: [0x1103, 0x1172, 0x11A9], NFKC: [0xB4C2], NFKD: [0x1103, 0x1172, 0x11A9] },
+{ source: [0xB4C3], NFC: [0xB4C3], NFD: [0x1103, 0x1172, 0x11AA], NFKC: [0xB4C3], NFKD: [0x1103, 0x1172, 0x11AA] },
+{ source: [0xB4C4], NFC: [0xB4C4], NFD: [0x1103, 0x1172, 0x11AB], NFKC: [0xB4C4], NFKD: [0x1103, 0x1172, 0x11AB] },
+{ source: [0xB4C5], NFC: [0xB4C5], NFD: [0x1103, 0x1172, 0x11AC], NFKC: [0xB4C5], NFKD: [0x1103, 0x1172, 0x11AC] },
+{ source: [0xB4C6], NFC: [0xB4C6], NFD: [0x1103, 0x1172, 0x11AD], NFKC: [0xB4C6], NFKD: [0x1103, 0x1172, 0x11AD] },
+{ source: [0xB4C7], NFC: [0xB4C7], NFD: [0x1103, 0x1172, 0x11AE], NFKC: [0xB4C7], NFKD: [0x1103, 0x1172, 0x11AE] },
+{ source: [0xB4C8], NFC: [0xB4C8], NFD: [0x1103, 0x1172, 0x11AF], NFKC: [0xB4C8], NFKD: [0x1103, 0x1172, 0x11AF] },
+{ source: [0xB4C9], NFC: [0xB4C9], NFD: [0x1103, 0x1172, 0x11B0], NFKC: [0xB4C9], NFKD: [0x1103, 0x1172, 0x11B0] },
+{ source: [0xB4CA], NFC: [0xB4CA], NFD: [0x1103, 0x1172, 0x11B1], NFKC: [0xB4CA], NFKD: [0x1103, 0x1172, 0x11B1] },
+{ source: [0xB4CB], NFC: [0xB4CB], NFD: [0x1103, 0x1172, 0x11B2], NFKC: [0xB4CB], NFKD: [0x1103, 0x1172, 0x11B2] },
+{ source: [0xB4CC], NFC: [0xB4CC], NFD: [0x1103, 0x1172, 0x11B3], NFKC: [0xB4CC], NFKD: [0x1103, 0x1172, 0x11B3] },
+{ source: [0xB4CD], NFC: [0xB4CD], NFD: [0x1103, 0x1172, 0x11B4], NFKC: [0xB4CD], NFKD: [0x1103, 0x1172, 0x11B4] },
+{ source: [0xB4CE], NFC: [0xB4CE], NFD: [0x1103, 0x1172, 0x11B5], NFKC: [0xB4CE], NFKD: [0x1103, 0x1172, 0x11B5] },
+{ source: [0xB4CF], NFC: [0xB4CF], NFD: [0x1103, 0x1172, 0x11B6], NFKC: [0xB4CF], NFKD: [0x1103, 0x1172, 0x11B6] },
+{ source: [0xB4D0], NFC: [0xB4D0], NFD: [0x1103, 0x1172, 0x11B7], NFKC: [0xB4D0], NFKD: [0x1103, 0x1172, 0x11B7] },
+{ source: [0xB4D1], NFC: [0xB4D1], NFD: [0x1103, 0x1172, 0x11B8], NFKC: [0xB4D1], NFKD: [0x1103, 0x1172, 0x11B8] },
+{ source: [0xB4D2], NFC: [0xB4D2], NFD: [0x1103, 0x1172, 0x11B9], NFKC: [0xB4D2], NFKD: [0x1103, 0x1172, 0x11B9] },
+{ source: [0xB4D3], NFC: [0xB4D3], NFD: [0x1103, 0x1172, 0x11BA], NFKC: [0xB4D3], NFKD: [0x1103, 0x1172, 0x11BA] },
+{ source: [0xB4D4], NFC: [0xB4D4], NFD: [0x1103, 0x1172, 0x11BB], NFKC: [0xB4D4], NFKD: [0x1103, 0x1172, 0x11BB] },
+{ source: [0xB4D5], NFC: [0xB4D5], NFD: [0x1103, 0x1172, 0x11BC], NFKC: [0xB4D5], NFKD: [0x1103, 0x1172, 0x11BC] },
+{ source: [0xB4D6], NFC: [0xB4D6], NFD: [0x1103, 0x1172, 0x11BD], NFKC: [0xB4D6], NFKD: [0x1103, 0x1172, 0x11BD] },
+{ source: [0xB4D7], NFC: [0xB4D7], NFD: [0x1103, 0x1172, 0x11BE], NFKC: [0xB4D7], NFKD: [0x1103, 0x1172, 0x11BE] },
+{ source: [0xB4D8], NFC: [0xB4D8], NFD: [0x1103, 0x1172, 0x11BF], NFKC: [0xB4D8], NFKD: [0x1103, 0x1172, 0x11BF] },
+{ source: [0xB4D9], NFC: [0xB4D9], NFD: [0x1103, 0x1172, 0x11C0], NFKC: [0xB4D9], NFKD: [0x1103, 0x1172, 0x11C0] },
+{ source: [0xB4DA], NFC: [0xB4DA], NFD: [0x1103, 0x1172, 0x11C1], NFKC: [0xB4DA], NFKD: [0x1103, 0x1172, 0x11C1] },
+{ source: [0xB4DB], NFC: [0xB4DB], NFD: [0x1103, 0x1172, 0x11C2], NFKC: [0xB4DB], NFKD: [0x1103, 0x1172, 0x11C2] },
+{ source: [0xB4DC], NFC: [0xB4DC], NFD: [0x1103, 0x1173], NFKC: [0xB4DC], NFKD: [0x1103, 0x1173] },
+{ source: [0xB4DD], NFC: [0xB4DD], NFD: [0x1103, 0x1173, 0x11A8], NFKC: [0xB4DD], NFKD: [0x1103, 0x1173, 0x11A8] },
+{ source: [0xB4DE], NFC: [0xB4DE], NFD: [0x1103, 0x1173, 0x11A9], NFKC: [0xB4DE], NFKD: [0x1103, 0x1173, 0x11A9] },
+{ source: [0xB4DF], NFC: [0xB4DF], NFD: [0x1103, 0x1173, 0x11AA], NFKC: [0xB4DF], NFKD: [0x1103, 0x1173, 0x11AA] },
+{ source: [0xB4E0], NFC: [0xB4E0], NFD: [0x1103, 0x1173, 0x11AB], NFKC: [0xB4E0], NFKD: [0x1103, 0x1173, 0x11AB] },
+{ source: [0xB4E1], NFC: [0xB4E1], NFD: [0x1103, 0x1173, 0x11AC], NFKC: [0xB4E1], NFKD: [0x1103, 0x1173, 0x11AC] },
+{ source: [0xB4E2], NFC: [0xB4E2], NFD: [0x1103, 0x1173, 0x11AD], NFKC: [0xB4E2], NFKD: [0x1103, 0x1173, 0x11AD] },
+{ source: [0xB4E3], NFC: [0xB4E3], NFD: [0x1103, 0x1173, 0x11AE], NFKC: [0xB4E3], NFKD: [0x1103, 0x1173, 0x11AE] },
+{ source: [0xB4E4], NFC: [0xB4E4], NFD: [0x1103, 0x1173, 0x11AF], NFKC: [0xB4E4], NFKD: [0x1103, 0x1173, 0x11AF] },
+{ source: [0xB4E5], NFC: [0xB4E5], NFD: [0x1103, 0x1173, 0x11B0], NFKC: [0xB4E5], NFKD: [0x1103, 0x1173, 0x11B0] },
+{ source: [0xB4E6], NFC: [0xB4E6], NFD: [0x1103, 0x1173, 0x11B1], NFKC: [0xB4E6], NFKD: [0x1103, 0x1173, 0x11B1] },
+{ source: [0xB4E7], NFC: [0xB4E7], NFD: [0x1103, 0x1173, 0x11B2], NFKC: [0xB4E7], NFKD: [0x1103, 0x1173, 0x11B2] },
+{ source: [0xB4E8], NFC: [0xB4E8], NFD: [0x1103, 0x1173, 0x11B3], NFKC: [0xB4E8], NFKD: [0x1103, 0x1173, 0x11B3] },
+{ source: [0xB4E9], NFC: [0xB4E9], NFD: [0x1103, 0x1173, 0x11B4], NFKC: [0xB4E9], NFKD: [0x1103, 0x1173, 0x11B4] },
+{ source: [0xB4EA], NFC: [0xB4EA], NFD: [0x1103, 0x1173, 0x11B5], NFKC: [0xB4EA], NFKD: [0x1103, 0x1173, 0x11B5] },
+{ source: [0xB4EB], NFC: [0xB4EB], NFD: [0x1103, 0x1173, 0x11B6], NFKC: [0xB4EB], NFKD: [0x1103, 0x1173, 0x11B6] },
+{ source: [0xB4EC], NFC: [0xB4EC], NFD: [0x1103, 0x1173, 0x11B7], NFKC: [0xB4EC], NFKD: [0x1103, 0x1173, 0x11B7] },
+{ source: [0xB4ED], NFC: [0xB4ED], NFD: [0x1103, 0x1173, 0x11B8], NFKC: [0xB4ED], NFKD: [0x1103, 0x1173, 0x11B8] },
+{ source: [0xB4EE], NFC: [0xB4EE], NFD: [0x1103, 0x1173, 0x11B9], NFKC: [0xB4EE], NFKD: [0x1103, 0x1173, 0x11B9] },
+{ source: [0xB4EF], NFC: [0xB4EF], NFD: [0x1103, 0x1173, 0x11BA], NFKC: [0xB4EF], NFKD: [0x1103, 0x1173, 0x11BA] },
+{ source: [0xB4F0], NFC: [0xB4F0], NFD: [0x1103, 0x1173, 0x11BB], NFKC: [0xB4F0], NFKD: [0x1103, 0x1173, 0x11BB] },
+{ source: [0xB4F1], NFC: [0xB4F1], NFD: [0x1103, 0x1173, 0x11BC], NFKC: [0xB4F1], NFKD: [0x1103, 0x1173, 0x11BC] },
+{ source: [0xB4F2], NFC: [0xB4F2], NFD: [0x1103, 0x1173, 0x11BD], NFKC: [0xB4F2], NFKD: [0x1103, 0x1173, 0x11BD] },
+{ source: [0xB4F3], NFC: [0xB4F3], NFD: [0x1103, 0x1173, 0x11BE], NFKC: [0xB4F3], NFKD: [0x1103, 0x1173, 0x11BE] },
+{ source: [0xB4F4], NFC: [0xB4F4], NFD: [0x1103, 0x1173, 0x11BF], NFKC: [0xB4F4], NFKD: [0x1103, 0x1173, 0x11BF] },
+{ source: [0xB4F5], NFC: [0xB4F5], NFD: [0x1103, 0x1173, 0x11C0], NFKC: [0xB4F5], NFKD: [0x1103, 0x1173, 0x11C0] },
+{ source: [0xB4F6], NFC: [0xB4F6], NFD: [0x1103, 0x1173, 0x11C1], NFKC: [0xB4F6], NFKD: [0x1103, 0x1173, 0x11C1] },
+{ source: [0xB4F7], NFC: [0xB4F7], NFD: [0x1103, 0x1173, 0x11C2], NFKC: [0xB4F7], NFKD: [0x1103, 0x1173, 0x11C2] },
+{ source: [0xB4F8], NFC: [0xB4F8], NFD: [0x1103, 0x1174], NFKC: [0xB4F8], NFKD: [0x1103, 0x1174] },
+{ source: [0xB4F9], NFC: [0xB4F9], NFD: [0x1103, 0x1174, 0x11A8], NFKC: [0xB4F9], NFKD: [0x1103, 0x1174, 0x11A8] },
+{ source: [0xB4FA], NFC: [0xB4FA], NFD: [0x1103, 0x1174, 0x11A9], NFKC: [0xB4FA], NFKD: [0x1103, 0x1174, 0x11A9] },
+{ source: [0xB4FB], NFC: [0xB4FB], NFD: [0x1103, 0x1174, 0x11AA], NFKC: [0xB4FB], NFKD: [0x1103, 0x1174, 0x11AA] },
+{ source: [0xB4FC], NFC: [0xB4FC], NFD: [0x1103, 0x1174, 0x11AB], NFKC: [0xB4FC], NFKD: [0x1103, 0x1174, 0x11AB] },
+{ source: [0xB4FD], NFC: [0xB4FD], NFD: [0x1103, 0x1174, 0x11AC], NFKC: [0xB4FD], NFKD: [0x1103, 0x1174, 0x11AC] },
+{ source: [0xB4FE], NFC: [0xB4FE], NFD: [0x1103, 0x1174, 0x11AD], NFKC: [0xB4FE], NFKD: [0x1103, 0x1174, 0x11AD] },
+{ source: [0xB4FF], NFC: [0xB4FF], NFD: [0x1103, 0x1174, 0x11AE], NFKC: [0xB4FF], NFKD: [0x1103, 0x1174, 0x11AE] },
+{ source: [0xB500], NFC: [0xB500], NFD: [0x1103, 0x1174, 0x11AF], NFKC: [0xB500], NFKD: [0x1103, 0x1174, 0x11AF] },
+{ source: [0xB501], NFC: [0xB501], NFD: [0x1103, 0x1174, 0x11B0], NFKC: [0xB501], NFKD: [0x1103, 0x1174, 0x11B0] },
+{ source: [0xB502], NFC: [0xB502], NFD: [0x1103, 0x1174, 0x11B1], NFKC: [0xB502], NFKD: [0x1103, 0x1174, 0x11B1] },
+{ source: [0xB503], NFC: [0xB503], NFD: [0x1103, 0x1174, 0x11B2], NFKC: [0xB503], NFKD: [0x1103, 0x1174, 0x11B2] },
+{ source: [0xB504], NFC: [0xB504], NFD: [0x1103, 0x1174, 0x11B3], NFKC: [0xB504], NFKD: [0x1103, 0x1174, 0x11B3] },
+{ source: [0xB505], NFC: [0xB505], NFD: [0x1103, 0x1174, 0x11B4], NFKC: [0xB505], NFKD: [0x1103, 0x1174, 0x11B4] },
+{ source: [0xB506], NFC: [0xB506], NFD: [0x1103, 0x1174, 0x11B5], NFKC: [0xB506], NFKD: [0x1103, 0x1174, 0x11B5] },
+{ source: [0xB507], NFC: [0xB507], NFD: [0x1103, 0x1174, 0x11B6], NFKC: [0xB507], NFKD: [0x1103, 0x1174, 0x11B6] },
+{ source: [0xB508], NFC: [0xB508], NFD: [0x1103, 0x1174, 0x11B7], NFKC: [0xB508], NFKD: [0x1103, 0x1174, 0x11B7] },
+{ source: [0xB509], NFC: [0xB509], NFD: [0x1103, 0x1174, 0x11B8], NFKC: [0xB509], NFKD: [0x1103, 0x1174, 0x11B8] },
+{ source: [0xB50A], NFC: [0xB50A], NFD: [0x1103, 0x1174, 0x11B9], NFKC: [0xB50A], NFKD: [0x1103, 0x1174, 0x11B9] },
+{ source: [0xB50B], NFC: [0xB50B], NFD: [0x1103, 0x1174, 0x11BA], NFKC: [0xB50B], NFKD: [0x1103, 0x1174, 0x11BA] },
+{ source: [0xB50C], NFC: [0xB50C], NFD: [0x1103, 0x1174, 0x11BB], NFKC: [0xB50C], NFKD: [0x1103, 0x1174, 0x11BB] },
+{ source: [0xB50D], NFC: [0xB50D], NFD: [0x1103, 0x1174, 0x11BC], NFKC: [0xB50D], NFKD: [0x1103, 0x1174, 0x11BC] },
+{ source: [0xB50E], NFC: [0xB50E], NFD: [0x1103, 0x1174, 0x11BD], NFKC: [0xB50E], NFKD: [0x1103, 0x1174, 0x11BD] },
+{ source: [0xB50F], NFC: [0xB50F], NFD: [0x1103, 0x1174, 0x11BE], NFKC: [0xB50F], NFKD: [0x1103, 0x1174, 0x11BE] },
+{ source: [0xB510], NFC: [0xB510], NFD: [0x1103, 0x1174, 0x11BF], NFKC: [0xB510], NFKD: [0x1103, 0x1174, 0x11BF] },
+{ source: [0xB511], NFC: [0xB511], NFD: [0x1103, 0x1174, 0x11C0], NFKC: [0xB511], NFKD: [0x1103, 0x1174, 0x11C0] },
+{ source: [0xB512], NFC: [0xB512], NFD: [0x1103, 0x1174, 0x11C1], NFKC: [0xB512], NFKD: [0x1103, 0x1174, 0x11C1] },
+{ source: [0xB513], NFC: [0xB513], NFD: [0x1103, 0x1174, 0x11C2], NFKC: [0xB513], NFKD: [0x1103, 0x1174, 0x11C2] },
+{ source: [0xB514], NFC: [0xB514], NFD: [0x1103, 0x1175], NFKC: [0xB514], NFKD: [0x1103, 0x1175] },
+{ source: [0xB515], NFC: [0xB515], NFD: [0x1103, 0x1175, 0x11A8], NFKC: [0xB515], NFKD: [0x1103, 0x1175, 0x11A8] },
+{ source: [0xB516], NFC: [0xB516], NFD: [0x1103, 0x1175, 0x11A9], NFKC: [0xB516], NFKD: [0x1103, 0x1175, 0x11A9] },
+{ source: [0xB517], NFC: [0xB517], NFD: [0x1103, 0x1175, 0x11AA], NFKC: [0xB517], NFKD: [0x1103, 0x1175, 0x11AA] },
+{ source: [0xB518], NFC: [0xB518], NFD: [0x1103, 0x1175, 0x11AB], NFKC: [0xB518], NFKD: [0x1103, 0x1175, 0x11AB] },
+{ source: [0xB519], NFC: [0xB519], NFD: [0x1103, 0x1175, 0x11AC], NFKC: [0xB519], NFKD: [0x1103, 0x1175, 0x11AC] },
+{ source: [0xB51A], NFC: [0xB51A], NFD: [0x1103, 0x1175, 0x11AD], NFKC: [0xB51A], NFKD: [0x1103, 0x1175, 0x11AD] },
+{ source: [0xB51B], NFC: [0xB51B], NFD: [0x1103, 0x1175, 0x11AE], NFKC: [0xB51B], NFKD: [0x1103, 0x1175, 0x11AE] },
+{ source: [0xB51C], NFC: [0xB51C], NFD: [0x1103, 0x1175, 0x11AF], NFKC: [0xB51C], NFKD: [0x1103, 0x1175, 0x11AF] },
+{ source: [0xB51D], NFC: [0xB51D], NFD: [0x1103, 0x1175, 0x11B0], NFKC: [0xB51D], NFKD: [0x1103, 0x1175, 0x11B0] },
+{ source: [0xB51E], NFC: [0xB51E], NFD: [0x1103, 0x1175, 0x11B1], NFKC: [0xB51E], NFKD: [0x1103, 0x1175, 0x11B1] },
+{ source: [0xB51F], NFC: [0xB51F], NFD: [0x1103, 0x1175, 0x11B2], NFKC: [0xB51F], NFKD: [0x1103, 0x1175, 0x11B2] },
+{ source: [0xB520], NFC: [0xB520], NFD: [0x1103, 0x1175, 0x11B3], NFKC: [0xB520], NFKD: [0x1103, 0x1175, 0x11B3] },
+{ source: [0xB521], NFC: [0xB521], NFD: [0x1103, 0x1175, 0x11B4], NFKC: [0xB521], NFKD: [0x1103, 0x1175, 0x11B4] },
+{ source: [0xB522], NFC: [0xB522], NFD: [0x1103, 0x1175, 0x11B5], NFKC: [0xB522], NFKD: [0x1103, 0x1175, 0x11B5] },
+{ source: [0xB523], NFC: [0xB523], NFD: [0x1103, 0x1175, 0x11B6], NFKC: [0xB523], NFKD: [0x1103, 0x1175, 0x11B6] },
+{ source: [0xB524], NFC: [0xB524], NFD: [0x1103, 0x1175, 0x11B7], NFKC: [0xB524], NFKD: [0x1103, 0x1175, 0x11B7] },
+{ source: [0xB525], NFC: [0xB525], NFD: [0x1103, 0x1175, 0x11B8], NFKC: [0xB525], NFKD: [0x1103, 0x1175, 0x11B8] },
+{ source: [0xB526], NFC: [0xB526], NFD: [0x1103, 0x1175, 0x11B9], NFKC: [0xB526], NFKD: [0x1103, 0x1175, 0x11B9] },
+{ source: [0xB527], NFC: [0xB527], NFD: [0x1103, 0x1175, 0x11BA], NFKC: [0xB527], NFKD: [0x1103, 0x1175, 0x11BA] },
+{ source: [0xB528], NFC: [0xB528], NFD: [0x1103, 0x1175, 0x11BB], NFKC: [0xB528], NFKD: [0x1103, 0x1175, 0x11BB] },
+{ source: [0xB529], NFC: [0xB529], NFD: [0x1103, 0x1175, 0x11BC], NFKC: [0xB529], NFKD: [0x1103, 0x1175, 0x11BC] },
+{ source: [0xB52A], NFC: [0xB52A], NFD: [0x1103, 0x1175, 0x11BD], NFKC: [0xB52A], NFKD: [0x1103, 0x1175, 0x11BD] },
+{ source: [0xB52B], NFC: [0xB52B], NFD: [0x1103, 0x1175, 0x11BE], NFKC: [0xB52B], NFKD: [0x1103, 0x1175, 0x11BE] },
+{ source: [0xB52C], NFC: [0xB52C], NFD: [0x1103, 0x1175, 0x11BF], NFKC: [0xB52C], NFKD: [0x1103, 0x1175, 0x11BF] },
+{ source: [0xB52D], NFC: [0xB52D], NFD: [0x1103, 0x1175, 0x11C0], NFKC: [0xB52D], NFKD: [0x1103, 0x1175, 0x11C0] },
+{ source: [0xB52E], NFC: [0xB52E], NFD: [0x1103, 0x1175, 0x11C1], NFKC: [0xB52E], NFKD: [0x1103, 0x1175, 0x11C1] },
+{ source: [0xB52F], NFC: [0xB52F], NFD: [0x1103, 0x1175, 0x11C2], NFKC: [0xB52F], NFKD: [0x1103, 0x1175, 0x11C2] },
+{ source: [0xB530], NFC: [0xB530], NFD: [0x1104, 0x1161], NFKC: [0xB530], NFKD: [0x1104, 0x1161] },
+{ source: [0xB531], NFC: [0xB531], NFD: [0x1104, 0x1161, 0x11A8], NFKC: [0xB531], NFKD: [0x1104, 0x1161, 0x11A8] },
+{ source: [0xB532], NFC: [0xB532], NFD: [0x1104, 0x1161, 0x11A9], NFKC: [0xB532], NFKD: [0x1104, 0x1161, 0x11A9] },
+{ source: [0xB533], NFC: [0xB533], NFD: [0x1104, 0x1161, 0x11AA], NFKC: [0xB533], NFKD: [0x1104, 0x1161, 0x11AA] },
+{ source: [0xB534], NFC: [0xB534], NFD: [0x1104, 0x1161, 0x11AB], NFKC: [0xB534], NFKD: [0x1104, 0x1161, 0x11AB] },
+{ source: [0xB535], NFC: [0xB535], NFD: [0x1104, 0x1161, 0x11AC], NFKC: [0xB535], NFKD: [0x1104, 0x1161, 0x11AC] },
+{ source: [0xB536], NFC: [0xB536], NFD: [0x1104, 0x1161, 0x11AD], NFKC: [0xB536], NFKD: [0x1104, 0x1161, 0x11AD] },
+{ source: [0xB537], NFC: [0xB537], NFD: [0x1104, 0x1161, 0x11AE], NFKC: [0xB537], NFKD: [0x1104, 0x1161, 0x11AE] },
+{ source: [0xB538], NFC: [0xB538], NFD: [0x1104, 0x1161, 0x11AF], NFKC: [0xB538], NFKD: [0x1104, 0x1161, 0x11AF] },
+{ source: [0xB539], NFC: [0xB539], NFD: [0x1104, 0x1161, 0x11B0], NFKC: [0xB539], NFKD: [0x1104, 0x1161, 0x11B0] },
+{ source: [0xB53A], NFC: [0xB53A], NFD: [0x1104, 0x1161, 0x11B1], NFKC: [0xB53A], NFKD: [0x1104, 0x1161, 0x11B1] },
+{ source: [0xB53B], NFC: [0xB53B], NFD: [0x1104, 0x1161, 0x11B2], NFKC: [0xB53B], NFKD: [0x1104, 0x1161, 0x11B2] },
+{ source: [0xB53C], NFC: [0xB53C], NFD: [0x1104, 0x1161, 0x11B3], NFKC: [0xB53C], NFKD: [0x1104, 0x1161, 0x11B3] },
+{ source: [0xB53D], NFC: [0xB53D], NFD: [0x1104, 0x1161, 0x11B4], NFKC: [0xB53D], NFKD: [0x1104, 0x1161, 0x11B4] },
+{ source: [0xB53E], NFC: [0xB53E], NFD: [0x1104, 0x1161, 0x11B5], NFKC: [0xB53E], NFKD: [0x1104, 0x1161, 0x11B5] },
+{ source: [0xB53F], NFC: [0xB53F], NFD: [0x1104, 0x1161, 0x11B6], NFKC: [0xB53F], NFKD: [0x1104, 0x1161, 0x11B6] },
+{ source: [0xB540], NFC: [0xB540], NFD: [0x1104, 0x1161, 0x11B7], NFKC: [0xB540], NFKD: [0x1104, 0x1161, 0x11B7] },
+{ source: [0xB541], NFC: [0xB541], NFD: [0x1104, 0x1161, 0x11B8], NFKC: [0xB541], NFKD: [0x1104, 0x1161, 0x11B8] },
+{ source: [0xB542], NFC: [0xB542], NFD: [0x1104, 0x1161, 0x11B9], NFKC: [0xB542], NFKD: [0x1104, 0x1161, 0x11B9] },
+{ source: [0xB543], NFC: [0xB543], NFD: [0x1104, 0x1161, 0x11BA], NFKC: [0xB543], NFKD: [0x1104, 0x1161, 0x11BA] },
+{ source: [0xB544], NFC: [0xB544], NFD: [0x1104, 0x1161, 0x11BB], NFKC: [0xB544], NFKD: [0x1104, 0x1161, 0x11BB] },
+{ source: [0xB545], NFC: [0xB545], NFD: [0x1104, 0x1161, 0x11BC], NFKC: [0xB545], NFKD: [0x1104, 0x1161, 0x11BC] },
+{ source: [0xB546], NFC: [0xB546], NFD: [0x1104, 0x1161, 0x11BD], NFKC: [0xB546], NFKD: [0x1104, 0x1161, 0x11BD] },
+{ source: [0xB547], NFC: [0xB547], NFD: [0x1104, 0x1161, 0x11BE], NFKC: [0xB547], NFKD: [0x1104, 0x1161, 0x11BE] },
+{ source: [0xB548], NFC: [0xB548], NFD: [0x1104, 0x1161, 0x11BF], NFKC: [0xB548], NFKD: [0x1104, 0x1161, 0x11BF] },
+{ source: [0xB549], NFC: [0xB549], NFD: [0x1104, 0x1161, 0x11C0], NFKC: [0xB549], NFKD: [0x1104, 0x1161, 0x11C0] },
+{ source: [0xB54A], NFC: [0xB54A], NFD: [0x1104, 0x1161, 0x11C1], NFKC: [0xB54A], NFKD: [0x1104, 0x1161, 0x11C1] },
+{ source: [0xB54B], NFC: [0xB54B], NFD: [0x1104, 0x1161, 0x11C2], NFKC: [0xB54B], NFKD: [0x1104, 0x1161, 0x11C2] },
+{ source: [0xB54C], NFC: [0xB54C], NFD: [0x1104, 0x1162], NFKC: [0xB54C], NFKD: [0x1104, 0x1162] },
+{ source: [0xB54D], NFC: [0xB54D], NFD: [0x1104, 0x1162, 0x11A8], NFKC: [0xB54D], NFKD: [0x1104, 0x1162, 0x11A8] },
+{ source: [0xB54E], NFC: [0xB54E], NFD: [0x1104, 0x1162, 0x11A9], NFKC: [0xB54E], NFKD: [0x1104, 0x1162, 0x11A9] },
+{ source: [0xB54F], NFC: [0xB54F], NFD: [0x1104, 0x1162, 0x11AA], NFKC: [0xB54F], NFKD: [0x1104, 0x1162, 0x11AA] },
+{ source: [0xB550], NFC: [0xB550], NFD: [0x1104, 0x1162, 0x11AB], NFKC: [0xB550], NFKD: [0x1104, 0x1162, 0x11AB] },
+{ source: [0xB551], NFC: [0xB551], NFD: [0x1104, 0x1162, 0x11AC], NFKC: [0xB551], NFKD: [0x1104, 0x1162, 0x11AC] },
+{ source: [0xB552], NFC: [0xB552], NFD: [0x1104, 0x1162, 0x11AD], NFKC: [0xB552], NFKD: [0x1104, 0x1162, 0x11AD] },
+{ source: [0xB553], NFC: [0xB553], NFD: [0x1104, 0x1162, 0x11AE], NFKC: [0xB553], NFKD: [0x1104, 0x1162, 0x11AE] },
+{ source: [0xB554], NFC: [0xB554], NFD: [0x1104, 0x1162, 0x11AF], NFKC: [0xB554], NFKD: [0x1104, 0x1162, 0x11AF] },
+{ source: [0xB555], NFC: [0xB555], NFD: [0x1104, 0x1162, 0x11B0], NFKC: [0xB555], NFKD: [0x1104, 0x1162, 0x11B0] },
+{ source: [0xB556], NFC: [0xB556], NFD: [0x1104, 0x1162, 0x11B1], NFKC: [0xB556], NFKD: [0x1104, 0x1162, 0x11B1] },
+{ source: [0xB557], NFC: [0xB557], NFD: [0x1104, 0x1162, 0x11B2], NFKC: [0xB557], NFKD: [0x1104, 0x1162, 0x11B2] },
+{ source: [0xB558], NFC: [0xB558], NFD: [0x1104, 0x1162, 0x11B3], NFKC: [0xB558], NFKD: [0x1104, 0x1162, 0x11B3] },
+{ source: [0xB559], NFC: [0xB559], NFD: [0x1104, 0x1162, 0x11B4], NFKC: [0xB559], NFKD: [0x1104, 0x1162, 0x11B4] },
+{ source: [0xB55A], NFC: [0xB55A], NFD: [0x1104, 0x1162, 0x11B5], NFKC: [0xB55A], NFKD: [0x1104, 0x1162, 0x11B5] },
+{ source: [0xB55B], NFC: [0xB55B], NFD: [0x1104, 0x1162, 0x11B6], NFKC: [0xB55B], NFKD: [0x1104, 0x1162, 0x11B6] },
+{ source: [0xB55C], NFC: [0xB55C], NFD: [0x1104, 0x1162, 0x11B7], NFKC: [0xB55C], NFKD: [0x1104, 0x1162, 0x11B7] },
+{ source: [0xB55D], NFC: [0xB55D], NFD: [0x1104, 0x1162, 0x11B8], NFKC: [0xB55D], NFKD: [0x1104, 0x1162, 0x11B8] },
+{ source: [0xB55E], NFC: [0xB55E], NFD: [0x1104, 0x1162, 0x11B9], NFKC: [0xB55E], NFKD: [0x1104, 0x1162, 0x11B9] },
+{ source: [0xB55F], NFC: [0xB55F], NFD: [0x1104, 0x1162, 0x11BA], NFKC: [0xB55F], NFKD: [0x1104, 0x1162, 0x11BA] },
+{ source: [0xB560], NFC: [0xB560], NFD: [0x1104, 0x1162, 0x11BB], NFKC: [0xB560], NFKD: [0x1104, 0x1162, 0x11BB] },
+{ source: [0xB561], NFC: [0xB561], NFD: [0x1104, 0x1162, 0x11BC], NFKC: [0xB561], NFKD: [0x1104, 0x1162, 0x11BC] },
+{ source: [0xB562], NFC: [0xB562], NFD: [0x1104, 0x1162, 0x11BD], NFKC: [0xB562], NFKD: [0x1104, 0x1162, 0x11BD] },
+{ source: [0xB563], NFC: [0xB563], NFD: [0x1104, 0x1162, 0x11BE], NFKC: [0xB563], NFKD: [0x1104, 0x1162, 0x11BE] },
+{ source: [0xB564], NFC: [0xB564], NFD: [0x1104, 0x1162, 0x11BF], NFKC: [0xB564], NFKD: [0x1104, 0x1162, 0x11BF] },
+{ source: [0xB565], NFC: [0xB565], NFD: [0x1104, 0x1162, 0x11C0], NFKC: [0xB565], NFKD: [0x1104, 0x1162, 0x11C0] },
+{ source: [0xB566], NFC: [0xB566], NFD: [0x1104, 0x1162, 0x11C1], NFKC: [0xB566], NFKD: [0x1104, 0x1162, 0x11C1] },
+{ source: [0xB567], NFC: [0xB567], NFD: [0x1104, 0x1162, 0x11C2], NFKC: [0xB567], NFKD: [0x1104, 0x1162, 0x11C2] },
+{ source: [0xB568], NFC: [0xB568], NFD: [0x1104, 0x1163], NFKC: [0xB568], NFKD: [0x1104, 0x1163] },
+{ source: [0xB569], NFC: [0xB569], NFD: [0x1104, 0x1163, 0x11A8], NFKC: [0xB569], NFKD: [0x1104, 0x1163, 0x11A8] },
+{ source: [0xB56A], NFC: [0xB56A], NFD: [0x1104, 0x1163, 0x11A9], NFKC: [0xB56A], NFKD: [0x1104, 0x1163, 0x11A9] },
+{ source: [0xB56B], NFC: [0xB56B], NFD: [0x1104, 0x1163, 0x11AA], NFKC: [0xB56B], NFKD: [0x1104, 0x1163, 0x11AA] },
+{ source: [0xB56C], NFC: [0xB56C], NFD: [0x1104, 0x1163, 0x11AB], NFKC: [0xB56C], NFKD: [0x1104, 0x1163, 0x11AB] },
+{ source: [0xB56D], NFC: [0xB56D], NFD: [0x1104, 0x1163, 0x11AC], NFKC: [0xB56D], NFKD: [0x1104, 0x1163, 0x11AC] },
+{ source: [0xB56E], NFC: [0xB56E], NFD: [0x1104, 0x1163, 0x11AD], NFKC: [0xB56E], NFKD: [0x1104, 0x1163, 0x11AD] },
+{ source: [0xB56F], NFC: [0xB56F], NFD: [0x1104, 0x1163, 0x11AE], NFKC: [0xB56F], NFKD: [0x1104, 0x1163, 0x11AE] },
+{ source: [0xB570], NFC: [0xB570], NFD: [0x1104, 0x1163, 0x11AF], NFKC: [0xB570], NFKD: [0x1104, 0x1163, 0x11AF] },
+{ source: [0xB571], NFC: [0xB571], NFD: [0x1104, 0x1163, 0x11B0], NFKC: [0xB571], NFKD: [0x1104, 0x1163, 0x11B0] },
+{ source: [0xB572], NFC: [0xB572], NFD: [0x1104, 0x1163, 0x11B1], NFKC: [0xB572], NFKD: [0x1104, 0x1163, 0x11B1] },
+{ source: [0xB573], NFC: [0xB573], NFD: [0x1104, 0x1163, 0x11B2], NFKC: [0xB573], NFKD: [0x1104, 0x1163, 0x11B2] },
+{ source: [0xB574], NFC: [0xB574], NFD: [0x1104, 0x1163, 0x11B3], NFKC: [0xB574], NFKD: [0x1104, 0x1163, 0x11B3] },
+{ source: [0xB575], NFC: [0xB575], NFD: [0x1104, 0x1163, 0x11B4], NFKC: [0xB575], NFKD: [0x1104, 0x1163, 0x11B4] },
+{ source: [0xB576], NFC: [0xB576], NFD: [0x1104, 0x1163, 0x11B5], NFKC: [0xB576], NFKD: [0x1104, 0x1163, 0x11B5] },
+{ source: [0xB577], NFC: [0xB577], NFD: [0x1104, 0x1163, 0x11B6], NFKC: [0xB577], NFKD: [0x1104, 0x1163, 0x11B6] },
+{ source: [0xB578], NFC: [0xB578], NFD: [0x1104, 0x1163, 0x11B7], NFKC: [0xB578], NFKD: [0x1104, 0x1163, 0x11B7] },
+{ source: [0xB579], NFC: [0xB579], NFD: [0x1104, 0x1163, 0x11B8], NFKC: [0xB579], NFKD: [0x1104, 0x1163, 0x11B8] },
+{ source: [0xB57A], NFC: [0xB57A], NFD: [0x1104, 0x1163, 0x11B9], NFKC: [0xB57A], NFKD: [0x1104, 0x1163, 0x11B9] },
+{ source: [0xB57B], NFC: [0xB57B], NFD: [0x1104, 0x1163, 0x11BA], NFKC: [0xB57B], NFKD: [0x1104, 0x1163, 0x11BA] },
+{ source: [0xB57C], NFC: [0xB57C], NFD: [0x1104, 0x1163, 0x11BB], NFKC: [0xB57C], NFKD: [0x1104, 0x1163, 0x11BB] },
+{ source: [0xB57D], NFC: [0xB57D], NFD: [0x1104, 0x1163, 0x11BC], NFKC: [0xB57D], NFKD: [0x1104, 0x1163, 0x11BC] },
+{ source: [0xB57E], NFC: [0xB57E], NFD: [0x1104, 0x1163, 0x11BD], NFKC: [0xB57E], NFKD: [0x1104, 0x1163, 0x11BD] },
+{ source: [0xB57F], NFC: [0xB57F], NFD: [0x1104, 0x1163, 0x11BE], NFKC: [0xB57F], NFKD: [0x1104, 0x1163, 0x11BE] },
+{ source: [0xB580], NFC: [0xB580], NFD: [0x1104, 0x1163, 0x11BF], NFKC: [0xB580], NFKD: [0x1104, 0x1163, 0x11BF] },
+{ source: [0xB581], NFC: [0xB581], NFD: [0x1104, 0x1163, 0x11C0], NFKC: [0xB581], NFKD: [0x1104, 0x1163, 0x11C0] },
+{ source: [0xB582], NFC: [0xB582], NFD: [0x1104, 0x1163, 0x11C1], NFKC: [0xB582], NFKD: [0x1104, 0x1163, 0x11C1] },
+{ source: [0xB583], NFC: [0xB583], NFD: [0x1104, 0x1163, 0x11C2], NFKC: [0xB583], NFKD: [0x1104, 0x1163, 0x11C2] },
+{ source: [0xB584], NFC: [0xB584], NFD: [0x1104, 0x1164], NFKC: [0xB584], NFKD: [0x1104, 0x1164] },
+{ source: [0xB585], NFC: [0xB585], NFD: [0x1104, 0x1164, 0x11A8], NFKC: [0xB585], NFKD: [0x1104, 0x1164, 0x11A8] },
+{ source: [0xB586], NFC: [0xB586], NFD: [0x1104, 0x1164, 0x11A9], NFKC: [0xB586], NFKD: [0x1104, 0x1164, 0x11A9] },
+{ source: [0xB587], NFC: [0xB587], NFD: [0x1104, 0x1164, 0x11AA], NFKC: [0xB587], NFKD: [0x1104, 0x1164, 0x11AA] },
+{ source: [0xB588], NFC: [0xB588], NFD: [0x1104, 0x1164, 0x11AB], NFKC: [0xB588], NFKD: [0x1104, 0x1164, 0x11AB] },
+{ source: [0xB589], NFC: [0xB589], NFD: [0x1104, 0x1164, 0x11AC], NFKC: [0xB589], NFKD: [0x1104, 0x1164, 0x11AC] },
+{ source: [0xB58A], NFC: [0xB58A], NFD: [0x1104, 0x1164, 0x11AD], NFKC: [0xB58A], NFKD: [0x1104, 0x1164, 0x11AD] },
+{ source: [0xB58B], NFC: [0xB58B], NFD: [0x1104, 0x1164, 0x11AE], NFKC: [0xB58B], NFKD: [0x1104, 0x1164, 0x11AE] },
+{ source: [0xB58C], NFC: [0xB58C], NFD: [0x1104, 0x1164, 0x11AF], NFKC: [0xB58C], NFKD: [0x1104, 0x1164, 0x11AF] },
+{ source: [0xB58D], NFC: [0xB58D], NFD: [0x1104, 0x1164, 0x11B0], NFKC: [0xB58D], NFKD: [0x1104, 0x1164, 0x11B0] },
+{ source: [0xB58E], NFC: [0xB58E], NFD: [0x1104, 0x1164, 0x11B1], NFKC: [0xB58E], NFKD: [0x1104, 0x1164, 0x11B1] },
+{ source: [0xB58F], NFC: [0xB58F], NFD: [0x1104, 0x1164, 0x11B2], NFKC: [0xB58F], NFKD: [0x1104, 0x1164, 0x11B2] },
+{ source: [0xB590], NFC: [0xB590], NFD: [0x1104, 0x1164, 0x11B3], NFKC: [0xB590], NFKD: [0x1104, 0x1164, 0x11B3] },
+{ source: [0xB591], NFC: [0xB591], NFD: [0x1104, 0x1164, 0x11B4], NFKC: [0xB591], NFKD: [0x1104, 0x1164, 0x11B4] },
+{ source: [0xB592], NFC: [0xB592], NFD: [0x1104, 0x1164, 0x11B5], NFKC: [0xB592], NFKD: [0x1104, 0x1164, 0x11B5] },
+{ source: [0xB593], NFC: [0xB593], NFD: [0x1104, 0x1164, 0x11B6], NFKC: [0xB593], NFKD: [0x1104, 0x1164, 0x11B6] },
+{ source: [0xB594], NFC: [0xB594], NFD: [0x1104, 0x1164, 0x11B7], NFKC: [0xB594], NFKD: [0x1104, 0x1164, 0x11B7] },
+{ source: [0xB595], NFC: [0xB595], NFD: [0x1104, 0x1164, 0x11B8], NFKC: [0xB595], NFKD: [0x1104, 0x1164, 0x11B8] },
+{ source: [0xB596], NFC: [0xB596], NFD: [0x1104, 0x1164, 0x11B9], NFKC: [0xB596], NFKD: [0x1104, 0x1164, 0x11B9] },
+{ source: [0xB597], NFC: [0xB597], NFD: [0x1104, 0x1164, 0x11BA], NFKC: [0xB597], NFKD: [0x1104, 0x1164, 0x11BA] },
+{ source: [0xB598], NFC: [0xB598], NFD: [0x1104, 0x1164, 0x11BB], NFKC: [0xB598], NFKD: [0x1104, 0x1164, 0x11BB] },
+{ source: [0xB599], NFC: [0xB599], NFD: [0x1104, 0x1164, 0x11BC], NFKC: [0xB599], NFKD: [0x1104, 0x1164, 0x11BC] },
+{ source: [0xB59A], NFC: [0xB59A], NFD: [0x1104, 0x1164, 0x11BD], NFKC: [0xB59A], NFKD: [0x1104, 0x1164, 0x11BD] },
+{ source: [0xB59B], NFC: [0xB59B], NFD: [0x1104, 0x1164, 0x11BE], NFKC: [0xB59B], NFKD: [0x1104, 0x1164, 0x11BE] },
+{ source: [0xB59C], NFC: [0xB59C], NFD: [0x1104, 0x1164, 0x11BF], NFKC: [0xB59C], NFKD: [0x1104, 0x1164, 0x11BF] },
+{ source: [0xB59D], NFC: [0xB59D], NFD: [0x1104, 0x1164, 0x11C0], NFKC: [0xB59D], NFKD: [0x1104, 0x1164, 0x11C0] },
+{ source: [0xB59E], NFC: [0xB59E], NFD: [0x1104, 0x1164, 0x11C1], NFKC: [0xB59E], NFKD: [0x1104, 0x1164, 0x11C1] },
+{ source: [0xB59F], NFC: [0xB59F], NFD: [0x1104, 0x1164, 0x11C2], NFKC: [0xB59F], NFKD: [0x1104, 0x1164, 0x11C2] },
+{ source: [0xB5A0], NFC: [0xB5A0], NFD: [0x1104, 0x1165], NFKC: [0xB5A0], NFKD: [0x1104, 0x1165] },
+{ source: [0xB5A1], NFC: [0xB5A1], NFD: [0x1104, 0x1165, 0x11A8], NFKC: [0xB5A1], NFKD: [0x1104, 0x1165, 0x11A8] },
+{ source: [0xB5A2], NFC: [0xB5A2], NFD: [0x1104, 0x1165, 0x11A9], NFKC: [0xB5A2], NFKD: [0x1104, 0x1165, 0x11A9] },
+{ source: [0xB5A3], NFC: [0xB5A3], NFD: [0x1104, 0x1165, 0x11AA], NFKC: [0xB5A3], NFKD: [0x1104, 0x1165, 0x11AA] },
+{ source: [0xB5A4], NFC: [0xB5A4], NFD: [0x1104, 0x1165, 0x11AB], NFKC: [0xB5A4], NFKD: [0x1104, 0x1165, 0x11AB] },
+{ source: [0xB5A5], NFC: [0xB5A5], NFD: [0x1104, 0x1165, 0x11AC], NFKC: [0xB5A5], NFKD: [0x1104, 0x1165, 0x11AC] },
+{ source: [0xB5A6], NFC: [0xB5A6], NFD: [0x1104, 0x1165, 0x11AD], NFKC: [0xB5A6], NFKD: [0x1104, 0x1165, 0x11AD] },
+{ source: [0xB5A7], NFC: [0xB5A7], NFD: [0x1104, 0x1165, 0x11AE], NFKC: [0xB5A7], NFKD: [0x1104, 0x1165, 0x11AE] },
+{ source: [0xB5A8], NFC: [0xB5A8], NFD: [0x1104, 0x1165, 0x11AF], NFKC: [0xB5A8], NFKD: [0x1104, 0x1165, 0x11AF] },
+{ source: [0xB5A9], NFC: [0xB5A9], NFD: [0x1104, 0x1165, 0x11B0], NFKC: [0xB5A9], NFKD: [0x1104, 0x1165, 0x11B0] },
+{ source: [0xB5AA], NFC: [0xB5AA], NFD: [0x1104, 0x1165, 0x11B1], NFKC: [0xB5AA], NFKD: [0x1104, 0x1165, 0x11B1] },
+{ source: [0xB5AB], NFC: [0xB5AB], NFD: [0x1104, 0x1165, 0x11B2], NFKC: [0xB5AB], NFKD: [0x1104, 0x1165, 0x11B2] },
+{ source: [0xB5AC], NFC: [0xB5AC], NFD: [0x1104, 0x1165, 0x11B3], NFKC: [0xB5AC], NFKD: [0x1104, 0x1165, 0x11B3] },
+{ source: [0xB5AD], NFC: [0xB5AD], NFD: [0x1104, 0x1165, 0x11B4], NFKC: [0xB5AD], NFKD: [0x1104, 0x1165, 0x11B4] },
+{ source: [0xB5AE], NFC: [0xB5AE], NFD: [0x1104, 0x1165, 0x11B5], NFKC: [0xB5AE], NFKD: [0x1104, 0x1165, 0x11B5] },
+{ source: [0xB5AF], NFC: [0xB5AF], NFD: [0x1104, 0x1165, 0x11B6], NFKC: [0xB5AF], NFKD: [0x1104, 0x1165, 0x11B6] },
+{ source: [0xB5B0], NFC: [0xB5B0], NFD: [0x1104, 0x1165, 0x11B7], NFKC: [0xB5B0], NFKD: [0x1104, 0x1165, 0x11B7] },
+{ source: [0xB5B1], NFC: [0xB5B1], NFD: [0x1104, 0x1165, 0x11B8], NFKC: [0xB5B1], NFKD: [0x1104, 0x1165, 0x11B8] },
+{ source: [0xB5B2], NFC: [0xB5B2], NFD: [0x1104, 0x1165, 0x11B9], NFKC: [0xB5B2], NFKD: [0x1104, 0x1165, 0x11B9] },
+{ source: [0xB5B3], NFC: [0xB5B3], NFD: [0x1104, 0x1165, 0x11BA], NFKC: [0xB5B3], NFKD: [0x1104, 0x1165, 0x11BA] },
+{ source: [0xB5B4], NFC: [0xB5B4], NFD: [0x1104, 0x1165, 0x11BB], NFKC: [0xB5B4], NFKD: [0x1104, 0x1165, 0x11BB] },
+{ source: [0xB5B5], NFC: [0xB5B5], NFD: [0x1104, 0x1165, 0x11BC], NFKC: [0xB5B5], NFKD: [0x1104, 0x1165, 0x11BC] },
+{ source: [0xB5B6], NFC: [0xB5B6], NFD: [0x1104, 0x1165, 0x11BD], NFKC: [0xB5B6], NFKD: [0x1104, 0x1165, 0x11BD] },
+{ source: [0xB5B7], NFC: [0xB5B7], NFD: [0x1104, 0x1165, 0x11BE], NFKC: [0xB5B7], NFKD: [0x1104, 0x1165, 0x11BE] },
+{ source: [0xB5B8], NFC: [0xB5B8], NFD: [0x1104, 0x1165, 0x11BF], NFKC: [0xB5B8], NFKD: [0x1104, 0x1165, 0x11BF] },
+{ source: [0xB5B9], NFC: [0xB5B9], NFD: [0x1104, 0x1165, 0x11C0], NFKC: [0xB5B9], NFKD: [0x1104, 0x1165, 0x11C0] },
+{ source: [0xB5BA], NFC: [0xB5BA], NFD: [0x1104, 0x1165, 0x11C1], NFKC: [0xB5BA], NFKD: [0x1104, 0x1165, 0x11C1] },
+{ source: [0xB5BB], NFC: [0xB5BB], NFD: [0x1104, 0x1165, 0x11C2], NFKC: [0xB5BB], NFKD: [0x1104, 0x1165, 0x11C2] },
+{ source: [0xB5BC], NFC: [0xB5BC], NFD: [0x1104, 0x1166], NFKC: [0xB5BC], NFKD: [0x1104, 0x1166] },
+{ source: [0xB5BD], NFC: [0xB5BD], NFD: [0x1104, 0x1166, 0x11A8], NFKC: [0xB5BD], NFKD: [0x1104, 0x1166, 0x11A8] },
+{ source: [0xB5BE], NFC: [0xB5BE], NFD: [0x1104, 0x1166, 0x11A9], NFKC: [0xB5BE], NFKD: [0x1104, 0x1166, 0x11A9] },
+{ source: [0xB5BF], NFC: [0xB5BF], NFD: [0x1104, 0x1166, 0x11AA], NFKC: [0xB5BF], NFKD: [0x1104, 0x1166, 0x11AA] },
+{ source: [0xB5C0], NFC: [0xB5C0], NFD: [0x1104, 0x1166, 0x11AB], NFKC: [0xB5C0], NFKD: [0x1104, 0x1166, 0x11AB] },
+{ source: [0xB5C1], NFC: [0xB5C1], NFD: [0x1104, 0x1166, 0x11AC], NFKC: [0xB5C1], NFKD: [0x1104, 0x1166, 0x11AC] },
+{ source: [0xB5C2], NFC: [0xB5C2], NFD: [0x1104, 0x1166, 0x11AD], NFKC: [0xB5C2], NFKD: [0x1104, 0x1166, 0x11AD] },
+{ source: [0xB5C3], NFC: [0xB5C3], NFD: [0x1104, 0x1166, 0x11AE], NFKC: [0xB5C3], NFKD: [0x1104, 0x1166, 0x11AE] },
+{ source: [0xB5C4], NFC: [0xB5C4], NFD: [0x1104, 0x1166, 0x11AF], NFKC: [0xB5C4], NFKD: [0x1104, 0x1166, 0x11AF] },
+{ source: [0xB5C5], NFC: [0xB5C5], NFD: [0x1104, 0x1166, 0x11B0], NFKC: [0xB5C5], NFKD: [0x1104, 0x1166, 0x11B0] },
+{ source: [0xB5C6], NFC: [0xB5C6], NFD: [0x1104, 0x1166, 0x11B1], NFKC: [0xB5C6], NFKD: [0x1104, 0x1166, 0x11B1] },
+{ source: [0xB5C7], NFC: [0xB5C7], NFD: [0x1104, 0x1166, 0x11B2], NFKC: [0xB5C7], NFKD: [0x1104, 0x1166, 0x11B2] },
+{ source: [0xB5C8], NFC: [0xB5C8], NFD: [0x1104, 0x1166, 0x11B3], NFKC: [0xB5C8], NFKD: [0x1104, 0x1166, 0x11B3] },
+{ source: [0xB5C9], NFC: [0xB5C9], NFD: [0x1104, 0x1166, 0x11B4], NFKC: [0xB5C9], NFKD: [0x1104, 0x1166, 0x11B4] },
+{ source: [0xB5CA], NFC: [0xB5CA], NFD: [0x1104, 0x1166, 0x11B5], NFKC: [0xB5CA], NFKD: [0x1104, 0x1166, 0x11B5] },
+{ source: [0xB5CB], NFC: [0xB5CB], NFD: [0x1104, 0x1166, 0x11B6], NFKC: [0xB5CB], NFKD: [0x1104, 0x1166, 0x11B6] },
+{ source: [0xB5CC], NFC: [0xB5CC], NFD: [0x1104, 0x1166, 0x11B7], NFKC: [0xB5CC], NFKD: [0x1104, 0x1166, 0x11B7] },
+{ source: [0xB5CD], NFC: [0xB5CD], NFD: [0x1104, 0x1166, 0x11B8], NFKC: [0xB5CD], NFKD: [0x1104, 0x1166, 0x11B8] },
+{ source: [0xB5CE], NFC: [0xB5CE], NFD: [0x1104, 0x1166, 0x11B9], NFKC: [0xB5CE], NFKD: [0x1104, 0x1166, 0x11B9] },
+{ source: [0xB5CF], NFC: [0xB5CF], NFD: [0x1104, 0x1166, 0x11BA], NFKC: [0xB5CF], NFKD: [0x1104, 0x1166, 0x11BA] },
+{ source: [0xB5D0], NFC: [0xB5D0], NFD: [0x1104, 0x1166, 0x11BB], NFKC: [0xB5D0], NFKD: [0x1104, 0x1166, 0x11BB] },
+{ source: [0xB5D1], NFC: [0xB5D1], NFD: [0x1104, 0x1166, 0x11BC], NFKC: [0xB5D1], NFKD: [0x1104, 0x1166, 0x11BC] },
+{ source: [0xB5D2], NFC: [0xB5D2], NFD: [0x1104, 0x1166, 0x11BD], NFKC: [0xB5D2], NFKD: [0x1104, 0x1166, 0x11BD] },
+{ source: [0xB5D3], NFC: [0xB5D3], NFD: [0x1104, 0x1166, 0x11BE], NFKC: [0xB5D3], NFKD: [0x1104, 0x1166, 0x11BE] },
+{ source: [0xB5D4], NFC: [0xB5D4], NFD: [0x1104, 0x1166, 0x11BF], NFKC: [0xB5D4], NFKD: [0x1104, 0x1166, 0x11BF] },
+{ source: [0xB5D5], NFC: [0xB5D5], NFD: [0x1104, 0x1166, 0x11C0], NFKC: [0xB5D5], NFKD: [0x1104, 0x1166, 0x11C0] },
+{ source: [0xB5D6], NFC: [0xB5D6], NFD: [0x1104, 0x1166, 0x11C1], NFKC: [0xB5D6], NFKD: [0x1104, 0x1166, 0x11C1] },
+{ source: [0xB5D7], NFC: [0xB5D7], NFD: [0x1104, 0x1166, 0x11C2], NFKC: [0xB5D7], NFKD: [0x1104, 0x1166, 0x11C2] },
+{ source: [0xB5D8], NFC: [0xB5D8], NFD: [0x1104, 0x1167], NFKC: [0xB5D8], NFKD: [0x1104, 0x1167] },
+{ source: [0xB5D9], NFC: [0xB5D9], NFD: [0x1104, 0x1167, 0x11A8], NFKC: [0xB5D9], NFKD: [0x1104, 0x1167, 0x11A8] },
+{ source: [0xB5DA], NFC: [0xB5DA], NFD: [0x1104, 0x1167, 0x11A9], NFKC: [0xB5DA], NFKD: [0x1104, 0x1167, 0x11A9] },
+{ source: [0xB5DB], NFC: [0xB5DB], NFD: [0x1104, 0x1167, 0x11AA], NFKC: [0xB5DB], NFKD: [0x1104, 0x1167, 0x11AA] },
+{ source: [0xB5DC], NFC: [0xB5DC], NFD: [0x1104, 0x1167, 0x11AB], NFKC: [0xB5DC], NFKD: [0x1104, 0x1167, 0x11AB] },
+{ source: [0xB5DD], NFC: [0xB5DD], NFD: [0x1104, 0x1167, 0x11AC], NFKC: [0xB5DD], NFKD: [0x1104, 0x1167, 0x11AC] },
+{ source: [0xB5DE], NFC: [0xB5DE], NFD: [0x1104, 0x1167, 0x11AD], NFKC: [0xB5DE], NFKD: [0x1104, 0x1167, 0x11AD] },
+{ source: [0xB5DF], NFC: [0xB5DF], NFD: [0x1104, 0x1167, 0x11AE], NFKC: [0xB5DF], NFKD: [0x1104, 0x1167, 0x11AE] },
+{ source: [0xB5E0], NFC: [0xB5E0], NFD: [0x1104, 0x1167, 0x11AF], NFKC: [0xB5E0], NFKD: [0x1104, 0x1167, 0x11AF] },
+{ source: [0xB5E1], NFC: [0xB5E1], NFD: [0x1104, 0x1167, 0x11B0], NFKC: [0xB5E1], NFKD: [0x1104, 0x1167, 0x11B0] },
+{ source: [0xB5E2], NFC: [0xB5E2], NFD: [0x1104, 0x1167, 0x11B1], NFKC: [0xB5E2], NFKD: [0x1104, 0x1167, 0x11B1] },
+{ source: [0xB5E3], NFC: [0xB5E3], NFD: [0x1104, 0x1167, 0x11B2], NFKC: [0xB5E3], NFKD: [0x1104, 0x1167, 0x11B2] },
+{ source: [0xB5E4], NFC: [0xB5E4], NFD: [0x1104, 0x1167, 0x11B3], NFKC: [0xB5E4], NFKD: [0x1104, 0x1167, 0x11B3] },
+{ source: [0xB5E5], NFC: [0xB5E5], NFD: [0x1104, 0x1167, 0x11B4], NFKC: [0xB5E5], NFKD: [0x1104, 0x1167, 0x11B4] },
+{ source: [0xB5E6], NFC: [0xB5E6], NFD: [0x1104, 0x1167, 0x11B5], NFKC: [0xB5E6], NFKD: [0x1104, 0x1167, 0x11B5] },
+{ source: [0xB5E7], NFC: [0xB5E7], NFD: [0x1104, 0x1167, 0x11B6], NFKC: [0xB5E7], NFKD: [0x1104, 0x1167, 0x11B6] },
+{ source: [0xB5E8], NFC: [0xB5E8], NFD: [0x1104, 0x1167, 0x11B7], NFKC: [0xB5E8], NFKD: [0x1104, 0x1167, 0x11B7] },
+{ source: [0xB5E9], NFC: [0xB5E9], NFD: [0x1104, 0x1167, 0x11B8], NFKC: [0xB5E9], NFKD: [0x1104, 0x1167, 0x11B8] },
+{ source: [0xB5EA], NFC: [0xB5EA], NFD: [0x1104, 0x1167, 0x11B9], NFKC: [0xB5EA], NFKD: [0x1104, 0x1167, 0x11B9] },
+{ source: [0xB5EB], NFC: [0xB5EB], NFD: [0x1104, 0x1167, 0x11BA], NFKC: [0xB5EB], NFKD: [0x1104, 0x1167, 0x11BA] },
+{ source: [0xB5EC], NFC: [0xB5EC], NFD: [0x1104, 0x1167, 0x11BB], NFKC: [0xB5EC], NFKD: [0x1104, 0x1167, 0x11BB] },
+{ source: [0xB5ED], NFC: [0xB5ED], NFD: [0x1104, 0x1167, 0x11BC], NFKC: [0xB5ED], NFKD: [0x1104, 0x1167, 0x11BC] },
+{ source: [0xB5EE], NFC: [0xB5EE], NFD: [0x1104, 0x1167, 0x11BD], NFKC: [0xB5EE], NFKD: [0x1104, 0x1167, 0x11BD] },
+{ source: [0xB5EF], NFC: [0xB5EF], NFD: [0x1104, 0x1167, 0x11BE], NFKC: [0xB5EF], NFKD: [0x1104, 0x1167, 0x11BE] },
+{ source: [0xB5F0], NFC: [0xB5F0], NFD: [0x1104, 0x1167, 0x11BF], NFKC: [0xB5F0], NFKD: [0x1104, 0x1167, 0x11BF] },
+{ source: [0xB5F1], NFC: [0xB5F1], NFD: [0x1104, 0x1167, 0x11C0], NFKC: [0xB5F1], NFKD: [0x1104, 0x1167, 0x11C0] },
+{ source: [0xB5F2], NFC: [0xB5F2], NFD: [0x1104, 0x1167, 0x11C1], NFKC: [0xB5F2], NFKD: [0x1104, 0x1167, 0x11C1] },
+{ source: [0xB5F3], NFC: [0xB5F3], NFD: [0x1104, 0x1167, 0x11C2], NFKC: [0xB5F3], NFKD: [0x1104, 0x1167, 0x11C2] },
+{ source: [0xB5F4], NFC: [0xB5F4], NFD: [0x1104, 0x1168], NFKC: [0xB5F4], NFKD: [0x1104, 0x1168] },
+{ source: [0xB5F5], NFC: [0xB5F5], NFD: [0x1104, 0x1168, 0x11A8], NFKC: [0xB5F5], NFKD: [0x1104, 0x1168, 0x11A8] },
+{ source: [0xB5F6], NFC: [0xB5F6], NFD: [0x1104, 0x1168, 0x11A9], NFKC: [0xB5F6], NFKD: [0x1104, 0x1168, 0x11A9] },
+{ source: [0xB5F7], NFC: [0xB5F7], NFD: [0x1104, 0x1168, 0x11AA], NFKC: [0xB5F7], NFKD: [0x1104, 0x1168, 0x11AA] },
+{ source: [0xB5F8], NFC: [0xB5F8], NFD: [0x1104, 0x1168, 0x11AB], NFKC: [0xB5F8], NFKD: [0x1104, 0x1168, 0x11AB] },
+{ source: [0xB5F9], NFC: [0xB5F9], NFD: [0x1104, 0x1168, 0x11AC], NFKC: [0xB5F9], NFKD: [0x1104, 0x1168, 0x11AC] },
+{ source: [0xB5FA], NFC: [0xB5FA], NFD: [0x1104, 0x1168, 0x11AD], NFKC: [0xB5FA], NFKD: [0x1104, 0x1168, 0x11AD] },
+{ source: [0xB5FB], NFC: [0xB5FB], NFD: [0x1104, 0x1168, 0x11AE], NFKC: [0xB5FB], NFKD: [0x1104, 0x1168, 0x11AE] },
+{ source: [0xB5FC], NFC: [0xB5FC], NFD: [0x1104, 0x1168, 0x11AF], NFKC: [0xB5FC], NFKD: [0x1104, 0x1168, 0x11AF] },
+{ source: [0xB5FD], NFC: [0xB5FD], NFD: [0x1104, 0x1168, 0x11B0], NFKC: [0xB5FD], NFKD: [0x1104, 0x1168, 0x11B0] },
+{ source: [0xB5FE], NFC: [0xB5FE], NFD: [0x1104, 0x1168, 0x11B1], NFKC: [0xB5FE], NFKD: [0x1104, 0x1168, 0x11B1] },
+{ source: [0xB5FF], NFC: [0xB5FF], NFD: [0x1104, 0x1168, 0x11B2], NFKC: [0xB5FF], NFKD: [0x1104, 0x1168, 0x11B2] },
+{ source: [0xB600], NFC: [0xB600], NFD: [0x1104, 0x1168, 0x11B3], NFKC: [0xB600], NFKD: [0x1104, 0x1168, 0x11B3] },
+{ source: [0xB601], NFC: [0xB601], NFD: [0x1104, 0x1168, 0x11B4], NFKC: [0xB601], NFKD: [0x1104, 0x1168, 0x11B4] },
+{ source: [0xB602], NFC: [0xB602], NFD: [0x1104, 0x1168, 0x11B5], NFKC: [0xB602], NFKD: [0x1104, 0x1168, 0x11B5] },
+{ source: [0xB603], NFC: [0xB603], NFD: [0x1104, 0x1168, 0x11B6], NFKC: [0xB603], NFKD: [0x1104, 0x1168, 0x11B6] },
+{ source: [0xB604], NFC: [0xB604], NFD: [0x1104, 0x1168, 0x11B7], NFKC: [0xB604], NFKD: [0x1104, 0x1168, 0x11B7] },
+{ source: [0xB605], NFC: [0xB605], NFD: [0x1104, 0x1168, 0x11B8], NFKC: [0xB605], NFKD: [0x1104, 0x1168, 0x11B8] },
+{ source: [0xB606], NFC: [0xB606], NFD: [0x1104, 0x1168, 0x11B9], NFKC: [0xB606], NFKD: [0x1104, 0x1168, 0x11B9] },
+{ source: [0xB607], NFC: [0xB607], NFD: [0x1104, 0x1168, 0x11BA], NFKC: [0xB607], NFKD: [0x1104, 0x1168, 0x11BA] },
+{ source: [0xB608], NFC: [0xB608], NFD: [0x1104, 0x1168, 0x11BB], NFKC: [0xB608], NFKD: [0x1104, 0x1168, 0x11BB] },
+{ source: [0xB609], NFC: [0xB609], NFD: [0x1104, 0x1168, 0x11BC], NFKC: [0xB609], NFKD: [0x1104, 0x1168, 0x11BC] },
+{ source: [0xB60A], NFC: [0xB60A], NFD: [0x1104, 0x1168, 0x11BD], NFKC: [0xB60A], NFKD: [0x1104, 0x1168, 0x11BD] },
+{ source: [0xB60B], NFC: [0xB60B], NFD: [0x1104, 0x1168, 0x11BE], NFKC: [0xB60B], NFKD: [0x1104, 0x1168, 0x11BE] },
+{ source: [0xB60C], NFC: [0xB60C], NFD: [0x1104, 0x1168, 0x11BF], NFKC: [0xB60C], NFKD: [0x1104, 0x1168, 0x11BF] },
+{ source: [0xB60D], NFC: [0xB60D], NFD: [0x1104, 0x1168, 0x11C0], NFKC: [0xB60D], NFKD: [0x1104, 0x1168, 0x11C0] },
+{ source: [0xB60E], NFC: [0xB60E], NFD: [0x1104, 0x1168, 0x11C1], NFKC: [0xB60E], NFKD: [0x1104, 0x1168, 0x11C1] },
+{ source: [0xB60F], NFC: [0xB60F], NFD: [0x1104, 0x1168, 0x11C2], NFKC: [0xB60F], NFKD: [0x1104, 0x1168, 0x11C2] },
+{ source: [0xB610], NFC: [0xB610], NFD: [0x1104, 0x1169], NFKC: [0xB610], NFKD: [0x1104, 0x1169] },
+{ source: [0xB611], NFC: [0xB611], NFD: [0x1104, 0x1169, 0x11A8], NFKC: [0xB611], NFKD: [0x1104, 0x1169, 0x11A8] },
+{ source: [0xB612], NFC: [0xB612], NFD: [0x1104, 0x1169, 0x11A9], NFKC: [0xB612], NFKD: [0x1104, 0x1169, 0x11A9] },
+{ source: [0xB613], NFC: [0xB613], NFD: [0x1104, 0x1169, 0x11AA], NFKC: [0xB613], NFKD: [0x1104, 0x1169, 0x11AA] },
+{ source: [0xB614], NFC: [0xB614], NFD: [0x1104, 0x1169, 0x11AB], NFKC: [0xB614], NFKD: [0x1104, 0x1169, 0x11AB] },
+{ source: [0xB615], NFC: [0xB615], NFD: [0x1104, 0x1169, 0x11AC], NFKC: [0xB615], NFKD: [0x1104, 0x1169, 0x11AC] },
+{ source: [0xB616], NFC: [0xB616], NFD: [0x1104, 0x1169, 0x11AD], NFKC: [0xB616], NFKD: [0x1104, 0x1169, 0x11AD] },
+{ source: [0xB617], NFC: [0xB617], NFD: [0x1104, 0x1169, 0x11AE], NFKC: [0xB617], NFKD: [0x1104, 0x1169, 0x11AE] },
+{ source: [0xB618], NFC: [0xB618], NFD: [0x1104, 0x1169, 0x11AF], NFKC: [0xB618], NFKD: [0x1104, 0x1169, 0x11AF] },
+{ source: [0xB619], NFC: [0xB619], NFD: [0x1104, 0x1169, 0x11B0], NFKC: [0xB619], NFKD: [0x1104, 0x1169, 0x11B0] },
+{ source: [0xB61A], NFC: [0xB61A], NFD: [0x1104, 0x1169, 0x11B1], NFKC: [0xB61A], NFKD: [0x1104, 0x1169, 0x11B1] },
+{ source: [0xB61B], NFC: [0xB61B], NFD: [0x1104, 0x1169, 0x11B2], NFKC: [0xB61B], NFKD: [0x1104, 0x1169, 0x11B2] },
+{ source: [0xB61C], NFC: [0xB61C], NFD: [0x1104, 0x1169, 0x11B3], NFKC: [0xB61C], NFKD: [0x1104, 0x1169, 0x11B3] },
+{ source: [0xB61D], NFC: [0xB61D], NFD: [0x1104, 0x1169, 0x11B4], NFKC: [0xB61D], NFKD: [0x1104, 0x1169, 0x11B4] },
+{ source: [0xB61E], NFC: [0xB61E], NFD: [0x1104, 0x1169, 0x11B5], NFKC: [0xB61E], NFKD: [0x1104, 0x1169, 0x11B5] },
+{ source: [0xB61F], NFC: [0xB61F], NFD: [0x1104, 0x1169, 0x11B6], NFKC: [0xB61F], NFKD: [0x1104, 0x1169, 0x11B6] },
+{ source: [0xB620], NFC: [0xB620], NFD: [0x1104, 0x1169, 0x11B7], NFKC: [0xB620], NFKD: [0x1104, 0x1169, 0x11B7] },
+{ source: [0xB621], NFC: [0xB621], NFD: [0x1104, 0x1169, 0x11B8], NFKC: [0xB621], NFKD: [0x1104, 0x1169, 0x11B8] },
+{ source: [0xB622], NFC: [0xB622], NFD: [0x1104, 0x1169, 0x11B9], NFKC: [0xB622], NFKD: [0x1104, 0x1169, 0x11B9] },
+{ source: [0xB623], NFC: [0xB623], NFD: [0x1104, 0x1169, 0x11BA], NFKC: [0xB623], NFKD: [0x1104, 0x1169, 0x11BA] },
+{ source: [0xB624], NFC: [0xB624], NFD: [0x1104, 0x1169, 0x11BB], NFKC: [0xB624], NFKD: [0x1104, 0x1169, 0x11BB] },
+{ source: [0xB625], NFC: [0xB625], NFD: [0x1104, 0x1169, 0x11BC], NFKC: [0xB625], NFKD: [0x1104, 0x1169, 0x11BC] },
+{ source: [0xB626], NFC: [0xB626], NFD: [0x1104, 0x1169, 0x11BD], NFKC: [0xB626], NFKD: [0x1104, 0x1169, 0x11BD] },
+{ source: [0xB627], NFC: [0xB627], NFD: [0x1104, 0x1169, 0x11BE], NFKC: [0xB627], NFKD: [0x1104, 0x1169, 0x11BE] },
+{ source: [0xB628], NFC: [0xB628], NFD: [0x1104, 0x1169, 0x11BF], NFKC: [0xB628], NFKD: [0x1104, 0x1169, 0x11BF] },
+{ source: [0xB629], NFC: [0xB629], NFD: [0x1104, 0x1169, 0x11C0], NFKC: [0xB629], NFKD: [0x1104, 0x1169, 0x11C0] },
+{ source: [0xB62A], NFC: [0xB62A], NFD: [0x1104, 0x1169, 0x11C1], NFKC: [0xB62A], NFKD: [0x1104, 0x1169, 0x11C1] },
+{ source: [0xB62B], NFC: [0xB62B], NFD: [0x1104, 0x1169, 0x11C2], NFKC: [0xB62B], NFKD: [0x1104, 0x1169, 0x11C2] },
+{ source: [0xB62C], NFC: [0xB62C], NFD: [0x1104, 0x116A], NFKC: [0xB62C], NFKD: [0x1104, 0x116A] },
+{ source: [0xB62D], NFC: [0xB62D], NFD: [0x1104, 0x116A, 0x11A8], NFKC: [0xB62D], NFKD: [0x1104, 0x116A, 0x11A8] },
+{ source: [0xB62E], NFC: [0xB62E], NFD: [0x1104, 0x116A, 0x11A9], NFKC: [0xB62E], NFKD: [0x1104, 0x116A, 0x11A9] },
+{ source: [0xB62F], NFC: [0xB62F], NFD: [0x1104, 0x116A, 0x11AA], NFKC: [0xB62F], NFKD: [0x1104, 0x116A, 0x11AA] },
+{ source: [0xB630], NFC: [0xB630], NFD: [0x1104, 0x116A, 0x11AB], NFKC: [0xB630], NFKD: [0x1104, 0x116A, 0x11AB] },
+{ source: [0xB631], NFC: [0xB631], NFD: [0x1104, 0x116A, 0x11AC], NFKC: [0xB631], NFKD: [0x1104, 0x116A, 0x11AC] },
+{ source: [0xB632], NFC: [0xB632], NFD: [0x1104, 0x116A, 0x11AD], NFKC: [0xB632], NFKD: [0x1104, 0x116A, 0x11AD] },
+{ source: [0xB633], NFC: [0xB633], NFD: [0x1104, 0x116A, 0x11AE], NFKC: [0xB633], NFKD: [0x1104, 0x116A, 0x11AE] },
+{ source: [0xB634], NFC: [0xB634], NFD: [0x1104, 0x116A, 0x11AF], NFKC: [0xB634], NFKD: [0x1104, 0x116A, 0x11AF] },
+{ source: [0xB635], NFC: [0xB635], NFD: [0x1104, 0x116A, 0x11B0], NFKC: [0xB635], NFKD: [0x1104, 0x116A, 0x11B0] },
+{ source: [0xB636], NFC: [0xB636], NFD: [0x1104, 0x116A, 0x11B1], NFKC: [0xB636], NFKD: [0x1104, 0x116A, 0x11B1] },
+{ source: [0xB637], NFC: [0xB637], NFD: [0x1104, 0x116A, 0x11B2], NFKC: [0xB637], NFKD: [0x1104, 0x116A, 0x11B2] },
+{ source: [0xB638], NFC: [0xB638], NFD: [0x1104, 0x116A, 0x11B3], NFKC: [0xB638], NFKD: [0x1104, 0x116A, 0x11B3] },
+{ source: [0xB639], NFC: [0xB639], NFD: [0x1104, 0x116A, 0x11B4], NFKC: [0xB639], NFKD: [0x1104, 0x116A, 0x11B4] },
+{ source: [0xB63A], NFC: [0xB63A], NFD: [0x1104, 0x116A, 0x11B5], NFKC: [0xB63A], NFKD: [0x1104, 0x116A, 0x11B5] },
+{ source: [0xB63B], NFC: [0xB63B], NFD: [0x1104, 0x116A, 0x11B6], NFKC: [0xB63B], NFKD: [0x1104, 0x116A, 0x11B6] },
+{ source: [0xB63C], NFC: [0xB63C], NFD: [0x1104, 0x116A, 0x11B7], NFKC: [0xB63C], NFKD: [0x1104, 0x116A, 0x11B7] },
+{ source: [0xB63D], NFC: [0xB63D], NFD: [0x1104, 0x116A, 0x11B8], NFKC: [0xB63D], NFKD: [0x1104, 0x116A, 0x11B8] },
+{ source: [0xB63E], NFC: [0xB63E], NFD: [0x1104, 0x116A, 0x11B9], NFKC: [0xB63E], NFKD: [0x1104, 0x116A, 0x11B9] },
+{ source: [0xB63F], NFC: [0xB63F], NFD: [0x1104, 0x116A, 0x11BA], NFKC: [0xB63F], NFKD: [0x1104, 0x116A, 0x11BA] },
+{ source: [0xB640], NFC: [0xB640], NFD: [0x1104, 0x116A, 0x11BB], NFKC: [0xB640], NFKD: [0x1104, 0x116A, 0x11BB] },
+{ source: [0xB641], NFC: [0xB641], NFD: [0x1104, 0x116A, 0x11BC], NFKC: [0xB641], NFKD: [0x1104, 0x116A, 0x11BC] },
+{ source: [0xB642], NFC: [0xB642], NFD: [0x1104, 0x116A, 0x11BD], NFKC: [0xB642], NFKD: [0x1104, 0x116A, 0x11BD] },
+{ source: [0xB643], NFC: [0xB643], NFD: [0x1104, 0x116A, 0x11BE], NFKC: [0xB643], NFKD: [0x1104, 0x116A, 0x11BE] },
+{ source: [0xB644], NFC: [0xB644], NFD: [0x1104, 0x116A, 0x11BF], NFKC: [0xB644], NFKD: [0x1104, 0x116A, 0x11BF] },
+{ source: [0xB645], NFC: [0xB645], NFD: [0x1104, 0x116A, 0x11C0], NFKC: [0xB645], NFKD: [0x1104, 0x116A, 0x11C0] },
+{ source: [0xB646], NFC: [0xB646], NFD: [0x1104, 0x116A, 0x11C1], NFKC: [0xB646], NFKD: [0x1104, 0x116A, 0x11C1] },
+{ source: [0xB647], NFC: [0xB647], NFD: [0x1104, 0x116A, 0x11C2], NFKC: [0xB647], NFKD: [0x1104, 0x116A, 0x11C2] },
+{ source: [0xB648], NFC: [0xB648], NFD: [0x1104, 0x116B], NFKC: [0xB648], NFKD: [0x1104, 0x116B] },
+{ source: [0xB649], NFC: [0xB649], NFD: [0x1104, 0x116B, 0x11A8], NFKC: [0xB649], NFKD: [0x1104, 0x116B, 0x11A8] },
+{ source: [0xB64A], NFC: [0xB64A], NFD: [0x1104, 0x116B, 0x11A9], NFKC: [0xB64A], NFKD: [0x1104, 0x116B, 0x11A9] },
+{ source: [0xB64B], NFC: [0xB64B], NFD: [0x1104, 0x116B, 0x11AA], NFKC: [0xB64B], NFKD: [0x1104, 0x116B, 0x11AA] },
+{ source: [0xB64C], NFC: [0xB64C], NFD: [0x1104, 0x116B, 0x11AB], NFKC: [0xB64C], NFKD: [0x1104, 0x116B, 0x11AB] },
+{ source: [0xB64D], NFC: [0xB64D], NFD: [0x1104, 0x116B, 0x11AC], NFKC: [0xB64D], NFKD: [0x1104, 0x116B, 0x11AC] },
+{ source: [0xB64E], NFC: [0xB64E], NFD: [0x1104, 0x116B, 0x11AD], NFKC: [0xB64E], NFKD: [0x1104, 0x116B, 0x11AD] },
+{ source: [0xB64F], NFC: [0xB64F], NFD: [0x1104, 0x116B, 0x11AE], NFKC: [0xB64F], NFKD: [0x1104, 0x116B, 0x11AE] },
+{ source: [0xB650], NFC: [0xB650], NFD: [0x1104, 0x116B, 0x11AF], NFKC: [0xB650], NFKD: [0x1104, 0x116B, 0x11AF] },
+{ source: [0xB651], NFC: [0xB651], NFD: [0x1104, 0x116B, 0x11B0], NFKC: [0xB651], NFKD: [0x1104, 0x116B, 0x11B0] },
+{ source: [0xB652], NFC: [0xB652], NFD: [0x1104, 0x116B, 0x11B1], NFKC: [0xB652], NFKD: [0x1104, 0x116B, 0x11B1] },
+{ source: [0xB653], NFC: [0xB653], NFD: [0x1104, 0x116B, 0x11B2], NFKC: [0xB653], NFKD: [0x1104, 0x116B, 0x11B2] },
+{ source: [0xB654], NFC: [0xB654], NFD: [0x1104, 0x116B, 0x11B3], NFKC: [0xB654], NFKD: [0x1104, 0x116B, 0x11B3] },
+{ source: [0xB655], NFC: [0xB655], NFD: [0x1104, 0x116B, 0x11B4], NFKC: [0xB655], NFKD: [0x1104, 0x116B, 0x11B4] },
+{ source: [0xB656], NFC: [0xB656], NFD: [0x1104, 0x116B, 0x11B5], NFKC: [0xB656], NFKD: [0x1104, 0x116B, 0x11B5] },
+{ source: [0xB657], NFC: [0xB657], NFD: [0x1104, 0x116B, 0x11B6], NFKC: [0xB657], NFKD: [0x1104, 0x116B, 0x11B6] },
+{ source: [0xB658], NFC: [0xB658], NFD: [0x1104, 0x116B, 0x11B7], NFKC: [0xB658], NFKD: [0x1104, 0x116B, 0x11B7] },
+{ source: [0xB659], NFC: [0xB659], NFD: [0x1104, 0x116B, 0x11B8], NFKC: [0xB659], NFKD: [0x1104, 0x116B, 0x11B8] },
+{ source: [0xB65A], NFC: [0xB65A], NFD: [0x1104, 0x116B, 0x11B9], NFKC: [0xB65A], NFKD: [0x1104, 0x116B, 0x11B9] },
+{ source: [0xB65B], NFC: [0xB65B], NFD: [0x1104, 0x116B, 0x11BA], NFKC: [0xB65B], NFKD: [0x1104, 0x116B, 0x11BA] },
+{ source: [0xB65C], NFC: [0xB65C], NFD: [0x1104, 0x116B, 0x11BB], NFKC: [0xB65C], NFKD: [0x1104, 0x116B, 0x11BB] },
+{ source: [0xB65D], NFC: [0xB65D], NFD: [0x1104, 0x116B, 0x11BC], NFKC: [0xB65D], NFKD: [0x1104, 0x116B, 0x11BC] },
+{ source: [0xB65E], NFC: [0xB65E], NFD: [0x1104, 0x116B, 0x11BD], NFKC: [0xB65E], NFKD: [0x1104, 0x116B, 0x11BD] },
+{ source: [0xB65F], NFC: [0xB65F], NFD: [0x1104, 0x116B, 0x11BE], NFKC: [0xB65F], NFKD: [0x1104, 0x116B, 0x11BE] },
+{ source: [0xB660], NFC: [0xB660], NFD: [0x1104, 0x116B, 0x11BF], NFKC: [0xB660], NFKD: [0x1104, 0x116B, 0x11BF] },
+{ source: [0xB661], NFC: [0xB661], NFD: [0x1104, 0x116B, 0x11C0], NFKC: [0xB661], NFKD: [0x1104, 0x116B, 0x11C0] },
+{ source: [0xB662], NFC: [0xB662], NFD: [0x1104, 0x116B, 0x11C1], NFKC: [0xB662], NFKD: [0x1104, 0x116B, 0x11C1] },
+{ source: [0xB663], NFC: [0xB663], NFD: [0x1104, 0x116B, 0x11C2], NFKC: [0xB663], NFKD: [0x1104, 0x116B, 0x11C2] },
+{ source: [0xB664], NFC: [0xB664], NFD: [0x1104, 0x116C], NFKC: [0xB664], NFKD: [0x1104, 0x116C] },
+{ source: [0xB665], NFC: [0xB665], NFD: [0x1104, 0x116C, 0x11A8], NFKC: [0xB665], NFKD: [0x1104, 0x116C, 0x11A8] },
+{ source: [0xB666], NFC: [0xB666], NFD: [0x1104, 0x116C, 0x11A9], NFKC: [0xB666], NFKD: [0x1104, 0x116C, 0x11A9] },
+{ source: [0xB667], NFC: [0xB667], NFD: [0x1104, 0x116C, 0x11AA], NFKC: [0xB667], NFKD: [0x1104, 0x116C, 0x11AA] },
+{ source: [0xB668], NFC: [0xB668], NFD: [0x1104, 0x116C, 0x11AB], NFKC: [0xB668], NFKD: [0x1104, 0x116C, 0x11AB] },
+{ source: [0xB669], NFC: [0xB669], NFD: [0x1104, 0x116C, 0x11AC], NFKC: [0xB669], NFKD: [0x1104, 0x116C, 0x11AC] },
+{ source: [0xB66A], NFC: [0xB66A], NFD: [0x1104, 0x116C, 0x11AD], NFKC: [0xB66A], NFKD: [0x1104, 0x116C, 0x11AD] },
+{ source: [0xB66B], NFC: [0xB66B], NFD: [0x1104, 0x116C, 0x11AE], NFKC: [0xB66B], NFKD: [0x1104, 0x116C, 0x11AE] },
+{ source: [0xB66C], NFC: [0xB66C], NFD: [0x1104, 0x116C, 0x11AF], NFKC: [0xB66C], NFKD: [0x1104, 0x116C, 0x11AF] },
+{ source: [0xB66D], NFC: [0xB66D], NFD: [0x1104, 0x116C, 0x11B0], NFKC: [0xB66D], NFKD: [0x1104, 0x116C, 0x11B0] },
+{ source: [0xB66E], NFC: [0xB66E], NFD: [0x1104, 0x116C, 0x11B1], NFKC: [0xB66E], NFKD: [0x1104, 0x116C, 0x11B1] },
+{ source: [0xB66F], NFC: [0xB66F], NFD: [0x1104, 0x116C, 0x11B2], NFKC: [0xB66F], NFKD: [0x1104, 0x116C, 0x11B2] },
+{ source: [0xB670], NFC: [0xB670], NFD: [0x1104, 0x116C, 0x11B3], NFKC: [0xB670], NFKD: [0x1104, 0x116C, 0x11B3] },
+{ source: [0xB671], NFC: [0xB671], NFD: [0x1104, 0x116C, 0x11B4], NFKC: [0xB671], NFKD: [0x1104, 0x116C, 0x11B4] },
+{ source: [0xB672], NFC: [0xB672], NFD: [0x1104, 0x116C, 0x11B5], NFKC: [0xB672], NFKD: [0x1104, 0x116C, 0x11B5] },
+{ source: [0xB673], NFC: [0xB673], NFD: [0x1104, 0x116C, 0x11B6], NFKC: [0xB673], NFKD: [0x1104, 0x116C, 0x11B6] },
+{ source: [0xB674], NFC: [0xB674], NFD: [0x1104, 0x116C, 0x11B7], NFKC: [0xB674], NFKD: [0x1104, 0x116C, 0x11B7] },
+{ source: [0xB675], NFC: [0xB675], NFD: [0x1104, 0x116C, 0x11B8], NFKC: [0xB675], NFKD: [0x1104, 0x116C, 0x11B8] },
+{ source: [0xB676], NFC: [0xB676], NFD: [0x1104, 0x116C, 0x11B9], NFKC: [0xB676], NFKD: [0x1104, 0x116C, 0x11B9] },
+{ source: [0xB677], NFC: [0xB677], NFD: [0x1104, 0x116C, 0x11BA], NFKC: [0xB677], NFKD: [0x1104, 0x116C, 0x11BA] },
+{ source: [0xB678], NFC: [0xB678], NFD: [0x1104, 0x116C, 0x11BB], NFKC: [0xB678], NFKD: [0x1104, 0x116C, 0x11BB] },
+{ source: [0xB679], NFC: [0xB679], NFD: [0x1104, 0x116C, 0x11BC], NFKC: [0xB679], NFKD: [0x1104, 0x116C, 0x11BC] },
+{ source: [0xB67A], NFC: [0xB67A], NFD: [0x1104, 0x116C, 0x11BD], NFKC: [0xB67A], NFKD: [0x1104, 0x116C, 0x11BD] },
+{ source: [0xB67B], NFC: [0xB67B], NFD: [0x1104, 0x116C, 0x11BE], NFKC: [0xB67B], NFKD: [0x1104, 0x116C, 0x11BE] },
+{ source: [0xB67C], NFC: [0xB67C], NFD: [0x1104, 0x116C, 0x11BF], NFKC: [0xB67C], NFKD: [0x1104, 0x116C, 0x11BF] },
+{ source: [0xB67D], NFC: [0xB67D], NFD: [0x1104, 0x116C, 0x11C0], NFKC: [0xB67D], NFKD: [0x1104, 0x116C, 0x11C0] },
+{ source: [0xB67E], NFC: [0xB67E], NFD: [0x1104, 0x116C, 0x11C1], NFKC: [0xB67E], NFKD: [0x1104, 0x116C, 0x11C1] },
+{ source: [0xB67F], NFC: [0xB67F], NFD: [0x1104, 0x116C, 0x11C2], NFKC: [0xB67F], NFKD: [0x1104, 0x116C, 0x11C2] },
+{ source: [0xB680], NFC: [0xB680], NFD: [0x1104, 0x116D], NFKC: [0xB680], NFKD: [0x1104, 0x116D] },
+{ source: [0xB681], NFC: [0xB681], NFD: [0x1104, 0x116D, 0x11A8], NFKC: [0xB681], NFKD: [0x1104, 0x116D, 0x11A8] },
+{ source: [0xB682], NFC: [0xB682], NFD: [0x1104, 0x116D, 0x11A9], NFKC: [0xB682], NFKD: [0x1104, 0x116D, 0x11A9] },
+{ source: [0xB683], NFC: [0xB683], NFD: [0x1104, 0x116D, 0x11AA], NFKC: [0xB683], NFKD: [0x1104, 0x116D, 0x11AA] },
+{ source: [0xB684], NFC: [0xB684], NFD: [0x1104, 0x116D, 0x11AB], NFKC: [0xB684], NFKD: [0x1104, 0x116D, 0x11AB] },
+{ source: [0xB685], NFC: [0xB685], NFD: [0x1104, 0x116D, 0x11AC], NFKC: [0xB685], NFKD: [0x1104, 0x116D, 0x11AC] },
+{ source: [0xB686], NFC: [0xB686], NFD: [0x1104, 0x116D, 0x11AD], NFKC: [0xB686], NFKD: [0x1104, 0x116D, 0x11AD] },
+{ source: [0xB687], NFC: [0xB687], NFD: [0x1104, 0x116D, 0x11AE], NFKC: [0xB687], NFKD: [0x1104, 0x116D, 0x11AE] },
+{ source: [0xB688], NFC: [0xB688], NFD: [0x1104, 0x116D, 0x11AF], NFKC: [0xB688], NFKD: [0x1104, 0x116D, 0x11AF] },
+{ source: [0xB689], NFC: [0xB689], NFD: [0x1104, 0x116D, 0x11B0], NFKC: [0xB689], NFKD: [0x1104, 0x116D, 0x11B0] },
+{ source: [0xB68A], NFC: [0xB68A], NFD: [0x1104, 0x116D, 0x11B1], NFKC: [0xB68A], NFKD: [0x1104, 0x116D, 0x11B1] },
+{ source: [0xB68B], NFC: [0xB68B], NFD: [0x1104, 0x116D, 0x11B2], NFKC: [0xB68B], NFKD: [0x1104, 0x116D, 0x11B2] },
+{ source: [0xB68C], NFC: [0xB68C], NFD: [0x1104, 0x116D, 0x11B3], NFKC: [0xB68C], NFKD: [0x1104, 0x116D, 0x11B3] },
+{ source: [0xB68D], NFC: [0xB68D], NFD: [0x1104, 0x116D, 0x11B4], NFKC: [0xB68D], NFKD: [0x1104, 0x116D, 0x11B4] },
+{ source: [0xB68E], NFC: [0xB68E], NFD: [0x1104, 0x116D, 0x11B5], NFKC: [0xB68E], NFKD: [0x1104, 0x116D, 0x11B5] },
+{ source: [0xB68F], NFC: [0xB68F], NFD: [0x1104, 0x116D, 0x11B6], NFKC: [0xB68F], NFKD: [0x1104, 0x116D, 0x11B6] },
+{ source: [0xB690], NFC: [0xB690], NFD: [0x1104, 0x116D, 0x11B7], NFKC: [0xB690], NFKD: [0x1104, 0x116D, 0x11B7] },
+{ source: [0xB691], NFC: [0xB691], NFD: [0x1104, 0x116D, 0x11B8], NFKC: [0xB691], NFKD: [0x1104, 0x116D, 0x11B8] },
+{ source: [0xB692], NFC: [0xB692], NFD: [0x1104, 0x116D, 0x11B9], NFKC: [0xB692], NFKD: [0x1104, 0x116D, 0x11B9] },
+{ source: [0xB693], NFC: [0xB693], NFD: [0x1104, 0x116D, 0x11BA], NFKC: [0xB693], NFKD: [0x1104, 0x116D, 0x11BA] },
+{ source: [0xB694], NFC: [0xB694], NFD: [0x1104, 0x116D, 0x11BB], NFKC: [0xB694], NFKD: [0x1104, 0x116D, 0x11BB] },
+{ source: [0xB695], NFC: [0xB695], NFD: [0x1104, 0x116D, 0x11BC], NFKC: [0xB695], NFKD: [0x1104, 0x116D, 0x11BC] },
+{ source: [0xB696], NFC: [0xB696], NFD: [0x1104, 0x116D, 0x11BD], NFKC: [0xB696], NFKD: [0x1104, 0x116D, 0x11BD] },
+{ source: [0xB697], NFC: [0xB697], NFD: [0x1104, 0x116D, 0x11BE], NFKC: [0xB697], NFKD: [0x1104, 0x116D, 0x11BE] },
+{ source: [0xB698], NFC: [0xB698], NFD: [0x1104, 0x116D, 0x11BF], NFKC: [0xB698], NFKD: [0x1104, 0x116D, 0x11BF] },
+{ source: [0xB699], NFC: [0xB699], NFD: [0x1104, 0x116D, 0x11C0], NFKC: [0xB699], NFKD: [0x1104, 0x116D, 0x11C0] },
+{ source: [0xB69A], NFC: [0xB69A], NFD: [0x1104, 0x116D, 0x11C1], NFKC: [0xB69A], NFKD: [0x1104, 0x116D, 0x11C1] },
+{ source: [0xB69B], NFC: [0xB69B], NFD: [0x1104, 0x116D, 0x11C2], NFKC: [0xB69B], NFKD: [0x1104, 0x116D, 0x11C2] },
+{ source: [0xB69C], NFC: [0xB69C], NFD: [0x1104, 0x116E], NFKC: [0xB69C], NFKD: [0x1104, 0x116E] },
+{ source: [0xB69D], NFC: [0xB69D], NFD: [0x1104, 0x116E, 0x11A8], NFKC: [0xB69D], NFKD: [0x1104, 0x116E, 0x11A8] },
+{ source: [0xB69E], NFC: [0xB69E], NFD: [0x1104, 0x116E, 0x11A9], NFKC: [0xB69E], NFKD: [0x1104, 0x116E, 0x11A9] },
+{ source: [0xB69F], NFC: [0xB69F], NFD: [0x1104, 0x116E, 0x11AA], NFKC: [0xB69F], NFKD: [0x1104, 0x116E, 0x11AA] },
+{ source: [0xB6A0], NFC: [0xB6A0], NFD: [0x1104, 0x116E, 0x11AB], NFKC: [0xB6A0], NFKD: [0x1104, 0x116E, 0x11AB] },
+{ source: [0xB6A1], NFC: [0xB6A1], NFD: [0x1104, 0x116E, 0x11AC], NFKC: [0xB6A1], NFKD: [0x1104, 0x116E, 0x11AC] },
+{ source: [0xB6A2], NFC: [0xB6A2], NFD: [0x1104, 0x116E, 0x11AD], NFKC: [0xB6A2], NFKD: [0x1104, 0x116E, 0x11AD] },
+{ source: [0xB6A3], NFC: [0xB6A3], NFD: [0x1104, 0x116E, 0x11AE], NFKC: [0xB6A3], NFKD: [0x1104, 0x116E, 0x11AE] },
+{ source: [0xB6A4], NFC: [0xB6A4], NFD: [0x1104, 0x116E, 0x11AF], NFKC: [0xB6A4], NFKD: [0x1104, 0x116E, 0x11AF] },
+{ source: [0xB6A5], NFC: [0xB6A5], NFD: [0x1104, 0x116E, 0x11B0], NFKC: [0xB6A5], NFKD: [0x1104, 0x116E, 0x11B0] },
+{ source: [0xB6A6], NFC: [0xB6A6], NFD: [0x1104, 0x116E, 0x11B1], NFKC: [0xB6A6], NFKD: [0x1104, 0x116E, 0x11B1] },
+{ source: [0xB6A7], NFC: [0xB6A7], NFD: [0x1104, 0x116E, 0x11B2], NFKC: [0xB6A7], NFKD: [0x1104, 0x116E, 0x11B2] },
+{ source: [0xB6A8], NFC: [0xB6A8], NFD: [0x1104, 0x116E, 0x11B3], NFKC: [0xB6A8], NFKD: [0x1104, 0x116E, 0x11B3] },
+{ source: [0xB6A9], NFC: [0xB6A9], NFD: [0x1104, 0x116E, 0x11B4], NFKC: [0xB6A9], NFKD: [0x1104, 0x116E, 0x11B4] },
+{ source: [0xB6AA], NFC: [0xB6AA], NFD: [0x1104, 0x116E, 0x11B5], NFKC: [0xB6AA], NFKD: [0x1104, 0x116E, 0x11B5] },
+{ source: [0xB6AB], NFC: [0xB6AB], NFD: [0x1104, 0x116E, 0x11B6], NFKC: [0xB6AB], NFKD: [0x1104, 0x116E, 0x11B6] },
+{ source: [0xB6AC], NFC: [0xB6AC], NFD: [0x1104, 0x116E, 0x11B7], NFKC: [0xB6AC], NFKD: [0x1104, 0x116E, 0x11B7] },
+{ source: [0xB6AD], NFC: [0xB6AD], NFD: [0x1104, 0x116E, 0x11B8], NFKC: [0xB6AD], NFKD: [0x1104, 0x116E, 0x11B8] },
+{ source: [0xB6AE], NFC: [0xB6AE], NFD: [0x1104, 0x116E, 0x11B9], NFKC: [0xB6AE], NFKD: [0x1104, 0x116E, 0x11B9] },
+{ source: [0xB6AF], NFC: [0xB6AF], NFD: [0x1104, 0x116E, 0x11BA], NFKC: [0xB6AF], NFKD: [0x1104, 0x116E, 0x11BA] },
+{ source: [0xB6B0], NFC: [0xB6B0], NFD: [0x1104, 0x116E, 0x11BB], NFKC: [0xB6B0], NFKD: [0x1104, 0x116E, 0x11BB] },
+{ source: [0xB6B1], NFC: [0xB6B1], NFD: [0x1104, 0x116E, 0x11BC], NFKC: [0xB6B1], NFKD: [0x1104, 0x116E, 0x11BC] },
+{ source: [0xB6B2], NFC: [0xB6B2], NFD: [0x1104, 0x116E, 0x11BD], NFKC: [0xB6B2], NFKD: [0x1104, 0x116E, 0x11BD] },
+{ source: [0xB6B3], NFC: [0xB6B3], NFD: [0x1104, 0x116E, 0x11BE], NFKC: [0xB6B3], NFKD: [0x1104, 0x116E, 0x11BE] },
+{ source: [0xB6B4], NFC: [0xB6B4], NFD: [0x1104, 0x116E, 0x11BF], NFKC: [0xB6B4], NFKD: [0x1104, 0x116E, 0x11BF] },
+{ source: [0xB6B5], NFC: [0xB6B5], NFD: [0x1104, 0x116E, 0x11C0], NFKC: [0xB6B5], NFKD: [0x1104, 0x116E, 0x11C0] },
+{ source: [0xB6B6], NFC: [0xB6B6], NFD: [0x1104, 0x116E, 0x11C1], NFKC: [0xB6B6], NFKD: [0x1104, 0x116E, 0x11C1] },
+{ source: [0xB6B7], NFC: [0xB6B7], NFD: [0x1104, 0x116E, 0x11C2], NFKC: [0xB6B7], NFKD: [0x1104, 0x116E, 0x11C2] },
+{ source: [0xB6B8], NFC: [0xB6B8], NFD: [0x1104, 0x116F], NFKC: [0xB6B8], NFKD: [0x1104, 0x116F] },
+{ source: [0xB6B9], NFC: [0xB6B9], NFD: [0x1104, 0x116F, 0x11A8], NFKC: [0xB6B9], NFKD: [0x1104, 0x116F, 0x11A8] },
+{ source: [0xB6BA], NFC: [0xB6BA], NFD: [0x1104, 0x116F, 0x11A9], NFKC: [0xB6BA], NFKD: [0x1104, 0x116F, 0x11A9] },
+{ source: [0xB6BB], NFC: [0xB6BB], NFD: [0x1104, 0x116F, 0x11AA], NFKC: [0xB6BB], NFKD: [0x1104, 0x116F, 0x11AA] },
+{ source: [0xB6BC], NFC: [0xB6BC], NFD: [0x1104, 0x116F, 0x11AB], NFKC: [0xB6BC], NFKD: [0x1104, 0x116F, 0x11AB] },
+{ source: [0xB6BD], NFC: [0xB6BD], NFD: [0x1104, 0x116F, 0x11AC], NFKC: [0xB6BD], NFKD: [0x1104, 0x116F, 0x11AC] },
+{ source: [0xB6BE], NFC: [0xB6BE], NFD: [0x1104, 0x116F, 0x11AD], NFKC: [0xB6BE], NFKD: [0x1104, 0x116F, 0x11AD] },
+{ source: [0xB6BF], NFC: [0xB6BF], NFD: [0x1104, 0x116F, 0x11AE], NFKC: [0xB6BF], NFKD: [0x1104, 0x116F, 0x11AE] },
+{ source: [0xB6C0], NFC: [0xB6C0], NFD: [0x1104, 0x116F, 0x11AF], NFKC: [0xB6C0], NFKD: [0x1104, 0x116F, 0x11AF] },
+{ source: [0xB6C1], NFC: [0xB6C1], NFD: [0x1104, 0x116F, 0x11B0], NFKC: [0xB6C1], NFKD: [0x1104, 0x116F, 0x11B0] },
+{ source: [0xB6C2], NFC: [0xB6C2], NFD: [0x1104, 0x116F, 0x11B1], NFKC: [0xB6C2], NFKD: [0x1104, 0x116F, 0x11B1] },
+{ source: [0xB6C3], NFC: [0xB6C3], NFD: [0x1104, 0x116F, 0x11B2], NFKC: [0xB6C3], NFKD: [0x1104, 0x116F, 0x11B2] },
+{ source: [0xB6C4], NFC: [0xB6C4], NFD: [0x1104, 0x116F, 0x11B3], NFKC: [0xB6C4], NFKD: [0x1104, 0x116F, 0x11B3] },
+{ source: [0xB6C5], NFC: [0xB6C5], NFD: [0x1104, 0x116F, 0x11B4], NFKC: [0xB6C5], NFKD: [0x1104, 0x116F, 0x11B4] },
+{ source: [0xB6C6], NFC: [0xB6C6], NFD: [0x1104, 0x116F, 0x11B5], NFKC: [0xB6C6], NFKD: [0x1104, 0x116F, 0x11B5] },
+{ source: [0xB6C7], NFC: [0xB6C7], NFD: [0x1104, 0x116F, 0x11B6], NFKC: [0xB6C7], NFKD: [0x1104, 0x116F, 0x11B6] },
+{ source: [0xB6C8], NFC: [0xB6C8], NFD: [0x1104, 0x116F, 0x11B7], NFKC: [0xB6C8], NFKD: [0x1104, 0x116F, 0x11B7] },
+{ source: [0xB6C9], NFC: [0xB6C9], NFD: [0x1104, 0x116F, 0x11B8], NFKC: [0xB6C9], NFKD: [0x1104, 0x116F, 0x11B8] },
+{ source: [0xB6CA], NFC: [0xB6CA], NFD: [0x1104, 0x116F, 0x11B9], NFKC: [0xB6CA], NFKD: [0x1104, 0x116F, 0x11B9] },
+{ source: [0xB6CB], NFC: [0xB6CB], NFD: [0x1104, 0x116F, 0x11BA], NFKC: [0xB6CB], NFKD: [0x1104, 0x116F, 0x11BA] },
+{ source: [0xB6CC], NFC: [0xB6CC], NFD: [0x1104, 0x116F, 0x11BB], NFKC: [0xB6CC], NFKD: [0x1104, 0x116F, 0x11BB] },
+{ source: [0xB6CD], NFC: [0xB6CD], NFD: [0x1104, 0x116F, 0x11BC], NFKC: [0xB6CD], NFKD: [0x1104, 0x116F, 0x11BC] },
+{ source: [0xB6CE], NFC: [0xB6CE], NFD: [0x1104, 0x116F, 0x11BD], NFKC: [0xB6CE], NFKD: [0x1104, 0x116F, 0x11BD] },
+{ source: [0xB6CF], NFC: [0xB6CF], NFD: [0x1104, 0x116F, 0x11BE], NFKC: [0xB6CF], NFKD: [0x1104, 0x116F, 0x11BE] },
+{ source: [0xB6D0], NFC: [0xB6D0], NFD: [0x1104, 0x116F, 0x11BF], NFKC: [0xB6D0], NFKD: [0x1104, 0x116F, 0x11BF] },
+{ source: [0xB6D1], NFC: [0xB6D1], NFD: [0x1104, 0x116F, 0x11C0], NFKC: [0xB6D1], NFKD: [0x1104, 0x116F, 0x11C0] },
+{ source: [0xB6D2], NFC: [0xB6D2], NFD: [0x1104, 0x116F, 0x11C1], NFKC: [0xB6D2], NFKD: [0x1104, 0x116F, 0x11C1] },
+{ source: [0xB6D3], NFC: [0xB6D3], NFD: [0x1104, 0x116F, 0x11C2], NFKC: [0xB6D3], NFKD: [0x1104, 0x116F, 0x11C2] },
+{ source: [0xB6D4], NFC: [0xB6D4], NFD: [0x1104, 0x1170], NFKC: [0xB6D4], NFKD: [0x1104, 0x1170] },
+{ source: [0xB6D5], NFC: [0xB6D5], NFD: [0x1104, 0x1170, 0x11A8], NFKC: [0xB6D5], NFKD: [0x1104, 0x1170, 0x11A8] },
+{ source: [0xB6D6], NFC: [0xB6D6], NFD: [0x1104, 0x1170, 0x11A9], NFKC: [0xB6D6], NFKD: [0x1104, 0x1170, 0x11A9] },
+{ source: [0xB6D7], NFC: [0xB6D7], NFD: [0x1104, 0x1170, 0x11AA], NFKC: [0xB6D7], NFKD: [0x1104, 0x1170, 0x11AA] },
+{ source: [0xB6D8], NFC: [0xB6D8], NFD: [0x1104, 0x1170, 0x11AB], NFKC: [0xB6D8], NFKD: [0x1104, 0x1170, 0x11AB] },
+{ source: [0xB6D9], NFC: [0xB6D9], NFD: [0x1104, 0x1170, 0x11AC], NFKC: [0xB6D9], NFKD: [0x1104, 0x1170, 0x11AC] },
+{ source: [0xB6DA], NFC: [0xB6DA], NFD: [0x1104, 0x1170, 0x11AD], NFKC: [0xB6DA], NFKD: [0x1104, 0x1170, 0x11AD] },
+{ source: [0xB6DB], NFC: [0xB6DB], NFD: [0x1104, 0x1170, 0x11AE], NFKC: [0xB6DB], NFKD: [0x1104, 0x1170, 0x11AE] },
+{ source: [0xB6DC], NFC: [0xB6DC], NFD: [0x1104, 0x1170, 0x11AF], NFKC: [0xB6DC], NFKD: [0x1104, 0x1170, 0x11AF] },
+{ source: [0xB6DD], NFC: [0xB6DD], NFD: [0x1104, 0x1170, 0x11B0], NFKC: [0xB6DD], NFKD: [0x1104, 0x1170, 0x11B0] },
+{ source: [0xB6DE], NFC: [0xB6DE], NFD: [0x1104, 0x1170, 0x11B1], NFKC: [0xB6DE], NFKD: [0x1104, 0x1170, 0x11B1] },
+{ source: [0xB6DF], NFC: [0xB6DF], NFD: [0x1104, 0x1170, 0x11B2], NFKC: [0xB6DF], NFKD: [0x1104, 0x1170, 0x11B2] },
+{ source: [0xB6E0], NFC: [0xB6E0], NFD: [0x1104, 0x1170, 0x11B3], NFKC: [0xB6E0], NFKD: [0x1104, 0x1170, 0x11B3] },
+{ source: [0xB6E1], NFC: [0xB6E1], NFD: [0x1104, 0x1170, 0x11B4], NFKC: [0xB6E1], NFKD: [0x1104, 0x1170, 0x11B4] },
+{ source: [0xB6E2], NFC: [0xB6E2], NFD: [0x1104, 0x1170, 0x11B5], NFKC: [0xB6E2], NFKD: [0x1104, 0x1170, 0x11B5] },
+{ source: [0xB6E3], NFC: [0xB6E3], NFD: [0x1104, 0x1170, 0x11B6], NFKC: [0xB6E3], NFKD: [0x1104, 0x1170, 0x11B6] },
+{ source: [0xB6E4], NFC: [0xB6E4], NFD: [0x1104, 0x1170, 0x11B7], NFKC: [0xB6E4], NFKD: [0x1104, 0x1170, 0x11B7] },
+{ source: [0xB6E5], NFC: [0xB6E5], NFD: [0x1104, 0x1170, 0x11B8], NFKC: [0xB6E5], NFKD: [0x1104, 0x1170, 0x11B8] },
+{ source: [0xB6E6], NFC: [0xB6E6], NFD: [0x1104, 0x1170, 0x11B9], NFKC: [0xB6E6], NFKD: [0x1104, 0x1170, 0x11B9] },
+{ source: [0xB6E7], NFC: [0xB6E7], NFD: [0x1104, 0x1170, 0x11BA], NFKC: [0xB6E7], NFKD: [0x1104, 0x1170, 0x11BA] },
+{ source: [0xB6E8], NFC: [0xB6E8], NFD: [0x1104, 0x1170, 0x11BB], NFKC: [0xB6E8], NFKD: [0x1104, 0x1170, 0x11BB] },
+{ source: [0xB6E9], NFC: [0xB6E9], NFD: [0x1104, 0x1170, 0x11BC], NFKC: [0xB6E9], NFKD: [0x1104, 0x1170, 0x11BC] },
+{ source: [0xB6EA], NFC: [0xB6EA], NFD: [0x1104, 0x1170, 0x11BD], NFKC: [0xB6EA], NFKD: [0x1104, 0x1170, 0x11BD] },
+{ source: [0xB6EB], NFC: [0xB6EB], NFD: [0x1104, 0x1170, 0x11BE], NFKC: [0xB6EB], NFKD: [0x1104, 0x1170, 0x11BE] },
+{ source: [0xB6EC], NFC: [0xB6EC], NFD: [0x1104, 0x1170, 0x11BF], NFKC: [0xB6EC], NFKD: [0x1104, 0x1170, 0x11BF] },
+{ source: [0xB6ED], NFC: [0xB6ED], NFD: [0x1104, 0x1170, 0x11C0], NFKC: [0xB6ED], NFKD: [0x1104, 0x1170, 0x11C0] },
+{ source: [0xB6EE], NFC: [0xB6EE], NFD: [0x1104, 0x1170, 0x11C1], NFKC: [0xB6EE], NFKD: [0x1104, 0x1170, 0x11C1] },
+{ source: [0xB6EF], NFC: [0xB6EF], NFD: [0x1104, 0x1170, 0x11C2], NFKC: [0xB6EF], NFKD: [0x1104, 0x1170, 0x11C2] },
+{ source: [0xB6F0], NFC: [0xB6F0], NFD: [0x1104, 0x1171], NFKC: [0xB6F0], NFKD: [0x1104, 0x1171] },
+{ source: [0xB6F1], NFC: [0xB6F1], NFD: [0x1104, 0x1171, 0x11A8], NFKC: [0xB6F1], NFKD: [0x1104, 0x1171, 0x11A8] },
+{ source: [0xB6F2], NFC: [0xB6F2], NFD: [0x1104, 0x1171, 0x11A9], NFKC: [0xB6F2], NFKD: [0x1104, 0x1171, 0x11A9] },
+{ source: [0xB6F3], NFC: [0xB6F3], NFD: [0x1104, 0x1171, 0x11AA], NFKC: [0xB6F3], NFKD: [0x1104, 0x1171, 0x11AA] },
+{ source: [0xB6F4], NFC: [0xB6F4], NFD: [0x1104, 0x1171, 0x11AB], NFKC: [0xB6F4], NFKD: [0x1104, 0x1171, 0x11AB] },
+{ source: [0xB6F5], NFC: [0xB6F5], NFD: [0x1104, 0x1171, 0x11AC], NFKC: [0xB6F5], NFKD: [0x1104, 0x1171, 0x11AC] },
+{ source: [0xB6F6], NFC: [0xB6F6], NFD: [0x1104, 0x1171, 0x11AD], NFKC: [0xB6F6], NFKD: [0x1104, 0x1171, 0x11AD] },
+{ source: [0xB6F7], NFC: [0xB6F7], NFD: [0x1104, 0x1171, 0x11AE], NFKC: [0xB6F7], NFKD: [0x1104, 0x1171, 0x11AE] },
+{ source: [0xB6F8], NFC: [0xB6F8], NFD: [0x1104, 0x1171, 0x11AF], NFKC: [0xB6F8], NFKD: [0x1104, 0x1171, 0x11AF] },
+{ source: [0xB6F9], NFC: [0xB6F9], NFD: [0x1104, 0x1171, 0x11B0], NFKC: [0xB6F9], NFKD: [0x1104, 0x1171, 0x11B0] },
+{ source: [0xB6FA], NFC: [0xB6FA], NFD: [0x1104, 0x1171, 0x11B1], NFKC: [0xB6FA], NFKD: [0x1104, 0x1171, 0x11B1] },
+{ source: [0xB6FB], NFC: [0xB6FB], NFD: [0x1104, 0x1171, 0x11B2], NFKC: [0xB6FB], NFKD: [0x1104, 0x1171, 0x11B2] },
+{ source: [0xB6FC], NFC: [0xB6FC], NFD: [0x1104, 0x1171, 0x11B3], NFKC: [0xB6FC], NFKD: [0x1104, 0x1171, 0x11B3] },
+{ source: [0xB6FD], NFC: [0xB6FD], NFD: [0x1104, 0x1171, 0x11B4], NFKC: [0xB6FD], NFKD: [0x1104, 0x1171, 0x11B4] },
+{ source: [0xB6FE], NFC: [0xB6FE], NFD: [0x1104, 0x1171, 0x11B5], NFKC: [0xB6FE], NFKD: [0x1104, 0x1171, 0x11B5] },
+{ source: [0xB6FF], NFC: [0xB6FF], NFD: [0x1104, 0x1171, 0x11B6], NFKC: [0xB6FF], NFKD: [0x1104, 0x1171, 0x11B6] },
+{ source: [0xB700], NFC: [0xB700], NFD: [0x1104, 0x1171, 0x11B7], NFKC: [0xB700], NFKD: [0x1104, 0x1171, 0x11B7] },
+{ source: [0xB701], NFC: [0xB701], NFD: [0x1104, 0x1171, 0x11B8], NFKC: [0xB701], NFKD: [0x1104, 0x1171, 0x11B8] },
+{ source: [0xB702], NFC: [0xB702], NFD: [0x1104, 0x1171, 0x11B9], NFKC: [0xB702], NFKD: [0x1104, 0x1171, 0x11B9] },
+{ source: [0xB703], NFC: [0xB703], NFD: [0x1104, 0x1171, 0x11BA], NFKC: [0xB703], NFKD: [0x1104, 0x1171, 0x11BA] },
+{ source: [0xB704], NFC: [0xB704], NFD: [0x1104, 0x1171, 0x11BB], NFKC: [0xB704], NFKD: [0x1104, 0x1171, 0x11BB] },
+{ source: [0xB705], NFC: [0xB705], NFD: [0x1104, 0x1171, 0x11BC], NFKC: [0xB705], NFKD: [0x1104, 0x1171, 0x11BC] },
+{ source: [0xB706], NFC: [0xB706], NFD: [0x1104, 0x1171, 0x11BD], NFKC: [0xB706], NFKD: [0x1104, 0x1171, 0x11BD] },
+{ source: [0xB707], NFC: [0xB707], NFD: [0x1104, 0x1171, 0x11BE], NFKC: [0xB707], NFKD: [0x1104, 0x1171, 0x11BE] },
+{ source: [0xB708], NFC: [0xB708], NFD: [0x1104, 0x1171, 0x11BF], NFKC: [0xB708], NFKD: [0x1104, 0x1171, 0x11BF] },
+{ source: [0xB709], NFC: [0xB709], NFD: [0x1104, 0x1171, 0x11C0], NFKC: [0xB709], NFKD: [0x1104, 0x1171, 0x11C0] },
+{ source: [0xB70A], NFC: [0xB70A], NFD: [0x1104, 0x1171, 0x11C1], NFKC: [0xB70A], NFKD: [0x1104, 0x1171, 0x11C1] },
+{ source: [0xB70B], NFC: [0xB70B], NFD: [0x1104, 0x1171, 0x11C2], NFKC: [0xB70B], NFKD: [0x1104, 0x1171, 0x11C2] },
+{ source: [0xB70C], NFC: [0xB70C], NFD: [0x1104, 0x1172], NFKC: [0xB70C], NFKD: [0x1104, 0x1172] },
+{ source: [0xB70D], NFC: [0xB70D], NFD: [0x1104, 0x1172, 0x11A8], NFKC: [0xB70D], NFKD: [0x1104, 0x1172, 0x11A8] },
+{ source: [0xB70E], NFC: [0xB70E], NFD: [0x1104, 0x1172, 0x11A9], NFKC: [0xB70E], NFKD: [0x1104, 0x1172, 0x11A9] },
+{ source: [0xB70F], NFC: [0xB70F], NFD: [0x1104, 0x1172, 0x11AA], NFKC: [0xB70F], NFKD: [0x1104, 0x1172, 0x11AA] },
+{ source: [0xB710], NFC: [0xB710], NFD: [0x1104, 0x1172, 0x11AB], NFKC: [0xB710], NFKD: [0x1104, 0x1172, 0x11AB] },
+{ source: [0xB711], NFC: [0xB711], NFD: [0x1104, 0x1172, 0x11AC], NFKC: [0xB711], NFKD: [0x1104, 0x1172, 0x11AC] },
+{ source: [0xB712], NFC: [0xB712], NFD: [0x1104, 0x1172, 0x11AD], NFKC: [0xB712], NFKD: [0x1104, 0x1172, 0x11AD] },
+{ source: [0xB713], NFC: [0xB713], NFD: [0x1104, 0x1172, 0x11AE], NFKC: [0xB713], NFKD: [0x1104, 0x1172, 0x11AE] },
+{ source: [0xB714], NFC: [0xB714], NFD: [0x1104, 0x1172, 0x11AF], NFKC: [0xB714], NFKD: [0x1104, 0x1172, 0x11AF] },
+{ source: [0xB715], NFC: [0xB715], NFD: [0x1104, 0x1172, 0x11B0], NFKC: [0xB715], NFKD: [0x1104, 0x1172, 0x11B0] },
+{ source: [0xB716], NFC: [0xB716], NFD: [0x1104, 0x1172, 0x11B1], NFKC: [0xB716], NFKD: [0x1104, 0x1172, 0x11B1] },
+{ source: [0xB717], NFC: [0xB717], NFD: [0x1104, 0x1172, 0x11B2], NFKC: [0xB717], NFKD: [0x1104, 0x1172, 0x11B2] },
+{ source: [0xB718], NFC: [0xB718], NFD: [0x1104, 0x1172, 0x11B3], NFKC: [0xB718], NFKD: [0x1104, 0x1172, 0x11B3] },
+{ source: [0xB719], NFC: [0xB719], NFD: [0x1104, 0x1172, 0x11B4], NFKC: [0xB719], NFKD: [0x1104, 0x1172, 0x11B4] },
+{ source: [0xB71A], NFC: [0xB71A], NFD: [0x1104, 0x1172, 0x11B5], NFKC: [0xB71A], NFKD: [0x1104, 0x1172, 0x11B5] },
+{ source: [0xB71B], NFC: [0xB71B], NFD: [0x1104, 0x1172, 0x11B6], NFKC: [0xB71B], NFKD: [0x1104, 0x1172, 0x11B6] },
+{ source: [0xB71C], NFC: [0xB71C], NFD: [0x1104, 0x1172, 0x11B7], NFKC: [0xB71C], NFKD: [0x1104, 0x1172, 0x11B7] },
+{ source: [0xB71D], NFC: [0xB71D], NFD: [0x1104, 0x1172, 0x11B8], NFKC: [0xB71D], NFKD: [0x1104, 0x1172, 0x11B8] },
+{ source: [0xB71E], NFC: [0xB71E], NFD: [0x1104, 0x1172, 0x11B9], NFKC: [0xB71E], NFKD: [0x1104, 0x1172, 0x11B9] },
+{ source: [0xB71F], NFC: [0xB71F], NFD: [0x1104, 0x1172, 0x11BA], NFKC: [0xB71F], NFKD: [0x1104, 0x1172, 0x11BA] },
+{ source: [0xB720], NFC: [0xB720], NFD: [0x1104, 0x1172, 0x11BB], NFKC: [0xB720], NFKD: [0x1104, 0x1172, 0x11BB] },
+{ source: [0xB721], NFC: [0xB721], NFD: [0x1104, 0x1172, 0x11BC], NFKC: [0xB721], NFKD: [0x1104, 0x1172, 0x11BC] },
+{ source: [0xB722], NFC: [0xB722], NFD: [0x1104, 0x1172, 0x11BD], NFKC: [0xB722], NFKD: [0x1104, 0x1172, 0x11BD] },
+{ source: [0xB723], NFC: [0xB723], NFD: [0x1104, 0x1172, 0x11BE], NFKC: [0xB723], NFKD: [0x1104, 0x1172, 0x11BE] },
+{ source: [0xB724], NFC: [0xB724], NFD: [0x1104, 0x1172, 0x11BF], NFKC: [0xB724], NFKD: [0x1104, 0x1172, 0x11BF] },
+{ source: [0xB725], NFC: [0xB725], NFD: [0x1104, 0x1172, 0x11C0], NFKC: [0xB725], NFKD: [0x1104, 0x1172, 0x11C0] },
+{ source: [0xB726], NFC: [0xB726], NFD: [0x1104, 0x1172, 0x11C1], NFKC: [0xB726], NFKD: [0x1104, 0x1172, 0x11C1] },
+{ source: [0xB727], NFC: [0xB727], NFD: [0x1104, 0x1172, 0x11C2], NFKC: [0xB727], NFKD: [0x1104, 0x1172, 0x11C2] },
+{ source: [0xB728], NFC: [0xB728], NFD: [0x1104, 0x1173], NFKC: [0xB728], NFKD: [0x1104, 0x1173] },
+{ source: [0xB729], NFC: [0xB729], NFD: [0x1104, 0x1173, 0x11A8], NFKC: [0xB729], NFKD: [0x1104, 0x1173, 0x11A8] },
+{ source: [0xB72A], NFC: [0xB72A], NFD: [0x1104, 0x1173, 0x11A9], NFKC: [0xB72A], NFKD: [0x1104, 0x1173, 0x11A9] },
+{ source: [0xB72B], NFC: [0xB72B], NFD: [0x1104, 0x1173, 0x11AA], NFKC: [0xB72B], NFKD: [0x1104, 0x1173, 0x11AA] },
+{ source: [0xB72C], NFC: [0xB72C], NFD: [0x1104, 0x1173, 0x11AB], NFKC: [0xB72C], NFKD: [0x1104, 0x1173, 0x11AB] },
+{ source: [0xB72D], NFC: [0xB72D], NFD: [0x1104, 0x1173, 0x11AC], NFKC: [0xB72D], NFKD: [0x1104, 0x1173, 0x11AC] },
+{ source: [0xB72E], NFC: [0xB72E], NFD: [0x1104, 0x1173, 0x11AD], NFKC: [0xB72E], NFKD: [0x1104, 0x1173, 0x11AD] },
+{ source: [0xB72F], NFC: [0xB72F], NFD: [0x1104, 0x1173, 0x11AE], NFKC: [0xB72F], NFKD: [0x1104, 0x1173, 0x11AE] },
+{ source: [0xB730], NFC: [0xB730], NFD: [0x1104, 0x1173, 0x11AF], NFKC: [0xB730], NFKD: [0x1104, 0x1173, 0x11AF] },
+{ source: [0xB731], NFC: [0xB731], NFD: [0x1104, 0x1173, 0x11B0], NFKC: [0xB731], NFKD: [0x1104, 0x1173, 0x11B0] },
+{ source: [0xB732], NFC: [0xB732], NFD: [0x1104, 0x1173, 0x11B1], NFKC: [0xB732], NFKD: [0x1104, 0x1173, 0x11B1] },
+{ source: [0xB733], NFC: [0xB733], NFD: [0x1104, 0x1173, 0x11B2], NFKC: [0xB733], NFKD: [0x1104, 0x1173, 0x11B2] },
+{ source: [0xB734], NFC: [0xB734], NFD: [0x1104, 0x1173, 0x11B3], NFKC: [0xB734], NFKD: [0x1104, 0x1173, 0x11B3] },
+{ source: [0xB735], NFC: [0xB735], NFD: [0x1104, 0x1173, 0x11B4], NFKC: [0xB735], NFKD: [0x1104, 0x1173, 0x11B4] },
+{ source: [0xB736], NFC: [0xB736], NFD: [0x1104, 0x1173, 0x11B5], NFKC: [0xB736], NFKD: [0x1104, 0x1173, 0x11B5] },
+{ source: [0xB737], NFC: [0xB737], NFD: [0x1104, 0x1173, 0x11B6], NFKC: [0xB737], NFKD: [0x1104, 0x1173, 0x11B6] },
+{ source: [0xB738], NFC: [0xB738], NFD: [0x1104, 0x1173, 0x11B7], NFKC: [0xB738], NFKD: [0x1104, 0x1173, 0x11B7] },
+{ source: [0xB739], NFC: [0xB739], NFD: [0x1104, 0x1173, 0x11B8], NFKC: [0xB739], NFKD: [0x1104, 0x1173, 0x11B8] },
+{ source: [0xB73A], NFC: [0xB73A], NFD: [0x1104, 0x1173, 0x11B9], NFKC: [0xB73A], NFKD: [0x1104, 0x1173, 0x11B9] },
+{ source: [0xB73B], NFC: [0xB73B], NFD: [0x1104, 0x1173, 0x11BA], NFKC: [0xB73B], NFKD: [0x1104, 0x1173, 0x11BA] },
+{ source: [0xB73C], NFC: [0xB73C], NFD: [0x1104, 0x1173, 0x11BB], NFKC: [0xB73C], NFKD: [0x1104, 0x1173, 0x11BB] },
+{ source: [0xB73D], NFC: [0xB73D], NFD: [0x1104, 0x1173, 0x11BC], NFKC: [0xB73D], NFKD: [0x1104, 0x1173, 0x11BC] },
+{ source: [0xB73E], NFC: [0xB73E], NFD: [0x1104, 0x1173, 0x11BD], NFKC: [0xB73E], NFKD: [0x1104, 0x1173, 0x11BD] },
+{ source: [0xB73F], NFC: [0xB73F], NFD: [0x1104, 0x1173, 0x11BE], NFKC: [0xB73F], NFKD: [0x1104, 0x1173, 0x11BE] },
+{ source: [0xB740], NFC: [0xB740], NFD: [0x1104, 0x1173, 0x11BF], NFKC: [0xB740], NFKD: [0x1104, 0x1173, 0x11BF] },
+{ source: [0xB741], NFC: [0xB741], NFD: [0x1104, 0x1173, 0x11C0], NFKC: [0xB741], NFKD: [0x1104, 0x1173, 0x11C0] },
+{ source: [0xB742], NFC: [0xB742], NFD: [0x1104, 0x1173, 0x11C1], NFKC: [0xB742], NFKD: [0x1104, 0x1173, 0x11C1] },
+{ source: [0xB743], NFC: [0xB743], NFD: [0x1104, 0x1173, 0x11C2], NFKC: [0xB743], NFKD: [0x1104, 0x1173, 0x11C2] },
+{ source: [0xB744], NFC: [0xB744], NFD: [0x1104, 0x1174], NFKC: [0xB744], NFKD: [0x1104, 0x1174] },
+{ source: [0xB745], NFC: [0xB745], NFD: [0x1104, 0x1174, 0x11A8], NFKC: [0xB745], NFKD: [0x1104, 0x1174, 0x11A8] },
+{ source: [0xB746], NFC: [0xB746], NFD: [0x1104, 0x1174, 0x11A9], NFKC: [0xB746], NFKD: [0x1104, 0x1174, 0x11A9] },
+{ source: [0xB747], NFC: [0xB747], NFD: [0x1104, 0x1174, 0x11AA], NFKC: [0xB747], NFKD: [0x1104, 0x1174, 0x11AA] },
+{ source: [0xB748], NFC: [0xB748], NFD: [0x1104, 0x1174, 0x11AB], NFKC: [0xB748], NFKD: [0x1104, 0x1174, 0x11AB] },
+{ source: [0xB749], NFC: [0xB749], NFD: [0x1104, 0x1174, 0x11AC], NFKC: [0xB749], NFKD: [0x1104, 0x1174, 0x11AC] },
+{ source: [0xB74A], NFC: [0xB74A], NFD: [0x1104, 0x1174, 0x11AD], NFKC: [0xB74A], NFKD: [0x1104, 0x1174, 0x11AD] },
+{ source: [0xB74B], NFC: [0xB74B], NFD: [0x1104, 0x1174, 0x11AE], NFKC: [0xB74B], NFKD: [0x1104, 0x1174, 0x11AE] },
+{ source: [0xB74C], NFC: [0xB74C], NFD: [0x1104, 0x1174, 0x11AF], NFKC: [0xB74C], NFKD: [0x1104, 0x1174, 0x11AF] },
+{ source: [0xB74D], NFC: [0xB74D], NFD: [0x1104, 0x1174, 0x11B0], NFKC: [0xB74D], NFKD: [0x1104, 0x1174, 0x11B0] },
+{ source: [0xB74E], NFC: [0xB74E], NFD: [0x1104, 0x1174, 0x11B1], NFKC: [0xB74E], NFKD: [0x1104, 0x1174, 0x11B1] },
+{ source: [0xB74F], NFC: [0xB74F], NFD: [0x1104, 0x1174, 0x11B2], NFKC: [0xB74F], NFKD: [0x1104, 0x1174, 0x11B2] },
+{ source: [0xB750], NFC: [0xB750], NFD: [0x1104, 0x1174, 0x11B3], NFKC: [0xB750], NFKD: [0x1104, 0x1174, 0x11B3] },
+{ source: [0xB751], NFC: [0xB751], NFD: [0x1104, 0x1174, 0x11B4], NFKC: [0xB751], NFKD: [0x1104, 0x1174, 0x11B4] },
+{ source: [0xB752], NFC: [0xB752], NFD: [0x1104, 0x1174, 0x11B5], NFKC: [0xB752], NFKD: [0x1104, 0x1174, 0x11B5] },
+{ source: [0xB753], NFC: [0xB753], NFD: [0x1104, 0x1174, 0x11B6], NFKC: [0xB753], NFKD: [0x1104, 0x1174, 0x11B6] },
+{ source: [0xB754], NFC: [0xB754], NFD: [0x1104, 0x1174, 0x11B7], NFKC: [0xB754], NFKD: [0x1104, 0x1174, 0x11B7] },
+{ source: [0xB755], NFC: [0xB755], NFD: [0x1104, 0x1174, 0x11B8], NFKC: [0xB755], NFKD: [0x1104, 0x1174, 0x11B8] },
+{ source: [0xB756], NFC: [0xB756], NFD: [0x1104, 0x1174, 0x11B9], NFKC: [0xB756], NFKD: [0x1104, 0x1174, 0x11B9] },
+{ source: [0xB757], NFC: [0xB757], NFD: [0x1104, 0x1174, 0x11BA], NFKC: [0xB757], NFKD: [0x1104, 0x1174, 0x11BA] },
+{ source: [0xB758], NFC: [0xB758], NFD: [0x1104, 0x1174, 0x11BB], NFKC: [0xB758], NFKD: [0x1104, 0x1174, 0x11BB] },
+{ source: [0xB759], NFC: [0xB759], NFD: [0x1104, 0x1174, 0x11BC], NFKC: [0xB759], NFKD: [0x1104, 0x1174, 0x11BC] },
+{ source: [0xB75A], NFC: [0xB75A], NFD: [0x1104, 0x1174, 0x11BD], NFKC: [0xB75A], NFKD: [0x1104, 0x1174, 0x11BD] },
+{ source: [0xB75B], NFC: [0xB75B], NFD: [0x1104, 0x1174, 0x11BE], NFKC: [0xB75B], NFKD: [0x1104, 0x1174, 0x11BE] },
+{ source: [0xB75C], NFC: [0xB75C], NFD: [0x1104, 0x1174, 0x11BF], NFKC: [0xB75C], NFKD: [0x1104, 0x1174, 0x11BF] },
+{ source: [0xB75D], NFC: [0xB75D], NFD: [0x1104, 0x1174, 0x11C0], NFKC: [0xB75D], NFKD: [0x1104, 0x1174, 0x11C0] },
+{ source: [0xB75E], NFC: [0xB75E], NFD: [0x1104, 0x1174, 0x11C1], NFKC: [0xB75E], NFKD: [0x1104, 0x1174, 0x11C1] },
+{ source: [0xB75F], NFC: [0xB75F], NFD: [0x1104, 0x1174, 0x11C2], NFKC: [0xB75F], NFKD: [0x1104, 0x1174, 0x11C2] },
+{ source: [0xB760], NFC: [0xB760], NFD: [0x1104, 0x1175], NFKC: [0xB760], NFKD: [0x1104, 0x1175] },
+{ source: [0xB761], NFC: [0xB761], NFD: [0x1104, 0x1175, 0x11A8], NFKC: [0xB761], NFKD: [0x1104, 0x1175, 0x11A8] },
+{ source: [0xB762], NFC: [0xB762], NFD: [0x1104, 0x1175, 0x11A9], NFKC: [0xB762], NFKD: [0x1104, 0x1175, 0x11A9] },
+{ source: [0xB763], NFC: [0xB763], NFD: [0x1104, 0x1175, 0x11AA], NFKC: [0xB763], NFKD: [0x1104, 0x1175, 0x11AA] },
+{ source: [0xB764], NFC: [0xB764], NFD: [0x1104, 0x1175, 0x11AB], NFKC: [0xB764], NFKD: [0x1104, 0x1175, 0x11AB] },
+{ source: [0xB765], NFC: [0xB765], NFD: [0x1104, 0x1175, 0x11AC], NFKC: [0xB765], NFKD: [0x1104, 0x1175, 0x11AC] },
+{ source: [0xB766], NFC: [0xB766], NFD: [0x1104, 0x1175, 0x11AD], NFKC: [0xB766], NFKD: [0x1104, 0x1175, 0x11AD] },
+{ source: [0xB767], NFC: [0xB767], NFD: [0x1104, 0x1175, 0x11AE], NFKC: [0xB767], NFKD: [0x1104, 0x1175, 0x11AE] },
+{ source: [0xB768], NFC: [0xB768], NFD: [0x1104, 0x1175, 0x11AF], NFKC: [0xB768], NFKD: [0x1104, 0x1175, 0x11AF] },
+{ source: [0xB769], NFC: [0xB769], NFD: [0x1104, 0x1175, 0x11B0], NFKC: [0xB769], NFKD: [0x1104, 0x1175, 0x11B0] },
+{ source: [0xB76A], NFC: [0xB76A], NFD: [0x1104, 0x1175, 0x11B1], NFKC: [0xB76A], NFKD: [0x1104, 0x1175, 0x11B1] },
+{ source: [0xB76B], NFC: [0xB76B], NFD: [0x1104, 0x1175, 0x11B2], NFKC: [0xB76B], NFKD: [0x1104, 0x1175, 0x11B2] },
+{ source: [0xB76C], NFC: [0xB76C], NFD: [0x1104, 0x1175, 0x11B3], NFKC: [0xB76C], NFKD: [0x1104, 0x1175, 0x11B3] },
+{ source: [0xB76D], NFC: [0xB76D], NFD: [0x1104, 0x1175, 0x11B4], NFKC: [0xB76D], NFKD: [0x1104, 0x1175, 0x11B4] },
+{ source: [0xB76E], NFC: [0xB76E], NFD: [0x1104, 0x1175, 0x11B5], NFKC: [0xB76E], NFKD: [0x1104, 0x1175, 0x11B5] },
+{ source: [0xB76F], NFC: [0xB76F], NFD: [0x1104, 0x1175, 0x11B6], NFKC: [0xB76F], NFKD: [0x1104, 0x1175, 0x11B6] },
+{ source: [0xB770], NFC: [0xB770], NFD: [0x1104, 0x1175, 0x11B7], NFKC: [0xB770], NFKD: [0x1104, 0x1175, 0x11B7] },
+{ source: [0xB771], NFC: [0xB771], NFD: [0x1104, 0x1175, 0x11B8], NFKC: [0xB771], NFKD: [0x1104, 0x1175, 0x11B8] },
+{ source: [0xB772], NFC: [0xB772], NFD: [0x1104, 0x1175, 0x11B9], NFKC: [0xB772], NFKD: [0x1104, 0x1175, 0x11B9] },
+{ source: [0xB773], NFC: [0xB773], NFD: [0x1104, 0x1175, 0x11BA], NFKC: [0xB773], NFKD: [0x1104, 0x1175, 0x11BA] },
+{ source: [0xB774], NFC: [0xB774], NFD: [0x1104, 0x1175, 0x11BB], NFKC: [0xB774], NFKD: [0x1104, 0x1175, 0x11BB] },
+{ source: [0xB775], NFC: [0xB775], NFD: [0x1104, 0x1175, 0x11BC], NFKC: [0xB775], NFKD: [0x1104, 0x1175, 0x11BC] },
+{ source: [0xB776], NFC: [0xB776], NFD: [0x1104, 0x1175, 0x11BD], NFKC: [0xB776], NFKD: [0x1104, 0x1175, 0x11BD] },
+{ source: [0xB777], NFC: [0xB777], NFD: [0x1104, 0x1175, 0x11BE], NFKC: [0xB777], NFKD: [0x1104, 0x1175, 0x11BE] },
+{ source: [0xB778], NFC: [0xB778], NFD: [0x1104, 0x1175, 0x11BF], NFKC: [0xB778], NFKD: [0x1104, 0x1175, 0x11BF] },
+{ source: [0xB779], NFC: [0xB779], NFD: [0x1104, 0x1175, 0x11C0], NFKC: [0xB779], NFKD: [0x1104, 0x1175, 0x11C0] },
+{ source: [0xB77A], NFC: [0xB77A], NFD: [0x1104, 0x1175, 0x11C1], NFKC: [0xB77A], NFKD: [0x1104, 0x1175, 0x11C1] },
+{ source: [0xB77B], NFC: [0xB77B], NFD: [0x1104, 0x1175, 0x11C2], NFKC: [0xB77B], NFKD: [0x1104, 0x1175, 0x11C2] },
+{ source: [0xB77C], NFC: [0xB77C], NFD: [0x1105, 0x1161], NFKC: [0xB77C], NFKD: [0x1105, 0x1161] },
+{ source: [0xB77D], NFC: [0xB77D], NFD: [0x1105, 0x1161, 0x11A8], NFKC: [0xB77D], NFKD: [0x1105, 0x1161, 0x11A8] },
+{ source: [0xB77E], NFC: [0xB77E], NFD: [0x1105, 0x1161, 0x11A9], NFKC: [0xB77E], NFKD: [0x1105, 0x1161, 0x11A9] },
+{ source: [0xB77F], NFC: [0xB77F], NFD: [0x1105, 0x1161, 0x11AA], NFKC: [0xB77F], NFKD: [0x1105, 0x1161, 0x11AA] },
+{ source: [0xB780], NFC: [0xB780], NFD: [0x1105, 0x1161, 0x11AB], NFKC: [0xB780], NFKD: [0x1105, 0x1161, 0x11AB] },
+{ source: [0xB781], NFC: [0xB781], NFD: [0x1105, 0x1161, 0x11AC], NFKC: [0xB781], NFKD: [0x1105, 0x1161, 0x11AC] },
+{ source: [0xB782], NFC: [0xB782], NFD: [0x1105, 0x1161, 0x11AD], NFKC: [0xB782], NFKD: [0x1105, 0x1161, 0x11AD] },
+{ source: [0xB783], NFC: [0xB783], NFD: [0x1105, 0x1161, 0x11AE], NFKC: [0xB783], NFKD: [0x1105, 0x1161, 0x11AE] },
+{ source: [0xB784], NFC: [0xB784], NFD: [0x1105, 0x1161, 0x11AF], NFKC: [0xB784], NFKD: [0x1105, 0x1161, 0x11AF] },
+{ source: [0xB785], NFC: [0xB785], NFD: [0x1105, 0x1161, 0x11B0], NFKC: [0xB785], NFKD: [0x1105, 0x1161, 0x11B0] },
+{ source: [0xB786], NFC: [0xB786], NFD: [0x1105, 0x1161, 0x11B1], NFKC: [0xB786], NFKD: [0x1105, 0x1161, 0x11B1] },
+{ source: [0xB787], NFC: [0xB787], NFD: [0x1105, 0x1161, 0x11B2], NFKC: [0xB787], NFKD: [0x1105, 0x1161, 0x11B2] },
+{ source: [0xB788], NFC: [0xB788], NFD: [0x1105, 0x1161, 0x11B3], NFKC: [0xB788], NFKD: [0x1105, 0x1161, 0x11B3] },
+{ source: [0xB789], NFC: [0xB789], NFD: [0x1105, 0x1161, 0x11B4], NFKC: [0xB789], NFKD: [0x1105, 0x1161, 0x11B4] },
+{ source: [0xB78A], NFC: [0xB78A], NFD: [0x1105, 0x1161, 0x11B5], NFKC: [0xB78A], NFKD: [0x1105, 0x1161, 0x11B5] },
+{ source: [0xB78B], NFC: [0xB78B], NFD: [0x1105, 0x1161, 0x11B6], NFKC: [0xB78B], NFKD: [0x1105, 0x1161, 0x11B6] },
+{ source: [0xB78C], NFC: [0xB78C], NFD: [0x1105, 0x1161, 0x11B7], NFKC: [0xB78C], NFKD: [0x1105, 0x1161, 0x11B7] },
+{ source: [0xB78D], NFC: [0xB78D], NFD: [0x1105, 0x1161, 0x11B8], NFKC: [0xB78D], NFKD: [0x1105, 0x1161, 0x11B8] },
+{ source: [0xB78E], NFC: [0xB78E], NFD: [0x1105, 0x1161, 0x11B9], NFKC: [0xB78E], NFKD: [0x1105, 0x1161, 0x11B9] },
+{ source: [0xB78F], NFC: [0xB78F], NFD: [0x1105, 0x1161, 0x11BA], NFKC: [0xB78F], NFKD: [0x1105, 0x1161, 0x11BA] },
+{ source: [0xB790], NFC: [0xB790], NFD: [0x1105, 0x1161, 0x11BB], NFKC: [0xB790], NFKD: [0x1105, 0x1161, 0x11BB] },
+{ source: [0xB791], NFC: [0xB791], NFD: [0x1105, 0x1161, 0x11BC], NFKC: [0xB791], NFKD: [0x1105, 0x1161, 0x11BC] },
+{ source: [0xB792], NFC: [0xB792], NFD: [0x1105, 0x1161, 0x11BD], NFKC: [0xB792], NFKD: [0x1105, 0x1161, 0x11BD] },
+{ source: [0xB793], NFC: [0xB793], NFD: [0x1105, 0x1161, 0x11BE], NFKC: [0xB793], NFKD: [0x1105, 0x1161, 0x11BE] },
+{ source: [0xB794], NFC: [0xB794], NFD: [0x1105, 0x1161, 0x11BF], NFKC: [0xB794], NFKD: [0x1105, 0x1161, 0x11BF] },
+{ source: [0xB795], NFC: [0xB795], NFD: [0x1105, 0x1161, 0x11C0], NFKC: [0xB795], NFKD: [0x1105, 0x1161, 0x11C0] },
+{ source: [0xB796], NFC: [0xB796], NFD: [0x1105, 0x1161, 0x11C1], NFKC: [0xB796], NFKD: [0x1105, 0x1161, 0x11C1] },
+{ source: [0xB797], NFC: [0xB797], NFD: [0x1105, 0x1161, 0x11C2], NFKC: [0xB797], NFKD: [0x1105, 0x1161, 0x11C2] },
+{ source: [0xB798], NFC: [0xB798], NFD: [0x1105, 0x1162], NFKC: [0xB798], NFKD: [0x1105, 0x1162] },
+{ source: [0xB799], NFC: [0xB799], NFD: [0x1105, 0x1162, 0x11A8], NFKC: [0xB799], NFKD: [0x1105, 0x1162, 0x11A8] },
+{ source: [0xB79A], NFC: [0xB79A], NFD: [0x1105, 0x1162, 0x11A9], NFKC: [0xB79A], NFKD: [0x1105, 0x1162, 0x11A9] },
+{ source: [0xB79B], NFC: [0xB79B], NFD: [0x1105, 0x1162, 0x11AA], NFKC: [0xB79B], NFKD: [0x1105, 0x1162, 0x11AA] },
+{ source: [0xB79C], NFC: [0xB79C], NFD: [0x1105, 0x1162, 0x11AB], NFKC: [0xB79C], NFKD: [0x1105, 0x1162, 0x11AB] },
+{ source: [0xB79D], NFC: [0xB79D], NFD: [0x1105, 0x1162, 0x11AC], NFKC: [0xB79D], NFKD: [0x1105, 0x1162, 0x11AC] },
+{ source: [0xB79E], NFC: [0xB79E], NFD: [0x1105, 0x1162, 0x11AD], NFKC: [0xB79E], NFKD: [0x1105, 0x1162, 0x11AD] },
+{ source: [0xB79F], NFC: [0xB79F], NFD: [0x1105, 0x1162, 0x11AE], NFKC: [0xB79F], NFKD: [0x1105, 0x1162, 0x11AE] },
+{ source: [0xB7A0], NFC: [0xB7A0], NFD: [0x1105, 0x1162, 0x11AF], NFKC: [0xB7A0], NFKD: [0x1105, 0x1162, 0x11AF] },
+{ source: [0xB7A1], NFC: [0xB7A1], NFD: [0x1105, 0x1162, 0x11B0], NFKC: [0xB7A1], NFKD: [0x1105, 0x1162, 0x11B0] },
+{ source: [0xB7A2], NFC: [0xB7A2], NFD: [0x1105, 0x1162, 0x11B1], NFKC: [0xB7A2], NFKD: [0x1105, 0x1162, 0x11B1] },
+{ source: [0xB7A3], NFC: [0xB7A3], NFD: [0x1105, 0x1162, 0x11B2], NFKC: [0xB7A3], NFKD: [0x1105, 0x1162, 0x11B2] },
+{ source: [0xB7A4], NFC: [0xB7A4], NFD: [0x1105, 0x1162, 0x11B3], NFKC: [0xB7A4], NFKD: [0x1105, 0x1162, 0x11B3] },
+{ source: [0xB7A5], NFC: [0xB7A5], NFD: [0x1105, 0x1162, 0x11B4], NFKC: [0xB7A5], NFKD: [0x1105, 0x1162, 0x11B4] },
+{ source: [0xB7A6], NFC: [0xB7A6], NFD: [0x1105, 0x1162, 0x11B5], NFKC: [0xB7A6], NFKD: [0x1105, 0x1162, 0x11B5] },
+{ source: [0xB7A7], NFC: [0xB7A7], NFD: [0x1105, 0x1162, 0x11B6], NFKC: [0xB7A7], NFKD: [0x1105, 0x1162, 0x11B6] },
+{ source: [0xB7A8], NFC: [0xB7A8], NFD: [0x1105, 0x1162, 0x11B7], NFKC: [0xB7A8], NFKD: [0x1105, 0x1162, 0x11B7] },
+{ source: [0xB7A9], NFC: [0xB7A9], NFD: [0x1105, 0x1162, 0x11B8], NFKC: [0xB7A9], NFKD: [0x1105, 0x1162, 0x11B8] },
+{ source: [0xB7AA], NFC: [0xB7AA], NFD: [0x1105, 0x1162, 0x11B9], NFKC: [0xB7AA], NFKD: [0x1105, 0x1162, 0x11B9] },
+{ source: [0xB7AB], NFC: [0xB7AB], NFD: [0x1105, 0x1162, 0x11BA], NFKC: [0xB7AB], NFKD: [0x1105, 0x1162, 0x11BA] },
+{ source: [0xB7AC], NFC: [0xB7AC], NFD: [0x1105, 0x1162, 0x11BB], NFKC: [0xB7AC], NFKD: [0x1105, 0x1162, 0x11BB] },
+{ source: [0xB7AD], NFC: [0xB7AD], NFD: [0x1105, 0x1162, 0x11BC], NFKC: [0xB7AD], NFKD: [0x1105, 0x1162, 0x11BC] },
+{ source: [0xB7AE], NFC: [0xB7AE], NFD: [0x1105, 0x1162, 0x11BD], NFKC: [0xB7AE], NFKD: [0x1105, 0x1162, 0x11BD] },
+{ source: [0xB7AF], NFC: [0xB7AF], NFD: [0x1105, 0x1162, 0x11BE], NFKC: [0xB7AF], NFKD: [0x1105, 0x1162, 0x11BE] },
+{ source: [0xB7B0], NFC: [0xB7B0], NFD: [0x1105, 0x1162, 0x11BF], NFKC: [0xB7B0], NFKD: [0x1105, 0x1162, 0x11BF] },
+{ source: [0xB7B1], NFC: [0xB7B1], NFD: [0x1105, 0x1162, 0x11C0], NFKC: [0xB7B1], NFKD: [0x1105, 0x1162, 0x11C0] },
+{ source: [0xB7B2], NFC: [0xB7B2], NFD: [0x1105, 0x1162, 0x11C1], NFKC: [0xB7B2], NFKD: [0x1105, 0x1162, 0x11C1] },
+{ source: [0xB7B3], NFC: [0xB7B3], NFD: [0x1105, 0x1162, 0x11C2], NFKC: [0xB7B3], NFKD: [0x1105, 0x1162, 0x11C2] },
+{ source: [0xB7B4], NFC: [0xB7B4], NFD: [0x1105, 0x1163], NFKC: [0xB7B4], NFKD: [0x1105, 0x1163] },
+{ source: [0xB7B5], NFC: [0xB7B5], NFD: [0x1105, 0x1163, 0x11A8], NFKC: [0xB7B5], NFKD: [0x1105, 0x1163, 0x11A8] },
+{ source: [0xB7B6], NFC: [0xB7B6], NFD: [0x1105, 0x1163, 0x11A9], NFKC: [0xB7B6], NFKD: [0x1105, 0x1163, 0x11A9] },
+{ source: [0xB7B7], NFC: [0xB7B7], NFD: [0x1105, 0x1163, 0x11AA], NFKC: [0xB7B7], NFKD: [0x1105, 0x1163, 0x11AA] },
+{ source: [0xB7B8], NFC: [0xB7B8], NFD: [0x1105, 0x1163, 0x11AB], NFKC: [0xB7B8], NFKD: [0x1105, 0x1163, 0x11AB] },
+{ source: [0xB7B9], NFC: [0xB7B9], NFD: [0x1105, 0x1163, 0x11AC], NFKC: [0xB7B9], NFKD: [0x1105, 0x1163, 0x11AC] },
+{ source: [0xB7BA], NFC: [0xB7BA], NFD: [0x1105, 0x1163, 0x11AD], NFKC: [0xB7BA], NFKD: [0x1105, 0x1163, 0x11AD] },
+{ source: [0xB7BB], NFC: [0xB7BB], NFD: [0x1105, 0x1163, 0x11AE], NFKC: [0xB7BB], NFKD: [0x1105, 0x1163, 0x11AE] },
+{ source: [0xB7BC], NFC: [0xB7BC], NFD: [0x1105, 0x1163, 0x11AF], NFKC: [0xB7BC], NFKD: [0x1105, 0x1163, 0x11AF] },
+{ source: [0xB7BD], NFC: [0xB7BD], NFD: [0x1105, 0x1163, 0x11B0], NFKC: [0xB7BD], NFKD: [0x1105, 0x1163, 0x11B0] },
+{ source: [0xB7BE], NFC: [0xB7BE], NFD: [0x1105, 0x1163, 0x11B1], NFKC: [0xB7BE], NFKD: [0x1105, 0x1163, 0x11B1] },
+{ source: [0xB7BF], NFC: [0xB7BF], NFD: [0x1105, 0x1163, 0x11B2], NFKC: [0xB7BF], NFKD: [0x1105, 0x1163, 0x11B2] },
+{ source: [0xB7C0], NFC: [0xB7C0], NFD: [0x1105, 0x1163, 0x11B3], NFKC: [0xB7C0], NFKD: [0x1105, 0x1163, 0x11B3] },
+{ source: [0xB7C1], NFC: [0xB7C1], NFD: [0x1105, 0x1163, 0x11B4], NFKC: [0xB7C1], NFKD: [0x1105, 0x1163, 0x11B4] },
+{ source: [0xB7C2], NFC: [0xB7C2], NFD: [0x1105, 0x1163, 0x11B5], NFKC: [0xB7C2], NFKD: [0x1105, 0x1163, 0x11B5] },
+{ source: [0xB7C3], NFC: [0xB7C3], NFD: [0x1105, 0x1163, 0x11B6], NFKC: [0xB7C3], NFKD: [0x1105, 0x1163, 0x11B6] },
+{ source: [0xB7C4], NFC: [0xB7C4], NFD: [0x1105, 0x1163, 0x11B7], NFKC: [0xB7C4], NFKD: [0x1105, 0x1163, 0x11B7] },
+{ source: [0xB7C5], NFC: [0xB7C5], NFD: [0x1105, 0x1163, 0x11B8], NFKC: [0xB7C5], NFKD: [0x1105, 0x1163, 0x11B8] },
+{ source: [0xB7C6], NFC: [0xB7C6], NFD: [0x1105, 0x1163, 0x11B9], NFKC: [0xB7C6], NFKD: [0x1105, 0x1163, 0x11B9] },
+{ source: [0xB7C7], NFC: [0xB7C7], NFD: [0x1105, 0x1163, 0x11BA], NFKC: [0xB7C7], NFKD: [0x1105, 0x1163, 0x11BA] },
+{ source: [0xB7C8], NFC: [0xB7C8], NFD: [0x1105, 0x1163, 0x11BB], NFKC: [0xB7C8], NFKD: [0x1105, 0x1163, 0x11BB] },
+{ source: [0xB7C9], NFC: [0xB7C9], NFD: [0x1105, 0x1163, 0x11BC], NFKC: [0xB7C9], NFKD: [0x1105, 0x1163, 0x11BC] },
+{ source: [0xB7CA], NFC: [0xB7CA], NFD: [0x1105, 0x1163, 0x11BD], NFKC: [0xB7CA], NFKD: [0x1105, 0x1163, 0x11BD] },
+{ source: [0xB7CB], NFC: [0xB7CB], NFD: [0x1105, 0x1163, 0x11BE], NFKC: [0xB7CB], NFKD: [0x1105, 0x1163, 0x11BE] },
+{ source: [0xB7CC], NFC: [0xB7CC], NFD: [0x1105, 0x1163, 0x11BF], NFKC: [0xB7CC], NFKD: [0x1105, 0x1163, 0x11BF] },
+{ source: [0xB7CD], NFC: [0xB7CD], NFD: [0x1105, 0x1163, 0x11C0], NFKC: [0xB7CD], NFKD: [0x1105, 0x1163, 0x11C0] },
+{ source: [0xB7CE], NFC: [0xB7CE], NFD: [0x1105, 0x1163, 0x11C1], NFKC: [0xB7CE], NFKD: [0x1105, 0x1163, 0x11C1] },
+{ source: [0xB7CF], NFC: [0xB7CF], NFD: [0x1105, 0x1163, 0x11C2], NFKC: [0xB7CF], NFKD: [0x1105, 0x1163, 0x11C2] },
+{ source: [0xB7D0], NFC: [0xB7D0], NFD: [0x1105, 0x1164], NFKC: [0xB7D0], NFKD: [0x1105, 0x1164] },
+{ source: [0xB7D1], NFC: [0xB7D1], NFD: [0x1105, 0x1164, 0x11A8], NFKC: [0xB7D1], NFKD: [0x1105, 0x1164, 0x11A8] },
+{ source: [0xB7D2], NFC: [0xB7D2], NFD: [0x1105, 0x1164, 0x11A9], NFKC: [0xB7D2], NFKD: [0x1105, 0x1164, 0x11A9] },
+{ source: [0xB7D3], NFC: [0xB7D3], NFD: [0x1105, 0x1164, 0x11AA], NFKC: [0xB7D3], NFKD: [0x1105, 0x1164, 0x11AA] },
+{ source: [0xB7D4], NFC: [0xB7D4], NFD: [0x1105, 0x1164, 0x11AB], NFKC: [0xB7D4], NFKD: [0x1105, 0x1164, 0x11AB] },
+{ source: [0xB7D5], NFC: [0xB7D5], NFD: [0x1105, 0x1164, 0x11AC], NFKC: [0xB7D5], NFKD: [0x1105, 0x1164, 0x11AC] },
+{ source: [0xB7D6], NFC: [0xB7D6], NFD: [0x1105, 0x1164, 0x11AD], NFKC: [0xB7D6], NFKD: [0x1105, 0x1164, 0x11AD] },
+{ source: [0xB7D7], NFC: [0xB7D7], NFD: [0x1105, 0x1164, 0x11AE], NFKC: [0xB7D7], NFKD: [0x1105, 0x1164, 0x11AE] },
+{ source: [0xB7D8], NFC: [0xB7D8], NFD: [0x1105, 0x1164, 0x11AF], NFKC: [0xB7D8], NFKD: [0x1105, 0x1164, 0x11AF] },
+{ source: [0xB7D9], NFC: [0xB7D9], NFD: [0x1105, 0x1164, 0x11B0], NFKC: [0xB7D9], NFKD: [0x1105, 0x1164, 0x11B0] },
+{ source: [0xB7DA], NFC: [0xB7DA], NFD: [0x1105, 0x1164, 0x11B1], NFKC: [0xB7DA], NFKD: [0x1105, 0x1164, 0x11B1] },
+{ source: [0xB7DB], NFC: [0xB7DB], NFD: [0x1105, 0x1164, 0x11B2], NFKC: [0xB7DB], NFKD: [0x1105, 0x1164, 0x11B2] },
+{ source: [0xB7DC], NFC: [0xB7DC], NFD: [0x1105, 0x1164, 0x11B3], NFKC: [0xB7DC], NFKD: [0x1105, 0x1164, 0x11B3] },
+{ source: [0xB7DD], NFC: [0xB7DD], NFD: [0x1105, 0x1164, 0x11B4], NFKC: [0xB7DD], NFKD: [0x1105, 0x1164, 0x11B4] },
+{ source: [0xB7DE], NFC: [0xB7DE], NFD: [0x1105, 0x1164, 0x11B5], NFKC: [0xB7DE], NFKD: [0x1105, 0x1164, 0x11B5] },
+{ source: [0xB7DF], NFC: [0xB7DF], NFD: [0x1105, 0x1164, 0x11B6], NFKC: [0xB7DF], NFKD: [0x1105, 0x1164, 0x11B6] },
+{ source: [0xB7E0], NFC: [0xB7E0], NFD: [0x1105, 0x1164, 0x11B7], NFKC: [0xB7E0], NFKD: [0x1105, 0x1164, 0x11B7] },
+{ source: [0xB7E1], NFC: [0xB7E1], NFD: [0x1105, 0x1164, 0x11B8], NFKC: [0xB7E1], NFKD: [0x1105, 0x1164, 0x11B8] },
+{ source: [0xB7E2], NFC: [0xB7E2], NFD: [0x1105, 0x1164, 0x11B9], NFKC: [0xB7E2], NFKD: [0x1105, 0x1164, 0x11B9] },
+{ source: [0xB7E3], NFC: [0xB7E3], NFD: [0x1105, 0x1164, 0x11BA], NFKC: [0xB7E3], NFKD: [0x1105, 0x1164, 0x11BA] },
+{ source: [0xB7E4], NFC: [0xB7E4], NFD: [0x1105, 0x1164, 0x11BB], NFKC: [0xB7E4], NFKD: [0x1105, 0x1164, 0x11BB] },
+{ source: [0xB7E5], NFC: [0xB7E5], NFD: [0x1105, 0x1164, 0x11BC], NFKC: [0xB7E5], NFKD: [0x1105, 0x1164, 0x11BC] },
+{ source: [0xB7E6], NFC: [0xB7E6], NFD: [0x1105, 0x1164, 0x11BD], NFKC: [0xB7E6], NFKD: [0x1105, 0x1164, 0x11BD] },
+{ source: [0xB7E7], NFC: [0xB7E7], NFD: [0x1105, 0x1164, 0x11BE], NFKC: [0xB7E7], NFKD: [0x1105, 0x1164, 0x11BE] },
+{ source: [0xB7E8], NFC: [0xB7E8], NFD: [0x1105, 0x1164, 0x11BF], NFKC: [0xB7E8], NFKD: [0x1105, 0x1164, 0x11BF] },
+{ source: [0xB7E9], NFC: [0xB7E9], NFD: [0x1105, 0x1164, 0x11C0], NFKC: [0xB7E9], NFKD: [0x1105, 0x1164, 0x11C0] },
+{ source: [0xB7EA], NFC: [0xB7EA], NFD: [0x1105, 0x1164, 0x11C1], NFKC: [0xB7EA], NFKD: [0x1105, 0x1164, 0x11C1] },
+{ source: [0xB7EB], NFC: [0xB7EB], NFD: [0x1105, 0x1164, 0x11C2], NFKC: [0xB7EB], NFKD: [0x1105, 0x1164, 0x11C2] },
+{ source: [0xB7EC], NFC: [0xB7EC], NFD: [0x1105, 0x1165], NFKC: [0xB7EC], NFKD: [0x1105, 0x1165] },
+{ source: [0xB7ED], NFC: [0xB7ED], NFD: [0x1105, 0x1165, 0x11A8], NFKC: [0xB7ED], NFKD: [0x1105, 0x1165, 0x11A8] },
+{ source: [0xB7EE], NFC: [0xB7EE], NFD: [0x1105, 0x1165, 0x11A9], NFKC: [0xB7EE], NFKD: [0x1105, 0x1165, 0x11A9] },
+{ source: [0xB7EF], NFC: [0xB7EF], NFD: [0x1105, 0x1165, 0x11AA], NFKC: [0xB7EF], NFKD: [0x1105, 0x1165, 0x11AA] },
+{ source: [0xB7F0], NFC: [0xB7F0], NFD: [0x1105, 0x1165, 0x11AB], NFKC: [0xB7F0], NFKD: [0x1105, 0x1165, 0x11AB] },
+{ source: [0xB7F1], NFC: [0xB7F1], NFD: [0x1105, 0x1165, 0x11AC], NFKC: [0xB7F1], NFKD: [0x1105, 0x1165, 0x11AC] },
+{ source: [0xB7F2], NFC: [0xB7F2], NFD: [0x1105, 0x1165, 0x11AD], NFKC: [0xB7F2], NFKD: [0x1105, 0x1165, 0x11AD] },
+{ source: [0xB7F3], NFC: [0xB7F3], NFD: [0x1105, 0x1165, 0x11AE], NFKC: [0xB7F3], NFKD: [0x1105, 0x1165, 0x11AE] },
+{ source: [0xB7F4], NFC: [0xB7F4], NFD: [0x1105, 0x1165, 0x11AF], NFKC: [0xB7F4], NFKD: [0x1105, 0x1165, 0x11AF] },
+{ source: [0xB7F5], NFC: [0xB7F5], NFD: [0x1105, 0x1165, 0x11B0], NFKC: [0xB7F5], NFKD: [0x1105, 0x1165, 0x11B0] },
+{ source: [0xB7F6], NFC: [0xB7F6], NFD: [0x1105, 0x1165, 0x11B1], NFKC: [0xB7F6], NFKD: [0x1105, 0x1165, 0x11B1] },
+{ source: [0xB7F7], NFC: [0xB7F7], NFD: [0x1105, 0x1165, 0x11B2], NFKC: [0xB7F7], NFKD: [0x1105, 0x1165, 0x11B2] },
+{ source: [0xB7F8], NFC: [0xB7F8], NFD: [0x1105, 0x1165, 0x11B3], NFKC: [0xB7F8], NFKD: [0x1105, 0x1165, 0x11B3] },
+{ source: [0xB7F9], NFC: [0xB7F9], NFD: [0x1105, 0x1165, 0x11B4], NFKC: [0xB7F9], NFKD: [0x1105, 0x1165, 0x11B4] },
+{ source: [0xB7FA], NFC: [0xB7FA], NFD: [0x1105, 0x1165, 0x11B5], NFKC: [0xB7FA], NFKD: [0x1105, 0x1165, 0x11B5] },
+{ source: [0xB7FB], NFC: [0xB7FB], NFD: [0x1105, 0x1165, 0x11B6], NFKC: [0xB7FB], NFKD: [0x1105, 0x1165, 0x11B6] },
+{ source: [0xB7FC], NFC: [0xB7FC], NFD: [0x1105, 0x1165, 0x11B7], NFKC: [0xB7FC], NFKD: [0x1105, 0x1165, 0x11B7] },
+{ source: [0xB7FD], NFC: [0xB7FD], NFD: [0x1105, 0x1165, 0x11B8], NFKC: [0xB7FD], NFKD: [0x1105, 0x1165, 0x11B8] },
+{ source: [0xB7FE], NFC: [0xB7FE], NFD: [0x1105, 0x1165, 0x11B9], NFKC: [0xB7FE], NFKD: [0x1105, 0x1165, 0x11B9] },
+{ source: [0xB7FF], NFC: [0xB7FF], NFD: [0x1105, 0x1165, 0x11BA], NFKC: [0xB7FF], NFKD: [0x1105, 0x1165, 0x11BA] },
+{ source: [0xB800], NFC: [0xB800], NFD: [0x1105, 0x1165, 0x11BB], NFKC: [0xB800], NFKD: [0x1105, 0x1165, 0x11BB] },
+{ source: [0xB801], NFC: [0xB801], NFD: [0x1105, 0x1165, 0x11BC], NFKC: [0xB801], NFKD: [0x1105, 0x1165, 0x11BC] },
+{ source: [0xB802], NFC: [0xB802], NFD: [0x1105, 0x1165, 0x11BD], NFKC: [0xB802], NFKD: [0x1105, 0x1165, 0x11BD] },
+{ source: [0xB803], NFC: [0xB803], NFD: [0x1105, 0x1165, 0x11BE], NFKC: [0xB803], NFKD: [0x1105, 0x1165, 0x11BE] },
+{ source: [0xB804], NFC: [0xB804], NFD: [0x1105, 0x1165, 0x11BF], NFKC: [0xB804], NFKD: [0x1105, 0x1165, 0x11BF] },
+{ source: [0xB805], NFC: [0xB805], NFD: [0x1105, 0x1165, 0x11C0], NFKC: [0xB805], NFKD: [0x1105, 0x1165, 0x11C0] },
+{ source: [0xB806], NFC: [0xB806], NFD: [0x1105, 0x1165, 0x11C1], NFKC: [0xB806], NFKD: [0x1105, 0x1165, 0x11C1] },
+{ source: [0xB807], NFC: [0xB807], NFD: [0x1105, 0x1165, 0x11C2], NFKC: [0xB807], NFKD: [0x1105, 0x1165, 0x11C2] },
+{ source: [0xB808], NFC: [0xB808], NFD: [0x1105, 0x1166], NFKC: [0xB808], NFKD: [0x1105, 0x1166] },
+{ source: [0xB809], NFC: [0xB809], NFD: [0x1105, 0x1166, 0x11A8], NFKC: [0xB809], NFKD: [0x1105, 0x1166, 0x11A8] },
+{ source: [0xB80A], NFC: [0xB80A], NFD: [0x1105, 0x1166, 0x11A9], NFKC: [0xB80A], NFKD: [0x1105, 0x1166, 0x11A9] },
+{ source: [0xB80B], NFC: [0xB80B], NFD: [0x1105, 0x1166, 0x11AA], NFKC: [0xB80B], NFKD: [0x1105, 0x1166, 0x11AA] },
+{ source: [0xB80C], NFC: [0xB80C], NFD: [0x1105, 0x1166, 0x11AB], NFKC: [0xB80C], NFKD: [0x1105, 0x1166, 0x11AB] },
+{ source: [0xB80D], NFC: [0xB80D], NFD: [0x1105, 0x1166, 0x11AC], NFKC: [0xB80D], NFKD: [0x1105, 0x1166, 0x11AC] },
+{ source: [0xB80E], NFC: [0xB80E], NFD: [0x1105, 0x1166, 0x11AD], NFKC: [0xB80E], NFKD: [0x1105, 0x1166, 0x11AD] },
+{ source: [0xB80F], NFC: [0xB80F], NFD: [0x1105, 0x1166, 0x11AE], NFKC: [0xB80F], NFKD: [0x1105, 0x1166, 0x11AE] },
+{ source: [0xB810], NFC: [0xB810], NFD: [0x1105, 0x1166, 0x11AF], NFKC: [0xB810], NFKD: [0x1105, 0x1166, 0x11AF] },
+{ source: [0xB811], NFC: [0xB811], NFD: [0x1105, 0x1166, 0x11B0], NFKC: [0xB811], NFKD: [0x1105, 0x1166, 0x11B0] },
+{ source: [0xB812], NFC: [0xB812], NFD: [0x1105, 0x1166, 0x11B1], NFKC: [0xB812], NFKD: [0x1105, 0x1166, 0x11B1] },
+{ source: [0xB813], NFC: [0xB813], NFD: [0x1105, 0x1166, 0x11B2], NFKC: [0xB813], NFKD: [0x1105, 0x1166, 0x11B2] },
+{ source: [0xB814], NFC: [0xB814], NFD: [0x1105, 0x1166, 0x11B3], NFKC: [0xB814], NFKD: [0x1105, 0x1166, 0x11B3] },
+{ source: [0xB815], NFC: [0xB815], NFD: [0x1105, 0x1166, 0x11B4], NFKC: [0xB815], NFKD: [0x1105, 0x1166, 0x11B4] },
+{ source: [0xB816], NFC: [0xB816], NFD: [0x1105, 0x1166, 0x11B5], NFKC: [0xB816], NFKD: [0x1105, 0x1166, 0x11B5] },
+{ source: [0xB817], NFC: [0xB817], NFD: [0x1105, 0x1166, 0x11B6], NFKC: [0xB817], NFKD: [0x1105, 0x1166, 0x11B6] },
+{ source: [0xB818], NFC: [0xB818], NFD: [0x1105, 0x1166, 0x11B7], NFKC: [0xB818], NFKD: [0x1105, 0x1166, 0x11B7] },
+{ source: [0xB819], NFC: [0xB819], NFD: [0x1105, 0x1166, 0x11B8], NFKC: [0xB819], NFKD: [0x1105, 0x1166, 0x11B8] },
+{ source: [0xB81A], NFC: [0xB81A], NFD: [0x1105, 0x1166, 0x11B9], NFKC: [0xB81A], NFKD: [0x1105, 0x1166, 0x11B9] },
+{ source: [0xB81B], NFC: [0xB81B], NFD: [0x1105, 0x1166, 0x11BA], NFKC: [0xB81B], NFKD: [0x1105, 0x1166, 0x11BA] },
+{ source: [0xB81C], NFC: [0xB81C], NFD: [0x1105, 0x1166, 0x11BB], NFKC: [0xB81C], NFKD: [0x1105, 0x1166, 0x11BB] },
+{ source: [0xB81D], NFC: [0xB81D], NFD: [0x1105, 0x1166, 0x11BC], NFKC: [0xB81D], NFKD: [0x1105, 0x1166, 0x11BC] },
+{ source: [0xB81E], NFC: [0xB81E], NFD: [0x1105, 0x1166, 0x11BD], NFKC: [0xB81E], NFKD: [0x1105, 0x1166, 0x11BD] },
+{ source: [0xB81F], NFC: [0xB81F], NFD: [0x1105, 0x1166, 0x11BE], NFKC: [0xB81F], NFKD: [0x1105, 0x1166, 0x11BE] },
+{ source: [0xB820], NFC: [0xB820], NFD: [0x1105, 0x1166, 0x11BF], NFKC: [0xB820], NFKD: [0x1105, 0x1166, 0x11BF] },
+{ source: [0xB821], NFC: [0xB821], NFD: [0x1105, 0x1166, 0x11C0], NFKC: [0xB821], NFKD: [0x1105, 0x1166, 0x11C0] },
+{ source: [0xB822], NFC: [0xB822], NFD: [0x1105, 0x1166, 0x11C1], NFKC: [0xB822], NFKD: [0x1105, 0x1166, 0x11C1] },
+{ source: [0xB823], NFC: [0xB823], NFD: [0x1105, 0x1166, 0x11C2], NFKC: [0xB823], NFKD: [0x1105, 0x1166, 0x11C2] },
+{ source: [0xB824], NFC: [0xB824], NFD: [0x1105, 0x1167], NFKC: [0xB824], NFKD: [0x1105, 0x1167] },
+{ source: [0xB825], NFC: [0xB825], NFD: [0x1105, 0x1167, 0x11A8], NFKC: [0xB825], NFKD: [0x1105, 0x1167, 0x11A8] },
+{ source: [0xB826], NFC: [0xB826], NFD: [0x1105, 0x1167, 0x11A9], NFKC: [0xB826], NFKD: [0x1105, 0x1167, 0x11A9] },
+{ source: [0xB827], NFC: [0xB827], NFD: [0x1105, 0x1167, 0x11AA], NFKC: [0xB827], NFKD: [0x1105, 0x1167, 0x11AA] },
+{ source: [0xB828], NFC: [0xB828], NFD: [0x1105, 0x1167, 0x11AB], NFKC: [0xB828], NFKD: [0x1105, 0x1167, 0x11AB] },
+{ source: [0xB829], NFC: [0xB829], NFD: [0x1105, 0x1167, 0x11AC], NFKC: [0xB829], NFKD: [0x1105, 0x1167, 0x11AC] },
+{ source: [0xB82A], NFC: [0xB82A], NFD: [0x1105, 0x1167, 0x11AD], NFKC: [0xB82A], NFKD: [0x1105, 0x1167, 0x11AD] },
+{ source: [0xB82B], NFC: [0xB82B], NFD: [0x1105, 0x1167, 0x11AE], NFKC: [0xB82B], NFKD: [0x1105, 0x1167, 0x11AE] },
+{ source: [0xB82C], NFC: [0xB82C], NFD: [0x1105, 0x1167, 0x11AF], NFKC: [0xB82C], NFKD: [0x1105, 0x1167, 0x11AF] },
+{ source: [0xB82D], NFC: [0xB82D], NFD: [0x1105, 0x1167, 0x11B0], NFKC: [0xB82D], NFKD: [0x1105, 0x1167, 0x11B0] },
+{ source: [0xB82E], NFC: [0xB82E], NFD: [0x1105, 0x1167, 0x11B1], NFKC: [0xB82E], NFKD: [0x1105, 0x1167, 0x11B1] },
+{ source: [0xB82F], NFC: [0xB82F], NFD: [0x1105, 0x1167, 0x11B2], NFKC: [0xB82F], NFKD: [0x1105, 0x1167, 0x11B2] },
+{ source: [0xB830], NFC: [0xB830], NFD: [0x1105, 0x1167, 0x11B3], NFKC: [0xB830], NFKD: [0x1105, 0x1167, 0x11B3] },
+{ source: [0xB831], NFC: [0xB831], NFD: [0x1105, 0x1167, 0x11B4], NFKC: [0xB831], NFKD: [0x1105, 0x1167, 0x11B4] },
+{ source: [0xB832], NFC: [0xB832], NFD: [0x1105, 0x1167, 0x11B5], NFKC: [0xB832], NFKD: [0x1105, 0x1167, 0x11B5] },
+{ source: [0xB833], NFC: [0xB833], NFD: [0x1105, 0x1167, 0x11B6], NFKC: [0xB833], NFKD: [0x1105, 0x1167, 0x11B6] },
+{ source: [0xB834], NFC: [0xB834], NFD: [0x1105, 0x1167, 0x11B7], NFKC: [0xB834], NFKD: [0x1105, 0x1167, 0x11B7] },
+{ source: [0xB835], NFC: [0xB835], NFD: [0x1105, 0x1167, 0x11B8], NFKC: [0xB835], NFKD: [0x1105, 0x1167, 0x11B8] },
+{ source: [0xB836], NFC: [0xB836], NFD: [0x1105, 0x1167, 0x11B9], NFKC: [0xB836], NFKD: [0x1105, 0x1167, 0x11B9] },
+{ source: [0xB837], NFC: [0xB837], NFD: [0x1105, 0x1167, 0x11BA], NFKC: [0xB837], NFKD: [0x1105, 0x1167, 0x11BA] },
+{ source: [0xB838], NFC: [0xB838], NFD: [0x1105, 0x1167, 0x11BB], NFKC: [0xB838], NFKD: [0x1105, 0x1167, 0x11BB] },
+{ source: [0xB839], NFC: [0xB839], NFD: [0x1105, 0x1167, 0x11BC], NFKC: [0xB839], NFKD: [0x1105, 0x1167, 0x11BC] },
+{ source: [0xB83A], NFC: [0xB83A], NFD: [0x1105, 0x1167, 0x11BD], NFKC: [0xB83A], NFKD: [0x1105, 0x1167, 0x11BD] },
+{ source: [0xB83B], NFC: [0xB83B], NFD: [0x1105, 0x1167, 0x11BE], NFKC: [0xB83B], NFKD: [0x1105, 0x1167, 0x11BE] },
+{ source: [0xB83C], NFC: [0xB83C], NFD: [0x1105, 0x1167, 0x11BF], NFKC: [0xB83C], NFKD: [0x1105, 0x1167, 0x11BF] },
+{ source: [0xB83D], NFC: [0xB83D], NFD: [0x1105, 0x1167, 0x11C0], NFKC: [0xB83D], NFKD: [0x1105, 0x1167, 0x11C0] },
+{ source: [0xB83E], NFC: [0xB83E], NFD: [0x1105, 0x1167, 0x11C1], NFKC: [0xB83E], NFKD: [0x1105, 0x1167, 0x11C1] },
+{ source: [0xB83F], NFC: [0xB83F], NFD: [0x1105, 0x1167, 0x11C2], NFKC: [0xB83F], NFKD: [0x1105, 0x1167, 0x11C2] },
+{ source: [0xB840], NFC: [0xB840], NFD: [0x1105, 0x1168], NFKC: [0xB840], NFKD: [0x1105, 0x1168] },
+{ source: [0xB841], NFC: [0xB841], NFD: [0x1105, 0x1168, 0x11A8], NFKC: [0xB841], NFKD: [0x1105, 0x1168, 0x11A8] },
+{ source: [0xB842], NFC: [0xB842], NFD: [0x1105, 0x1168, 0x11A9], NFKC: [0xB842], NFKD: [0x1105, 0x1168, 0x11A9] },
+{ source: [0xB843], NFC: [0xB843], NFD: [0x1105, 0x1168, 0x11AA], NFKC: [0xB843], NFKD: [0x1105, 0x1168, 0x11AA] },
+{ source: [0xB844], NFC: [0xB844], NFD: [0x1105, 0x1168, 0x11AB], NFKC: [0xB844], NFKD: [0x1105, 0x1168, 0x11AB] },
+{ source: [0xB845], NFC: [0xB845], NFD: [0x1105, 0x1168, 0x11AC], NFKC: [0xB845], NFKD: [0x1105, 0x1168, 0x11AC] },
+{ source: [0xB846], NFC: [0xB846], NFD: [0x1105, 0x1168, 0x11AD], NFKC: [0xB846], NFKD: [0x1105, 0x1168, 0x11AD] },
+{ source: [0xB847], NFC: [0xB847], NFD: [0x1105, 0x1168, 0x11AE], NFKC: [0xB847], NFKD: [0x1105, 0x1168, 0x11AE] },
+{ source: [0xB848], NFC: [0xB848], NFD: [0x1105, 0x1168, 0x11AF], NFKC: [0xB848], NFKD: [0x1105, 0x1168, 0x11AF] },
+{ source: [0xB849], NFC: [0xB849], NFD: [0x1105, 0x1168, 0x11B0], NFKC: [0xB849], NFKD: [0x1105, 0x1168, 0x11B0] },
+{ source: [0xB84A], NFC: [0xB84A], NFD: [0x1105, 0x1168, 0x11B1], NFKC: [0xB84A], NFKD: [0x1105, 0x1168, 0x11B1] },
+{ source: [0xB84B], NFC: [0xB84B], NFD: [0x1105, 0x1168, 0x11B2], NFKC: [0xB84B], NFKD: [0x1105, 0x1168, 0x11B2] },
+{ source: [0xB84C], NFC: [0xB84C], NFD: [0x1105, 0x1168, 0x11B3], NFKC: [0xB84C], NFKD: [0x1105, 0x1168, 0x11B3] },
+{ source: [0xB84D], NFC: [0xB84D], NFD: [0x1105, 0x1168, 0x11B4], NFKC: [0xB84D], NFKD: [0x1105, 0x1168, 0x11B4] },
+{ source: [0xB84E], NFC: [0xB84E], NFD: [0x1105, 0x1168, 0x11B5], NFKC: [0xB84E], NFKD: [0x1105, 0x1168, 0x11B5] },
+{ source: [0xB84F], NFC: [0xB84F], NFD: [0x1105, 0x1168, 0x11B6], NFKC: [0xB84F], NFKD: [0x1105, 0x1168, 0x11B6] },
+{ source: [0xB850], NFC: [0xB850], NFD: [0x1105, 0x1168, 0x11B7], NFKC: [0xB850], NFKD: [0x1105, 0x1168, 0x11B7] },
+{ source: [0xB851], NFC: [0xB851], NFD: [0x1105, 0x1168, 0x11B8], NFKC: [0xB851], NFKD: [0x1105, 0x1168, 0x11B8] },
+{ source: [0xB852], NFC: [0xB852], NFD: [0x1105, 0x1168, 0x11B9], NFKC: [0xB852], NFKD: [0x1105, 0x1168, 0x11B9] },
+{ source: [0xB853], NFC: [0xB853], NFD: [0x1105, 0x1168, 0x11BA], NFKC: [0xB853], NFKD: [0x1105, 0x1168, 0x11BA] },
+{ source: [0xB854], NFC: [0xB854], NFD: [0x1105, 0x1168, 0x11BB], NFKC: [0xB854], NFKD: [0x1105, 0x1168, 0x11BB] },
+{ source: [0xB855], NFC: [0xB855], NFD: [0x1105, 0x1168, 0x11BC], NFKC: [0xB855], NFKD: [0x1105, 0x1168, 0x11BC] },
+{ source: [0xB856], NFC: [0xB856], NFD: [0x1105, 0x1168, 0x11BD], NFKC: [0xB856], NFKD: [0x1105, 0x1168, 0x11BD] },
+{ source: [0xB857], NFC: [0xB857], NFD: [0x1105, 0x1168, 0x11BE], NFKC: [0xB857], NFKD: [0x1105, 0x1168, 0x11BE] },
+{ source: [0xB858], NFC: [0xB858], NFD: [0x1105, 0x1168, 0x11BF], NFKC: [0xB858], NFKD: [0x1105, 0x1168, 0x11BF] },
+{ source: [0xB859], NFC: [0xB859], NFD: [0x1105, 0x1168, 0x11C0], NFKC: [0xB859], NFKD: [0x1105, 0x1168, 0x11C0] },
+{ source: [0xB85A], NFC: [0xB85A], NFD: [0x1105, 0x1168, 0x11C1], NFKC: [0xB85A], NFKD: [0x1105, 0x1168, 0x11C1] },
+{ source: [0xB85B], NFC: [0xB85B], NFD: [0x1105, 0x1168, 0x11C2], NFKC: [0xB85B], NFKD: [0x1105, 0x1168, 0x11C2] },
+{ source: [0xB85C], NFC: [0xB85C], NFD: [0x1105, 0x1169], NFKC: [0xB85C], NFKD: [0x1105, 0x1169] },
+{ source: [0xB85D], NFC: [0xB85D], NFD: [0x1105, 0x1169, 0x11A8], NFKC: [0xB85D], NFKD: [0x1105, 0x1169, 0x11A8] },
+{ source: [0xB85E], NFC: [0xB85E], NFD: [0x1105, 0x1169, 0x11A9], NFKC: [0xB85E], NFKD: [0x1105, 0x1169, 0x11A9] },
+{ source: [0xB85F], NFC: [0xB85F], NFD: [0x1105, 0x1169, 0x11AA], NFKC: [0xB85F], NFKD: [0x1105, 0x1169, 0x11AA] },
+{ source: [0xB860], NFC: [0xB860], NFD: [0x1105, 0x1169, 0x11AB], NFKC: [0xB860], NFKD: [0x1105, 0x1169, 0x11AB] },
+{ source: [0xB861], NFC: [0xB861], NFD: [0x1105, 0x1169, 0x11AC], NFKC: [0xB861], NFKD: [0x1105, 0x1169, 0x11AC] },
+{ source: [0xB862], NFC: [0xB862], NFD: [0x1105, 0x1169, 0x11AD], NFKC: [0xB862], NFKD: [0x1105, 0x1169, 0x11AD] },
+{ source: [0xB863], NFC: [0xB863], NFD: [0x1105, 0x1169, 0x11AE], NFKC: [0xB863], NFKD: [0x1105, 0x1169, 0x11AE] },
+{ source: [0xB864], NFC: [0xB864], NFD: [0x1105, 0x1169, 0x11AF], NFKC: [0xB864], NFKD: [0x1105, 0x1169, 0x11AF] },
+{ source: [0xB865], NFC: [0xB865], NFD: [0x1105, 0x1169, 0x11B0], NFKC: [0xB865], NFKD: [0x1105, 0x1169, 0x11B0] },
+{ source: [0xB866], NFC: [0xB866], NFD: [0x1105, 0x1169, 0x11B1], NFKC: [0xB866], NFKD: [0x1105, 0x1169, 0x11B1] },
+{ source: [0xB867], NFC: [0xB867], NFD: [0x1105, 0x1169, 0x11B2], NFKC: [0xB867], NFKD: [0x1105, 0x1169, 0x11B2] },
+{ source: [0xB868], NFC: [0xB868], NFD: [0x1105, 0x1169, 0x11B3], NFKC: [0xB868], NFKD: [0x1105, 0x1169, 0x11B3] },
+{ source: [0xB869], NFC: [0xB869], NFD: [0x1105, 0x1169, 0x11B4], NFKC: [0xB869], NFKD: [0x1105, 0x1169, 0x11B4] },
+{ source: [0xB86A], NFC: [0xB86A], NFD: [0x1105, 0x1169, 0x11B5], NFKC: [0xB86A], NFKD: [0x1105, 0x1169, 0x11B5] },
+{ source: [0xB86B], NFC: [0xB86B], NFD: [0x1105, 0x1169, 0x11B6], NFKC: [0xB86B], NFKD: [0x1105, 0x1169, 0x11B6] },
+{ source: [0xB86C], NFC: [0xB86C], NFD: [0x1105, 0x1169, 0x11B7], NFKC: [0xB86C], NFKD: [0x1105, 0x1169, 0x11B7] },
+{ source: [0xB86D], NFC: [0xB86D], NFD: [0x1105, 0x1169, 0x11B8], NFKC: [0xB86D], NFKD: [0x1105, 0x1169, 0x11B8] },
+{ source: [0xB86E], NFC: [0xB86E], NFD: [0x1105, 0x1169, 0x11B9], NFKC: [0xB86E], NFKD: [0x1105, 0x1169, 0x11B9] },
+{ source: [0xB86F], NFC: [0xB86F], NFD: [0x1105, 0x1169, 0x11BA], NFKC: [0xB86F], NFKD: [0x1105, 0x1169, 0x11BA] },
+{ source: [0xB870], NFC: [0xB870], NFD: [0x1105, 0x1169, 0x11BB], NFKC: [0xB870], NFKD: [0x1105, 0x1169, 0x11BB] },
+{ source: [0xB871], NFC: [0xB871], NFD: [0x1105, 0x1169, 0x11BC], NFKC: [0xB871], NFKD: [0x1105, 0x1169, 0x11BC] },
+{ source: [0xB872], NFC: [0xB872], NFD: [0x1105, 0x1169, 0x11BD], NFKC: [0xB872], NFKD: [0x1105, 0x1169, 0x11BD] },
+{ source: [0xB873], NFC: [0xB873], NFD: [0x1105, 0x1169, 0x11BE], NFKC: [0xB873], NFKD: [0x1105, 0x1169, 0x11BE] },
+{ source: [0xB874], NFC: [0xB874], NFD: [0x1105, 0x1169, 0x11BF], NFKC: [0xB874], NFKD: [0x1105, 0x1169, 0x11BF] },
+{ source: [0xB875], NFC: [0xB875], NFD: [0x1105, 0x1169, 0x11C0], NFKC: [0xB875], NFKD: [0x1105, 0x1169, 0x11C0] },
+{ source: [0xB876], NFC: [0xB876], NFD: [0x1105, 0x1169, 0x11C1], NFKC: [0xB876], NFKD: [0x1105, 0x1169, 0x11C1] },
+{ source: [0xB877], NFC: [0xB877], NFD: [0x1105, 0x1169, 0x11C2], NFKC: [0xB877], NFKD: [0x1105, 0x1169, 0x11C2] },
+{ source: [0xB878], NFC: [0xB878], NFD: [0x1105, 0x116A], NFKC: [0xB878], NFKD: [0x1105, 0x116A] },
+{ source: [0xB879], NFC: [0xB879], NFD: [0x1105, 0x116A, 0x11A8], NFKC: [0xB879], NFKD: [0x1105, 0x116A, 0x11A8] },
+{ source: [0xB87A], NFC: [0xB87A], NFD: [0x1105, 0x116A, 0x11A9], NFKC: [0xB87A], NFKD: [0x1105, 0x116A, 0x11A9] },
+{ source: [0xB87B], NFC: [0xB87B], NFD: [0x1105, 0x116A, 0x11AA], NFKC: [0xB87B], NFKD: [0x1105, 0x116A, 0x11AA] },
+{ source: [0xB87C], NFC: [0xB87C], NFD: [0x1105, 0x116A, 0x11AB], NFKC: [0xB87C], NFKD: [0x1105, 0x116A, 0x11AB] },
+{ source: [0xB87D], NFC: [0xB87D], NFD: [0x1105, 0x116A, 0x11AC], NFKC: [0xB87D], NFKD: [0x1105, 0x116A, 0x11AC] },
+{ source: [0xB87E], NFC: [0xB87E], NFD: [0x1105, 0x116A, 0x11AD], NFKC: [0xB87E], NFKD: [0x1105, 0x116A, 0x11AD] },
+{ source: [0xB87F], NFC: [0xB87F], NFD: [0x1105, 0x116A, 0x11AE], NFKC: [0xB87F], NFKD: [0x1105, 0x116A, 0x11AE] },
+{ source: [0xB880], NFC: [0xB880], NFD: [0x1105, 0x116A, 0x11AF], NFKC: [0xB880], NFKD: [0x1105, 0x116A, 0x11AF] },
+{ source: [0xB881], NFC: [0xB881], NFD: [0x1105, 0x116A, 0x11B0], NFKC: [0xB881], NFKD: [0x1105, 0x116A, 0x11B0] },
+{ source: [0xB882], NFC: [0xB882], NFD: [0x1105, 0x116A, 0x11B1], NFKC: [0xB882], NFKD: [0x1105, 0x116A, 0x11B1] },
+{ source: [0xB883], NFC: [0xB883], NFD: [0x1105, 0x116A, 0x11B2], NFKC: [0xB883], NFKD: [0x1105, 0x116A, 0x11B2] },
+{ source: [0xB884], NFC: [0xB884], NFD: [0x1105, 0x116A, 0x11B3], NFKC: [0xB884], NFKD: [0x1105, 0x116A, 0x11B3] },
+{ source: [0xB885], NFC: [0xB885], NFD: [0x1105, 0x116A, 0x11B4], NFKC: [0xB885], NFKD: [0x1105, 0x116A, 0x11B4] },
+{ source: [0xB886], NFC: [0xB886], NFD: [0x1105, 0x116A, 0x11B5], NFKC: [0xB886], NFKD: [0x1105, 0x116A, 0x11B5] },
+{ source: [0xB887], NFC: [0xB887], NFD: [0x1105, 0x116A, 0x11B6], NFKC: [0xB887], NFKD: [0x1105, 0x116A, 0x11B6] },
+{ source: [0xB888], NFC: [0xB888], NFD: [0x1105, 0x116A, 0x11B7], NFKC: [0xB888], NFKD: [0x1105, 0x116A, 0x11B7] },
+{ source: [0xB889], NFC: [0xB889], NFD: [0x1105, 0x116A, 0x11B8], NFKC: [0xB889], NFKD: [0x1105, 0x116A, 0x11B8] },
+{ source: [0xB88A], NFC: [0xB88A], NFD: [0x1105, 0x116A, 0x11B9], NFKC: [0xB88A], NFKD: [0x1105, 0x116A, 0x11B9] },
+{ source: [0xB88B], NFC: [0xB88B], NFD: [0x1105, 0x116A, 0x11BA], NFKC: [0xB88B], NFKD: [0x1105, 0x116A, 0x11BA] },
+{ source: [0xB88C], NFC: [0xB88C], NFD: [0x1105, 0x116A, 0x11BB], NFKC: [0xB88C], NFKD: [0x1105, 0x116A, 0x11BB] },
+{ source: [0xB88D], NFC: [0xB88D], NFD: [0x1105, 0x116A, 0x11BC], NFKC: [0xB88D], NFKD: [0x1105, 0x116A, 0x11BC] },
+{ source: [0xB88E], NFC: [0xB88E], NFD: [0x1105, 0x116A, 0x11BD], NFKC: [0xB88E], NFKD: [0x1105, 0x116A, 0x11BD] },
+{ source: [0xB88F], NFC: [0xB88F], NFD: [0x1105, 0x116A, 0x11BE], NFKC: [0xB88F], NFKD: [0x1105, 0x116A, 0x11BE] },
+{ source: [0xB890], NFC: [0xB890], NFD: [0x1105, 0x116A, 0x11BF], NFKC: [0xB890], NFKD: [0x1105, 0x116A, 0x11BF] },
+{ source: [0xB891], NFC: [0xB891], NFD: [0x1105, 0x116A, 0x11C0], NFKC: [0xB891], NFKD: [0x1105, 0x116A, 0x11C0] },
+{ source: [0xB892], NFC: [0xB892], NFD: [0x1105, 0x116A, 0x11C1], NFKC: [0xB892], NFKD: [0x1105, 0x116A, 0x11C1] },
+{ source: [0xB893], NFC: [0xB893], NFD: [0x1105, 0x116A, 0x11C2], NFKC: [0xB893], NFKD: [0x1105, 0x116A, 0x11C2] },
+{ source: [0xB894], NFC: [0xB894], NFD: [0x1105, 0x116B], NFKC: [0xB894], NFKD: [0x1105, 0x116B] },
+{ source: [0xB895], NFC: [0xB895], NFD: [0x1105, 0x116B, 0x11A8], NFKC: [0xB895], NFKD: [0x1105, 0x116B, 0x11A8] },
+{ source: [0xB896], NFC: [0xB896], NFD: [0x1105, 0x116B, 0x11A9], NFKC: [0xB896], NFKD: [0x1105, 0x116B, 0x11A9] },
+{ source: [0xB897], NFC: [0xB897], NFD: [0x1105, 0x116B, 0x11AA], NFKC: [0xB897], NFKD: [0x1105, 0x116B, 0x11AA] },
+{ source: [0xB898], NFC: [0xB898], NFD: [0x1105, 0x116B, 0x11AB], NFKC: [0xB898], NFKD: [0x1105, 0x116B, 0x11AB] },
+{ source: [0xB899], NFC: [0xB899], NFD: [0x1105, 0x116B, 0x11AC], NFKC: [0xB899], NFKD: [0x1105, 0x116B, 0x11AC] },
+{ source: [0xB89A], NFC: [0xB89A], NFD: [0x1105, 0x116B, 0x11AD], NFKC: [0xB89A], NFKD: [0x1105, 0x116B, 0x11AD] },
+{ source: [0xB89B], NFC: [0xB89B], NFD: [0x1105, 0x116B, 0x11AE], NFKC: [0xB89B], NFKD: [0x1105, 0x116B, 0x11AE] },
+{ source: [0xB89C], NFC: [0xB89C], NFD: [0x1105, 0x116B, 0x11AF], NFKC: [0xB89C], NFKD: [0x1105, 0x116B, 0x11AF] },
+{ source: [0xB89D], NFC: [0xB89D], NFD: [0x1105, 0x116B, 0x11B0], NFKC: [0xB89D], NFKD: [0x1105, 0x116B, 0x11B0] },
+{ source: [0xB89E], NFC: [0xB89E], NFD: [0x1105, 0x116B, 0x11B1], NFKC: [0xB89E], NFKD: [0x1105, 0x116B, 0x11B1] },
+{ source: [0xB89F], NFC: [0xB89F], NFD: [0x1105, 0x116B, 0x11B2], NFKC: [0xB89F], NFKD: [0x1105, 0x116B, 0x11B2] },
+{ source: [0xB8A0], NFC: [0xB8A0], NFD: [0x1105, 0x116B, 0x11B3], NFKC: [0xB8A0], NFKD: [0x1105, 0x116B, 0x11B3] },
+{ source: [0xB8A1], NFC: [0xB8A1], NFD: [0x1105, 0x116B, 0x11B4], NFKC: [0xB8A1], NFKD: [0x1105, 0x116B, 0x11B4] },
+{ source: [0xB8A2], NFC: [0xB8A2], NFD: [0x1105, 0x116B, 0x11B5], NFKC: [0xB8A2], NFKD: [0x1105, 0x116B, 0x11B5] },
+{ source: [0xB8A3], NFC: [0xB8A3], NFD: [0x1105, 0x116B, 0x11B6], NFKC: [0xB8A3], NFKD: [0x1105, 0x116B, 0x11B6] },
+{ source: [0xB8A4], NFC: [0xB8A4], NFD: [0x1105, 0x116B, 0x11B7], NFKC: [0xB8A4], NFKD: [0x1105, 0x116B, 0x11B7] },
+{ source: [0xB8A5], NFC: [0xB8A5], NFD: [0x1105, 0x116B, 0x11B8], NFKC: [0xB8A5], NFKD: [0x1105, 0x116B, 0x11B8] },
+{ source: [0xB8A6], NFC: [0xB8A6], NFD: [0x1105, 0x116B, 0x11B9], NFKC: [0xB8A6], NFKD: [0x1105, 0x116B, 0x11B9] },
+{ source: [0xB8A7], NFC: [0xB8A7], NFD: [0x1105, 0x116B, 0x11BA], NFKC: [0xB8A7], NFKD: [0x1105, 0x116B, 0x11BA] },
+{ source: [0xB8A8], NFC: [0xB8A8], NFD: [0x1105, 0x116B, 0x11BB], NFKC: [0xB8A8], NFKD: [0x1105, 0x116B, 0x11BB] },
+{ source: [0xB8A9], NFC: [0xB8A9], NFD: [0x1105, 0x116B, 0x11BC], NFKC: [0xB8A9], NFKD: [0x1105, 0x116B, 0x11BC] },
+{ source: [0xB8AA], NFC: [0xB8AA], NFD: [0x1105, 0x116B, 0x11BD], NFKC: [0xB8AA], NFKD: [0x1105, 0x116B, 0x11BD] },
+{ source: [0xB8AB], NFC: [0xB8AB], NFD: [0x1105, 0x116B, 0x11BE], NFKC: [0xB8AB], NFKD: [0x1105, 0x116B, 0x11BE] },
+{ source: [0xB8AC], NFC: [0xB8AC], NFD: [0x1105, 0x116B, 0x11BF], NFKC: [0xB8AC], NFKD: [0x1105, 0x116B, 0x11BF] },
+{ source: [0xB8AD], NFC: [0xB8AD], NFD: [0x1105, 0x116B, 0x11C0], NFKC: [0xB8AD], NFKD: [0x1105, 0x116B, 0x11C0] },
+{ source: [0xB8AE], NFC: [0xB8AE], NFD: [0x1105, 0x116B, 0x11C1], NFKC: [0xB8AE], NFKD: [0x1105, 0x116B, 0x11C1] },
+{ source: [0xB8AF], NFC: [0xB8AF], NFD: [0x1105, 0x116B, 0x11C2], NFKC: [0xB8AF], NFKD: [0x1105, 0x116B, 0x11C2] },
+{ source: [0xB8B0], NFC: [0xB8B0], NFD: [0x1105, 0x116C], NFKC: [0xB8B0], NFKD: [0x1105, 0x116C] },
+{ source: [0xB8B1], NFC: [0xB8B1], NFD: [0x1105, 0x116C, 0x11A8], NFKC: [0xB8B1], NFKD: [0x1105, 0x116C, 0x11A8] },
+{ source: [0xB8B2], NFC: [0xB8B2], NFD: [0x1105, 0x116C, 0x11A9], NFKC: [0xB8B2], NFKD: [0x1105, 0x116C, 0x11A9] },
+{ source: [0xB8B3], NFC: [0xB8B3], NFD: [0x1105, 0x116C, 0x11AA], NFKC: [0xB8B3], NFKD: [0x1105, 0x116C, 0x11AA] },
+{ source: [0xB8B4], NFC: [0xB8B4], NFD: [0x1105, 0x116C, 0x11AB], NFKC: [0xB8B4], NFKD: [0x1105, 0x116C, 0x11AB] },
+{ source: [0xB8B5], NFC: [0xB8B5], NFD: [0x1105, 0x116C, 0x11AC], NFKC: [0xB8B5], NFKD: [0x1105, 0x116C, 0x11AC] },
+{ source: [0xB8B6], NFC: [0xB8B6], NFD: [0x1105, 0x116C, 0x11AD], NFKC: [0xB8B6], NFKD: [0x1105, 0x116C, 0x11AD] },
+{ source: [0xB8B7], NFC: [0xB8B7], NFD: [0x1105, 0x116C, 0x11AE], NFKC: [0xB8B7], NFKD: [0x1105, 0x116C, 0x11AE] },
+{ source: [0xB8B8], NFC: [0xB8B8], NFD: [0x1105, 0x116C, 0x11AF], NFKC: [0xB8B8], NFKD: [0x1105, 0x116C, 0x11AF] },
+{ source: [0xB8B9], NFC: [0xB8B9], NFD: [0x1105, 0x116C, 0x11B0], NFKC: [0xB8B9], NFKD: [0x1105, 0x116C, 0x11B0] },
+{ source: [0xB8BA], NFC: [0xB8BA], NFD: [0x1105, 0x116C, 0x11B1], NFKC: [0xB8BA], NFKD: [0x1105, 0x116C, 0x11B1] },
+{ source: [0xB8BB], NFC: [0xB8BB], NFD: [0x1105, 0x116C, 0x11B2], NFKC: [0xB8BB], NFKD: [0x1105, 0x116C, 0x11B2] },
+{ source: [0xB8BC], NFC: [0xB8BC], NFD: [0x1105, 0x116C, 0x11B3], NFKC: [0xB8BC], NFKD: [0x1105, 0x116C, 0x11B3] },
+{ source: [0xB8BD], NFC: [0xB8BD], NFD: [0x1105, 0x116C, 0x11B4], NFKC: [0xB8BD], NFKD: [0x1105, 0x116C, 0x11B4] },
+{ source: [0xB8BE], NFC: [0xB8BE], NFD: [0x1105, 0x116C, 0x11B5], NFKC: [0xB8BE], NFKD: [0x1105, 0x116C, 0x11B5] },
+{ source: [0xB8BF], NFC: [0xB8BF], NFD: [0x1105, 0x116C, 0x11B6], NFKC: [0xB8BF], NFKD: [0x1105, 0x116C, 0x11B6] },
+{ source: [0xB8C0], NFC: [0xB8C0], NFD: [0x1105, 0x116C, 0x11B7], NFKC: [0xB8C0], NFKD: [0x1105, 0x116C, 0x11B7] },
+{ source: [0xB8C1], NFC: [0xB8C1], NFD: [0x1105, 0x116C, 0x11B8], NFKC: [0xB8C1], NFKD: [0x1105, 0x116C, 0x11B8] },
+{ source: [0xB8C2], NFC: [0xB8C2], NFD: [0x1105, 0x116C, 0x11B9], NFKC: [0xB8C2], NFKD: [0x1105, 0x116C, 0x11B9] },
+{ source: [0xB8C3], NFC: [0xB8C3], NFD: [0x1105, 0x116C, 0x11BA], NFKC: [0xB8C3], NFKD: [0x1105, 0x116C, 0x11BA] },
+{ source: [0xB8C4], NFC: [0xB8C4], NFD: [0x1105, 0x116C, 0x11BB], NFKC: [0xB8C4], NFKD: [0x1105, 0x116C, 0x11BB] },
+{ source: [0xB8C5], NFC: [0xB8C5], NFD: [0x1105, 0x116C, 0x11BC], NFKC: [0xB8C5], NFKD: [0x1105, 0x116C, 0x11BC] },
+{ source: [0xB8C6], NFC: [0xB8C6], NFD: [0x1105, 0x116C, 0x11BD], NFKC: [0xB8C6], NFKD: [0x1105, 0x116C, 0x11BD] },
+{ source: [0xB8C7], NFC: [0xB8C7], NFD: [0x1105, 0x116C, 0x11BE], NFKC: [0xB8C7], NFKD: [0x1105, 0x116C, 0x11BE] },
+{ source: [0xB8C8], NFC: [0xB8C8], NFD: [0x1105, 0x116C, 0x11BF], NFKC: [0xB8C8], NFKD: [0x1105, 0x116C, 0x11BF] },
+{ source: [0xB8C9], NFC: [0xB8C9], NFD: [0x1105, 0x116C, 0x11C0], NFKC: [0xB8C9], NFKD: [0x1105, 0x116C, 0x11C0] },
+{ source: [0xB8CA], NFC: [0xB8CA], NFD: [0x1105, 0x116C, 0x11C1], NFKC: [0xB8CA], NFKD: [0x1105, 0x116C, 0x11C1] },
+{ source: [0xB8CB], NFC: [0xB8CB], NFD: [0x1105, 0x116C, 0x11C2], NFKC: [0xB8CB], NFKD: [0x1105, 0x116C, 0x11C2] },
+{ source: [0xB8CC], NFC: [0xB8CC], NFD: [0x1105, 0x116D], NFKC: [0xB8CC], NFKD: [0x1105, 0x116D] },
+{ source: [0xB8CD], NFC: [0xB8CD], NFD: [0x1105, 0x116D, 0x11A8], NFKC: [0xB8CD], NFKD: [0x1105, 0x116D, 0x11A8] },
+{ source: [0xB8CE], NFC: [0xB8CE], NFD: [0x1105, 0x116D, 0x11A9], NFKC: [0xB8CE], NFKD: [0x1105, 0x116D, 0x11A9] },
+{ source: [0xB8CF], NFC: [0xB8CF], NFD: [0x1105, 0x116D, 0x11AA], NFKC: [0xB8CF], NFKD: [0x1105, 0x116D, 0x11AA] },
+{ source: [0xB8D0], NFC: [0xB8D0], NFD: [0x1105, 0x116D, 0x11AB], NFKC: [0xB8D0], NFKD: [0x1105, 0x116D, 0x11AB] },
+{ source: [0xB8D1], NFC: [0xB8D1], NFD: [0x1105, 0x116D, 0x11AC], NFKC: [0xB8D1], NFKD: [0x1105, 0x116D, 0x11AC] },
+{ source: [0xB8D2], NFC: [0xB8D2], NFD: [0x1105, 0x116D, 0x11AD], NFKC: [0xB8D2], NFKD: [0x1105, 0x116D, 0x11AD] },
+{ source: [0xB8D3], NFC: [0xB8D3], NFD: [0x1105, 0x116D, 0x11AE], NFKC: [0xB8D3], NFKD: [0x1105, 0x116D, 0x11AE] },
+{ source: [0xB8D4], NFC: [0xB8D4], NFD: [0x1105, 0x116D, 0x11AF], NFKC: [0xB8D4], NFKD: [0x1105, 0x116D, 0x11AF] },
+{ source: [0xB8D5], NFC: [0xB8D5], NFD: [0x1105, 0x116D, 0x11B0], NFKC: [0xB8D5], NFKD: [0x1105, 0x116D, 0x11B0] },
+{ source: [0xB8D6], NFC: [0xB8D6], NFD: [0x1105, 0x116D, 0x11B1], NFKC: [0xB8D6], NFKD: [0x1105, 0x116D, 0x11B1] },
+{ source: [0xB8D7], NFC: [0xB8D7], NFD: [0x1105, 0x116D, 0x11B2], NFKC: [0xB8D7], NFKD: [0x1105, 0x116D, 0x11B2] },
+{ source: [0xB8D8], NFC: [0xB8D8], NFD: [0x1105, 0x116D, 0x11B3], NFKC: [0xB8D8], NFKD: [0x1105, 0x116D, 0x11B3] },
+{ source: [0xB8D9], NFC: [0xB8D9], NFD: [0x1105, 0x116D, 0x11B4], NFKC: [0xB8D9], NFKD: [0x1105, 0x116D, 0x11B4] },
+{ source: [0xB8DA], NFC: [0xB8DA], NFD: [0x1105, 0x116D, 0x11B5], NFKC: [0xB8DA], NFKD: [0x1105, 0x116D, 0x11B5] },
+{ source: [0xB8DB], NFC: [0xB8DB], NFD: [0x1105, 0x116D, 0x11B6], NFKC: [0xB8DB], NFKD: [0x1105, 0x116D, 0x11B6] },
+{ source: [0xB8DC], NFC: [0xB8DC], NFD: [0x1105, 0x116D, 0x11B7], NFKC: [0xB8DC], NFKD: [0x1105, 0x116D, 0x11B7] },
+{ source: [0xB8DD], NFC: [0xB8DD], NFD: [0x1105, 0x116D, 0x11B8], NFKC: [0xB8DD], NFKD: [0x1105, 0x116D, 0x11B8] },
+{ source: [0xB8DE], NFC: [0xB8DE], NFD: [0x1105, 0x116D, 0x11B9], NFKC: [0xB8DE], NFKD: [0x1105, 0x116D, 0x11B9] },
+{ source: [0xB8DF], NFC: [0xB8DF], NFD: [0x1105, 0x116D, 0x11BA], NFKC: [0xB8DF], NFKD: [0x1105, 0x116D, 0x11BA] },
+{ source: [0xB8E0], NFC: [0xB8E0], NFD: [0x1105, 0x116D, 0x11BB], NFKC: [0xB8E0], NFKD: [0x1105, 0x116D, 0x11BB] },
+{ source: [0xB8E1], NFC: [0xB8E1], NFD: [0x1105, 0x116D, 0x11BC], NFKC: [0xB8E1], NFKD: [0x1105, 0x116D, 0x11BC] },
+{ source: [0xB8E2], NFC: [0xB8E2], NFD: [0x1105, 0x116D, 0x11BD], NFKC: [0xB8E2], NFKD: [0x1105, 0x116D, 0x11BD] },
+{ source: [0xB8E3], NFC: [0xB8E3], NFD: [0x1105, 0x116D, 0x11BE], NFKC: [0xB8E3], NFKD: [0x1105, 0x116D, 0x11BE] },
+{ source: [0xB8E4], NFC: [0xB8E4], NFD: [0x1105, 0x116D, 0x11BF], NFKC: [0xB8E4], NFKD: [0x1105, 0x116D, 0x11BF] },
+{ source: [0xB8E5], NFC: [0xB8E5], NFD: [0x1105, 0x116D, 0x11C0], NFKC: [0xB8E5], NFKD: [0x1105, 0x116D, 0x11C0] },
+{ source: [0xB8E6], NFC: [0xB8E6], NFD: [0x1105, 0x116D, 0x11C1], NFKC: [0xB8E6], NFKD: [0x1105, 0x116D, 0x11C1] },
+{ source: [0xB8E7], NFC: [0xB8E7], NFD: [0x1105, 0x116D, 0x11C2], NFKC: [0xB8E7], NFKD: [0x1105, 0x116D, 0x11C2] },
+{ source: [0xB8E8], NFC: [0xB8E8], NFD: [0x1105, 0x116E], NFKC: [0xB8E8], NFKD: [0x1105, 0x116E] },
+{ source: [0xB8E9], NFC: [0xB8E9], NFD: [0x1105, 0x116E, 0x11A8], NFKC: [0xB8E9], NFKD: [0x1105, 0x116E, 0x11A8] },
+{ source: [0xB8EA], NFC: [0xB8EA], NFD: [0x1105, 0x116E, 0x11A9], NFKC: [0xB8EA], NFKD: [0x1105, 0x116E, 0x11A9] },
+{ source: [0xB8EB], NFC: [0xB8EB], NFD: [0x1105, 0x116E, 0x11AA], NFKC: [0xB8EB], NFKD: [0x1105, 0x116E, 0x11AA] },
+{ source: [0xB8EC], NFC: [0xB8EC], NFD: [0x1105, 0x116E, 0x11AB], NFKC: [0xB8EC], NFKD: [0x1105, 0x116E, 0x11AB] },
+{ source: [0xB8ED], NFC: [0xB8ED], NFD: [0x1105, 0x116E, 0x11AC], NFKC: [0xB8ED], NFKD: [0x1105, 0x116E, 0x11AC] },
+{ source: [0xB8EE], NFC: [0xB8EE], NFD: [0x1105, 0x116E, 0x11AD], NFKC: [0xB8EE], NFKD: [0x1105, 0x116E, 0x11AD] },
+{ source: [0xB8EF], NFC: [0xB8EF], NFD: [0x1105, 0x116E, 0x11AE], NFKC: [0xB8EF], NFKD: [0x1105, 0x116E, 0x11AE] },
+{ source: [0xB8F0], NFC: [0xB8F0], NFD: [0x1105, 0x116E, 0x11AF], NFKC: [0xB8F0], NFKD: [0x1105, 0x116E, 0x11AF] },
+{ source: [0xB8F1], NFC: [0xB8F1], NFD: [0x1105, 0x116E, 0x11B0], NFKC: [0xB8F1], NFKD: [0x1105, 0x116E, 0x11B0] },
+{ source: [0xB8F2], NFC: [0xB8F2], NFD: [0x1105, 0x116E, 0x11B1], NFKC: [0xB8F2], NFKD: [0x1105, 0x116E, 0x11B1] },
+{ source: [0xB8F3], NFC: [0xB8F3], NFD: [0x1105, 0x116E, 0x11B2], NFKC: [0xB8F3], NFKD: [0x1105, 0x116E, 0x11B2] },
+{ source: [0xB8F4], NFC: [0xB8F4], NFD: [0x1105, 0x116E, 0x11B3], NFKC: [0xB8F4], NFKD: [0x1105, 0x116E, 0x11B3] },
+{ source: [0xB8F5], NFC: [0xB8F5], NFD: [0x1105, 0x116E, 0x11B4], NFKC: [0xB8F5], NFKD: [0x1105, 0x116E, 0x11B4] },
+{ source: [0xB8F6], NFC: [0xB8F6], NFD: [0x1105, 0x116E, 0x11B5], NFKC: [0xB8F6], NFKD: [0x1105, 0x116E, 0x11B5] },
+{ source: [0xB8F7], NFC: [0xB8F7], NFD: [0x1105, 0x116E, 0x11B6], NFKC: [0xB8F7], NFKD: [0x1105, 0x116E, 0x11B6] },
+{ source: [0xB8F8], NFC: [0xB8F8], NFD: [0x1105, 0x116E, 0x11B7], NFKC: [0xB8F8], NFKD: [0x1105, 0x116E, 0x11B7] },
+{ source: [0xB8F9], NFC: [0xB8F9], NFD: [0x1105, 0x116E, 0x11B8], NFKC: [0xB8F9], NFKD: [0x1105, 0x116E, 0x11B8] },
+{ source: [0xB8FA], NFC: [0xB8FA], NFD: [0x1105, 0x116E, 0x11B9], NFKC: [0xB8FA], NFKD: [0x1105, 0x116E, 0x11B9] },
+{ source: [0xB8FB], NFC: [0xB8FB], NFD: [0x1105, 0x116E, 0x11BA], NFKC: [0xB8FB], NFKD: [0x1105, 0x116E, 0x11BA] },
+{ source: [0xB8FC], NFC: [0xB8FC], NFD: [0x1105, 0x116E, 0x11BB], NFKC: [0xB8FC], NFKD: [0x1105, 0x116E, 0x11BB] },
+{ source: [0xB8FD], NFC: [0xB8FD], NFD: [0x1105, 0x116E, 0x11BC], NFKC: [0xB8FD], NFKD: [0x1105, 0x116E, 0x11BC] },
+{ source: [0xB8FE], NFC: [0xB8FE], NFD: [0x1105, 0x116E, 0x11BD], NFKC: [0xB8FE], NFKD: [0x1105, 0x116E, 0x11BD] },
+{ source: [0xB8FF], NFC: [0xB8FF], NFD: [0x1105, 0x116E, 0x11BE], NFKC: [0xB8FF], NFKD: [0x1105, 0x116E, 0x11BE] },
+{ source: [0xB900], NFC: [0xB900], NFD: [0x1105, 0x116E, 0x11BF], NFKC: [0xB900], NFKD: [0x1105, 0x116E, 0x11BF] },
+{ source: [0xB901], NFC: [0xB901], NFD: [0x1105, 0x116E, 0x11C0], NFKC: [0xB901], NFKD: [0x1105, 0x116E, 0x11C0] },
+{ source: [0xB902], NFC: [0xB902], NFD: [0x1105, 0x116E, 0x11C1], NFKC: [0xB902], NFKD: [0x1105, 0x116E, 0x11C1] },
+{ source: [0xB903], NFC: [0xB903], NFD: [0x1105, 0x116E, 0x11C2], NFKC: [0xB903], NFKD: [0x1105, 0x116E, 0x11C2] },
+{ source: [0xB904], NFC: [0xB904], NFD: [0x1105, 0x116F], NFKC: [0xB904], NFKD: [0x1105, 0x116F] },
+{ source: [0xB905], NFC: [0xB905], NFD: [0x1105, 0x116F, 0x11A8], NFKC: [0xB905], NFKD: [0x1105, 0x116F, 0x11A8] },
+{ source: [0xB906], NFC: [0xB906], NFD: [0x1105, 0x116F, 0x11A9], NFKC: [0xB906], NFKD: [0x1105, 0x116F, 0x11A9] },
+{ source: [0xB907], NFC: [0xB907], NFD: [0x1105, 0x116F, 0x11AA], NFKC: [0xB907], NFKD: [0x1105, 0x116F, 0x11AA] },
+{ source: [0xB908], NFC: [0xB908], NFD: [0x1105, 0x116F, 0x11AB], NFKC: [0xB908], NFKD: [0x1105, 0x116F, 0x11AB] },
+{ source: [0xB909], NFC: [0xB909], NFD: [0x1105, 0x116F, 0x11AC], NFKC: [0xB909], NFKD: [0x1105, 0x116F, 0x11AC] },
+{ source: [0xB90A], NFC: [0xB90A], NFD: [0x1105, 0x116F, 0x11AD], NFKC: [0xB90A], NFKD: [0x1105, 0x116F, 0x11AD] },
+{ source: [0xB90B], NFC: [0xB90B], NFD: [0x1105, 0x116F, 0x11AE], NFKC: [0xB90B], NFKD: [0x1105, 0x116F, 0x11AE] },
+{ source: [0xB90C], NFC: [0xB90C], NFD: [0x1105, 0x116F, 0x11AF], NFKC: [0xB90C], NFKD: [0x1105, 0x116F, 0x11AF] },
+{ source: [0xB90D], NFC: [0xB90D], NFD: [0x1105, 0x116F, 0x11B0], NFKC: [0xB90D], NFKD: [0x1105, 0x116F, 0x11B0] },
+{ source: [0xB90E], NFC: [0xB90E], NFD: [0x1105, 0x116F, 0x11B1], NFKC: [0xB90E], NFKD: [0x1105, 0x116F, 0x11B1] },
+{ source: [0xB90F], NFC: [0xB90F], NFD: [0x1105, 0x116F, 0x11B2], NFKC: [0xB90F], NFKD: [0x1105, 0x116F, 0x11B2] },
+{ source: [0xB910], NFC: [0xB910], NFD: [0x1105, 0x116F, 0x11B3], NFKC: [0xB910], NFKD: [0x1105, 0x116F, 0x11B3] },
+{ source: [0xB911], NFC: [0xB911], NFD: [0x1105, 0x116F, 0x11B4], NFKC: [0xB911], NFKD: [0x1105, 0x116F, 0x11B4] },
+{ source: [0xB912], NFC: [0xB912], NFD: [0x1105, 0x116F, 0x11B5], NFKC: [0xB912], NFKD: [0x1105, 0x116F, 0x11B5] },
+{ source: [0xB913], NFC: [0xB913], NFD: [0x1105, 0x116F, 0x11B6], NFKC: [0xB913], NFKD: [0x1105, 0x116F, 0x11B6] },
+{ source: [0xB914], NFC: [0xB914], NFD: [0x1105, 0x116F, 0x11B7], NFKC: [0xB914], NFKD: [0x1105, 0x116F, 0x11B7] },
+{ source: [0xB915], NFC: [0xB915], NFD: [0x1105, 0x116F, 0x11B8], NFKC: [0xB915], NFKD: [0x1105, 0x116F, 0x11B8] },
+{ source: [0xB916], NFC: [0xB916], NFD: [0x1105, 0x116F, 0x11B9], NFKC: [0xB916], NFKD: [0x1105, 0x116F, 0x11B9] },
+{ source: [0xB917], NFC: [0xB917], NFD: [0x1105, 0x116F, 0x11BA], NFKC: [0xB917], NFKD: [0x1105, 0x116F, 0x11BA] },
+{ source: [0xB918], NFC: [0xB918], NFD: [0x1105, 0x116F, 0x11BB], NFKC: [0xB918], NFKD: [0x1105, 0x116F, 0x11BB] },
+{ source: [0xB919], NFC: [0xB919], NFD: [0x1105, 0x116F, 0x11BC], NFKC: [0xB919], NFKD: [0x1105, 0x116F, 0x11BC] },
+{ source: [0xB91A], NFC: [0xB91A], NFD: [0x1105, 0x116F, 0x11BD], NFKC: [0xB91A], NFKD: [0x1105, 0x116F, 0x11BD] },
+{ source: [0xB91B], NFC: [0xB91B], NFD: [0x1105, 0x116F, 0x11BE], NFKC: [0xB91B], NFKD: [0x1105, 0x116F, 0x11BE] },
+{ source: [0xB91C], NFC: [0xB91C], NFD: [0x1105, 0x116F, 0x11BF], NFKC: [0xB91C], NFKD: [0x1105, 0x116F, 0x11BF] },
+{ source: [0xB91D], NFC: [0xB91D], NFD: [0x1105, 0x116F, 0x11C0], NFKC: [0xB91D], NFKD: [0x1105, 0x116F, 0x11C0] },
+{ source: [0xB91E], NFC: [0xB91E], NFD: [0x1105, 0x116F, 0x11C1], NFKC: [0xB91E], NFKD: [0x1105, 0x116F, 0x11C1] },
+{ source: [0xB91F], NFC: [0xB91F], NFD: [0x1105, 0x116F, 0x11C2], NFKC: [0xB91F], NFKD: [0x1105, 0x116F, 0x11C2] },
+{ source: [0xB920], NFC: [0xB920], NFD: [0x1105, 0x1170], NFKC: [0xB920], NFKD: [0x1105, 0x1170] },
+{ source: [0xB921], NFC: [0xB921], NFD: [0x1105, 0x1170, 0x11A8], NFKC: [0xB921], NFKD: [0x1105, 0x1170, 0x11A8] },
+{ source: [0xB922], NFC: [0xB922], NFD: [0x1105, 0x1170, 0x11A9], NFKC: [0xB922], NFKD: [0x1105, 0x1170, 0x11A9] },
+{ source: [0xB923], NFC: [0xB923], NFD: [0x1105, 0x1170, 0x11AA], NFKC: [0xB923], NFKD: [0x1105, 0x1170, 0x11AA] },
+{ source: [0xB924], NFC: [0xB924], NFD: [0x1105, 0x1170, 0x11AB], NFKC: [0xB924], NFKD: [0x1105, 0x1170, 0x11AB] },
+{ source: [0xB925], NFC: [0xB925], NFD: [0x1105, 0x1170, 0x11AC], NFKC: [0xB925], NFKD: [0x1105, 0x1170, 0x11AC] },
+{ source: [0xB926], NFC: [0xB926], NFD: [0x1105, 0x1170, 0x11AD], NFKC: [0xB926], NFKD: [0x1105, 0x1170, 0x11AD] },
+{ source: [0xB927], NFC: [0xB927], NFD: [0x1105, 0x1170, 0x11AE], NFKC: [0xB927], NFKD: [0x1105, 0x1170, 0x11AE] },
+{ source: [0xB928], NFC: [0xB928], NFD: [0x1105, 0x1170, 0x11AF], NFKC: [0xB928], NFKD: [0x1105, 0x1170, 0x11AF] },
+{ source: [0xB929], NFC: [0xB929], NFD: [0x1105, 0x1170, 0x11B0], NFKC: [0xB929], NFKD: [0x1105, 0x1170, 0x11B0] },
+{ source: [0xB92A], NFC: [0xB92A], NFD: [0x1105, 0x1170, 0x11B1], NFKC: [0xB92A], NFKD: [0x1105, 0x1170, 0x11B1] },
+{ source: [0xB92B], NFC: [0xB92B], NFD: [0x1105, 0x1170, 0x11B2], NFKC: [0xB92B], NFKD: [0x1105, 0x1170, 0x11B2] },
+{ source: [0xB92C], NFC: [0xB92C], NFD: [0x1105, 0x1170, 0x11B3], NFKC: [0xB92C], NFKD: [0x1105, 0x1170, 0x11B3] },
+{ source: [0xB92D], NFC: [0xB92D], NFD: [0x1105, 0x1170, 0x11B4], NFKC: [0xB92D], NFKD: [0x1105, 0x1170, 0x11B4] },
+{ source: [0xB92E], NFC: [0xB92E], NFD: [0x1105, 0x1170, 0x11B5], NFKC: [0xB92E], NFKD: [0x1105, 0x1170, 0x11B5] },
+{ source: [0xB92F], NFC: [0xB92F], NFD: [0x1105, 0x1170, 0x11B6], NFKC: [0xB92F], NFKD: [0x1105, 0x1170, 0x11B6] },
+{ source: [0xB930], NFC: [0xB930], NFD: [0x1105, 0x1170, 0x11B7], NFKC: [0xB930], NFKD: [0x1105, 0x1170, 0x11B7] },
+{ source: [0xB931], NFC: [0xB931], NFD: [0x1105, 0x1170, 0x11B8], NFKC: [0xB931], NFKD: [0x1105, 0x1170, 0x11B8] },
+{ source: [0xB932], NFC: [0xB932], NFD: [0x1105, 0x1170, 0x11B9], NFKC: [0xB932], NFKD: [0x1105, 0x1170, 0x11B9] },
+{ source: [0xB933], NFC: [0xB933], NFD: [0x1105, 0x1170, 0x11BA], NFKC: [0xB933], NFKD: [0x1105, 0x1170, 0x11BA] },
+{ source: [0xB934], NFC: [0xB934], NFD: [0x1105, 0x1170, 0x11BB], NFKC: [0xB934], NFKD: [0x1105, 0x1170, 0x11BB] },
+{ source: [0xB935], NFC: [0xB935], NFD: [0x1105, 0x1170, 0x11BC], NFKC: [0xB935], NFKD: [0x1105, 0x1170, 0x11BC] },
+{ source: [0xB936], NFC: [0xB936], NFD: [0x1105, 0x1170, 0x11BD], NFKC: [0xB936], NFKD: [0x1105, 0x1170, 0x11BD] },
+{ source: [0xB937], NFC: [0xB937], NFD: [0x1105, 0x1170, 0x11BE], NFKC: [0xB937], NFKD: [0x1105, 0x1170, 0x11BE] },
+{ source: [0xB938], NFC: [0xB938], NFD: [0x1105, 0x1170, 0x11BF], NFKC: [0xB938], NFKD: [0x1105, 0x1170, 0x11BF] },
+{ source: [0xB939], NFC: [0xB939], NFD: [0x1105, 0x1170, 0x11C0], NFKC: [0xB939], NFKD: [0x1105, 0x1170, 0x11C0] },
+{ source: [0xB93A], NFC: [0xB93A], NFD: [0x1105, 0x1170, 0x11C1], NFKC: [0xB93A], NFKD: [0x1105, 0x1170, 0x11C1] },
+{ source: [0xB93B], NFC: [0xB93B], NFD: [0x1105, 0x1170, 0x11C2], NFKC: [0xB93B], NFKD: [0x1105, 0x1170, 0x11C2] },
+{ source: [0xB93C], NFC: [0xB93C], NFD: [0x1105, 0x1171], NFKC: [0xB93C], NFKD: [0x1105, 0x1171] },
+{ source: [0xB93D], NFC: [0xB93D], NFD: [0x1105, 0x1171, 0x11A8], NFKC: [0xB93D], NFKD: [0x1105, 0x1171, 0x11A8] },
+{ source: [0xB93E], NFC: [0xB93E], NFD: [0x1105, 0x1171, 0x11A9], NFKC: [0xB93E], NFKD: [0x1105, 0x1171, 0x11A9] },
+{ source: [0xB93F], NFC: [0xB93F], NFD: [0x1105, 0x1171, 0x11AA], NFKC: [0xB93F], NFKD: [0x1105, 0x1171, 0x11AA] },
+{ source: [0xB940], NFC: [0xB940], NFD: [0x1105, 0x1171, 0x11AB], NFKC: [0xB940], NFKD: [0x1105, 0x1171, 0x11AB] },
+{ source: [0xB941], NFC: [0xB941], NFD: [0x1105, 0x1171, 0x11AC], NFKC: [0xB941], NFKD: [0x1105, 0x1171, 0x11AC] },
+{ source: [0xB942], NFC: [0xB942], NFD: [0x1105, 0x1171, 0x11AD], NFKC: [0xB942], NFKD: [0x1105, 0x1171, 0x11AD] },
+{ source: [0xB943], NFC: [0xB943], NFD: [0x1105, 0x1171, 0x11AE], NFKC: [0xB943], NFKD: [0x1105, 0x1171, 0x11AE] },
+{ source: [0xB944], NFC: [0xB944], NFD: [0x1105, 0x1171, 0x11AF], NFKC: [0xB944], NFKD: [0x1105, 0x1171, 0x11AF] },
+{ source: [0xB945], NFC: [0xB945], NFD: [0x1105, 0x1171, 0x11B0], NFKC: [0xB945], NFKD: [0x1105, 0x1171, 0x11B0] },
+{ source: [0xB946], NFC: [0xB946], NFD: [0x1105, 0x1171, 0x11B1], NFKC: [0xB946], NFKD: [0x1105, 0x1171, 0x11B1] },
+{ source: [0xB947], NFC: [0xB947], NFD: [0x1105, 0x1171, 0x11B2], NFKC: [0xB947], NFKD: [0x1105, 0x1171, 0x11B2] },
+{ source: [0xB948], NFC: [0xB948], NFD: [0x1105, 0x1171, 0x11B3], NFKC: [0xB948], NFKD: [0x1105, 0x1171, 0x11B3] },
+{ source: [0xB949], NFC: [0xB949], NFD: [0x1105, 0x1171, 0x11B4], NFKC: [0xB949], NFKD: [0x1105, 0x1171, 0x11B4] },
+{ source: [0xB94A], NFC: [0xB94A], NFD: [0x1105, 0x1171, 0x11B5], NFKC: [0xB94A], NFKD: [0x1105, 0x1171, 0x11B5] },
+{ source: [0xB94B], NFC: [0xB94B], NFD: [0x1105, 0x1171, 0x11B6], NFKC: [0xB94B], NFKD: [0x1105, 0x1171, 0x11B6] },
+{ source: [0xB94C], NFC: [0xB94C], NFD: [0x1105, 0x1171, 0x11B7], NFKC: [0xB94C], NFKD: [0x1105, 0x1171, 0x11B7] },
+{ source: [0xB94D], NFC: [0xB94D], NFD: [0x1105, 0x1171, 0x11B8], NFKC: [0xB94D], NFKD: [0x1105, 0x1171, 0x11B8] },
+{ source: [0xB94E], NFC: [0xB94E], NFD: [0x1105, 0x1171, 0x11B9], NFKC: [0xB94E], NFKD: [0x1105, 0x1171, 0x11B9] },
+{ source: [0xB94F], NFC: [0xB94F], NFD: [0x1105, 0x1171, 0x11BA], NFKC: [0xB94F], NFKD: [0x1105, 0x1171, 0x11BA] },
+{ source: [0xB950], NFC: [0xB950], NFD: [0x1105, 0x1171, 0x11BB], NFKC: [0xB950], NFKD: [0x1105, 0x1171, 0x11BB] },
+{ source: [0xB951], NFC: [0xB951], NFD: [0x1105, 0x1171, 0x11BC], NFKC: [0xB951], NFKD: [0x1105, 0x1171, 0x11BC] },
+{ source: [0xB952], NFC: [0xB952], NFD: [0x1105, 0x1171, 0x11BD], NFKC: [0xB952], NFKD: [0x1105, 0x1171, 0x11BD] },
+{ source: [0xB953], NFC: [0xB953], NFD: [0x1105, 0x1171, 0x11BE], NFKC: [0xB953], NFKD: [0x1105, 0x1171, 0x11BE] },
+{ source: [0xB954], NFC: [0xB954], NFD: [0x1105, 0x1171, 0x11BF], NFKC: [0xB954], NFKD: [0x1105, 0x1171, 0x11BF] },
+{ source: [0xB955], NFC: [0xB955], NFD: [0x1105, 0x1171, 0x11C0], NFKC: [0xB955], NFKD: [0x1105, 0x1171, 0x11C0] },
+{ source: [0xB956], NFC: [0xB956], NFD: [0x1105, 0x1171, 0x11C1], NFKC: [0xB956], NFKD: [0x1105, 0x1171, 0x11C1] },
+{ source: [0xB957], NFC: [0xB957], NFD: [0x1105, 0x1171, 0x11C2], NFKC: [0xB957], NFKD: [0x1105, 0x1171, 0x11C2] },
+{ source: [0xB958], NFC: [0xB958], NFD: [0x1105, 0x1172], NFKC: [0xB958], NFKD: [0x1105, 0x1172] },
+{ source: [0xB959], NFC: [0xB959], NFD: [0x1105, 0x1172, 0x11A8], NFKC: [0xB959], NFKD: [0x1105, 0x1172, 0x11A8] },
+{ source: [0xB95A], NFC: [0xB95A], NFD: [0x1105, 0x1172, 0x11A9], NFKC: [0xB95A], NFKD: [0x1105, 0x1172, 0x11A9] },
+{ source: [0xB95B], NFC: [0xB95B], NFD: [0x1105, 0x1172, 0x11AA], NFKC: [0xB95B], NFKD: [0x1105, 0x1172, 0x11AA] },
+{ source: [0xB95C], NFC: [0xB95C], NFD: [0x1105, 0x1172, 0x11AB], NFKC: [0xB95C], NFKD: [0x1105, 0x1172, 0x11AB] },
+{ source: [0xB95D], NFC: [0xB95D], NFD: [0x1105, 0x1172, 0x11AC], NFKC: [0xB95D], NFKD: [0x1105, 0x1172, 0x11AC] },
+{ source: [0xB95E], NFC: [0xB95E], NFD: [0x1105, 0x1172, 0x11AD], NFKC: [0xB95E], NFKD: [0x1105, 0x1172, 0x11AD] },
+{ source: [0xB95F], NFC: [0xB95F], NFD: [0x1105, 0x1172, 0x11AE], NFKC: [0xB95F], NFKD: [0x1105, 0x1172, 0x11AE] },
+{ source: [0xB960], NFC: [0xB960], NFD: [0x1105, 0x1172, 0x11AF], NFKC: [0xB960], NFKD: [0x1105, 0x1172, 0x11AF] },
+{ source: [0xB961], NFC: [0xB961], NFD: [0x1105, 0x1172, 0x11B0], NFKC: [0xB961], NFKD: [0x1105, 0x1172, 0x11B0] },
+{ source: [0xB962], NFC: [0xB962], NFD: [0x1105, 0x1172, 0x11B1], NFKC: [0xB962], NFKD: [0x1105, 0x1172, 0x11B1] },
+{ source: [0xB963], NFC: [0xB963], NFD: [0x1105, 0x1172, 0x11B2], NFKC: [0xB963], NFKD: [0x1105, 0x1172, 0x11B2] },
+{ source: [0xB964], NFC: [0xB964], NFD: [0x1105, 0x1172, 0x11B3], NFKC: [0xB964], NFKD: [0x1105, 0x1172, 0x11B3] },
+{ source: [0xB965], NFC: [0xB965], NFD: [0x1105, 0x1172, 0x11B4], NFKC: [0xB965], NFKD: [0x1105, 0x1172, 0x11B4] },
+{ source: [0xB966], NFC: [0xB966], NFD: [0x1105, 0x1172, 0x11B5], NFKC: [0xB966], NFKD: [0x1105, 0x1172, 0x11B5] },
+{ source: [0xB967], NFC: [0xB967], NFD: [0x1105, 0x1172, 0x11B6], NFKC: [0xB967], NFKD: [0x1105, 0x1172, 0x11B6] },
+{ source: [0xB968], NFC: [0xB968], NFD: [0x1105, 0x1172, 0x11B7], NFKC: [0xB968], NFKD: [0x1105, 0x1172, 0x11B7] },
+{ source: [0xB969], NFC: [0xB969], NFD: [0x1105, 0x1172, 0x11B8], NFKC: [0xB969], NFKD: [0x1105, 0x1172, 0x11B8] },
+{ source: [0xB96A], NFC: [0xB96A], NFD: [0x1105, 0x1172, 0x11B9], NFKC: [0xB96A], NFKD: [0x1105, 0x1172, 0x11B9] },
+{ source: [0xB96B], NFC: [0xB96B], NFD: [0x1105, 0x1172, 0x11BA], NFKC: [0xB96B], NFKD: [0x1105, 0x1172, 0x11BA] },
+{ source: [0xB96C], NFC: [0xB96C], NFD: [0x1105, 0x1172, 0x11BB], NFKC: [0xB96C], NFKD: [0x1105, 0x1172, 0x11BB] },
+{ source: [0xB96D], NFC: [0xB96D], NFD: [0x1105, 0x1172, 0x11BC], NFKC: [0xB96D], NFKD: [0x1105, 0x1172, 0x11BC] },
+{ source: [0xB96E], NFC: [0xB96E], NFD: [0x1105, 0x1172, 0x11BD], NFKC: [0xB96E], NFKD: [0x1105, 0x1172, 0x11BD] },
+{ source: [0xB96F], NFC: [0xB96F], NFD: [0x1105, 0x1172, 0x11BE], NFKC: [0xB96F], NFKD: [0x1105, 0x1172, 0x11BE] },
+{ source: [0xB970], NFC: [0xB970], NFD: [0x1105, 0x1172, 0x11BF], NFKC: [0xB970], NFKD: [0x1105, 0x1172, 0x11BF] },
+{ source: [0xB971], NFC: [0xB971], NFD: [0x1105, 0x1172, 0x11C0], NFKC: [0xB971], NFKD: [0x1105, 0x1172, 0x11C0] },
+{ source: [0xB972], NFC: [0xB972], NFD: [0x1105, 0x1172, 0x11C1], NFKC: [0xB972], NFKD: [0x1105, 0x1172, 0x11C1] },
+{ source: [0xB973], NFC: [0xB973], NFD: [0x1105, 0x1172, 0x11C2], NFKC: [0xB973], NFKD: [0x1105, 0x1172, 0x11C2] },
+{ source: [0xB974], NFC: [0xB974], NFD: [0x1105, 0x1173], NFKC: [0xB974], NFKD: [0x1105, 0x1173] },
+{ source: [0xB975], NFC: [0xB975], NFD: [0x1105, 0x1173, 0x11A8], NFKC: [0xB975], NFKD: [0x1105, 0x1173, 0x11A8] },
+{ source: [0xB976], NFC: [0xB976], NFD: [0x1105, 0x1173, 0x11A9], NFKC: [0xB976], NFKD: [0x1105, 0x1173, 0x11A9] },
+{ source: [0xB977], NFC: [0xB977], NFD: [0x1105, 0x1173, 0x11AA], NFKC: [0xB977], NFKD: [0x1105, 0x1173, 0x11AA] },
+{ source: [0xB978], NFC: [0xB978], NFD: [0x1105, 0x1173, 0x11AB], NFKC: [0xB978], NFKD: [0x1105, 0x1173, 0x11AB] },
+{ source: [0xB979], NFC: [0xB979], NFD: [0x1105, 0x1173, 0x11AC], NFKC: [0xB979], NFKD: [0x1105, 0x1173, 0x11AC] },
+{ source: [0xB97A], NFC: [0xB97A], NFD: [0x1105, 0x1173, 0x11AD], NFKC: [0xB97A], NFKD: [0x1105, 0x1173, 0x11AD] },
+{ source: [0xB97B], NFC: [0xB97B], NFD: [0x1105, 0x1173, 0x11AE], NFKC: [0xB97B], NFKD: [0x1105, 0x1173, 0x11AE] },
+{ source: [0xB97C], NFC: [0xB97C], NFD: [0x1105, 0x1173, 0x11AF], NFKC: [0xB97C], NFKD: [0x1105, 0x1173, 0x11AF] },
+{ source: [0xB97D], NFC: [0xB97D], NFD: [0x1105, 0x1173, 0x11B0], NFKC: [0xB97D], NFKD: [0x1105, 0x1173, 0x11B0] },
+{ source: [0xB97E], NFC: [0xB97E], NFD: [0x1105, 0x1173, 0x11B1], NFKC: [0xB97E], NFKD: [0x1105, 0x1173, 0x11B1] },
+{ source: [0xB97F], NFC: [0xB97F], NFD: [0x1105, 0x1173, 0x11B2], NFKC: [0xB97F], NFKD: [0x1105, 0x1173, 0x11B2] },
+{ source: [0xB980], NFC: [0xB980], NFD: [0x1105, 0x1173, 0x11B3], NFKC: [0xB980], NFKD: [0x1105, 0x1173, 0x11B3] },
+{ source: [0xB981], NFC: [0xB981], NFD: [0x1105, 0x1173, 0x11B4], NFKC: [0xB981], NFKD: [0x1105, 0x1173, 0x11B4] },
+{ source: [0xB982], NFC: [0xB982], NFD: [0x1105, 0x1173, 0x11B5], NFKC: [0xB982], NFKD: [0x1105, 0x1173, 0x11B5] },
+{ source: [0xB983], NFC: [0xB983], NFD: [0x1105, 0x1173, 0x11B6], NFKC: [0xB983], NFKD: [0x1105, 0x1173, 0x11B6] },
+{ source: [0xB984], NFC: [0xB984], NFD: [0x1105, 0x1173, 0x11B7], NFKC: [0xB984], NFKD: [0x1105, 0x1173, 0x11B7] },
+{ source: [0xB985], NFC: [0xB985], NFD: [0x1105, 0x1173, 0x11B8], NFKC: [0xB985], NFKD: [0x1105, 0x1173, 0x11B8] },
+{ source: [0xB986], NFC: [0xB986], NFD: [0x1105, 0x1173, 0x11B9], NFKC: [0xB986], NFKD: [0x1105, 0x1173, 0x11B9] },
+{ source: [0xB987], NFC: [0xB987], NFD: [0x1105, 0x1173, 0x11BA], NFKC: [0xB987], NFKD: [0x1105, 0x1173, 0x11BA] },
+{ source: [0xB988], NFC: [0xB988], NFD: [0x1105, 0x1173, 0x11BB], NFKC: [0xB988], NFKD: [0x1105, 0x1173, 0x11BB] },
+{ source: [0xB989], NFC: [0xB989], NFD: [0x1105, 0x1173, 0x11BC], NFKC: [0xB989], NFKD: [0x1105, 0x1173, 0x11BC] },
+{ source: [0xB98A], NFC: [0xB98A], NFD: [0x1105, 0x1173, 0x11BD], NFKC: [0xB98A], NFKD: [0x1105, 0x1173, 0x11BD] },
+{ source: [0xB98B], NFC: [0xB98B], NFD: [0x1105, 0x1173, 0x11BE], NFKC: [0xB98B], NFKD: [0x1105, 0x1173, 0x11BE] },
+{ source: [0xB98C], NFC: [0xB98C], NFD: [0x1105, 0x1173, 0x11BF], NFKC: [0xB98C], NFKD: [0x1105, 0x1173, 0x11BF] },
+{ source: [0xB98D], NFC: [0xB98D], NFD: [0x1105, 0x1173, 0x11C0], NFKC: [0xB98D], NFKD: [0x1105, 0x1173, 0x11C0] },
+{ source: [0xB98E], NFC: [0xB98E], NFD: [0x1105, 0x1173, 0x11C1], NFKC: [0xB98E], NFKD: [0x1105, 0x1173, 0x11C1] },
+{ source: [0xB98F], NFC: [0xB98F], NFD: [0x1105, 0x1173, 0x11C2], NFKC: [0xB98F], NFKD: [0x1105, 0x1173, 0x11C2] },
+{ source: [0xB990], NFC: [0xB990], NFD: [0x1105, 0x1174], NFKC: [0xB990], NFKD: [0x1105, 0x1174] },
+{ source: [0xB991], NFC: [0xB991], NFD: [0x1105, 0x1174, 0x11A8], NFKC: [0xB991], NFKD: [0x1105, 0x1174, 0x11A8] },
+{ source: [0xB992], NFC: [0xB992], NFD: [0x1105, 0x1174, 0x11A9], NFKC: [0xB992], NFKD: [0x1105, 0x1174, 0x11A9] },
+{ source: [0xB993], NFC: [0xB993], NFD: [0x1105, 0x1174, 0x11AA], NFKC: [0xB993], NFKD: [0x1105, 0x1174, 0x11AA] },
+{ source: [0xB994], NFC: [0xB994], NFD: [0x1105, 0x1174, 0x11AB], NFKC: [0xB994], NFKD: [0x1105, 0x1174, 0x11AB] },
+{ source: [0xB995], NFC: [0xB995], NFD: [0x1105, 0x1174, 0x11AC], NFKC: [0xB995], NFKD: [0x1105, 0x1174, 0x11AC] },
+{ source: [0xB996], NFC: [0xB996], NFD: [0x1105, 0x1174, 0x11AD], NFKC: [0xB996], NFKD: [0x1105, 0x1174, 0x11AD] },
+{ source: [0xB997], NFC: [0xB997], NFD: [0x1105, 0x1174, 0x11AE], NFKC: [0xB997], NFKD: [0x1105, 0x1174, 0x11AE] },
+{ source: [0xB998], NFC: [0xB998], NFD: [0x1105, 0x1174, 0x11AF], NFKC: [0xB998], NFKD: [0x1105, 0x1174, 0x11AF] },
+{ source: [0xB999], NFC: [0xB999], NFD: [0x1105, 0x1174, 0x11B0], NFKC: [0xB999], NFKD: [0x1105, 0x1174, 0x11B0] },
+{ source: [0xB99A], NFC: [0xB99A], NFD: [0x1105, 0x1174, 0x11B1], NFKC: [0xB99A], NFKD: [0x1105, 0x1174, 0x11B1] },
+{ source: [0xB99B], NFC: [0xB99B], NFD: [0x1105, 0x1174, 0x11B2], NFKC: [0xB99B], NFKD: [0x1105, 0x1174, 0x11B2] },
+{ source: [0xB99C], NFC: [0xB99C], NFD: [0x1105, 0x1174, 0x11B3], NFKC: [0xB99C], NFKD: [0x1105, 0x1174, 0x11B3] },
+{ source: [0xB99D], NFC: [0xB99D], NFD: [0x1105, 0x1174, 0x11B4], NFKC: [0xB99D], NFKD: [0x1105, 0x1174, 0x11B4] },
+{ source: [0xB99E], NFC: [0xB99E], NFD: [0x1105, 0x1174, 0x11B5], NFKC: [0xB99E], NFKD: [0x1105, 0x1174, 0x11B5] },
+{ source: [0xB99F], NFC: [0xB99F], NFD: [0x1105, 0x1174, 0x11B6], NFKC: [0xB99F], NFKD: [0x1105, 0x1174, 0x11B6] },
+{ source: [0xB9A0], NFC: [0xB9A0], NFD: [0x1105, 0x1174, 0x11B7], NFKC: [0xB9A0], NFKD: [0x1105, 0x1174, 0x11B7] },
+{ source: [0xB9A1], NFC: [0xB9A1], NFD: [0x1105, 0x1174, 0x11B8], NFKC: [0xB9A1], NFKD: [0x1105, 0x1174, 0x11B8] },
+{ source: [0xB9A2], NFC: [0xB9A2], NFD: [0x1105, 0x1174, 0x11B9], NFKC: [0xB9A2], NFKD: [0x1105, 0x1174, 0x11B9] },
+{ source: [0xB9A3], NFC: [0xB9A3], NFD: [0x1105, 0x1174, 0x11BA], NFKC: [0xB9A3], NFKD: [0x1105, 0x1174, 0x11BA] },
+{ source: [0xB9A4], NFC: [0xB9A4], NFD: [0x1105, 0x1174, 0x11BB], NFKC: [0xB9A4], NFKD: [0x1105, 0x1174, 0x11BB] },
+{ source: [0xB9A5], NFC: [0xB9A5], NFD: [0x1105, 0x1174, 0x11BC], NFKC: [0xB9A5], NFKD: [0x1105, 0x1174, 0x11BC] },
+{ source: [0xB9A6], NFC: [0xB9A6], NFD: [0x1105, 0x1174, 0x11BD], NFKC: [0xB9A6], NFKD: [0x1105, 0x1174, 0x11BD] },
+{ source: [0xB9A7], NFC: [0xB9A7], NFD: [0x1105, 0x1174, 0x11BE], NFKC: [0xB9A7], NFKD: [0x1105, 0x1174, 0x11BE] },
+{ source: [0xB9A8], NFC: [0xB9A8], NFD: [0x1105, 0x1174, 0x11BF], NFKC: [0xB9A8], NFKD: [0x1105, 0x1174, 0x11BF] },
+{ source: [0xB9A9], NFC: [0xB9A9], NFD: [0x1105, 0x1174, 0x11C0], NFKC: [0xB9A9], NFKD: [0x1105, 0x1174, 0x11C0] },
+{ source: [0xB9AA], NFC: [0xB9AA], NFD: [0x1105, 0x1174, 0x11C1], NFKC: [0xB9AA], NFKD: [0x1105, 0x1174, 0x11C1] },
+{ source: [0xB9AB], NFC: [0xB9AB], NFD: [0x1105, 0x1174, 0x11C2], NFKC: [0xB9AB], NFKD: [0x1105, 0x1174, 0x11C2] },
+{ source: [0xB9AC], NFC: [0xB9AC], NFD: [0x1105, 0x1175], NFKC: [0xB9AC], NFKD: [0x1105, 0x1175] },
+{ source: [0xB9AD], NFC: [0xB9AD], NFD: [0x1105, 0x1175, 0x11A8], NFKC: [0xB9AD], NFKD: [0x1105, 0x1175, 0x11A8] },
+{ source: [0xB9AE], NFC: [0xB9AE], NFD: [0x1105, 0x1175, 0x11A9], NFKC: [0xB9AE], NFKD: [0x1105, 0x1175, 0x11A9] },
+{ source: [0xB9AF], NFC: [0xB9AF], NFD: [0x1105, 0x1175, 0x11AA], NFKC: [0xB9AF], NFKD: [0x1105, 0x1175, 0x11AA] },
+{ source: [0xB9B0], NFC: [0xB9B0], NFD: [0x1105, 0x1175, 0x11AB], NFKC: [0xB9B0], NFKD: [0x1105, 0x1175, 0x11AB] },
+{ source: [0xB9B1], NFC: [0xB9B1], NFD: [0x1105, 0x1175, 0x11AC], NFKC: [0xB9B1], NFKD: [0x1105, 0x1175, 0x11AC] },
+{ source: [0xB9B2], NFC: [0xB9B2], NFD: [0x1105, 0x1175, 0x11AD], NFKC: [0xB9B2], NFKD: [0x1105, 0x1175, 0x11AD] },
+{ source: [0xB9B3], NFC: [0xB9B3], NFD: [0x1105, 0x1175, 0x11AE], NFKC: [0xB9B3], NFKD: [0x1105, 0x1175, 0x11AE] },
+{ source: [0xB9B4], NFC: [0xB9B4], NFD: [0x1105, 0x1175, 0x11AF], NFKC: [0xB9B4], NFKD: [0x1105, 0x1175, 0x11AF] },
+{ source: [0xB9B5], NFC: [0xB9B5], NFD: [0x1105, 0x1175, 0x11B0], NFKC: [0xB9B5], NFKD: [0x1105, 0x1175, 0x11B0] },
+{ source: [0xB9B6], NFC: [0xB9B6], NFD: [0x1105, 0x1175, 0x11B1], NFKC: [0xB9B6], NFKD: [0x1105, 0x1175, 0x11B1] },
+{ source: [0xB9B7], NFC: [0xB9B7], NFD: [0x1105, 0x1175, 0x11B2], NFKC: [0xB9B7], NFKD: [0x1105, 0x1175, 0x11B2] },
+{ source: [0xB9B8], NFC: [0xB9B8], NFD: [0x1105, 0x1175, 0x11B3], NFKC: [0xB9B8], NFKD: [0x1105, 0x1175, 0x11B3] },
+{ source: [0xB9B9], NFC: [0xB9B9], NFD: [0x1105, 0x1175, 0x11B4], NFKC: [0xB9B9], NFKD: [0x1105, 0x1175, 0x11B4] },
+{ source: [0xB9BA], NFC: [0xB9BA], NFD: [0x1105, 0x1175, 0x11B5], NFKC: [0xB9BA], NFKD: [0x1105, 0x1175, 0x11B5] },
+{ source: [0xB9BB], NFC: [0xB9BB], NFD: [0x1105, 0x1175, 0x11B6], NFKC: [0xB9BB], NFKD: [0x1105, 0x1175, 0x11B6] },
+{ source: [0xB9BC], NFC: [0xB9BC], NFD: [0x1105, 0x1175, 0x11B7], NFKC: [0xB9BC], NFKD: [0x1105, 0x1175, 0x11B7] },
+{ source: [0xB9BD], NFC: [0xB9BD], NFD: [0x1105, 0x1175, 0x11B8], NFKC: [0xB9BD], NFKD: [0x1105, 0x1175, 0x11B8] },
+{ source: [0xB9BE], NFC: [0xB9BE], NFD: [0x1105, 0x1175, 0x11B9], NFKC: [0xB9BE], NFKD: [0x1105, 0x1175, 0x11B9] },
+{ source: [0xB9BF], NFC: [0xB9BF], NFD: [0x1105, 0x1175, 0x11BA], NFKC: [0xB9BF], NFKD: [0x1105, 0x1175, 0x11BA] },
+{ source: [0xB9C0], NFC: [0xB9C0], NFD: [0x1105, 0x1175, 0x11BB], NFKC: [0xB9C0], NFKD: [0x1105, 0x1175, 0x11BB] },
+{ source: [0xB9C1], NFC: [0xB9C1], NFD: [0x1105, 0x1175, 0x11BC], NFKC: [0xB9C1], NFKD: [0x1105, 0x1175, 0x11BC] },
+{ source: [0xB9C2], NFC: [0xB9C2], NFD: [0x1105, 0x1175, 0x11BD], NFKC: [0xB9C2], NFKD: [0x1105, 0x1175, 0x11BD] },
+{ source: [0xB9C3], NFC: [0xB9C3], NFD: [0x1105, 0x1175, 0x11BE], NFKC: [0xB9C3], NFKD: [0x1105, 0x1175, 0x11BE] },
+{ source: [0xB9C4], NFC: [0xB9C4], NFD: [0x1105, 0x1175, 0x11BF], NFKC: [0xB9C4], NFKD: [0x1105, 0x1175, 0x11BF] },
+{ source: [0xB9C5], NFC: [0xB9C5], NFD: [0x1105, 0x1175, 0x11C0], NFKC: [0xB9C5], NFKD: [0x1105, 0x1175, 0x11C0] },
+{ source: [0xB9C6], NFC: [0xB9C6], NFD: [0x1105, 0x1175, 0x11C1], NFKC: [0xB9C6], NFKD: [0x1105, 0x1175, 0x11C1] },
+{ source: [0xB9C7], NFC: [0xB9C7], NFD: [0x1105, 0x1175, 0x11C2], NFKC: [0xB9C7], NFKD: [0x1105, 0x1175, 0x11C2] },
+{ source: [0xB9C8], NFC: [0xB9C8], NFD: [0x1106, 0x1161], NFKC: [0xB9C8], NFKD: [0x1106, 0x1161] },
+{ source: [0xB9C9], NFC: [0xB9C9], NFD: [0x1106, 0x1161, 0x11A8], NFKC: [0xB9C9], NFKD: [0x1106, 0x1161, 0x11A8] },
+{ source: [0xB9CA], NFC: [0xB9CA], NFD: [0x1106, 0x1161, 0x11A9], NFKC: [0xB9CA], NFKD: [0x1106, 0x1161, 0x11A9] },
+{ source: [0xB9CB], NFC: [0xB9CB], NFD: [0x1106, 0x1161, 0x11AA], NFKC: [0xB9CB], NFKD: [0x1106, 0x1161, 0x11AA] },
+{ source: [0xB9CC], NFC: [0xB9CC], NFD: [0x1106, 0x1161, 0x11AB], NFKC: [0xB9CC], NFKD: [0x1106, 0x1161, 0x11AB] },
+{ source: [0xB9CD], NFC: [0xB9CD], NFD: [0x1106, 0x1161, 0x11AC], NFKC: [0xB9CD], NFKD: [0x1106, 0x1161, 0x11AC] },
+{ source: [0xB9CE], NFC: [0xB9CE], NFD: [0x1106, 0x1161, 0x11AD], NFKC: [0xB9CE], NFKD: [0x1106, 0x1161, 0x11AD] },
+{ source: [0xB9CF], NFC: [0xB9CF], NFD: [0x1106, 0x1161, 0x11AE], NFKC: [0xB9CF], NFKD: [0x1106, 0x1161, 0x11AE] },
+{ source: [0xB9D0], NFC: [0xB9D0], NFD: [0x1106, 0x1161, 0x11AF], NFKC: [0xB9D0], NFKD: [0x1106, 0x1161, 0x11AF] },
+{ source: [0xB9D1], NFC: [0xB9D1], NFD: [0x1106, 0x1161, 0x11B0], NFKC: [0xB9D1], NFKD: [0x1106, 0x1161, 0x11B0] },
+{ source: [0xB9D2], NFC: [0xB9D2], NFD: [0x1106, 0x1161, 0x11B1], NFKC: [0xB9D2], NFKD: [0x1106, 0x1161, 0x11B1] },
+{ source: [0xB9D3], NFC: [0xB9D3], NFD: [0x1106, 0x1161, 0x11B2], NFKC: [0xB9D3], NFKD: [0x1106, 0x1161, 0x11B2] },
+{ source: [0xB9D4], NFC: [0xB9D4], NFD: [0x1106, 0x1161, 0x11B3], NFKC: [0xB9D4], NFKD: [0x1106, 0x1161, 0x11B3] },
+{ source: [0xB9D5], NFC: [0xB9D5], NFD: [0x1106, 0x1161, 0x11B4], NFKC: [0xB9D5], NFKD: [0x1106, 0x1161, 0x11B4] },
+{ source: [0xB9D6], NFC: [0xB9D6], NFD: [0x1106, 0x1161, 0x11B5], NFKC: [0xB9D6], NFKD: [0x1106, 0x1161, 0x11B5] },
+{ source: [0xB9D7], NFC: [0xB9D7], NFD: [0x1106, 0x1161, 0x11B6], NFKC: [0xB9D7], NFKD: [0x1106, 0x1161, 0x11B6] },
+{ source: [0xB9D8], NFC: [0xB9D8], NFD: [0x1106, 0x1161, 0x11B7], NFKC: [0xB9D8], NFKD: [0x1106, 0x1161, 0x11B7] },
+{ source: [0xB9D9], NFC: [0xB9D9], NFD: [0x1106, 0x1161, 0x11B8], NFKC: [0xB9D9], NFKD: [0x1106, 0x1161, 0x11B8] },
+{ source: [0xB9DA], NFC: [0xB9DA], NFD: [0x1106, 0x1161, 0x11B9], NFKC: [0xB9DA], NFKD: [0x1106, 0x1161, 0x11B9] },
+{ source: [0xB9DB], NFC: [0xB9DB], NFD: [0x1106, 0x1161, 0x11BA], NFKC: [0xB9DB], NFKD: [0x1106, 0x1161, 0x11BA] },
+{ source: [0xB9DC], NFC: [0xB9DC], NFD: [0x1106, 0x1161, 0x11BB], NFKC: [0xB9DC], NFKD: [0x1106, 0x1161, 0x11BB] },
+{ source: [0xB9DD], NFC: [0xB9DD], NFD: [0x1106, 0x1161, 0x11BC], NFKC: [0xB9DD], NFKD: [0x1106, 0x1161, 0x11BC] },
+{ source: [0xB9DE], NFC: [0xB9DE], NFD: [0x1106, 0x1161, 0x11BD], NFKC: [0xB9DE], NFKD: [0x1106, 0x1161, 0x11BD] },
+{ source: [0xB9DF], NFC: [0xB9DF], NFD: [0x1106, 0x1161, 0x11BE], NFKC: [0xB9DF], NFKD: [0x1106, 0x1161, 0x11BE] },
+{ source: [0xB9E0], NFC: [0xB9E0], NFD: [0x1106, 0x1161, 0x11BF], NFKC: [0xB9E0], NFKD: [0x1106, 0x1161, 0x11BF] },
+{ source: [0xB9E1], NFC: [0xB9E1], NFD: [0x1106, 0x1161, 0x11C0], NFKC: [0xB9E1], NFKD: [0x1106, 0x1161, 0x11C0] },
+{ source: [0xB9E2], NFC: [0xB9E2], NFD: [0x1106, 0x1161, 0x11C1], NFKC: [0xB9E2], NFKD: [0x1106, 0x1161, 0x11C1] },
+{ source: [0xB9E3], NFC: [0xB9E3], NFD: [0x1106, 0x1161, 0x11C2], NFKC: [0xB9E3], NFKD: [0x1106, 0x1161, 0x11C2] },
+{ source: [0xB9E4], NFC: [0xB9E4], NFD: [0x1106, 0x1162], NFKC: [0xB9E4], NFKD: [0x1106, 0x1162] },
+{ source: [0xB9E5], NFC: [0xB9E5], NFD: [0x1106, 0x1162, 0x11A8], NFKC: [0xB9E5], NFKD: [0x1106, 0x1162, 0x11A8] },
+{ source: [0xB9E6], NFC: [0xB9E6], NFD: [0x1106, 0x1162, 0x11A9], NFKC: [0xB9E6], NFKD: [0x1106, 0x1162, 0x11A9] },
+{ source: [0xB9E7], NFC: [0xB9E7], NFD: [0x1106, 0x1162, 0x11AA], NFKC: [0xB9E7], NFKD: [0x1106, 0x1162, 0x11AA] },
+{ source: [0xB9E8], NFC: [0xB9E8], NFD: [0x1106, 0x1162, 0x11AB], NFKC: [0xB9E8], NFKD: [0x1106, 0x1162, 0x11AB] },
+{ source: [0xB9E9], NFC: [0xB9E9], NFD: [0x1106, 0x1162, 0x11AC], NFKC: [0xB9E9], NFKD: [0x1106, 0x1162, 0x11AC] },
+{ source: [0xB9EA], NFC: [0xB9EA], NFD: [0x1106, 0x1162, 0x11AD], NFKC: [0xB9EA], NFKD: [0x1106, 0x1162, 0x11AD] },
+{ source: [0xB9EB], NFC: [0xB9EB], NFD: [0x1106, 0x1162, 0x11AE], NFKC: [0xB9EB], NFKD: [0x1106, 0x1162, 0x11AE] },
+{ source: [0xB9EC], NFC: [0xB9EC], NFD: [0x1106, 0x1162, 0x11AF], NFKC: [0xB9EC], NFKD: [0x1106, 0x1162, 0x11AF] },
+{ source: [0xB9ED], NFC: [0xB9ED], NFD: [0x1106, 0x1162, 0x11B0], NFKC: [0xB9ED], NFKD: [0x1106, 0x1162, 0x11B0] },
+{ source: [0xB9EE], NFC: [0xB9EE], NFD: [0x1106, 0x1162, 0x11B1], NFKC: [0xB9EE], NFKD: [0x1106, 0x1162, 0x11B1] },
+{ source: [0xB9EF], NFC: [0xB9EF], NFD: [0x1106, 0x1162, 0x11B2], NFKC: [0xB9EF], NFKD: [0x1106, 0x1162, 0x11B2] },
+{ source: [0xB9F0], NFC: [0xB9F0], NFD: [0x1106, 0x1162, 0x11B3], NFKC: [0xB9F0], NFKD: [0x1106, 0x1162, 0x11B3] },
+{ source: [0xB9F1], NFC: [0xB9F1], NFD: [0x1106, 0x1162, 0x11B4], NFKC: [0xB9F1], NFKD: [0x1106, 0x1162, 0x11B4] },
+{ source: [0xB9F2], NFC: [0xB9F2], NFD: [0x1106, 0x1162, 0x11B5], NFKC: [0xB9F2], NFKD: [0x1106, 0x1162, 0x11B5] },
+{ source: [0xB9F3], NFC: [0xB9F3], NFD: [0x1106, 0x1162, 0x11B6], NFKC: [0xB9F3], NFKD: [0x1106, 0x1162, 0x11B6] },
+{ source: [0xB9F4], NFC: [0xB9F4], NFD: [0x1106, 0x1162, 0x11B7], NFKC: [0xB9F4], NFKD: [0x1106, 0x1162, 0x11B7] },
+{ source: [0xB9F5], NFC: [0xB9F5], NFD: [0x1106, 0x1162, 0x11B8], NFKC: [0xB9F5], NFKD: [0x1106, 0x1162, 0x11B8] },
+{ source: [0xB9F6], NFC: [0xB9F6], NFD: [0x1106, 0x1162, 0x11B9], NFKC: [0xB9F6], NFKD: [0x1106, 0x1162, 0x11B9] },
+{ source: [0xB9F7], NFC: [0xB9F7], NFD: [0x1106, 0x1162, 0x11BA], NFKC: [0xB9F7], NFKD: [0x1106, 0x1162, 0x11BA] },
+{ source: [0xB9F8], NFC: [0xB9F8], NFD: [0x1106, 0x1162, 0x11BB], NFKC: [0xB9F8], NFKD: [0x1106, 0x1162, 0x11BB] },
+{ source: [0xB9F9], NFC: [0xB9F9], NFD: [0x1106, 0x1162, 0x11BC], NFKC: [0xB9F9], NFKD: [0x1106, 0x1162, 0x11BC] },
+{ source: [0xB9FA], NFC: [0xB9FA], NFD: [0x1106, 0x1162, 0x11BD], NFKC: [0xB9FA], NFKD: [0x1106, 0x1162, 0x11BD] },
+{ source: [0xB9FB], NFC: [0xB9FB], NFD: [0x1106, 0x1162, 0x11BE], NFKC: [0xB9FB], NFKD: [0x1106, 0x1162, 0x11BE] },
+{ source: [0xB9FC], NFC: [0xB9FC], NFD: [0x1106, 0x1162, 0x11BF], NFKC: [0xB9FC], NFKD: [0x1106, 0x1162, 0x11BF] },
+{ source: [0xB9FD], NFC: [0xB9FD], NFD: [0x1106, 0x1162, 0x11C0], NFKC: [0xB9FD], NFKD: [0x1106, 0x1162, 0x11C0] },
+{ source: [0xB9FE], NFC: [0xB9FE], NFD: [0x1106, 0x1162, 0x11C1], NFKC: [0xB9FE], NFKD: [0x1106, 0x1162, 0x11C1] },
+{ source: [0xB9FF], NFC: [0xB9FF], NFD: [0x1106, 0x1162, 0x11C2], NFKC: [0xB9FF], NFKD: [0x1106, 0x1162, 0x11C2] },
+{ source: [0xBA00], NFC: [0xBA00], NFD: [0x1106, 0x1163], NFKC: [0xBA00], NFKD: [0x1106, 0x1163] },
+{ source: [0xBA01], NFC: [0xBA01], NFD: [0x1106, 0x1163, 0x11A8], NFKC: [0xBA01], NFKD: [0x1106, 0x1163, 0x11A8] },
+{ source: [0xBA02], NFC: [0xBA02], NFD: [0x1106, 0x1163, 0x11A9], NFKC: [0xBA02], NFKD: [0x1106, 0x1163, 0x11A9] },
+{ source: [0xBA03], NFC: [0xBA03], NFD: [0x1106, 0x1163, 0x11AA], NFKC: [0xBA03], NFKD: [0x1106, 0x1163, 0x11AA] },
+{ source: [0xBA04], NFC: [0xBA04], NFD: [0x1106, 0x1163, 0x11AB], NFKC: [0xBA04], NFKD: [0x1106, 0x1163, 0x11AB] },
+{ source: [0xBA05], NFC: [0xBA05], NFD: [0x1106, 0x1163, 0x11AC], NFKC: [0xBA05], NFKD: [0x1106, 0x1163, 0x11AC] },
+{ source: [0xBA06], NFC: [0xBA06], NFD: [0x1106, 0x1163, 0x11AD], NFKC: [0xBA06], NFKD: [0x1106, 0x1163, 0x11AD] },
+{ source: [0xBA07], NFC: [0xBA07], NFD: [0x1106, 0x1163, 0x11AE], NFKC: [0xBA07], NFKD: [0x1106, 0x1163, 0x11AE] },
+{ source: [0xBA08], NFC: [0xBA08], NFD: [0x1106, 0x1163, 0x11AF], NFKC: [0xBA08], NFKD: [0x1106, 0x1163, 0x11AF] },
+{ source: [0xBA09], NFC: [0xBA09], NFD: [0x1106, 0x1163, 0x11B0], NFKC: [0xBA09], NFKD: [0x1106, 0x1163, 0x11B0] },
+{ source: [0xBA0A], NFC: [0xBA0A], NFD: [0x1106, 0x1163, 0x11B1], NFKC: [0xBA0A], NFKD: [0x1106, 0x1163, 0x11B1] },
+{ source: [0xBA0B], NFC: [0xBA0B], NFD: [0x1106, 0x1163, 0x11B2], NFKC: [0xBA0B], NFKD: [0x1106, 0x1163, 0x11B2] },
+{ source: [0xBA0C], NFC: [0xBA0C], NFD: [0x1106, 0x1163, 0x11B3], NFKC: [0xBA0C], NFKD: [0x1106, 0x1163, 0x11B3] },
+{ source: [0xBA0D], NFC: [0xBA0D], NFD: [0x1106, 0x1163, 0x11B4], NFKC: [0xBA0D], NFKD: [0x1106, 0x1163, 0x11B4] },
+{ source: [0xBA0E], NFC: [0xBA0E], NFD: [0x1106, 0x1163, 0x11B5], NFKC: [0xBA0E], NFKD: [0x1106, 0x1163, 0x11B5] },
+{ source: [0xBA0F], NFC: [0xBA0F], NFD: [0x1106, 0x1163, 0x11B6], NFKC: [0xBA0F], NFKD: [0x1106, 0x1163, 0x11B6] },
+{ source: [0xBA10], NFC: [0xBA10], NFD: [0x1106, 0x1163, 0x11B7], NFKC: [0xBA10], NFKD: [0x1106, 0x1163, 0x11B7] },
+{ source: [0xBA11], NFC: [0xBA11], NFD: [0x1106, 0x1163, 0x11B8], NFKC: [0xBA11], NFKD: [0x1106, 0x1163, 0x11B8] },
+{ source: [0xBA12], NFC: [0xBA12], NFD: [0x1106, 0x1163, 0x11B9], NFKC: [0xBA12], NFKD: [0x1106, 0x1163, 0x11B9] },
+{ source: [0xBA13], NFC: [0xBA13], NFD: [0x1106, 0x1163, 0x11BA], NFKC: [0xBA13], NFKD: [0x1106, 0x1163, 0x11BA] },
+{ source: [0xBA14], NFC: [0xBA14], NFD: [0x1106, 0x1163, 0x11BB], NFKC: [0xBA14], NFKD: [0x1106, 0x1163, 0x11BB] },
+{ source: [0xBA15], NFC: [0xBA15], NFD: [0x1106, 0x1163, 0x11BC], NFKC: [0xBA15], NFKD: [0x1106, 0x1163, 0x11BC] },
+{ source: [0xBA16], NFC: [0xBA16], NFD: [0x1106, 0x1163, 0x11BD], NFKC: [0xBA16], NFKD: [0x1106, 0x1163, 0x11BD] },
+{ source: [0xBA17], NFC: [0xBA17], NFD: [0x1106, 0x1163, 0x11BE], NFKC: [0xBA17], NFKD: [0x1106, 0x1163, 0x11BE] },
+{ source: [0xBA18], NFC: [0xBA18], NFD: [0x1106, 0x1163, 0x11BF], NFKC: [0xBA18], NFKD: [0x1106, 0x1163, 0x11BF] },
+{ source: [0xBA19], NFC: [0xBA19], NFD: [0x1106, 0x1163, 0x11C0], NFKC: [0xBA19], NFKD: [0x1106, 0x1163, 0x11C0] },
+{ source: [0xBA1A], NFC: [0xBA1A], NFD: [0x1106, 0x1163, 0x11C1], NFKC: [0xBA1A], NFKD: [0x1106, 0x1163, 0x11C1] },
+{ source: [0xBA1B], NFC: [0xBA1B], NFD: [0x1106, 0x1163, 0x11C2], NFKC: [0xBA1B], NFKD: [0x1106, 0x1163, 0x11C2] },
+{ source: [0xBA1C], NFC: [0xBA1C], NFD: [0x1106, 0x1164], NFKC: [0xBA1C], NFKD: [0x1106, 0x1164] },
+{ source: [0xBA1D], NFC: [0xBA1D], NFD: [0x1106, 0x1164, 0x11A8], NFKC: [0xBA1D], NFKD: [0x1106, 0x1164, 0x11A8] },
+{ source: [0xBA1E], NFC: [0xBA1E], NFD: [0x1106, 0x1164, 0x11A9], NFKC: [0xBA1E], NFKD: [0x1106, 0x1164, 0x11A9] },
+{ source: [0xBA1F], NFC: [0xBA1F], NFD: [0x1106, 0x1164, 0x11AA], NFKC: [0xBA1F], NFKD: [0x1106, 0x1164, 0x11AA] },
+{ source: [0xBA20], NFC: [0xBA20], NFD: [0x1106, 0x1164, 0x11AB], NFKC: [0xBA20], NFKD: [0x1106, 0x1164, 0x11AB] },
+{ source: [0xBA21], NFC: [0xBA21], NFD: [0x1106, 0x1164, 0x11AC], NFKC: [0xBA21], NFKD: [0x1106, 0x1164, 0x11AC] },
+{ source: [0xBA22], NFC: [0xBA22], NFD: [0x1106, 0x1164, 0x11AD], NFKC: [0xBA22], NFKD: [0x1106, 0x1164, 0x11AD] },
+{ source: [0xBA23], NFC: [0xBA23], NFD: [0x1106, 0x1164, 0x11AE], NFKC: [0xBA23], NFKD: [0x1106, 0x1164, 0x11AE] },
+{ source: [0xBA24], NFC: [0xBA24], NFD: [0x1106, 0x1164, 0x11AF], NFKC: [0xBA24], NFKD: [0x1106, 0x1164, 0x11AF] },
+{ source: [0xBA25], NFC: [0xBA25], NFD: [0x1106, 0x1164, 0x11B0], NFKC: [0xBA25], NFKD: [0x1106, 0x1164, 0x11B0] },
+{ source: [0xBA26], NFC: [0xBA26], NFD: [0x1106, 0x1164, 0x11B1], NFKC: [0xBA26], NFKD: [0x1106, 0x1164, 0x11B1] },
+{ source: [0xBA27], NFC: [0xBA27], NFD: [0x1106, 0x1164, 0x11B2], NFKC: [0xBA27], NFKD: [0x1106, 0x1164, 0x11B2] },
+{ source: [0xBA28], NFC: [0xBA28], NFD: [0x1106, 0x1164, 0x11B3], NFKC: [0xBA28], NFKD: [0x1106, 0x1164, 0x11B3] },
+{ source: [0xBA29], NFC: [0xBA29], NFD: [0x1106, 0x1164, 0x11B4], NFKC: [0xBA29], NFKD: [0x1106, 0x1164, 0x11B4] },
+{ source: [0xBA2A], NFC: [0xBA2A], NFD: [0x1106, 0x1164, 0x11B5], NFKC: [0xBA2A], NFKD: [0x1106, 0x1164, 0x11B5] },
+{ source: [0xBA2B], NFC: [0xBA2B], NFD: [0x1106, 0x1164, 0x11B6], NFKC: [0xBA2B], NFKD: [0x1106, 0x1164, 0x11B6] },
+{ source: [0xBA2C], NFC: [0xBA2C], NFD: [0x1106, 0x1164, 0x11B7], NFKC: [0xBA2C], NFKD: [0x1106, 0x1164, 0x11B7] },
+{ source: [0xBA2D], NFC: [0xBA2D], NFD: [0x1106, 0x1164, 0x11B8], NFKC: [0xBA2D], NFKD: [0x1106, 0x1164, 0x11B8] },
+{ source: [0xBA2E], NFC: [0xBA2E], NFD: [0x1106, 0x1164, 0x11B9], NFKC: [0xBA2E], NFKD: [0x1106, 0x1164, 0x11B9] },
+{ source: [0xBA2F], NFC: [0xBA2F], NFD: [0x1106, 0x1164, 0x11BA], NFKC: [0xBA2F], NFKD: [0x1106, 0x1164, 0x11BA] },
+{ source: [0xBA30], NFC: [0xBA30], NFD: [0x1106, 0x1164, 0x11BB], NFKC: [0xBA30], NFKD: [0x1106, 0x1164, 0x11BB] },
+{ source: [0xBA31], NFC: [0xBA31], NFD: [0x1106, 0x1164, 0x11BC], NFKC: [0xBA31], NFKD: [0x1106, 0x1164, 0x11BC] },
+{ source: [0xBA32], NFC: [0xBA32], NFD: [0x1106, 0x1164, 0x11BD], NFKC: [0xBA32], NFKD: [0x1106, 0x1164, 0x11BD] },
+{ source: [0xBA33], NFC: [0xBA33], NFD: [0x1106, 0x1164, 0x11BE], NFKC: [0xBA33], NFKD: [0x1106, 0x1164, 0x11BE] },
+{ source: [0xBA34], NFC: [0xBA34], NFD: [0x1106, 0x1164, 0x11BF], NFKC: [0xBA34], NFKD: [0x1106, 0x1164, 0x11BF] },
+{ source: [0xBA35], NFC: [0xBA35], NFD: [0x1106, 0x1164, 0x11C0], NFKC: [0xBA35], NFKD: [0x1106, 0x1164, 0x11C0] },
+{ source: [0xBA36], NFC: [0xBA36], NFD: [0x1106, 0x1164, 0x11C1], NFKC: [0xBA36], NFKD: [0x1106, 0x1164, 0x11C1] },
+{ source: [0xBA37], NFC: [0xBA37], NFD: [0x1106, 0x1164, 0x11C2], NFKC: [0xBA37], NFKD: [0x1106, 0x1164, 0x11C2] },
+{ source: [0xBA38], NFC: [0xBA38], NFD: [0x1106, 0x1165], NFKC: [0xBA38], NFKD: [0x1106, 0x1165] },
+{ source: [0xBA39], NFC: [0xBA39], NFD: [0x1106, 0x1165, 0x11A8], NFKC: [0xBA39], NFKD: [0x1106, 0x1165, 0x11A8] },
+{ source: [0xBA3A], NFC: [0xBA3A], NFD: [0x1106, 0x1165, 0x11A9], NFKC: [0xBA3A], NFKD: [0x1106, 0x1165, 0x11A9] },
+{ source: [0xBA3B], NFC: [0xBA3B], NFD: [0x1106, 0x1165, 0x11AA], NFKC: [0xBA3B], NFKD: [0x1106, 0x1165, 0x11AA] },
+{ source: [0xBA3C], NFC: [0xBA3C], NFD: [0x1106, 0x1165, 0x11AB], NFKC: [0xBA3C], NFKD: [0x1106, 0x1165, 0x11AB] },
+{ source: [0xBA3D], NFC: [0xBA3D], NFD: [0x1106, 0x1165, 0x11AC], NFKC: [0xBA3D], NFKD: [0x1106, 0x1165, 0x11AC] },
+{ source: [0xBA3E], NFC: [0xBA3E], NFD: [0x1106, 0x1165, 0x11AD], NFKC: [0xBA3E], NFKD: [0x1106, 0x1165, 0x11AD] },
+{ source: [0xBA3F], NFC: [0xBA3F], NFD: [0x1106, 0x1165, 0x11AE], NFKC: [0xBA3F], NFKD: [0x1106, 0x1165, 0x11AE] },
+{ source: [0xBA40], NFC: [0xBA40], NFD: [0x1106, 0x1165, 0x11AF], NFKC: [0xBA40], NFKD: [0x1106, 0x1165, 0x11AF] },
+{ source: [0xBA41], NFC: [0xBA41], NFD: [0x1106, 0x1165, 0x11B0], NFKC: [0xBA41], NFKD: [0x1106, 0x1165, 0x11B0] },
+{ source: [0xBA42], NFC: [0xBA42], NFD: [0x1106, 0x1165, 0x11B1], NFKC: [0xBA42], NFKD: [0x1106, 0x1165, 0x11B1] },
+{ source: [0xBA43], NFC: [0xBA43], NFD: [0x1106, 0x1165, 0x11B2], NFKC: [0xBA43], NFKD: [0x1106, 0x1165, 0x11B2] },
+{ source: [0xBA44], NFC: [0xBA44], NFD: [0x1106, 0x1165, 0x11B3], NFKC: [0xBA44], NFKD: [0x1106, 0x1165, 0x11B3] },
+{ source: [0xBA45], NFC: [0xBA45], NFD: [0x1106, 0x1165, 0x11B4], NFKC: [0xBA45], NFKD: [0x1106, 0x1165, 0x11B4] },
+{ source: [0xBA46], NFC: [0xBA46], NFD: [0x1106, 0x1165, 0x11B5], NFKC: [0xBA46], NFKD: [0x1106, 0x1165, 0x11B5] },
+{ source: [0xBA47], NFC: [0xBA47], NFD: [0x1106, 0x1165, 0x11B6], NFKC: [0xBA47], NFKD: [0x1106, 0x1165, 0x11B6] },
+{ source: [0xBA48], NFC: [0xBA48], NFD: [0x1106, 0x1165, 0x11B7], NFKC: [0xBA48], NFKD: [0x1106, 0x1165, 0x11B7] },
+{ source: [0xBA49], NFC: [0xBA49], NFD: [0x1106, 0x1165, 0x11B8], NFKC: [0xBA49], NFKD: [0x1106, 0x1165, 0x11B8] },
+{ source: [0xBA4A], NFC: [0xBA4A], NFD: [0x1106, 0x1165, 0x11B9], NFKC: [0xBA4A], NFKD: [0x1106, 0x1165, 0x11B9] },
+{ source: [0xBA4B], NFC: [0xBA4B], NFD: [0x1106, 0x1165, 0x11BA], NFKC: [0xBA4B], NFKD: [0x1106, 0x1165, 0x11BA] },
+{ source: [0xBA4C], NFC: [0xBA4C], NFD: [0x1106, 0x1165, 0x11BB], NFKC: [0xBA4C], NFKD: [0x1106, 0x1165, 0x11BB] },
+{ source: [0xBA4D], NFC: [0xBA4D], NFD: [0x1106, 0x1165, 0x11BC], NFKC: [0xBA4D], NFKD: [0x1106, 0x1165, 0x11BC] },
+{ source: [0xBA4E], NFC: [0xBA4E], NFD: [0x1106, 0x1165, 0x11BD], NFKC: [0xBA4E], NFKD: [0x1106, 0x1165, 0x11BD] },
+{ source: [0xBA4F], NFC: [0xBA4F], NFD: [0x1106, 0x1165, 0x11BE], NFKC: [0xBA4F], NFKD: [0x1106, 0x1165, 0x11BE] },
+{ source: [0xBA50], NFC: [0xBA50], NFD: [0x1106, 0x1165, 0x11BF], NFKC: [0xBA50], NFKD: [0x1106, 0x1165, 0x11BF] },
+{ source: [0xBA51], NFC: [0xBA51], NFD: [0x1106, 0x1165, 0x11C0], NFKC: [0xBA51], NFKD: [0x1106, 0x1165, 0x11C0] },
+{ source: [0xBA52], NFC: [0xBA52], NFD: [0x1106, 0x1165, 0x11C1], NFKC: [0xBA52], NFKD: [0x1106, 0x1165, 0x11C1] },
+{ source: [0xBA53], NFC: [0xBA53], NFD: [0x1106, 0x1165, 0x11C2], NFKC: [0xBA53], NFKD: [0x1106, 0x1165, 0x11C2] },
+{ source: [0xBA54], NFC: [0xBA54], NFD: [0x1106, 0x1166], NFKC: [0xBA54], NFKD: [0x1106, 0x1166] },
+{ source: [0xBA55], NFC: [0xBA55], NFD: [0x1106, 0x1166, 0x11A8], NFKC: [0xBA55], NFKD: [0x1106, 0x1166, 0x11A8] },
+{ source: [0xBA56], NFC: [0xBA56], NFD: [0x1106, 0x1166, 0x11A9], NFKC: [0xBA56], NFKD: [0x1106, 0x1166, 0x11A9] },
+{ source: [0xBA57], NFC: [0xBA57], NFD: [0x1106, 0x1166, 0x11AA], NFKC: [0xBA57], NFKD: [0x1106, 0x1166, 0x11AA] },
+{ source: [0xBA58], NFC: [0xBA58], NFD: [0x1106, 0x1166, 0x11AB], NFKC: [0xBA58], NFKD: [0x1106, 0x1166, 0x11AB] },
+{ source: [0xBA59], NFC: [0xBA59], NFD: [0x1106, 0x1166, 0x11AC], NFKC: [0xBA59], NFKD: [0x1106, 0x1166, 0x11AC] },
+{ source: [0xBA5A], NFC: [0xBA5A], NFD: [0x1106, 0x1166, 0x11AD], NFKC: [0xBA5A], NFKD: [0x1106, 0x1166, 0x11AD] },
+{ source: [0xBA5B], NFC: [0xBA5B], NFD: [0x1106, 0x1166, 0x11AE], NFKC: [0xBA5B], NFKD: [0x1106, 0x1166, 0x11AE] },
+{ source: [0xBA5C], NFC: [0xBA5C], NFD: [0x1106, 0x1166, 0x11AF], NFKC: [0xBA5C], NFKD: [0x1106, 0x1166, 0x11AF] },
+{ source: [0xBA5D], NFC: [0xBA5D], NFD: [0x1106, 0x1166, 0x11B0], NFKC: [0xBA5D], NFKD: [0x1106, 0x1166, 0x11B0] },
+{ source: [0xBA5E], NFC: [0xBA5E], NFD: [0x1106, 0x1166, 0x11B1], NFKC: [0xBA5E], NFKD: [0x1106, 0x1166, 0x11B1] },
+{ source: [0xBA5F], NFC: [0xBA5F], NFD: [0x1106, 0x1166, 0x11B2], NFKC: [0xBA5F], NFKD: [0x1106, 0x1166, 0x11B2] },
+{ source: [0xBA60], NFC: [0xBA60], NFD: [0x1106, 0x1166, 0x11B3], NFKC: [0xBA60], NFKD: [0x1106, 0x1166, 0x11B3] },
+{ source: [0xBA61], NFC: [0xBA61], NFD: [0x1106, 0x1166, 0x11B4], NFKC: [0xBA61], NFKD: [0x1106, 0x1166, 0x11B4] },
+{ source: [0xBA62], NFC: [0xBA62], NFD: [0x1106, 0x1166, 0x11B5], NFKC: [0xBA62], NFKD: [0x1106, 0x1166, 0x11B5] },
+{ source: [0xBA63], NFC: [0xBA63], NFD: [0x1106, 0x1166, 0x11B6], NFKC: [0xBA63], NFKD: [0x1106, 0x1166, 0x11B6] },
+{ source: [0xBA64], NFC: [0xBA64], NFD: [0x1106, 0x1166, 0x11B7], NFKC: [0xBA64], NFKD: [0x1106, 0x1166, 0x11B7] },
+{ source: [0xBA65], NFC: [0xBA65], NFD: [0x1106, 0x1166, 0x11B8], NFKC: [0xBA65], NFKD: [0x1106, 0x1166, 0x11B8] },
+{ source: [0xBA66], NFC: [0xBA66], NFD: [0x1106, 0x1166, 0x11B9], NFKC: [0xBA66], NFKD: [0x1106, 0x1166, 0x11B9] },
+{ source: [0xBA67], NFC: [0xBA67], NFD: [0x1106, 0x1166, 0x11BA], NFKC: [0xBA67], NFKD: [0x1106, 0x1166, 0x11BA] },
+{ source: [0xBA68], NFC: [0xBA68], NFD: [0x1106, 0x1166, 0x11BB], NFKC: [0xBA68], NFKD: [0x1106, 0x1166, 0x11BB] },
+{ source: [0xBA69], NFC: [0xBA69], NFD: [0x1106, 0x1166, 0x11BC], NFKC: [0xBA69], NFKD: [0x1106, 0x1166, 0x11BC] },
+{ source: [0xBA6A], NFC: [0xBA6A], NFD: [0x1106, 0x1166, 0x11BD], NFKC: [0xBA6A], NFKD: [0x1106, 0x1166, 0x11BD] },
+{ source: [0xBA6B], NFC: [0xBA6B], NFD: [0x1106, 0x1166, 0x11BE], NFKC: [0xBA6B], NFKD: [0x1106, 0x1166, 0x11BE] },
+{ source: [0xBA6C], NFC: [0xBA6C], NFD: [0x1106, 0x1166, 0x11BF], NFKC: [0xBA6C], NFKD: [0x1106, 0x1166, 0x11BF] },
+{ source: [0xBA6D], NFC: [0xBA6D], NFD: [0x1106, 0x1166, 0x11C0], NFKC: [0xBA6D], NFKD: [0x1106, 0x1166, 0x11C0] },
+{ source: [0xBA6E], NFC: [0xBA6E], NFD: [0x1106, 0x1166, 0x11C1], NFKC: [0xBA6E], NFKD: [0x1106, 0x1166, 0x11C1] },
+{ source: [0xBA6F], NFC: [0xBA6F], NFD: [0x1106, 0x1166, 0x11C2], NFKC: [0xBA6F], NFKD: [0x1106, 0x1166, 0x11C2] },
+{ source: [0xBA70], NFC: [0xBA70], NFD: [0x1106, 0x1167], NFKC: [0xBA70], NFKD: [0x1106, 0x1167] },
+{ source: [0xBA71], NFC: [0xBA71], NFD: [0x1106, 0x1167, 0x11A8], NFKC: [0xBA71], NFKD: [0x1106, 0x1167, 0x11A8] },
+{ source: [0xBA72], NFC: [0xBA72], NFD: [0x1106, 0x1167, 0x11A9], NFKC: [0xBA72], NFKD: [0x1106, 0x1167, 0x11A9] },
+{ source: [0xBA73], NFC: [0xBA73], NFD: [0x1106, 0x1167, 0x11AA], NFKC: [0xBA73], NFKD: [0x1106, 0x1167, 0x11AA] },
+{ source: [0xBA74], NFC: [0xBA74], NFD: [0x1106, 0x1167, 0x11AB], NFKC: [0xBA74], NFKD: [0x1106, 0x1167, 0x11AB] },
+{ source: [0xBA75], NFC: [0xBA75], NFD: [0x1106, 0x1167, 0x11AC], NFKC: [0xBA75], NFKD: [0x1106, 0x1167, 0x11AC] },
+{ source: [0xBA76], NFC: [0xBA76], NFD: [0x1106, 0x1167, 0x11AD], NFKC: [0xBA76], NFKD: [0x1106, 0x1167, 0x11AD] },
+{ source: [0xBA77], NFC: [0xBA77], NFD: [0x1106, 0x1167, 0x11AE], NFKC: [0xBA77], NFKD: [0x1106, 0x1167, 0x11AE] },
+{ source: [0xBA78], NFC: [0xBA78], NFD: [0x1106, 0x1167, 0x11AF], NFKC: [0xBA78], NFKD: [0x1106, 0x1167, 0x11AF] },
+{ source: [0xBA79], NFC: [0xBA79], NFD: [0x1106, 0x1167, 0x11B0], NFKC: [0xBA79], NFKD: [0x1106, 0x1167, 0x11B0] },
+{ source: [0xBA7A], NFC: [0xBA7A], NFD: [0x1106, 0x1167, 0x11B1], NFKC: [0xBA7A], NFKD: [0x1106, 0x1167, 0x11B1] },
+{ source: [0xBA7B], NFC: [0xBA7B], NFD: [0x1106, 0x1167, 0x11B2], NFKC: [0xBA7B], NFKD: [0x1106, 0x1167, 0x11B2] },
+{ source: [0xBA7C], NFC: [0xBA7C], NFD: [0x1106, 0x1167, 0x11B3], NFKC: [0xBA7C], NFKD: [0x1106, 0x1167, 0x11B3] },
+{ source: [0xBA7D], NFC: [0xBA7D], NFD: [0x1106, 0x1167, 0x11B4], NFKC: [0xBA7D], NFKD: [0x1106, 0x1167, 0x11B4] },
+{ source: [0xBA7E], NFC: [0xBA7E], NFD: [0x1106, 0x1167, 0x11B5], NFKC: [0xBA7E], NFKD: [0x1106, 0x1167, 0x11B5] },
+{ source: [0xBA7F], NFC: [0xBA7F], NFD: [0x1106, 0x1167, 0x11B6], NFKC: [0xBA7F], NFKD: [0x1106, 0x1167, 0x11B6] },
+{ source: [0xBA80], NFC: [0xBA80], NFD: [0x1106, 0x1167, 0x11B7], NFKC: [0xBA80], NFKD: [0x1106, 0x1167, 0x11B7] },
+{ source: [0xBA81], NFC: [0xBA81], NFD: [0x1106, 0x1167, 0x11B8], NFKC: [0xBA81], NFKD: [0x1106, 0x1167, 0x11B8] },
+{ source: [0xBA82], NFC: [0xBA82], NFD: [0x1106, 0x1167, 0x11B9], NFKC: [0xBA82], NFKD: [0x1106, 0x1167, 0x11B9] },
+{ source: [0xBA83], NFC: [0xBA83], NFD: [0x1106, 0x1167, 0x11BA], NFKC: [0xBA83], NFKD: [0x1106, 0x1167, 0x11BA] },
+{ source: [0xBA84], NFC: [0xBA84], NFD: [0x1106, 0x1167, 0x11BB], NFKC: [0xBA84], NFKD: [0x1106, 0x1167, 0x11BB] },
+{ source: [0xBA85], NFC: [0xBA85], NFD: [0x1106, 0x1167, 0x11BC], NFKC: [0xBA85], NFKD: [0x1106, 0x1167, 0x11BC] },
+{ source: [0xBA86], NFC: [0xBA86], NFD: [0x1106, 0x1167, 0x11BD], NFKC: [0xBA86], NFKD: [0x1106, 0x1167, 0x11BD] },
+{ source: [0xBA87], NFC: [0xBA87], NFD: [0x1106, 0x1167, 0x11BE], NFKC: [0xBA87], NFKD: [0x1106, 0x1167, 0x11BE] },
+{ source: [0xBA88], NFC: [0xBA88], NFD: [0x1106, 0x1167, 0x11BF], NFKC: [0xBA88], NFKD: [0x1106, 0x1167, 0x11BF] },
+{ source: [0xBA89], NFC: [0xBA89], NFD: [0x1106, 0x1167, 0x11C0], NFKC: [0xBA89], NFKD: [0x1106, 0x1167, 0x11C0] },
+{ source: [0xBA8A], NFC: [0xBA8A], NFD: [0x1106, 0x1167, 0x11C1], NFKC: [0xBA8A], NFKD: [0x1106, 0x1167, 0x11C1] },
+{ source: [0xBA8B], NFC: [0xBA8B], NFD: [0x1106, 0x1167, 0x11C2], NFKC: [0xBA8B], NFKD: [0x1106, 0x1167, 0x11C2] },
+{ source: [0xBA8C], NFC: [0xBA8C], NFD: [0x1106, 0x1168], NFKC: [0xBA8C], NFKD: [0x1106, 0x1168] },
+{ source: [0xBA8D], NFC: [0xBA8D], NFD: [0x1106, 0x1168, 0x11A8], NFKC: [0xBA8D], NFKD: [0x1106, 0x1168, 0x11A8] },
+{ source: [0xBA8E], NFC: [0xBA8E], NFD: [0x1106, 0x1168, 0x11A9], NFKC: [0xBA8E], NFKD: [0x1106, 0x1168, 0x11A9] },
+{ source: [0xBA8F], NFC: [0xBA8F], NFD: [0x1106, 0x1168, 0x11AA], NFKC: [0xBA8F], NFKD: [0x1106, 0x1168, 0x11AA] },
+{ source: [0xBA90], NFC: [0xBA90], NFD: [0x1106, 0x1168, 0x11AB], NFKC: [0xBA90], NFKD: [0x1106, 0x1168, 0x11AB] },
+{ source: [0xBA91], NFC: [0xBA91], NFD: [0x1106, 0x1168, 0x11AC], NFKC: [0xBA91], NFKD: [0x1106, 0x1168, 0x11AC] },
+{ source: [0xBA92], NFC: [0xBA92], NFD: [0x1106, 0x1168, 0x11AD], NFKC: [0xBA92], NFKD: [0x1106, 0x1168, 0x11AD] },
+{ source: [0xBA93], NFC: [0xBA93], NFD: [0x1106, 0x1168, 0x11AE], NFKC: [0xBA93], NFKD: [0x1106, 0x1168, 0x11AE] },
+{ source: [0xBA94], NFC: [0xBA94], NFD: [0x1106, 0x1168, 0x11AF], NFKC: [0xBA94], NFKD: [0x1106, 0x1168, 0x11AF] },
+{ source: [0xBA95], NFC: [0xBA95], NFD: [0x1106, 0x1168, 0x11B0], NFKC: [0xBA95], NFKD: [0x1106, 0x1168, 0x11B0] },
+{ source: [0xBA96], NFC: [0xBA96], NFD: [0x1106, 0x1168, 0x11B1], NFKC: [0xBA96], NFKD: [0x1106, 0x1168, 0x11B1] },
+{ source: [0xBA97], NFC: [0xBA97], NFD: [0x1106, 0x1168, 0x11B2], NFKC: [0xBA97], NFKD: [0x1106, 0x1168, 0x11B2] },
+{ source: [0xBA98], NFC: [0xBA98], NFD: [0x1106, 0x1168, 0x11B3], NFKC: [0xBA98], NFKD: [0x1106, 0x1168, 0x11B3] },
+{ source: [0xBA99], NFC: [0xBA99], NFD: [0x1106, 0x1168, 0x11B4], NFKC: [0xBA99], NFKD: [0x1106, 0x1168, 0x11B4] },
+{ source: [0xBA9A], NFC: [0xBA9A], NFD: [0x1106, 0x1168, 0x11B5], NFKC: [0xBA9A], NFKD: [0x1106, 0x1168, 0x11B5] },
+{ source: [0xBA9B], NFC: [0xBA9B], NFD: [0x1106, 0x1168, 0x11B6], NFKC: [0xBA9B], NFKD: [0x1106, 0x1168, 0x11B6] },
+{ source: [0xBA9C], NFC: [0xBA9C], NFD: [0x1106, 0x1168, 0x11B7], NFKC: [0xBA9C], NFKD: [0x1106, 0x1168, 0x11B7] },
+{ source: [0xBA9D], NFC: [0xBA9D], NFD: [0x1106, 0x1168, 0x11B8], NFKC: [0xBA9D], NFKD: [0x1106, 0x1168, 0x11B8] },
+{ source: [0xBA9E], NFC: [0xBA9E], NFD: [0x1106, 0x1168, 0x11B9], NFKC: [0xBA9E], NFKD: [0x1106, 0x1168, 0x11B9] },
+{ source: [0xBA9F], NFC: [0xBA9F], NFD: [0x1106, 0x1168, 0x11BA], NFKC: [0xBA9F], NFKD: [0x1106, 0x1168, 0x11BA] },
+{ source: [0xBAA0], NFC: [0xBAA0], NFD: [0x1106, 0x1168, 0x11BB], NFKC: [0xBAA0], NFKD: [0x1106, 0x1168, 0x11BB] },
+{ source: [0xBAA1], NFC: [0xBAA1], NFD: [0x1106, 0x1168, 0x11BC], NFKC: [0xBAA1], NFKD: [0x1106, 0x1168, 0x11BC] },
+{ source: [0xBAA2], NFC: [0xBAA2], NFD: [0x1106, 0x1168, 0x11BD], NFKC: [0xBAA2], NFKD: [0x1106, 0x1168, 0x11BD] },
+{ source: [0xBAA3], NFC: [0xBAA3], NFD: [0x1106, 0x1168, 0x11BE], NFKC: [0xBAA3], NFKD: [0x1106, 0x1168, 0x11BE] },
+{ source: [0xBAA4], NFC: [0xBAA4], NFD: [0x1106, 0x1168, 0x11BF], NFKC: [0xBAA4], NFKD: [0x1106, 0x1168, 0x11BF] },
+{ source: [0xBAA5], NFC: [0xBAA5], NFD: [0x1106, 0x1168, 0x11C0], NFKC: [0xBAA5], NFKD: [0x1106, 0x1168, 0x11C0] },
+{ source: [0xBAA6], NFC: [0xBAA6], NFD: [0x1106, 0x1168, 0x11C1], NFKC: [0xBAA6], NFKD: [0x1106, 0x1168, 0x11C1] },
+{ source: [0xBAA7], NFC: [0xBAA7], NFD: [0x1106, 0x1168, 0x11C2], NFKC: [0xBAA7], NFKD: [0x1106, 0x1168, 0x11C2] },
+{ source: [0xBAA8], NFC: [0xBAA8], NFD: [0x1106, 0x1169], NFKC: [0xBAA8], NFKD: [0x1106, 0x1169] },
+{ source: [0xBAA9], NFC: [0xBAA9], NFD: [0x1106, 0x1169, 0x11A8], NFKC: [0xBAA9], NFKD: [0x1106, 0x1169, 0x11A8] },
+{ source: [0xBAAA], NFC: [0xBAAA], NFD: [0x1106, 0x1169, 0x11A9], NFKC: [0xBAAA], NFKD: [0x1106, 0x1169, 0x11A9] },
+{ source: [0xBAAB], NFC: [0xBAAB], NFD: [0x1106, 0x1169, 0x11AA], NFKC: [0xBAAB], NFKD: [0x1106, 0x1169, 0x11AA] },
+{ source: [0xBAAC], NFC: [0xBAAC], NFD: [0x1106, 0x1169, 0x11AB], NFKC: [0xBAAC], NFKD: [0x1106, 0x1169, 0x11AB] },
+{ source: [0xBAAD], NFC: [0xBAAD], NFD: [0x1106, 0x1169, 0x11AC], NFKC: [0xBAAD], NFKD: [0x1106, 0x1169, 0x11AC] },
+{ source: [0xBAAE], NFC: [0xBAAE], NFD: [0x1106, 0x1169, 0x11AD], NFKC: [0xBAAE], NFKD: [0x1106, 0x1169, 0x11AD] },
+{ source: [0xBAAF], NFC: [0xBAAF], NFD: [0x1106, 0x1169, 0x11AE], NFKC: [0xBAAF], NFKD: [0x1106, 0x1169, 0x11AE] },
+{ source: [0xBAB0], NFC: [0xBAB0], NFD: [0x1106, 0x1169, 0x11AF], NFKC: [0xBAB0], NFKD: [0x1106, 0x1169, 0x11AF] },
+{ source: [0xBAB1], NFC: [0xBAB1], NFD: [0x1106, 0x1169, 0x11B0], NFKC: [0xBAB1], NFKD: [0x1106, 0x1169, 0x11B0] },
+{ source: [0xBAB2], NFC: [0xBAB2], NFD: [0x1106, 0x1169, 0x11B1], NFKC: [0xBAB2], NFKD: [0x1106, 0x1169, 0x11B1] },
+{ source: [0xBAB3], NFC: [0xBAB3], NFD: [0x1106, 0x1169, 0x11B2], NFKC: [0xBAB3], NFKD: [0x1106, 0x1169, 0x11B2] },
+{ source: [0xBAB4], NFC: [0xBAB4], NFD: [0x1106, 0x1169, 0x11B3], NFKC: [0xBAB4], NFKD: [0x1106, 0x1169, 0x11B3] },
+{ source: [0xBAB5], NFC: [0xBAB5], NFD: [0x1106, 0x1169, 0x11B4], NFKC: [0xBAB5], NFKD: [0x1106, 0x1169, 0x11B4] },
+{ source: [0xBAB6], NFC: [0xBAB6], NFD: [0x1106, 0x1169, 0x11B5], NFKC: [0xBAB6], NFKD: [0x1106, 0x1169, 0x11B5] },
+{ source: [0xBAB7], NFC: [0xBAB7], NFD: [0x1106, 0x1169, 0x11B6], NFKC: [0xBAB7], NFKD: [0x1106, 0x1169, 0x11B6] },
+{ source: [0xBAB8], NFC: [0xBAB8], NFD: [0x1106, 0x1169, 0x11B7], NFKC: [0xBAB8], NFKD: [0x1106, 0x1169, 0x11B7] },
+{ source: [0xBAB9], NFC: [0xBAB9], NFD: [0x1106, 0x1169, 0x11B8], NFKC: [0xBAB9], NFKD: [0x1106, 0x1169, 0x11B8] },
+{ source: [0xBABA], NFC: [0xBABA], NFD: [0x1106, 0x1169, 0x11B9], NFKC: [0xBABA], NFKD: [0x1106, 0x1169, 0x11B9] },
+{ source: [0xBABB], NFC: [0xBABB], NFD: [0x1106, 0x1169, 0x11BA], NFKC: [0xBABB], NFKD: [0x1106, 0x1169, 0x11BA] },
+{ source: [0xBABC], NFC: [0xBABC], NFD: [0x1106, 0x1169, 0x11BB], NFKC: [0xBABC], NFKD: [0x1106, 0x1169, 0x11BB] },
+{ source: [0xBABD], NFC: [0xBABD], NFD: [0x1106, 0x1169, 0x11BC], NFKC: [0xBABD], NFKD: [0x1106, 0x1169, 0x11BC] },
+{ source: [0xBABE], NFC: [0xBABE], NFD: [0x1106, 0x1169, 0x11BD], NFKC: [0xBABE], NFKD: [0x1106, 0x1169, 0x11BD] },
+{ source: [0xBABF], NFC: [0xBABF], NFD: [0x1106, 0x1169, 0x11BE], NFKC: [0xBABF], NFKD: [0x1106, 0x1169, 0x11BE] },
+{ source: [0xBAC0], NFC: [0xBAC0], NFD: [0x1106, 0x1169, 0x11BF], NFKC: [0xBAC0], NFKD: [0x1106, 0x1169, 0x11BF] },
+{ source: [0xBAC1], NFC: [0xBAC1], NFD: [0x1106, 0x1169, 0x11C0], NFKC: [0xBAC1], NFKD: [0x1106, 0x1169, 0x11C0] },
+{ source: [0xBAC2], NFC: [0xBAC2], NFD: [0x1106, 0x1169, 0x11C1], NFKC: [0xBAC2], NFKD: [0x1106, 0x1169, 0x11C1] },
+{ source: [0xBAC3], NFC: [0xBAC3], NFD: [0x1106, 0x1169, 0x11C2], NFKC: [0xBAC3], NFKD: [0x1106, 0x1169, 0x11C2] },
+{ source: [0xBAC4], NFC: [0xBAC4], NFD: [0x1106, 0x116A], NFKC: [0xBAC4], NFKD: [0x1106, 0x116A] },
+{ source: [0xBAC5], NFC: [0xBAC5], NFD: [0x1106, 0x116A, 0x11A8], NFKC: [0xBAC5], NFKD: [0x1106, 0x116A, 0x11A8] },
+{ source: [0xBAC6], NFC: [0xBAC6], NFD: [0x1106, 0x116A, 0x11A9], NFKC: [0xBAC6], NFKD: [0x1106, 0x116A, 0x11A9] },
+{ source: [0xBAC7], NFC: [0xBAC7], NFD: [0x1106, 0x116A, 0x11AA], NFKC: [0xBAC7], NFKD: [0x1106, 0x116A, 0x11AA] },
+{ source: [0xBAC8], NFC: [0xBAC8], NFD: [0x1106, 0x116A, 0x11AB], NFKC: [0xBAC8], NFKD: [0x1106, 0x116A, 0x11AB] },
+{ source: [0xBAC9], NFC: [0xBAC9], NFD: [0x1106, 0x116A, 0x11AC], NFKC: [0xBAC9], NFKD: [0x1106, 0x116A, 0x11AC] },
+{ source: [0xBACA], NFC: [0xBACA], NFD: [0x1106, 0x116A, 0x11AD], NFKC: [0xBACA], NFKD: [0x1106, 0x116A, 0x11AD] },
+{ source: [0xBACB], NFC: [0xBACB], NFD: [0x1106, 0x116A, 0x11AE], NFKC: [0xBACB], NFKD: [0x1106, 0x116A, 0x11AE] },
+{ source: [0xBACC], NFC: [0xBACC], NFD: [0x1106, 0x116A, 0x11AF], NFKC: [0xBACC], NFKD: [0x1106, 0x116A, 0x11AF] },
+{ source: [0xBACD], NFC: [0xBACD], NFD: [0x1106, 0x116A, 0x11B0], NFKC: [0xBACD], NFKD: [0x1106, 0x116A, 0x11B0] },
+{ source: [0xBACE], NFC: [0xBACE], NFD: [0x1106, 0x116A, 0x11B1], NFKC: [0xBACE], NFKD: [0x1106, 0x116A, 0x11B1] },
+{ source: [0xBACF], NFC: [0xBACF], NFD: [0x1106, 0x116A, 0x11B2], NFKC: [0xBACF], NFKD: [0x1106, 0x116A, 0x11B2] },
+{ source: [0xBAD0], NFC: [0xBAD0], NFD: [0x1106, 0x116A, 0x11B3], NFKC: [0xBAD0], NFKD: [0x1106, 0x116A, 0x11B3] },
+{ source: [0xBAD1], NFC: [0xBAD1], NFD: [0x1106, 0x116A, 0x11B4], NFKC: [0xBAD1], NFKD: [0x1106, 0x116A, 0x11B4] },
+{ source: [0xBAD2], NFC: [0xBAD2], NFD: [0x1106, 0x116A, 0x11B5], NFKC: [0xBAD2], NFKD: [0x1106, 0x116A, 0x11B5] },
+{ source: [0xBAD3], NFC: [0xBAD3], NFD: [0x1106, 0x116A, 0x11B6], NFKC: [0xBAD3], NFKD: [0x1106, 0x116A, 0x11B6] },
+{ source: [0xBAD4], NFC: [0xBAD4], NFD: [0x1106, 0x116A, 0x11B7], NFKC: [0xBAD4], NFKD: [0x1106, 0x116A, 0x11B7] },
+{ source: [0xBAD5], NFC: [0xBAD5], NFD: [0x1106, 0x116A, 0x11B8], NFKC: [0xBAD5], NFKD: [0x1106, 0x116A, 0x11B8] },
+{ source: [0xBAD6], NFC: [0xBAD6], NFD: [0x1106, 0x116A, 0x11B9], NFKC: [0xBAD6], NFKD: [0x1106, 0x116A, 0x11B9] },
+{ source: [0xBAD7], NFC: [0xBAD7], NFD: [0x1106, 0x116A, 0x11BA], NFKC: [0xBAD7], NFKD: [0x1106, 0x116A, 0x11BA] },
+{ source: [0xBAD8], NFC: [0xBAD8], NFD: [0x1106, 0x116A, 0x11BB], NFKC: [0xBAD8], NFKD: [0x1106, 0x116A, 0x11BB] },
+{ source: [0xBAD9], NFC: [0xBAD9], NFD: [0x1106, 0x116A, 0x11BC], NFKC: [0xBAD9], NFKD: [0x1106, 0x116A, 0x11BC] },
+{ source: [0xBADA], NFC: [0xBADA], NFD: [0x1106, 0x116A, 0x11BD], NFKC: [0xBADA], NFKD: [0x1106, 0x116A, 0x11BD] },
+{ source: [0xBADB], NFC: [0xBADB], NFD: [0x1106, 0x116A, 0x11BE], NFKC: [0xBADB], NFKD: [0x1106, 0x116A, 0x11BE] },
+{ source: [0xBADC], NFC: [0xBADC], NFD: [0x1106, 0x116A, 0x11BF], NFKC: [0xBADC], NFKD: [0x1106, 0x116A, 0x11BF] },
+{ source: [0xBADD], NFC: [0xBADD], NFD: [0x1106, 0x116A, 0x11C0], NFKC: [0xBADD], NFKD: [0x1106, 0x116A, 0x11C0] },
+{ source: [0xBADE], NFC: [0xBADE], NFD: [0x1106, 0x116A, 0x11C1], NFKC: [0xBADE], NFKD: [0x1106, 0x116A, 0x11C1] },
+{ source: [0xBADF], NFC: [0xBADF], NFD: [0x1106, 0x116A, 0x11C2], NFKC: [0xBADF], NFKD: [0x1106, 0x116A, 0x11C2] },
+{ source: [0xBAE0], NFC: [0xBAE0], NFD: [0x1106, 0x116B], NFKC: [0xBAE0], NFKD: [0x1106, 0x116B] },
+{ source: [0xBAE1], NFC: [0xBAE1], NFD: [0x1106, 0x116B, 0x11A8], NFKC: [0xBAE1], NFKD: [0x1106, 0x116B, 0x11A8] },
+{ source: [0xBAE2], NFC: [0xBAE2], NFD: [0x1106, 0x116B, 0x11A9], NFKC: [0xBAE2], NFKD: [0x1106, 0x116B, 0x11A9] },
+{ source: [0xBAE3], NFC: [0xBAE3], NFD: [0x1106, 0x116B, 0x11AA], NFKC: [0xBAE3], NFKD: [0x1106, 0x116B, 0x11AA] },
+{ source: [0xBAE4], NFC: [0xBAE4], NFD: [0x1106, 0x116B, 0x11AB], NFKC: [0xBAE4], NFKD: [0x1106, 0x116B, 0x11AB] },
+{ source: [0xBAE5], NFC: [0xBAE5], NFD: [0x1106, 0x116B, 0x11AC], NFKC: [0xBAE5], NFKD: [0x1106, 0x116B, 0x11AC] },
+{ source: [0xBAE6], NFC: [0xBAE6], NFD: [0x1106, 0x116B, 0x11AD], NFKC: [0xBAE6], NFKD: [0x1106, 0x116B, 0x11AD] },
+{ source: [0xBAE7], NFC: [0xBAE7], NFD: [0x1106, 0x116B, 0x11AE], NFKC: [0xBAE7], NFKD: [0x1106, 0x116B, 0x11AE] },
+{ source: [0xBAE8], NFC: [0xBAE8], NFD: [0x1106, 0x116B, 0x11AF], NFKC: [0xBAE8], NFKD: [0x1106, 0x116B, 0x11AF] },
+{ source: [0xBAE9], NFC: [0xBAE9], NFD: [0x1106, 0x116B, 0x11B0], NFKC: [0xBAE9], NFKD: [0x1106, 0x116B, 0x11B0] },
+{ source: [0xBAEA], NFC: [0xBAEA], NFD: [0x1106, 0x116B, 0x11B1], NFKC: [0xBAEA], NFKD: [0x1106, 0x116B, 0x11B1] },
+{ source: [0xBAEB], NFC: [0xBAEB], NFD: [0x1106, 0x116B, 0x11B2], NFKC: [0xBAEB], NFKD: [0x1106, 0x116B, 0x11B2] },
+{ source: [0xBAEC], NFC: [0xBAEC], NFD: [0x1106, 0x116B, 0x11B3], NFKC: [0xBAEC], NFKD: [0x1106, 0x116B, 0x11B3] },
+{ source: [0xBAED], NFC: [0xBAED], NFD: [0x1106, 0x116B, 0x11B4], NFKC: [0xBAED], NFKD: [0x1106, 0x116B, 0x11B4] },
+{ source: [0xBAEE], NFC: [0xBAEE], NFD: [0x1106, 0x116B, 0x11B5], NFKC: [0xBAEE], NFKD: [0x1106, 0x116B, 0x11B5] },
+{ source: [0xBAEF], NFC: [0xBAEF], NFD: [0x1106, 0x116B, 0x11B6], NFKC: [0xBAEF], NFKD: [0x1106, 0x116B, 0x11B6] },
+{ source: [0xBAF0], NFC: [0xBAF0], NFD: [0x1106, 0x116B, 0x11B7], NFKC: [0xBAF0], NFKD: [0x1106, 0x116B, 0x11B7] },
+{ source: [0xBAF1], NFC: [0xBAF1], NFD: [0x1106, 0x116B, 0x11B8], NFKC: [0xBAF1], NFKD: [0x1106, 0x116B, 0x11B8] },
+{ source: [0xBAF2], NFC: [0xBAF2], NFD: [0x1106, 0x116B, 0x11B9], NFKC: [0xBAF2], NFKD: [0x1106, 0x116B, 0x11B9] },
+{ source: [0xBAF3], NFC: [0xBAF3], NFD: [0x1106, 0x116B, 0x11BA], NFKC: [0xBAF3], NFKD: [0x1106, 0x116B, 0x11BA] },
+{ source: [0xBAF4], NFC: [0xBAF4], NFD: [0x1106, 0x116B, 0x11BB], NFKC: [0xBAF4], NFKD: [0x1106, 0x116B, 0x11BB] },
+{ source: [0xBAF5], NFC: [0xBAF5], NFD: [0x1106, 0x116B, 0x11BC], NFKC: [0xBAF5], NFKD: [0x1106, 0x116B, 0x11BC] },
+{ source: [0xBAF6], NFC: [0xBAF6], NFD: [0x1106, 0x116B, 0x11BD], NFKC: [0xBAF6], NFKD: [0x1106, 0x116B, 0x11BD] },
+{ source: [0xBAF7], NFC: [0xBAF7], NFD: [0x1106, 0x116B, 0x11BE], NFKC: [0xBAF7], NFKD: [0x1106, 0x116B, 0x11BE] },
+{ source: [0xBAF8], NFC: [0xBAF8], NFD: [0x1106, 0x116B, 0x11BF], NFKC: [0xBAF8], NFKD: [0x1106, 0x116B, 0x11BF] },
+{ source: [0xBAF9], NFC: [0xBAF9], NFD: [0x1106, 0x116B, 0x11C0], NFKC: [0xBAF9], NFKD: [0x1106, 0x116B, 0x11C0] },
+{ source: [0xBAFA], NFC: [0xBAFA], NFD: [0x1106, 0x116B, 0x11C1], NFKC: [0xBAFA], NFKD: [0x1106, 0x116B, 0x11C1] },
+{ source: [0xBAFB], NFC: [0xBAFB], NFD: [0x1106, 0x116B, 0x11C2], NFKC: [0xBAFB], NFKD: [0x1106, 0x116B, 0x11C2] },
+{ source: [0xBAFC], NFC: [0xBAFC], NFD: [0x1106, 0x116C], NFKC: [0xBAFC], NFKD: [0x1106, 0x116C] },
+{ source: [0xBAFD], NFC: [0xBAFD], NFD: [0x1106, 0x116C, 0x11A8], NFKC: [0xBAFD], NFKD: [0x1106, 0x116C, 0x11A8] },
+{ source: [0xBAFE], NFC: [0xBAFE], NFD: [0x1106, 0x116C, 0x11A9], NFKC: [0xBAFE], NFKD: [0x1106, 0x116C, 0x11A9] },
+{ source: [0xBAFF], NFC: [0xBAFF], NFD: [0x1106, 0x116C, 0x11AA], NFKC: [0xBAFF], NFKD: [0x1106, 0x116C, 0x11AA] },
+{ source: [0xBB00], NFC: [0xBB00], NFD: [0x1106, 0x116C, 0x11AB], NFKC: [0xBB00], NFKD: [0x1106, 0x116C, 0x11AB] },
+{ source: [0xBB01], NFC: [0xBB01], NFD: [0x1106, 0x116C, 0x11AC], NFKC: [0xBB01], NFKD: [0x1106, 0x116C, 0x11AC] },
+{ source: [0xBB02], NFC: [0xBB02], NFD: [0x1106, 0x116C, 0x11AD], NFKC: [0xBB02], NFKD: [0x1106, 0x116C, 0x11AD] },
+{ source: [0xBB03], NFC: [0xBB03], NFD: [0x1106, 0x116C, 0x11AE], NFKC: [0xBB03], NFKD: [0x1106, 0x116C, 0x11AE] },
+{ source: [0xBB04], NFC: [0xBB04], NFD: [0x1106, 0x116C, 0x11AF], NFKC: [0xBB04], NFKD: [0x1106, 0x116C, 0x11AF] },
+{ source: [0xBB05], NFC: [0xBB05], NFD: [0x1106, 0x116C, 0x11B0], NFKC: [0xBB05], NFKD: [0x1106, 0x116C, 0x11B0] },
+{ source: [0xBB06], NFC: [0xBB06], NFD: [0x1106, 0x116C, 0x11B1], NFKC: [0xBB06], NFKD: [0x1106, 0x116C, 0x11B1] },
+{ source: [0xBB07], NFC: [0xBB07], NFD: [0x1106, 0x116C, 0x11B2], NFKC: [0xBB07], NFKD: [0x1106, 0x116C, 0x11B2] },
+{ source: [0xBB08], NFC: [0xBB08], NFD: [0x1106, 0x116C, 0x11B3], NFKC: [0xBB08], NFKD: [0x1106, 0x116C, 0x11B3] },
+{ source: [0xBB09], NFC: [0xBB09], NFD: [0x1106, 0x116C, 0x11B4], NFKC: [0xBB09], NFKD: [0x1106, 0x116C, 0x11B4] },
+{ source: [0xBB0A], NFC: [0xBB0A], NFD: [0x1106, 0x116C, 0x11B5], NFKC: [0xBB0A], NFKD: [0x1106, 0x116C, 0x11B5] },
+{ source: [0xBB0B], NFC: [0xBB0B], NFD: [0x1106, 0x116C, 0x11B6], NFKC: [0xBB0B], NFKD: [0x1106, 0x116C, 0x11B6] },
+{ source: [0xBB0C], NFC: [0xBB0C], NFD: [0x1106, 0x116C, 0x11B7], NFKC: [0xBB0C], NFKD: [0x1106, 0x116C, 0x11B7] },
+{ source: [0xBB0D], NFC: [0xBB0D], NFD: [0x1106, 0x116C, 0x11B8], NFKC: [0xBB0D], NFKD: [0x1106, 0x116C, 0x11B8] },
+{ source: [0xBB0E], NFC: [0xBB0E], NFD: [0x1106, 0x116C, 0x11B9], NFKC: [0xBB0E], NFKD: [0x1106, 0x116C, 0x11B9] },
+{ source: [0xBB0F], NFC: [0xBB0F], NFD: [0x1106, 0x116C, 0x11BA], NFKC: [0xBB0F], NFKD: [0x1106, 0x116C, 0x11BA] },
+{ source: [0xBB10], NFC: [0xBB10], NFD: [0x1106, 0x116C, 0x11BB], NFKC: [0xBB10], NFKD: [0x1106, 0x116C, 0x11BB] },
+{ source: [0xBB11], NFC: [0xBB11], NFD: [0x1106, 0x116C, 0x11BC], NFKC: [0xBB11], NFKD: [0x1106, 0x116C, 0x11BC] },
+{ source: [0xBB12], NFC: [0xBB12], NFD: [0x1106, 0x116C, 0x11BD], NFKC: [0xBB12], NFKD: [0x1106, 0x116C, 0x11BD] },
+{ source: [0xBB13], NFC: [0xBB13], NFD: [0x1106, 0x116C, 0x11BE], NFKC: [0xBB13], NFKD: [0x1106, 0x116C, 0x11BE] },
+{ source: [0xBB14], NFC: [0xBB14], NFD: [0x1106, 0x116C, 0x11BF], NFKC: [0xBB14], NFKD: [0x1106, 0x116C, 0x11BF] },
+{ source: [0xBB15], NFC: [0xBB15], NFD: [0x1106, 0x116C, 0x11C0], NFKC: [0xBB15], NFKD: [0x1106, 0x116C, 0x11C0] },
+{ source: [0xBB16], NFC: [0xBB16], NFD: [0x1106, 0x116C, 0x11C1], NFKC: [0xBB16], NFKD: [0x1106, 0x116C, 0x11C1] },
+{ source: [0xBB17], NFC: [0xBB17], NFD: [0x1106, 0x116C, 0x11C2], NFKC: [0xBB17], NFKD: [0x1106, 0x116C, 0x11C2] },
+{ source: [0xBB18], NFC: [0xBB18], NFD: [0x1106, 0x116D], NFKC: [0xBB18], NFKD: [0x1106, 0x116D] },
+{ source: [0xBB19], NFC: [0xBB19], NFD: [0x1106, 0x116D, 0x11A8], NFKC: [0xBB19], NFKD: [0x1106, 0x116D, 0x11A8] },
+{ source: [0xBB1A], NFC: [0xBB1A], NFD: [0x1106, 0x116D, 0x11A9], NFKC: [0xBB1A], NFKD: [0x1106, 0x116D, 0x11A9] },
+{ source: [0xBB1B], NFC: [0xBB1B], NFD: [0x1106, 0x116D, 0x11AA], NFKC: [0xBB1B], NFKD: [0x1106, 0x116D, 0x11AA] },
+{ source: [0xBB1C], NFC: [0xBB1C], NFD: [0x1106, 0x116D, 0x11AB], NFKC: [0xBB1C], NFKD: [0x1106, 0x116D, 0x11AB] },
+{ source: [0xBB1D], NFC: [0xBB1D], NFD: [0x1106, 0x116D, 0x11AC], NFKC: [0xBB1D], NFKD: [0x1106, 0x116D, 0x11AC] },
+{ source: [0xBB1E], NFC: [0xBB1E], NFD: [0x1106, 0x116D, 0x11AD], NFKC: [0xBB1E], NFKD: [0x1106, 0x116D, 0x11AD] },
+{ source: [0xBB1F], NFC: [0xBB1F], NFD: [0x1106, 0x116D, 0x11AE], NFKC: [0xBB1F], NFKD: [0x1106, 0x116D, 0x11AE] },
+{ source: [0xBB20], NFC: [0xBB20], NFD: [0x1106, 0x116D, 0x11AF], NFKC: [0xBB20], NFKD: [0x1106, 0x116D, 0x11AF] },
+{ source: [0xBB21], NFC: [0xBB21], NFD: [0x1106, 0x116D, 0x11B0], NFKC: [0xBB21], NFKD: [0x1106, 0x116D, 0x11B0] },
+{ source: [0xBB22], NFC: [0xBB22], NFD: [0x1106, 0x116D, 0x11B1], NFKC: [0xBB22], NFKD: [0x1106, 0x116D, 0x11B1] },
+{ source: [0xBB23], NFC: [0xBB23], NFD: [0x1106, 0x116D, 0x11B2], NFKC: [0xBB23], NFKD: [0x1106, 0x116D, 0x11B2] },
+{ source: [0xBB24], NFC: [0xBB24], NFD: [0x1106, 0x116D, 0x11B3], NFKC: [0xBB24], NFKD: [0x1106, 0x116D, 0x11B3] },
+{ source: [0xBB25], NFC: [0xBB25], NFD: [0x1106, 0x116D, 0x11B4], NFKC: [0xBB25], NFKD: [0x1106, 0x116D, 0x11B4] },
+{ source: [0xBB26], NFC: [0xBB26], NFD: [0x1106, 0x116D, 0x11B5], NFKC: [0xBB26], NFKD: [0x1106, 0x116D, 0x11B5] },
+{ source: [0xBB27], NFC: [0xBB27], NFD: [0x1106, 0x116D, 0x11B6], NFKC: [0xBB27], NFKD: [0x1106, 0x116D, 0x11B6] },
+{ source: [0xBB28], NFC: [0xBB28], NFD: [0x1106, 0x116D, 0x11B7], NFKC: [0xBB28], NFKD: [0x1106, 0x116D, 0x11B7] },
+{ source: [0xBB29], NFC: [0xBB29], NFD: [0x1106, 0x116D, 0x11B8], NFKC: [0xBB29], NFKD: [0x1106, 0x116D, 0x11B8] },
+{ source: [0xBB2A], NFC: [0xBB2A], NFD: [0x1106, 0x116D, 0x11B9], NFKC: [0xBB2A], NFKD: [0x1106, 0x116D, 0x11B9] },
+{ source: [0xBB2B], NFC: [0xBB2B], NFD: [0x1106, 0x116D, 0x11BA], NFKC: [0xBB2B], NFKD: [0x1106, 0x116D, 0x11BA] },
+{ source: [0xBB2C], NFC: [0xBB2C], NFD: [0x1106, 0x116D, 0x11BB], NFKC: [0xBB2C], NFKD: [0x1106, 0x116D, 0x11BB] },
+{ source: [0xBB2D], NFC: [0xBB2D], NFD: [0x1106, 0x116D, 0x11BC], NFKC: [0xBB2D], NFKD: [0x1106, 0x116D, 0x11BC] },
+{ source: [0xBB2E], NFC: [0xBB2E], NFD: [0x1106, 0x116D, 0x11BD], NFKC: [0xBB2E], NFKD: [0x1106, 0x116D, 0x11BD] },
+{ source: [0xBB2F], NFC: [0xBB2F], NFD: [0x1106, 0x116D, 0x11BE], NFKC: [0xBB2F], NFKD: [0x1106, 0x116D, 0x11BE] },
+{ source: [0xBB30], NFC: [0xBB30], NFD: [0x1106, 0x116D, 0x11BF], NFKC: [0xBB30], NFKD: [0x1106, 0x116D, 0x11BF] },
+{ source: [0xBB31], NFC: [0xBB31], NFD: [0x1106, 0x116D, 0x11C0], NFKC: [0xBB31], NFKD: [0x1106, 0x116D, 0x11C0] },
+{ source: [0xBB32], NFC: [0xBB32], NFD: [0x1106, 0x116D, 0x11C1], NFKC: [0xBB32], NFKD: [0x1106, 0x116D, 0x11C1] },
+{ source: [0xBB33], NFC: [0xBB33], NFD: [0x1106, 0x116D, 0x11C2], NFKC: [0xBB33], NFKD: [0x1106, 0x116D, 0x11C2] },
+{ source: [0xBB34], NFC: [0xBB34], NFD: [0x1106, 0x116E], NFKC: [0xBB34], NFKD: [0x1106, 0x116E] },
+{ source: [0xBB35], NFC: [0xBB35], NFD: [0x1106, 0x116E, 0x11A8], NFKC: [0xBB35], NFKD: [0x1106, 0x116E, 0x11A8] },
+{ source: [0xBB36], NFC: [0xBB36], NFD: [0x1106, 0x116E, 0x11A9], NFKC: [0xBB36], NFKD: [0x1106, 0x116E, 0x11A9] },
+{ source: [0xBB37], NFC: [0xBB37], NFD: [0x1106, 0x116E, 0x11AA], NFKC: [0xBB37], NFKD: [0x1106, 0x116E, 0x11AA] },
+{ source: [0xBB38], NFC: [0xBB38], NFD: [0x1106, 0x116E, 0x11AB], NFKC: [0xBB38], NFKD: [0x1106, 0x116E, 0x11AB] },
+{ source: [0xBB39], NFC: [0xBB39], NFD: [0x1106, 0x116E, 0x11AC], NFKC: [0xBB39], NFKD: [0x1106, 0x116E, 0x11AC] },
+{ source: [0xBB3A], NFC: [0xBB3A], NFD: [0x1106, 0x116E, 0x11AD], NFKC: [0xBB3A], NFKD: [0x1106, 0x116E, 0x11AD] },
+{ source: [0xBB3B], NFC: [0xBB3B], NFD: [0x1106, 0x116E, 0x11AE], NFKC: [0xBB3B], NFKD: [0x1106, 0x116E, 0x11AE] },
+{ source: [0xBB3C], NFC: [0xBB3C], NFD: [0x1106, 0x116E, 0x11AF], NFKC: [0xBB3C], NFKD: [0x1106, 0x116E, 0x11AF] },
+{ source: [0xBB3D], NFC: [0xBB3D], NFD: [0x1106, 0x116E, 0x11B0], NFKC: [0xBB3D], NFKD: [0x1106, 0x116E, 0x11B0] },
+{ source: [0xBB3E], NFC: [0xBB3E], NFD: [0x1106, 0x116E, 0x11B1], NFKC: [0xBB3E], NFKD: [0x1106, 0x116E, 0x11B1] },
+{ source: [0xBB3F], NFC: [0xBB3F], NFD: [0x1106, 0x116E, 0x11B2], NFKC: [0xBB3F], NFKD: [0x1106, 0x116E, 0x11B2] },
+{ source: [0xBB40], NFC: [0xBB40], NFD: [0x1106, 0x116E, 0x11B3], NFKC: [0xBB40], NFKD: [0x1106, 0x116E, 0x11B3] },
+{ source: [0xBB41], NFC: [0xBB41], NFD: [0x1106, 0x116E, 0x11B4], NFKC: [0xBB41], NFKD: [0x1106, 0x116E, 0x11B4] },
+{ source: [0xBB42], NFC: [0xBB42], NFD: [0x1106, 0x116E, 0x11B5], NFKC: [0xBB42], NFKD: [0x1106, 0x116E, 0x11B5] },
+{ source: [0xBB43], NFC: [0xBB43], NFD: [0x1106, 0x116E, 0x11B6], NFKC: [0xBB43], NFKD: [0x1106, 0x116E, 0x11B6] },
+{ source: [0xBB44], NFC: [0xBB44], NFD: [0x1106, 0x116E, 0x11B7], NFKC: [0xBB44], NFKD: [0x1106, 0x116E, 0x11B7] },
+{ source: [0xBB45], NFC: [0xBB45], NFD: [0x1106, 0x116E, 0x11B8], NFKC: [0xBB45], NFKD: [0x1106, 0x116E, 0x11B8] },
+{ source: [0xBB46], NFC: [0xBB46], NFD: [0x1106, 0x116E, 0x11B9], NFKC: [0xBB46], NFKD: [0x1106, 0x116E, 0x11B9] },
+{ source: [0xBB47], NFC: [0xBB47], NFD: [0x1106, 0x116E, 0x11BA], NFKC: [0xBB47], NFKD: [0x1106, 0x116E, 0x11BA] },
+{ source: [0xBB48], NFC: [0xBB48], NFD: [0x1106, 0x116E, 0x11BB], NFKC: [0xBB48], NFKD: [0x1106, 0x116E, 0x11BB] },
+{ source: [0xBB49], NFC: [0xBB49], NFD: [0x1106, 0x116E, 0x11BC], NFKC: [0xBB49], NFKD: [0x1106, 0x116E, 0x11BC] },
+{ source: [0xBB4A], NFC: [0xBB4A], NFD: [0x1106, 0x116E, 0x11BD], NFKC: [0xBB4A], NFKD: [0x1106, 0x116E, 0x11BD] },
+{ source: [0xBB4B], NFC: [0xBB4B], NFD: [0x1106, 0x116E, 0x11BE], NFKC: [0xBB4B], NFKD: [0x1106, 0x116E, 0x11BE] },
+{ source: [0xBB4C], NFC: [0xBB4C], NFD: [0x1106, 0x116E, 0x11BF], NFKC: [0xBB4C], NFKD: [0x1106, 0x116E, 0x11BF] },
+{ source: [0xBB4D], NFC: [0xBB4D], NFD: [0x1106, 0x116E, 0x11C0], NFKC: [0xBB4D], NFKD: [0x1106, 0x116E, 0x11C0] },
+{ source: [0xBB4E], NFC: [0xBB4E], NFD: [0x1106, 0x116E, 0x11C1], NFKC: [0xBB4E], NFKD: [0x1106, 0x116E, 0x11C1] },
+{ source: [0xBB4F], NFC: [0xBB4F], NFD: [0x1106, 0x116E, 0x11C2], NFKC: [0xBB4F], NFKD: [0x1106, 0x116E, 0x11C2] },
+{ source: [0xBB50], NFC: [0xBB50], NFD: [0x1106, 0x116F], NFKC: [0xBB50], NFKD: [0x1106, 0x116F] },
+{ source: [0xBB51], NFC: [0xBB51], NFD: [0x1106, 0x116F, 0x11A8], NFKC: [0xBB51], NFKD: [0x1106, 0x116F, 0x11A8] },
+{ source: [0xBB52], NFC: [0xBB52], NFD: [0x1106, 0x116F, 0x11A9], NFKC: [0xBB52], NFKD: [0x1106, 0x116F, 0x11A9] },
+{ source: [0xBB53], NFC: [0xBB53], NFD: [0x1106, 0x116F, 0x11AA], NFKC: [0xBB53], NFKD: [0x1106, 0x116F, 0x11AA] },
+{ source: [0xBB54], NFC: [0xBB54], NFD: [0x1106, 0x116F, 0x11AB], NFKC: [0xBB54], NFKD: [0x1106, 0x116F, 0x11AB] },
+{ source: [0xBB55], NFC: [0xBB55], NFD: [0x1106, 0x116F, 0x11AC], NFKC: [0xBB55], NFKD: [0x1106, 0x116F, 0x11AC] },
+{ source: [0xBB56], NFC: [0xBB56], NFD: [0x1106, 0x116F, 0x11AD], NFKC: [0xBB56], NFKD: [0x1106, 0x116F, 0x11AD] },
+{ source: [0xBB57], NFC: [0xBB57], NFD: [0x1106, 0x116F, 0x11AE], NFKC: [0xBB57], NFKD: [0x1106, 0x116F, 0x11AE] },
+{ source: [0xBB58], NFC: [0xBB58], NFD: [0x1106, 0x116F, 0x11AF], NFKC: [0xBB58], NFKD: [0x1106, 0x116F, 0x11AF] },
+{ source: [0xBB59], NFC: [0xBB59], NFD: [0x1106, 0x116F, 0x11B0], NFKC: [0xBB59], NFKD: [0x1106, 0x116F, 0x11B0] },
+{ source: [0xBB5A], NFC: [0xBB5A], NFD: [0x1106, 0x116F, 0x11B1], NFKC: [0xBB5A], NFKD: [0x1106, 0x116F, 0x11B1] },
+{ source: [0xBB5B], NFC: [0xBB5B], NFD: [0x1106, 0x116F, 0x11B2], NFKC: [0xBB5B], NFKD: [0x1106, 0x116F, 0x11B2] },
+{ source: [0xBB5C], NFC: [0xBB5C], NFD: [0x1106, 0x116F, 0x11B3], NFKC: [0xBB5C], NFKD: [0x1106, 0x116F, 0x11B3] },
+{ source: [0xBB5D], NFC: [0xBB5D], NFD: [0x1106, 0x116F, 0x11B4], NFKC: [0xBB5D], NFKD: [0x1106, 0x116F, 0x11B4] },
+{ source: [0xBB5E], NFC: [0xBB5E], NFD: [0x1106, 0x116F, 0x11B5], NFKC: [0xBB5E], NFKD: [0x1106, 0x116F, 0x11B5] },
+{ source: [0xBB5F], NFC: [0xBB5F], NFD: [0x1106, 0x116F, 0x11B6], NFKC: [0xBB5F], NFKD: [0x1106, 0x116F, 0x11B6] },
+{ source: [0xBB60], NFC: [0xBB60], NFD: [0x1106, 0x116F, 0x11B7], NFKC: [0xBB60], NFKD: [0x1106, 0x116F, 0x11B7] },
+{ source: [0xBB61], NFC: [0xBB61], NFD: [0x1106, 0x116F, 0x11B8], NFKC: [0xBB61], NFKD: [0x1106, 0x116F, 0x11B8] },
+{ source: [0xBB62], NFC: [0xBB62], NFD: [0x1106, 0x116F, 0x11B9], NFKC: [0xBB62], NFKD: [0x1106, 0x116F, 0x11B9] },
+{ source: [0xBB63], NFC: [0xBB63], NFD: [0x1106, 0x116F, 0x11BA], NFKC: [0xBB63], NFKD: [0x1106, 0x116F, 0x11BA] },
+{ source: [0xBB64], NFC: [0xBB64], NFD: [0x1106, 0x116F, 0x11BB], NFKC: [0xBB64], NFKD: [0x1106, 0x116F, 0x11BB] },
+{ source: [0xBB65], NFC: [0xBB65], NFD: [0x1106, 0x116F, 0x11BC], NFKC: [0xBB65], NFKD: [0x1106, 0x116F, 0x11BC] },
+{ source: [0xBB66], NFC: [0xBB66], NFD: [0x1106, 0x116F, 0x11BD], NFKC: [0xBB66], NFKD: [0x1106, 0x116F, 0x11BD] },
+{ source: [0xBB67], NFC: [0xBB67], NFD: [0x1106, 0x116F, 0x11BE], NFKC: [0xBB67], NFKD: [0x1106, 0x116F, 0x11BE] },
+{ source: [0xBB68], NFC: [0xBB68], NFD: [0x1106, 0x116F, 0x11BF], NFKC: [0xBB68], NFKD: [0x1106, 0x116F, 0x11BF] },
+{ source: [0xBB69], NFC: [0xBB69], NFD: [0x1106, 0x116F, 0x11C0], NFKC: [0xBB69], NFKD: [0x1106, 0x116F, 0x11C0] },
+{ source: [0xBB6A], NFC: [0xBB6A], NFD: [0x1106, 0x116F, 0x11C1], NFKC: [0xBB6A], NFKD: [0x1106, 0x116F, 0x11C1] },
+{ source: [0xBB6B], NFC: [0xBB6B], NFD: [0x1106, 0x116F, 0x11C2], NFKC: [0xBB6B], NFKD: [0x1106, 0x116F, 0x11C2] },
+{ source: [0xBB6C], NFC: [0xBB6C], NFD: [0x1106, 0x1170], NFKC: [0xBB6C], NFKD: [0x1106, 0x1170] },
+{ source: [0xBB6D], NFC: [0xBB6D], NFD: [0x1106, 0x1170, 0x11A8], NFKC: [0xBB6D], NFKD: [0x1106, 0x1170, 0x11A8] },
+{ source: [0xBB6E], NFC: [0xBB6E], NFD: [0x1106, 0x1170, 0x11A9], NFKC: [0xBB6E], NFKD: [0x1106, 0x1170, 0x11A9] },
+{ source: [0xBB6F], NFC: [0xBB6F], NFD: [0x1106, 0x1170, 0x11AA], NFKC: [0xBB6F], NFKD: [0x1106, 0x1170, 0x11AA] },
+{ source: [0xBB70], NFC: [0xBB70], NFD: [0x1106, 0x1170, 0x11AB], NFKC: [0xBB70], NFKD: [0x1106, 0x1170, 0x11AB] },
+{ source: [0xBB71], NFC: [0xBB71], NFD: [0x1106, 0x1170, 0x11AC], NFKC: [0xBB71], NFKD: [0x1106, 0x1170, 0x11AC] },
+{ source: [0xBB72], NFC: [0xBB72], NFD: [0x1106, 0x1170, 0x11AD], NFKC: [0xBB72], NFKD: [0x1106, 0x1170, 0x11AD] },
+{ source: [0xBB73], NFC: [0xBB73], NFD: [0x1106, 0x1170, 0x11AE], NFKC: [0xBB73], NFKD: [0x1106, 0x1170, 0x11AE] },
+{ source: [0xBB74], NFC: [0xBB74], NFD: [0x1106, 0x1170, 0x11AF], NFKC: [0xBB74], NFKD: [0x1106, 0x1170, 0x11AF] },
+{ source: [0xBB75], NFC: [0xBB75], NFD: [0x1106, 0x1170, 0x11B0], NFKC: [0xBB75], NFKD: [0x1106, 0x1170, 0x11B0] },
+{ source: [0xBB76], NFC: [0xBB76], NFD: [0x1106, 0x1170, 0x11B1], NFKC: [0xBB76], NFKD: [0x1106, 0x1170, 0x11B1] },
+{ source: [0xBB77], NFC: [0xBB77], NFD: [0x1106, 0x1170, 0x11B2], NFKC: [0xBB77], NFKD: [0x1106, 0x1170, 0x11B2] },
+{ source: [0xBB78], NFC: [0xBB78], NFD: [0x1106, 0x1170, 0x11B3], NFKC: [0xBB78], NFKD: [0x1106, 0x1170, 0x11B3] },
+{ source: [0xBB79], NFC: [0xBB79], NFD: [0x1106, 0x1170, 0x11B4], NFKC: [0xBB79], NFKD: [0x1106, 0x1170, 0x11B4] },
+{ source: [0xBB7A], NFC: [0xBB7A], NFD: [0x1106, 0x1170, 0x11B5], NFKC: [0xBB7A], NFKD: [0x1106, 0x1170, 0x11B5] },
+{ source: [0xBB7B], NFC: [0xBB7B], NFD: [0x1106, 0x1170, 0x11B6], NFKC: [0xBB7B], NFKD: [0x1106, 0x1170, 0x11B6] },
+{ source: [0xBB7C], NFC: [0xBB7C], NFD: [0x1106, 0x1170, 0x11B7], NFKC: [0xBB7C], NFKD: [0x1106, 0x1170, 0x11B7] },
+{ source: [0xBB7D], NFC: [0xBB7D], NFD: [0x1106, 0x1170, 0x11B8], NFKC: [0xBB7D], NFKD: [0x1106, 0x1170, 0x11B8] },
+{ source: [0xBB7E], NFC: [0xBB7E], NFD: [0x1106, 0x1170, 0x11B9], NFKC: [0xBB7E], NFKD: [0x1106, 0x1170, 0x11B9] },
+{ source: [0xBB7F], NFC: [0xBB7F], NFD: [0x1106, 0x1170, 0x11BA], NFKC: [0xBB7F], NFKD: [0x1106, 0x1170, 0x11BA] },
+{ source: [0xBB80], NFC: [0xBB80], NFD: [0x1106, 0x1170, 0x11BB], NFKC: [0xBB80], NFKD: [0x1106, 0x1170, 0x11BB] },
+{ source: [0xBB81], NFC: [0xBB81], NFD: [0x1106, 0x1170, 0x11BC], NFKC: [0xBB81], NFKD: [0x1106, 0x1170, 0x11BC] },
+{ source: [0xBB82], NFC: [0xBB82], NFD: [0x1106, 0x1170, 0x11BD], NFKC: [0xBB82], NFKD: [0x1106, 0x1170, 0x11BD] },
+{ source: [0xBB83], NFC: [0xBB83], NFD: [0x1106, 0x1170, 0x11BE], NFKC: [0xBB83], NFKD: [0x1106, 0x1170, 0x11BE] },
+{ source: [0xBB84], NFC: [0xBB84], NFD: [0x1106, 0x1170, 0x11BF], NFKC: [0xBB84], NFKD: [0x1106, 0x1170, 0x11BF] },
+{ source: [0xBB85], NFC: [0xBB85], NFD: [0x1106, 0x1170, 0x11C0], NFKC: [0xBB85], NFKD: [0x1106, 0x1170, 0x11C0] },
+{ source: [0xBB86], NFC: [0xBB86], NFD: [0x1106, 0x1170, 0x11C1], NFKC: [0xBB86], NFKD: [0x1106, 0x1170, 0x11C1] },
+{ source: [0xBB87], NFC: [0xBB87], NFD: [0x1106, 0x1170, 0x11C2], NFKC: [0xBB87], NFKD: [0x1106, 0x1170, 0x11C2] },
+{ source: [0xBB88], NFC: [0xBB88], NFD: [0x1106, 0x1171], NFKC: [0xBB88], NFKD: [0x1106, 0x1171] },
+{ source: [0xBB89], NFC: [0xBB89], NFD: [0x1106, 0x1171, 0x11A8], NFKC: [0xBB89], NFKD: [0x1106, 0x1171, 0x11A8] },
+{ source: [0xBB8A], NFC: [0xBB8A], NFD: [0x1106, 0x1171, 0x11A9], NFKC: [0xBB8A], NFKD: [0x1106, 0x1171, 0x11A9] },
+{ source: [0xBB8B], NFC: [0xBB8B], NFD: [0x1106, 0x1171, 0x11AA], NFKC: [0xBB8B], NFKD: [0x1106, 0x1171, 0x11AA] },
+{ source: [0xBB8C], NFC: [0xBB8C], NFD: [0x1106, 0x1171, 0x11AB], NFKC: [0xBB8C], NFKD: [0x1106, 0x1171, 0x11AB] },
+{ source: [0xBB8D], NFC: [0xBB8D], NFD: [0x1106, 0x1171, 0x11AC], NFKC: [0xBB8D], NFKD: [0x1106, 0x1171, 0x11AC] },
+{ source: [0xBB8E], NFC: [0xBB8E], NFD: [0x1106, 0x1171, 0x11AD], NFKC: [0xBB8E], NFKD: [0x1106, 0x1171, 0x11AD] },
+{ source: [0xBB8F], NFC: [0xBB8F], NFD: [0x1106, 0x1171, 0x11AE], NFKC: [0xBB8F], NFKD: [0x1106, 0x1171, 0x11AE] },
+{ source: [0xBB90], NFC: [0xBB90], NFD: [0x1106, 0x1171, 0x11AF], NFKC: [0xBB90], NFKD: [0x1106, 0x1171, 0x11AF] },
+{ source: [0xBB91], NFC: [0xBB91], NFD: [0x1106, 0x1171, 0x11B0], NFKC: [0xBB91], NFKD: [0x1106, 0x1171, 0x11B0] },
+{ source: [0xBB92], NFC: [0xBB92], NFD: [0x1106, 0x1171, 0x11B1], NFKC: [0xBB92], NFKD: [0x1106, 0x1171, 0x11B1] },
+{ source: [0xBB93], NFC: [0xBB93], NFD: [0x1106, 0x1171, 0x11B2], NFKC: [0xBB93], NFKD: [0x1106, 0x1171, 0x11B2] },
+{ source: [0xBB94], NFC: [0xBB94], NFD: [0x1106, 0x1171, 0x11B3], NFKC: [0xBB94], NFKD: [0x1106, 0x1171, 0x11B3] },
+{ source: [0xBB95], NFC: [0xBB95], NFD: [0x1106, 0x1171, 0x11B4], NFKC: [0xBB95], NFKD: [0x1106, 0x1171, 0x11B4] },
+{ source: [0xBB96], NFC: [0xBB96], NFD: [0x1106, 0x1171, 0x11B5], NFKC: [0xBB96], NFKD: [0x1106, 0x1171, 0x11B5] },
+{ source: [0xBB97], NFC: [0xBB97], NFD: [0x1106, 0x1171, 0x11B6], NFKC: [0xBB97], NFKD: [0x1106, 0x1171, 0x11B6] },
+{ source: [0xBB98], NFC: [0xBB98], NFD: [0x1106, 0x1171, 0x11B7], NFKC: [0xBB98], NFKD: [0x1106, 0x1171, 0x11B7] },
+{ source: [0xBB99], NFC: [0xBB99], NFD: [0x1106, 0x1171, 0x11B8], NFKC: [0xBB99], NFKD: [0x1106, 0x1171, 0x11B8] },
+{ source: [0xBB9A], NFC: [0xBB9A], NFD: [0x1106, 0x1171, 0x11B9], NFKC: [0xBB9A], NFKD: [0x1106, 0x1171, 0x11B9] },
+{ source: [0xBB9B], NFC: [0xBB9B], NFD: [0x1106, 0x1171, 0x11BA], NFKC: [0xBB9B], NFKD: [0x1106, 0x1171, 0x11BA] },
+{ source: [0xBB9C], NFC: [0xBB9C], NFD: [0x1106, 0x1171, 0x11BB], NFKC: [0xBB9C], NFKD: [0x1106, 0x1171, 0x11BB] },
+{ source: [0xBB9D], NFC: [0xBB9D], NFD: [0x1106, 0x1171, 0x11BC], NFKC: [0xBB9D], NFKD: [0x1106, 0x1171, 0x11BC] },
+{ source: [0xBB9E], NFC: [0xBB9E], NFD: [0x1106, 0x1171, 0x11BD], NFKC: [0xBB9E], NFKD: [0x1106, 0x1171, 0x11BD] },
+{ source: [0xBB9F], NFC: [0xBB9F], NFD: [0x1106, 0x1171, 0x11BE], NFKC: [0xBB9F], NFKD: [0x1106, 0x1171, 0x11BE] },
+{ source: [0xBBA0], NFC: [0xBBA0], NFD: [0x1106, 0x1171, 0x11BF], NFKC: [0xBBA0], NFKD: [0x1106, 0x1171, 0x11BF] },
+{ source: [0xBBA1], NFC: [0xBBA1], NFD: [0x1106, 0x1171, 0x11C0], NFKC: [0xBBA1], NFKD: [0x1106, 0x1171, 0x11C0] },
+{ source: [0xBBA2], NFC: [0xBBA2], NFD: [0x1106, 0x1171, 0x11C1], NFKC: [0xBBA2], NFKD: [0x1106, 0x1171, 0x11C1] },
+{ source: [0xBBA3], NFC: [0xBBA3], NFD: [0x1106, 0x1171, 0x11C2], NFKC: [0xBBA3], NFKD: [0x1106, 0x1171, 0x11C2] },
+{ source: [0xBBA4], NFC: [0xBBA4], NFD: [0x1106, 0x1172], NFKC: [0xBBA4], NFKD: [0x1106, 0x1172] },
+{ source: [0xBBA5], NFC: [0xBBA5], NFD: [0x1106, 0x1172, 0x11A8], NFKC: [0xBBA5], NFKD: [0x1106, 0x1172, 0x11A8] },
+{ source: [0xBBA6], NFC: [0xBBA6], NFD: [0x1106, 0x1172, 0x11A9], NFKC: [0xBBA6], NFKD: [0x1106, 0x1172, 0x11A9] },
+{ source: [0xBBA7], NFC: [0xBBA7], NFD: [0x1106, 0x1172, 0x11AA], NFKC: [0xBBA7], NFKD: [0x1106, 0x1172, 0x11AA] },
+{ source: [0xBBA8], NFC: [0xBBA8], NFD: [0x1106, 0x1172, 0x11AB], NFKC: [0xBBA8], NFKD: [0x1106, 0x1172, 0x11AB] },
+{ source: [0xBBA9], NFC: [0xBBA9], NFD: [0x1106, 0x1172, 0x11AC], NFKC: [0xBBA9], NFKD: [0x1106, 0x1172, 0x11AC] },
+{ source: [0xBBAA], NFC: [0xBBAA], NFD: [0x1106, 0x1172, 0x11AD], NFKC: [0xBBAA], NFKD: [0x1106, 0x1172, 0x11AD] },
+{ source: [0xBBAB], NFC: [0xBBAB], NFD: [0x1106, 0x1172, 0x11AE], NFKC: [0xBBAB], NFKD: [0x1106, 0x1172, 0x11AE] },
+{ source: [0xBBAC], NFC: [0xBBAC], NFD: [0x1106, 0x1172, 0x11AF], NFKC: [0xBBAC], NFKD: [0x1106, 0x1172, 0x11AF] },
+{ source: [0xBBAD], NFC: [0xBBAD], NFD: [0x1106, 0x1172, 0x11B0], NFKC: [0xBBAD], NFKD: [0x1106, 0x1172, 0x11B0] },
+{ source: [0xBBAE], NFC: [0xBBAE], NFD: [0x1106, 0x1172, 0x11B1], NFKC: [0xBBAE], NFKD: [0x1106, 0x1172, 0x11B1] },
+{ source: [0xBBAF], NFC: [0xBBAF], NFD: [0x1106, 0x1172, 0x11B2], NFKC: [0xBBAF], NFKD: [0x1106, 0x1172, 0x11B2] },
+{ source: [0xBBB0], NFC: [0xBBB0], NFD: [0x1106, 0x1172, 0x11B3], NFKC: [0xBBB0], NFKD: [0x1106, 0x1172, 0x11B3] },
+{ source: [0xBBB1], NFC: [0xBBB1], NFD: [0x1106, 0x1172, 0x11B4], NFKC: [0xBBB1], NFKD: [0x1106, 0x1172, 0x11B4] },
+{ source: [0xBBB2], NFC: [0xBBB2], NFD: [0x1106, 0x1172, 0x11B5], NFKC: [0xBBB2], NFKD: [0x1106, 0x1172, 0x11B5] },
+{ source: [0xBBB3], NFC: [0xBBB3], NFD: [0x1106, 0x1172, 0x11B6], NFKC: [0xBBB3], NFKD: [0x1106, 0x1172, 0x11B6] },
+{ source: [0xBBB4], NFC: [0xBBB4], NFD: [0x1106, 0x1172, 0x11B7], NFKC: [0xBBB4], NFKD: [0x1106, 0x1172, 0x11B7] },
+{ source: [0xBBB5], NFC: [0xBBB5], NFD: [0x1106, 0x1172, 0x11B8], NFKC: [0xBBB5], NFKD: [0x1106, 0x1172, 0x11B8] },
+{ source: [0xBBB6], NFC: [0xBBB6], NFD: [0x1106, 0x1172, 0x11B9], NFKC: [0xBBB6], NFKD: [0x1106, 0x1172, 0x11B9] },
+{ source: [0xBBB7], NFC: [0xBBB7], NFD: [0x1106, 0x1172, 0x11BA], NFKC: [0xBBB7], NFKD: [0x1106, 0x1172, 0x11BA] },
+{ source: [0xBBB8], NFC: [0xBBB8], NFD: [0x1106, 0x1172, 0x11BB], NFKC: [0xBBB8], NFKD: [0x1106, 0x1172, 0x11BB] },
+{ source: [0xBBB9], NFC: [0xBBB9], NFD: [0x1106, 0x1172, 0x11BC], NFKC: [0xBBB9], NFKD: [0x1106, 0x1172, 0x11BC] },
+{ source: [0xBBBA], NFC: [0xBBBA], NFD: [0x1106, 0x1172, 0x11BD], NFKC: [0xBBBA], NFKD: [0x1106, 0x1172, 0x11BD] },
+{ source: [0xBBBB], NFC: [0xBBBB], NFD: [0x1106, 0x1172, 0x11BE], NFKC: [0xBBBB], NFKD: [0x1106, 0x1172, 0x11BE] },
+{ source: [0xBBBC], NFC: [0xBBBC], NFD: [0x1106, 0x1172, 0x11BF], NFKC: [0xBBBC], NFKD: [0x1106, 0x1172, 0x11BF] },
+{ source: [0xBBBD], NFC: [0xBBBD], NFD: [0x1106, 0x1172, 0x11C0], NFKC: [0xBBBD], NFKD: [0x1106, 0x1172, 0x11C0] },
+{ source: [0xBBBE], NFC: [0xBBBE], NFD: [0x1106, 0x1172, 0x11C1], NFKC: [0xBBBE], NFKD: [0x1106, 0x1172, 0x11C1] },
+{ source: [0xBBBF], NFC: [0xBBBF], NFD: [0x1106, 0x1172, 0x11C2], NFKC: [0xBBBF], NFKD: [0x1106, 0x1172, 0x11C2] },
+{ source: [0xBBC0], NFC: [0xBBC0], NFD: [0x1106, 0x1173], NFKC: [0xBBC0], NFKD: [0x1106, 0x1173] },
+{ source: [0xBBC1], NFC: [0xBBC1], NFD: [0x1106, 0x1173, 0x11A8], NFKC: [0xBBC1], NFKD: [0x1106, 0x1173, 0x11A8] },
+{ source: [0xBBC2], NFC: [0xBBC2], NFD: [0x1106, 0x1173, 0x11A9], NFKC: [0xBBC2], NFKD: [0x1106, 0x1173, 0x11A9] },
+{ source: [0xBBC3], NFC: [0xBBC3], NFD: [0x1106, 0x1173, 0x11AA], NFKC: [0xBBC3], NFKD: [0x1106, 0x1173, 0x11AA] },
+{ source: [0xBBC4], NFC: [0xBBC4], NFD: [0x1106, 0x1173, 0x11AB], NFKC: [0xBBC4], NFKD: [0x1106, 0x1173, 0x11AB] },
+{ source: [0xBBC5], NFC: [0xBBC5], NFD: [0x1106, 0x1173, 0x11AC], NFKC: [0xBBC5], NFKD: [0x1106, 0x1173, 0x11AC] },
+{ source: [0xBBC6], NFC: [0xBBC6], NFD: [0x1106, 0x1173, 0x11AD], NFKC: [0xBBC6], NFKD: [0x1106, 0x1173, 0x11AD] },
+{ source: [0xBBC7], NFC: [0xBBC7], NFD: [0x1106, 0x1173, 0x11AE], NFKC: [0xBBC7], NFKD: [0x1106, 0x1173, 0x11AE] },
+{ source: [0xBBC8], NFC: [0xBBC8], NFD: [0x1106, 0x1173, 0x11AF], NFKC: [0xBBC8], NFKD: [0x1106, 0x1173, 0x11AF] },
+{ source: [0xBBC9], NFC: [0xBBC9], NFD: [0x1106, 0x1173, 0x11B0], NFKC: [0xBBC9], NFKD: [0x1106, 0x1173, 0x11B0] },
+{ source: [0xBBCA], NFC: [0xBBCA], NFD: [0x1106, 0x1173, 0x11B1], NFKC: [0xBBCA], NFKD: [0x1106, 0x1173, 0x11B1] },
+{ source: [0xBBCB], NFC: [0xBBCB], NFD: [0x1106, 0x1173, 0x11B2], NFKC: [0xBBCB], NFKD: [0x1106, 0x1173, 0x11B2] },
+{ source: [0xBBCC], NFC: [0xBBCC], NFD: [0x1106, 0x1173, 0x11B3], NFKC: [0xBBCC], NFKD: [0x1106, 0x1173, 0x11B3] },
+{ source: [0xBBCD], NFC: [0xBBCD], NFD: [0x1106, 0x1173, 0x11B4], NFKC: [0xBBCD], NFKD: [0x1106, 0x1173, 0x11B4] },
+{ source: [0xBBCE], NFC: [0xBBCE], NFD: [0x1106, 0x1173, 0x11B5], NFKC: [0xBBCE], NFKD: [0x1106, 0x1173, 0x11B5] },
+{ source: [0xBBCF], NFC: [0xBBCF], NFD: [0x1106, 0x1173, 0x11B6], NFKC: [0xBBCF], NFKD: [0x1106, 0x1173, 0x11B6] },
+{ source: [0xBBD0], NFC: [0xBBD0], NFD: [0x1106, 0x1173, 0x11B7], NFKC: [0xBBD0], NFKD: [0x1106, 0x1173, 0x11B7] },
+{ source: [0xBBD1], NFC: [0xBBD1], NFD: [0x1106, 0x1173, 0x11B8], NFKC: [0xBBD1], NFKD: [0x1106, 0x1173, 0x11B8] },
+{ source: [0xBBD2], NFC: [0xBBD2], NFD: [0x1106, 0x1173, 0x11B9], NFKC: [0xBBD2], NFKD: [0x1106, 0x1173, 0x11B9] },
+{ source: [0xBBD3], NFC: [0xBBD3], NFD: [0x1106, 0x1173, 0x11BA], NFKC: [0xBBD3], NFKD: [0x1106, 0x1173, 0x11BA] },
+{ source: [0xBBD4], NFC: [0xBBD4], NFD: [0x1106, 0x1173, 0x11BB], NFKC: [0xBBD4], NFKD: [0x1106, 0x1173, 0x11BB] },
+{ source: [0xBBD5], NFC: [0xBBD5], NFD: [0x1106, 0x1173, 0x11BC], NFKC: [0xBBD5], NFKD: [0x1106, 0x1173, 0x11BC] },
+{ source: [0xBBD6], NFC: [0xBBD6], NFD: [0x1106, 0x1173, 0x11BD], NFKC: [0xBBD6], NFKD: [0x1106, 0x1173, 0x11BD] },
+{ source: [0xBBD7], NFC: [0xBBD7], NFD: [0x1106, 0x1173, 0x11BE], NFKC: [0xBBD7], NFKD: [0x1106, 0x1173, 0x11BE] },
+{ source: [0xBBD8], NFC: [0xBBD8], NFD: [0x1106, 0x1173, 0x11BF], NFKC: [0xBBD8], NFKD: [0x1106, 0x1173, 0x11BF] },
+{ source: [0xBBD9], NFC: [0xBBD9], NFD: [0x1106, 0x1173, 0x11C0], NFKC: [0xBBD9], NFKD: [0x1106, 0x1173, 0x11C0] },
+{ source: [0xBBDA], NFC: [0xBBDA], NFD: [0x1106, 0x1173, 0x11C1], NFKC: [0xBBDA], NFKD: [0x1106, 0x1173, 0x11C1] },
+{ source: [0xBBDB], NFC: [0xBBDB], NFD: [0x1106, 0x1173, 0x11C2], NFKC: [0xBBDB], NFKD: [0x1106, 0x1173, 0x11C2] },
+{ source: [0xBBDC], NFC: [0xBBDC], NFD: [0x1106, 0x1174], NFKC: [0xBBDC], NFKD: [0x1106, 0x1174] },
+{ source: [0xBBDD], NFC: [0xBBDD], NFD: [0x1106, 0x1174, 0x11A8], NFKC: [0xBBDD], NFKD: [0x1106, 0x1174, 0x11A8] },
+{ source: [0xBBDE], NFC: [0xBBDE], NFD: [0x1106, 0x1174, 0x11A9], NFKC: [0xBBDE], NFKD: [0x1106, 0x1174, 0x11A9] },
+{ source: [0xBBDF], NFC: [0xBBDF], NFD: [0x1106, 0x1174, 0x11AA], NFKC: [0xBBDF], NFKD: [0x1106, 0x1174, 0x11AA] },
+{ source: [0xBBE0], NFC: [0xBBE0], NFD: [0x1106, 0x1174, 0x11AB], NFKC: [0xBBE0], NFKD: [0x1106, 0x1174, 0x11AB] },
+{ source: [0xBBE1], NFC: [0xBBE1], NFD: [0x1106, 0x1174, 0x11AC], NFKC: [0xBBE1], NFKD: [0x1106, 0x1174, 0x11AC] },
+{ source: [0xBBE2], NFC: [0xBBE2], NFD: [0x1106, 0x1174, 0x11AD], NFKC: [0xBBE2], NFKD: [0x1106, 0x1174, 0x11AD] },
+{ source: [0xBBE3], NFC: [0xBBE3], NFD: [0x1106, 0x1174, 0x11AE], NFKC: [0xBBE3], NFKD: [0x1106, 0x1174, 0x11AE] },
+{ source: [0xBBE4], NFC: [0xBBE4], NFD: [0x1106, 0x1174, 0x11AF], NFKC: [0xBBE4], NFKD: [0x1106, 0x1174, 0x11AF] },
+{ source: [0xBBE5], NFC: [0xBBE5], NFD: [0x1106, 0x1174, 0x11B0], NFKC: [0xBBE5], NFKD: [0x1106, 0x1174, 0x11B0] },
+{ source: [0xBBE6], NFC: [0xBBE6], NFD: [0x1106, 0x1174, 0x11B1], NFKC: [0xBBE6], NFKD: [0x1106, 0x1174, 0x11B1] },
+{ source: [0xBBE7], NFC: [0xBBE7], NFD: [0x1106, 0x1174, 0x11B2], NFKC: [0xBBE7], NFKD: [0x1106, 0x1174, 0x11B2] },
+{ source: [0xBBE8], NFC: [0xBBE8], NFD: [0x1106, 0x1174, 0x11B3], NFKC: [0xBBE8], NFKD: [0x1106, 0x1174, 0x11B3] },
+{ source: [0xBBE9], NFC: [0xBBE9], NFD: [0x1106, 0x1174, 0x11B4], NFKC: [0xBBE9], NFKD: [0x1106, 0x1174, 0x11B4] },
+{ source: [0xBBEA], NFC: [0xBBEA], NFD: [0x1106, 0x1174, 0x11B5], NFKC: [0xBBEA], NFKD: [0x1106, 0x1174, 0x11B5] },
+{ source: [0xBBEB], NFC: [0xBBEB], NFD: [0x1106, 0x1174, 0x11B6], NFKC: [0xBBEB], NFKD: [0x1106, 0x1174, 0x11B6] },
+{ source: [0xBBEC], NFC: [0xBBEC], NFD: [0x1106, 0x1174, 0x11B7], NFKC: [0xBBEC], NFKD: [0x1106, 0x1174, 0x11B7] },
+{ source: [0xBBED], NFC: [0xBBED], NFD: [0x1106, 0x1174, 0x11B8], NFKC: [0xBBED], NFKD: [0x1106, 0x1174, 0x11B8] },
+{ source: [0xBBEE], NFC: [0xBBEE], NFD: [0x1106, 0x1174, 0x11B9], NFKC: [0xBBEE], NFKD: [0x1106, 0x1174, 0x11B9] },
+{ source: [0xBBEF], NFC: [0xBBEF], NFD: [0x1106, 0x1174, 0x11BA], NFKC: [0xBBEF], NFKD: [0x1106, 0x1174, 0x11BA] },
+{ source: [0xBBF0], NFC: [0xBBF0], NFD: [0x1106, 0x1174, 0x11BB], NFKC: [0xBBF0], NFKD: [0x1106, 0x1174, 0x11BB] },
+{ source: [0xBBF1], NFC: [0xBBF1], NFD: [0x1106, 0x1174, 0x11BC], NFKC: [0xBBF1], NFKD: [0x1106, 0x1174, 0x11BC] },
+{ source: [0xBBF2], NFC: [0xBBF2], NFD: [0x1106, 0x1174, 0x11BD], NFKC: [0xBBF2], NFKD: [0x1106, 0x1174, 0x11BD] },
+{ source: [0xBBF3], NFC: [0xBBF3], NFD: [0x1106, 0x1174, 0x11BE], NFKC: [0xBBF3], NFKD: [0x1106, 0x1174, 0x11BE] },
+{ source: [0xBBF4], NFC: [0xBBF4], NFD: [0x1106, 0x1174, 0x11BF], NFKC: [0xBBF4], NFKD: [0x1106, 0x1174, 0x11BF] },
+{ source: [0xBBF5], NFC: [0xBBF5], NFD: [0x1106, 0x1174, 0x11C0], NFKC: [0xBBF5], NFKD: [0x1106, 0x1174, 0x11C0] },
+{ source: [0xBBF6], NFC: [0xBBF6], NFD: [0x1106, 0x1174, 0x11C1], NFKC: [0xBBF6], NFKD: [0x1106, 0x1174, 0x11C1] },
+{ source: [0xBBF7], NFC: [0xBBF7], NFD: [0x1106, 0x1174, 0x11C2], NFKC: [0xBBF7], NFKD: [0x1106, 0x1174, 0x11C2] },
+{ source: [0xBBF8], NFC: [0xBBF8], NFD: [0x1106, 0x1175], NFKC: [0xBBF8], NFKD: [0x1106, 0x1175] },
+{ source: [0xBBF9], NFC: [0xBBF9], NFD: [0x1106, 0x1175, 0x11A8], NFKC: [0xBBF9], NFKD: [0x1106, 0x1175, 0x11A8] },
+{ source: [0xBBFA], NFC: [0xBBFA], NFD: [0x1106, 0x1175, 0x11A9], NFKC: [0xBBFA], NFKD: [0x1106, 0x1175, 0x11A9] },
+{ source: [0xBBFB], NFC: [0xBBFB], NFD: [0x1106, 0x1175, 0x11AA], NFKC: [0xBBFB], NFKD: [0x1106, 0x1175, 0x11AA] },
+{ source: [0xBBFC], NFC: [0xBBFC], NFD: [0x1106, 0x1175, 0x11AB], NFKC: [0xBBFC], NFKD: [0x1106, 0x1175, 0x11AB] },
+{ source: [0xBBFD], NFC: [0xBBFD], NFD: [0x1106, 0x1175, 0x11AC], NFKC: [0xBBFD], NFKD: [0x1106, 0x1175, 0x11AC] },
+{ source: [0xBBFE], NFC: [0xBBFE], NFD: [0x1106, 0x1175, 0x11AD], NFKC: [0xBBFE], NFKD: [0x1106, 0x1175, 0x11AD] },
+{ source: [0xBBFF], NFC: [0xBBFF], NFD: [0x1106, 0x1175, 0x11AE], NFKC: [0xBBFF], NFKD: [0x1106, 0x1175, 0x11AE] },
+{ source: [0xBC00], NFC: [0xBC00], NFD: [0x1106, 0x1175, 0x11AF], NFKC: [0xBC00], NFKD: [0x1106, 0x1175, 0x11AF] },
+{ source: [0xBC01], NFC: [0xBC01], NFD: [0x1106, 0x1175, 0x11B0], NFKC: [0xBC01], NFKD: [0x1106, 0x1175, 0x11B0] },
+{ source: [0xBC02], NFC: [0xBC02], NFD: [0x1106, 0x1175, 0x11B1], NFKC: [0xBC02], NFKD: [0x1106, 0x1175, 0x11B1] },
+{ source: [0xBC03], NFC: [0xBC03], NFD: [0x1106, 0x1175, 0x11B2], NFKC: [0xBC03], NFKD: [0x1106, 0x1175, 0x11B2] },
+{ source: [0xBC04], NFC: [0xBC04], NFD: [0x1106, 0x1175, 0x11B3], NFKC: [0xBC04], NFKD: [0x1106, 0x1175, 0x11B3] },
+{ source: [0xBC05], NFC: [0xBC05], NFD: [0x1106, 0x1175, 0x11B4], NFKC: [0xBC05], NFKD: [0x1106, 0x1175, 0x11B4] },
+{ source: [0xBC06], NFC: [0xBC06], NFD: [0x1106, 0x1175, 0x11B5], NFKC: [0xBC06], NFKD: [0x1106, 0x1175, 0x11B5] },
+{ source: [0xBC07], NFC: [0xBC07], NFD: [0x1106, 0x1175, 0x11B6], NFKC: [0xBC07], NFKD: [0x1106, 0x1175, 0x11B6] },
+{ source: [0xBC08], NFC: [0xBC08], NFD: [0x1106, 0x1175, 0x11B7], NFKC: [0xBC08], NFKD: [0x1106, 0x1175, 0x11B7] },
+{ source: [0xBC09], NFC: [0xBC09], NFD: [0x1106, 0x1175, 0x11B8], NFKC: [0xBC09], NFKD: [0x1106, 0x1175, 0x11B8] },
+{ source: [0xBC0A], NFC: [0xBC0A], NFD: [0x1106, 0x1175, 0x11B9], NFKC: [0xBC0A], NFKD: [0x1106, 0x1175, 0x11B9] },
+{ source: [0xBC0B], NFC: [0xBC0B], NFD: [0x1106, 0x1175, 0x11BA], NFKC: [0xBC0B], NFKD: [0x1106, 0x1175, 0x11BA] },
+{ source: [0xBC0C], NFC: [0xBC0C], NFD: [0x1106, 0x1175, 0x11BB], NFKC: [0xBC0C], NFKD: [0x1106, 0x1175, 0x11BB] },
+{ source: [0xBC0D], NFC: [0xBC0D], NFD: [0x1106, 0x1175, 0x11BC], NFKC: [0xBC0D], NFKD: [0x1106, 0x1175, 0x11BC] },
+{ source: [0xBC0E], NFC: [0xBC0E], NFD: [0x1106, 0x1175, 0x11BD], NFKC: [0xBC0E], NFKD: [0x1106, 0x1175, 0x11BD] },
+{ source: [0xBC0F], NFC: [0xBC0F], NFD: [0x1106, 0x1175, 0x11BE], NFKC: [0xBC0F], NFKD: [0x1106, 0x1175, 0x11BE] },
+{ source: [0xBC10], NFC: [0xBC10], NFD: [0x1106, 0x1175, 0x11BF], NFKC: [0xBC10], NFKD: [0x1106, 0x1175, 0x11BF] },
+{ source: [0xBC11], NFC: [0xBC11], NFD: [0x1106, 0x1175, 0x11C0], NFKC: [0xBC11], NFKD: [0x1106, 0x1175, 0x11C0] },
+{ source: [0xBC12], NFC: [0xBC12], NFD: [0x1106, 0x1175, 0x11C1], NFKC: [0xBC12], NFKD: [0x1106, 0x1175, 0x11C1] },
+{ source: [0xBC13], NFC: [0xBC13], NFD: [0x1106, 0x1175, 0x11C2], NFKC: [0xBC13], NFKD: [0x1106, 0x1175, 0x11C2] },
+{ source: [0xBC14], NFC: [0xBC14], NFD: [0x1107, 0x1161], NFKC: [0xBC14], NFKD: [0x1107, 0x1161] },
+{ source: [0xBC15], NFC: [0xBC15], NFD: [0x1107, 0x1161, 0x11A8], NFKC: [0xBC15], NFKD: [0x1107, 0x1161, 0x11A8] },
+{ source: [0xBC16], NFC: [0xBC16], NFD: [0x1107, 0x1161, 0x11A9], NFKC: [0xBC16], NFKD: [0x1107, 0x1161, 0x11A9] },
+{ source: [0xBC17], NFC: [0xBC17], NFD: [0x1107, 0x1161, 0x11AA], NFKC: [0xBC17], NFKD: [0x1107, 0x1161, 0x11AA] },
+{ source: [0xBC18], NFC: [0xBC18], NFD: [0x1107, 0x1161, 0x11AB], NFKC: [0xBC18], NFKD: [0x1107, 0x1161, 0x11AB] },
+{ source: [0xBC19], NFC: [0xBC19], NFD: [0x1107, 0x1161, 0x11AC], NFKC: [0xBC19], NFKD: [0x1107, 0x1161, 0x11AC] },
+{ source: [0xBC1A], NFC: [0xBC1A], NFD: [0x1107, 0x1161, 0x11AD], NFKC: [0xBC1A], NFKD: [0x1107, 0x1161, 0x11AD] },
+{ source: [0xBC1B], NFC: [0xBC1B], NFD: [0x1107, 0x1161, 0x11AE], NFKC: [0xBC1B], NFKD: [0x1107, 0x1161, 0x11AE] },
+{ source: [0xBC1C], NFC: [0xBC1C], NFD: [0x1107, 0x1161, 0x11AF], NFKC: [0xBC1C], NFKD: [0x1107, 0x1161, 0x11AF] },
+{ source: [0xBC1D], NFC: [0xBC1D], NFD: [0x1107, 0x1161, 0x11B0], NFKC: [0xBC1D], NFKD: [0x1107, 0x1161, 0x11B0] },
+{ source: [0xBC1E], NFC: [0xBC1E], NFD: [0x1107, 0x1161, 0x11B1], NFKC: [0xBC1E], NFKD: [0x1107, 0x1161, 0x11B1] },
+{ source: [0xBC1F], NFC: [0xBC1F], NFD: [0x1107, 0x1161, 0x11B2], NFKC: [0xBC1F], NFKD: [0x1107, 0x1161, 0x11B2] },
+{ source: [0xBC20], NFC: [0xBC20], NFD: [0x1107, 0x1161, 0x11B3], NFKC: [0xBC20], NFKD: [0x1107, 0x1161, 0x11B3] },
+{ source: [0xBC21], NFC: [0xBC21], NFD: [0x1107, 0x1161, 0x11B4], NFKC: [0xBC21], NFKD: [0x1107, 0x1161, 0x11B4] },
+{ source: [0xBC22], NFC: [0xBC22], NFD: [0x1107, 0x1161, 0x11B5], NFKC: [0xBC22], NFKD: [0x1107, 0x1161, 0x11B5] },
+{ source: [0xBC23], NFC: [0xBC23], NFD: [0x1107, 0x1161, 0x11B6], NFKC: [0xBC23], NFKD: [0x1107, 0x1161, 0x11B6] },
+{ source: [0xBC24], NFC: [0xBC24], NFD: [0x1107, 0x1161, 0x11B7], NFKC: [0xBC24], NFKD: [0x1107, 0x1161, 0x11B7] },
+{ source: [0xBC25], NFC: [0xBC25], NFD: [0x1107, 0x1161, 0x11B8], NFKC: [0xBC25], NFKD: [0x1107, 0x1161, 0x11B8] },
+{ source: [0xBC26], NFC: [0xBC26], NFD: [0x1107, 0x1161, 0x11B9], NFKC: [0xBC26], NFKD: [0x1107, 0x1161, 0x11B9] },
+{ source: [0xBC27], NFC: [0xBC27], NFD: [0x1107, 0x1161, 0x11BA], NFKC: [0xBC27], NFKD: [0x1107, 0x1161, 0x11BA] },
+{ source: [0xBC28], NFC: [0xBC28], NFD: [0x1107, 0x1161, 0x11BB], NFKC: [0xBC28], NFKD: [0x1107, 0x1161, 0x11BB] },
+{ source: [0xBC29], NFC: [0xBC29], NFD: [0x1107, 0x1161, 0x11BC], NFKC: [0xBC29], NFKD: [0x1107, 0x1161, 0x11BC] },
+{ source: [0xBC2A], NFC: [0xBC2A], NFD: [0x1107, 0x1161, 0x11BD], NFKC: [0xBC2A], NFKD: [0x1107, 0x1161, 0x11BD] },
+{ source: [0xBC2B], NFC: [0xBC2B], NFD: [0x1107, 0x1161, 0x11BE], NFKC: [0xBC2B], NFKD: [0x1107, 0x1161, 0x11BE] },
+{ source: [0xBC2C], NFC: [0xBC2C], NFD: [0x1107, 0x1161, 0x11BF], NFKC: [0xBC2C], NFKD: [0x1107, 0x1161, 0x11BF] },
+{ source: [0xBC2D], NFC: [0xBC2D], NFD: [0x1107, 0x1161, 0x11C0], NFKC: [0xBC2D], NFKD: [0x1107, 0x1161, 0x11C0] },
+{ source: [0xBC2E], NFC: [0xBC2E], NFD: [0x1107, 0x1161, 0x11C1], NFKC: [0xBC2E], NFKD: [0x1107, 0x1161, 0x11C1] },
+{ source: [0xBC2F], NFC: [0xBC2F], NFD: [0x1107, 0x1161, 0x11C2], NFKC: [0xBC2F], NFKD: [0x1107, 0x1161, 0x11C2] },
+{ source: [0xBC30], NFC: [0xBC30], NFD: [0x1107, 0x1162], NFKC: [0xBC30], NFKD: [0x1107, 0x1162] },
+{ source: [0xBC31], NFC: [0xBC31], NFD: [0x1107, 0x1162, 0x11A8], NFKC: [0xBC31], NFKD: [0x1107, 0x1162, 0x11A8] },
+{ source: [0xBC32], NFC: [0xBC32], NFD: [0x1107, 0x1162, 0x11A9], NFKC: [0xBC32], NFKD: [0x1107, 0x1162, 0x11A9] },
+{ source: [0xBC33], NFC: [0xBC33], NFD: [0x1107, 0x1162, 0x11AA], NFKC: [0xBC33], NFKD: [0x1107, 0x1162, 0x11AA] },
+{ source: [0xBC34], NFC: [0xBC34], NFD: [0x1107, 0x1162, 0x11AB], NFKC: [0xBC34], NFKD: [0x1107, 0x1162, 0x11AB] },
+{ source: [0xBC35], NFC: [0xBC35], NFD: [0x1107, 0x1162, 0x11AC], NFKC: [0xBC35], NFKD: [0x1107, 0x1162, 0x11AC] },
+{ source: [0xBC36], NFC: [0xBC36], NFD: [0x1107, 0x1162, 0x11AD], NFKC: [0xBC36], NFKD: [0x1107, 0x1162, 0x11AD] },
+{ source: [0xBC37], NFC: [0xBC37], NFD: [0x1107, 0x1162, 0x11AE], NFKC: [0xBC37], NFKD: [0x1107, 0x1162, 0x11AE] },
+{ source: [0xBC38], NFC: [0xBC38], NFD: [0x1107, 0x1162, 0x11AF], NFKC: [0xBC38], NFKD: [0x1107, 0x1162, 0x11AF] },
+{ source: [0xBC39], NFC: [0xBC39], NFD: [0x1107, 0x1162, 0x11B0], NFKC: [0xBC39], NFKD: [0x1107, 0x1162, 0x11B0] },
+{ source: [0xBC3A], NFC: [0xBC3A], NFD: [0x1107, 0x1162, 0x11B1], NFKC: [0xBC3A], NFKD: [0x1107, 0x1162, 0x11B1] },
+{ source: [0xBC3B], NFC: [0xBC3B], NFD: [0x1107, 0x1162, 0x11B2], NFKC: [0xBC3B], NFKD: [0x1107, 0x1162, 0x11B2] },
+{ source: [0xBC3C], NFC: [0xBC3C], NFD: [0x1107, 0x1162, 0x11B3], NFKC: [0xBC3C], NFKD: [0x1107, 0x1162, 0x11B3] },
+{ source: [0xBC3D], NFC: [0xBC3D], NFD: [0x1107, 0x1162, 0x11B4], NFKC: [0xBC3D], NFKD: [0x1107, 0x1162, 0x11B4] },
+{ source: [0xBC3E], NFC: [0xBC3E], NFD: [0x1107, 0x1162, 0x11B5], NFKC: [0xBC3E], NFKD: [0x1107, 0x1162, 0x11B5] },
+{ source: [0xBC3F], NFC: [0xBC3F], NFD: [0x1107, 0x1162, 0x11B6], NFKC: [0xBC3F], NFKD: [0x1107, 0x1162, 0x11B6] },
+{ source: [0xBC40], NFC: [0xBC40], NFD: [0x1107, 0x1162, 0x11B7], NFKC: [0xBC40], NFKD: [0x1107, 0x1162, 0x11B7] },
+{ source: [0xBC41], NFC: [0xBC41], NFD: [0x1107, 0x1162, 0x11B8], NFKC: [0xBC41], NFKD: [0x1107, 0x1162, 0x11B8] },
+{ source: [0xBC42], NFC: [0xBC42], NFD: [0x1107, 0x1162, 0x11B9], NFKC: [0xBC42], NFKD: [0x1107, 0x1162, 0x11B9] },
+{ source: [0xBC43], NFC: [0xBC43], NFD: [0x1107, 0x1162, 0x11BA], NFKC: [0xBC43], NFKD: [0x1107, 0x1162, 0x11BA] },
+{ source: [0xBC44], NFC: [0xBC44], NFD: [0x1107, 0x1162, 0x11BB], NFKC: [0xBC44], NFKD: [0x1107, 0x1162, 0x11BB] },
+{ source: [0xBC45], NFC: [0xBC45], NFD: [0x1107, 0x1162, 0x11BC], NFKC: [0xBC45], NFKD: [0x1107, 0x1162, 0x11BC] },
+{ source: [0xBC46], NFC: [0xBC46], NFD: [0x1107, 0x1162, 0x11BD], NFKC: [0xBC46], NFKD: [0x1107, 0x1162, 0x11BD] },
+{ source: [0xBC47], NFC: [0xBC47], NFD: [0x1107, 0x1162, 0x11BE], NFKC: [0xBC47], NFKD: [0x1107, 0x1162, 0x11BE] },
+{ source: [0xBC48], NFC: [0xBC48], NFD: [0x1107, 0x1162, 0x11BF], NFKC: [0xBC48], NFKD: [0x1107, 0x1162, 0x11BF] },
+{ source: [0xBC49], NFC: [0xBC49], NFD: [0x1107, 0x1162, 0x11C0], NFKC: [0xBC49], NFKD: [0x1107, 0x1162, 0x11C0] },
+{ source: [0xBC4A], NFC: [0xBC4A], NFD: [0x1107, 0x1162, 0x11C1], NFKC: [0xBC4A], NFKD: [0x1107, 0x1162, 0x11C1] },
+{ source: [0xBC4B], NFC: [0xBC4B], NFD: [0x1107, 0x1162, 0x11C2], NFKC: [0xBC4B], NFKD: [0x1107, 0x1162, 0x11C2] },
+{ source: [0xBC4C], NFC: [0xBC4C], NFD: [0x1107, 0x1163], NFKC: [0xBC4C], NFKD: [0x1107, 0x1163] },
+{ source: [0xBC4D], NFC: [0xBC4D], NFD: [0x1107, 0x1163, 0x11A8], NFKC: [0xBC4D], NFKD: [0x1107, 0x1163, 0x11A8] },
+{ source: [0xBC4E], NFC: [0xBC4E], NFD: [0x1107, 0x1163, 0x11A9], NFKC: [0xBC4E], NFKD: [0x1107, 0x1163, 0x11A9] },
+{ source: [0xBC4F], NFC: [0xBC4F], NFD: [0x1107, 0x1163, 0x11AA], NFKC: [0xBC4F], NFKD: [0x1107, 0x1163, 0x11AA] },
+{ source: [0xBC50], NFC: [0xBC50], NFD: [0x1107, 0x1163, 0x11AB], NFKC: [0xBC50], NFKD: [0x1107, 0x1163, 0x11AB] },
+{ source: [0xBC51], NFC: [0xBC51], NFD: [0x1107, 0x1163, 0x11AC], NFKC: [0xBC51], NFKD: [0x1107, 0x1163, 0x11AC] },
+{ source: [0xBC52], NFC: [0xBC52], NFD: [0x1107, 0x1163, 0x11AD], NFKC: [0xBC52], NFKD: [0x1107, 0x1163, 0x11AD] },
+{ source: [0xBC53], NFC: [0xBC53], NFD: [0x1107, 0x1163, 0x11AE], NFKC: [0xBC53], NFKD: [0x1107, 0x1163, 0x11AE] },
+{ source: [0xBC54], NFC: [0xBC54], NFD: [0x1107, 0x1163, 0x11AF], NFKC: [0xBC54], NFKD: [0x1107, 0x1163, 0x11AF] },
+{ source: [0xBC55], NFC: [0xBC55], NFD: [0x1107, 0x1163, 0x11B0], NFKC: [0xBC55], NFKD: [0x1107, 0x1163, 0x11B0] },
+{ source: [0xBC56], NFC: [0xBC56], NFD: [0x1107, 0x1163, 0x11B1], NFKC: [0xBC56], NFKD: [0x1107, 0x1163, 0x11B1] },
+{ source: [0xBC57], NFC: [0xBC57], NFD: [0x1107, 0x1163, 0x11B2], NFKC: [0xBC57], NFKD: [0x1107, 0x1163, 0x11B2] },
+{ source: [0xBC58], NFC: [0xBC58], NFD: [0x1107, 0x1163, 0x11B3], NFKC: [0xBC58], NFKD: [0x1107, 0x1163, 0x11B3] },
+{ source: [0xBC59], NFC: [0xBC59], NFD: [0x1107, 0x1163, 0x11B4], NFKC: [0xBC59], NFKD: [0x1107, 0x1163, 0x11B4] },
+{ source: [0xBC5A], NFC: [0xBC5A], NFD: [0x1107, 0x1163, 0x11B5], NFKC: [0xBC5A], NFKD: [0x1107, 0x1163, 0x11B5] },
+{ source: [0xBC5B], NFC: [0xBC5B], NFD: [0x1107, 0x1163, 0x11B6], NFKC: [0xBC5B], NFKD: [0x1107, 0x1163, 0x11B6] },
+{ source: [0xBC5C], NFC: [0xBC5C], NFD: [0x1107, 0x1163, 0x11B7], NFKC: [0xBC5C], NFKD: [0x1107, 0x1163, 0x11B7] },
+{ source: [0xBC5D], NFC: [0xBC5D], NFD: [0x1107, 0x1163, 0x11B8], NFKC: [0xBC5D], NFKD: [0x1107, 0x1163, 0x11B8] },
+{ source: [0xBC5E], NFC: [0xBC5E], NFD: [0x1107, 0x1163, 0x11B9], NFKC: [0xBC5E], NFKD: [0x1107, 0x1163, 0x11B9] },
+{ source: [0xBC5F], NFC: [0xBC5F], NFD: [0x1107, 0x1163, 0x11BA], NFKC: [0xBC5F], NFKD: [0x1107, 0x1163, 0x11BA] },
+{ source: [0xBC60], NFC: [0xBC60], NFD: [0x1107, 0x1163, 0x11BB], NFKC: [0xBC60], NFKD: [0x1107, 0x1163, 0x11BB] },
+{ source: [0xBC61], NFC: [0xBC61], NFD: [0x1107, 0x1163, 0x11BC], NFKC: [0xBC61], NFKD: [0x1107, 0x1163, 0x11BC] },
+{ source: [0xBC62], NFC: [0xBC62], NFD: [0x1107, 0x1163, 0x11BD], NFKC: [0xBC62], NFKD: [0x1107, 0x1163, 0x11BD] },
+{ source: [0xBC63], NFC: [0xBC63], NFD: [0x1107, 0x1163, 0x11BE], NFKC: [0xBC63], NFKD: [0x1107, 0x1163, 0x11BE] },
+{ source: [0xBC64], NFC: [0xBC64], NFD: [0x1107, 0x1163, 0x11BF], NFKC: [0xBC64], NFKD: [0x1107, 0x1163, 0x11BF] },
+{ source: [0xBC65], NFC: [0xBC65], NFD: [0x1107, 0x1163, 0x11C0], NFKC: [0xBC65], NFKD: [0x1107, 0x1163, 0x11C0] },
+{ source: [0xBC66], NFC: [0xBC66], NFD: [0x1107, 0x1163, 0x11C1], NFKC: [0xBC66], NFKD: [0x1107, 0x1163, 0x11C1] },
+{ source: [0xBC67], NFC: [0xBC67], NFD: [0x1107, 0x1163, 0x11C2], NFKC: [0xBC67], NFKD: [0x1107, 0x1163, 0x11C2] },
+{ source: [0xBC68], NFC: [0xBC68], NFD: [0x1107, 0x1164], NFKC: [0xBC68], NFKD: [0x1107, 0x1164] },
+{ source: [0xBC69], NFC: [0xBC69], NFD: [0x1107, 0x1164, 0x11A8], NFKC: [0xBC69], NFKD: [0x1107, 0x1164, 0x11A8] },
+{ source: [0xBC6A], NFC: [0xBC6A], NFD: [0x1107, 0x1164, 0x11A9], NFKC: [0xBC6A], NFKD: [0x1107, 0x1164, 0x11A9] },
+{ source: [0xBC6B], NFC: [0xBC6B], NFD: [0x1107, 0x1164, 0x11AA], NFKC: [0xBC6B], NFKD: [0x1107, 0x1164, 0x11AA] },
+{ source: [0xBC6C], NFC: [0xBC6C], NFD: [0x1107, 0x1164, 0x11AB], NFKC: [0xBC6C], NFKD: [0x1107, 0x1164, 0x11AB] },
+{ source: [0xBC6D], NFC: [0xBC6D], NFD: [0x1107, 0x1164, 0x11AC], NFKC: [0xBC6D], NFKD: [0x1107, 0x1164, 0x11AC] },
+{ source: [0xBC6E], NFC: [0xBC6E], NFD: [0x1107, 0x1164, 0x11AD], NFKC: [0xBC6E], NFKD: [0x1107, 0x1164, 0x11AD] },
+{ source: [0xBC6F], NFC: [0xBC6F], NFD: [0x1107, 0x1164, 0x11AE], NFKC: [0xBC6F], NFKD: [0x1107, 0x1164, 0x11AE] },
+{ source: [0xBC70], NFC: [0xBC70], NFD: [0x1107, 0x1164, 0x11AF], NFKC: [0xBC70], NFKD: [0x1107, 0x1164, 0x11AF] },
+{ source: [0xBC71], NFC: [0xBC71], NFD: [0x1107, 0x1164, 0x11B0], NFKC: [0xBC71], NFKD: [0x1107, 0x1164, 0x11B0] },
+{ source: [0xBC72], NFC: [0xBC72], NFD: [0x1107, 0x1164, 0x11B1], NFKC: [0xBC72], NFKD: [0x1107, 0x1164, 0x11B1] },
+{ source: [0xBC73], NFC: [0xBC73], NFD: [0x1107, 0x1164, 0x11B2], NFKC: [0xBC73], NFKD: [0x1107, 0x1164, 0x11B2] },
+{ source: [0xBC74], NFC: [0xBC74], NFD: [0x1107, 0x1164, 0x11B3], NFKC: [0xBC74], NFKD: [0x1107, 0x1164, 0x11B3] },
+{ source: [0xBC75], NFC: [0xBC75], NFD: [0x1107, 0x1164, 0x11B4], NFKC: [0xBC75], NFKD: [0x1107, 0x1164, 0x11B4] },
+{ source: [0xBC76], NFC: [0xBC76], NFD: [0x1107, 0x1164, 0x11B5], NFKC: [0xBC76], NFKD: [0x1107, 0x1164, 0x11B5] },
+{ source: [0xBC77], NFC: [0xBC77], NFD: [0x1107, 0x1164, 0x11B6], NFKC: [0xBC77], NFKD: [0x1107, 0x1164, 0x11B6] },
+{ source: [0xBC78], NFC: [0xBC78], NFD: [0x1107, 0x1164, 0x11B7], NFKC: [0xBC78], NFKD: [0x1107, 0x1164, 0x11B7] },
+{ source: [0xBC79], NFC: [0xBC79], NFD: [0x1107, 0x1164, 0x11B8], NFKC: [0xBC79], NFKD: [0x1107, 0x1164, 0x11B8] },
+{ source: [0xBC7A], NFC: [0xBC7A], NFD: [0x1107, 0x1164, 0x11B9], NFKC: [0xBC7A], NFKD: [0x1107, 0x1164, 0x11B9] },
+{ source: [0xBC7B], NFC: [0xBC7B], NFD: [0x1107, 0x1164, 0x11BA], NFKC: [0xBC7B], NFKD: [0x1107, 0x1164, 0x11BA] },
+{ source: [0xBC7C], NFC: [0xBC7C], NFD: [0x1107, 0x1164, 0x11BB], NFKC: [0xBC7C], NFKD: [0x1107, 0x1164, 0x11BB] },
+{ source: [0xBC7D], NFC: [0xBC7D], NFD: [0x1107, 0x1164, 0x11BC], NFKC: [0xBC7D], NFKD: [0x1107, 0x1164, 0x11BC] },
+{ source: [0xBC7E], NFC: [0xBC7E], NFD: [0x1107, 0x1164, 0x11BD], NFKC: [0xBC7E], NFKD: [0x1107, 0x1164, 0x11BD] },
+{ source: [0xBC7F], NFC: [0xBC7F], NFD: [0x1107, 0x1164, 0x11BE], NFKC: [0xBC7F], NFKD: [0x1107, 0x1164, 0x11BE] },
+{ source: [0xBC80], NFC: [0xBC80], NFD: [0x1107, 0x1164, 0x11BF], NFKC: [0xBC80], NFKD: [0x1107, 0x1164, 0x11BF] },
+{ source: [0xBC81], NFC: [0xBC81], NFD: [0x1107, 0x1164, 0x11C0], NFKC: [0xBC81], NFKD: [0x1107, 0x1164, 0x11C0] },
+{ source: [0xBC82], NFC: [0xBC82], NFD: [0x1107, 0x1164, 0x11C1], NFKC: [0xBC82], NFKD: [0x1107, 0x1164, 0x11C1] },
+{ source: [0xBC83], NFC: [0xBC83], NFD: [0x1107, 0x1164, 0x11C2], NFKC: [0xBC83], NFKD: [0x1107, 0x1164, 0x11C2] },
+{ source: [0xBC84], NFC: [0xBC84], NFD: [0x1107, 0x1165], NFKC: [0xBC84], NFKD: [0x1107, 0x1165] },
+{ source: [0xBC85], NFC: [0xBC85], NFD: [0x1107, 0x1165, 0x11A8], NFKC: [0xBC85], NFKD: [0x1107, 0x1165, 0x11A8] },
+{ source: [0xBC86], NFC: [0xBC86], NFD: [0x1107, 0x1165, 0x11A9], NFKC: [0xBC86], NFKD: [0x1107, 0x1165, 0x11A9] },
+{ source: [0xBC87], NFC: [0xBC87], NFD: [0x1107, 0x1165, 0x11AA], NFKC: [0xBC87], NFKD: [0x1107, 0x1165, 0x11AA] },
+{ source: [0xBC88], NFC: [0xBC88], NFD: [0x1107, 0x1165, 0x11AB], NFKC: [0xBC88], NFKD: [0x1107, 0x1165, 0x11AB] },
+{ source: [0xBC89], NFC: [0xBC89], NFD: [0x1107, 0x1165, 0x11AC], NFKC: [0xBC89], NFKD: [0x1107, 0x1165, 0x11AC] },
+{ source: [0xBC8A], NFC: [0xBC8A], NFD: [0x1107, 0x1165, 0x11AD], NFKC: [0xBC8A], NFKD: [0x1107, 0x1165, 0x11AD] },
+{ source: [0xBC8B], NFC: [0xBC8B], NFD: [0x1107, 0x1165, 0x11AE], NFKC: [0xBC8B], NFKD: [0x1107, 0x1165, 0x11AE] },
+{ source: [0xBC8C], NFC: [0xBC8C], NFD: [0x1107, 0x1165, 0x11AF], NFKC: [0xBC8C], NFKD: [0x1107, 0x1165, 0x11AF] },
+{ source: [0xBC8D], NFC: [0xBC8D], NFD: [0x1107, 0x1165, 0x11B0], NFKC: [0xBC8D], NFKD: [0x1107, 0x1165, 0x11B0] },
+{ source: [0xBC8E], NFC: [0xBC8E], NFD: [0x1107, 0x1165, 0x11B1], NFKC: [0xBC8E], NFKD: [0x1107, 0x1165, 0x11B1] },
+{ source: [0xBC8F], NFC: [0xBC8F], NFD: [0x1107, 0x1165, 0x11B2], NFKC: [0xBC8F], NFKD: [0x1107, 0x1165, 0x11B2] },
+{ source: [0xBC90], NFC: [0xBC90], NFD: [0x1107, 0x1165, 0x11B3], NFKC: [0xBC90], NFKD: [0x1107, 0x1165, 0x11B3] },
+{ source: [0xBC91], NFC: [0xBC91], NFD: [0x1107, 0x1165, 0x11B4], NFKC: [0xBC91], NFKD: [0x1107, 0x1165, 0x11B4] },
+{ source: [0xBC92], NFC: [0xBC92], NFD: [0x1107, 0x1165, 0x11B5], NFKC: [0xBC92], NFKD: [0x1107, 0x1165, 0x11B5] },
+{ source: [0xBC93], NFC: [0xBC93], NFD: [0x1107, 0x1165, 0x11B6], NFKC: [0xBC93], NFKD: [0x1107, 0x1165, 0x11B6] },
+{ source: [0xBC94], NFC: [0xBC94], NFD: [0x1107, 0x1165, 0x11B7], NFKC: [0xBC94], NFKD: [0x1107, 0x1165, 0x11B7] },
+{ source: [0xBC95], NFC: [0xBC95], NFD: [0x1107, 0x1165, 0x11B8], NFKC: [0xBC95], NFKD: [0x1107, 0x1165, 0x11B8] },
+{ source: [0xBC96], NFC: [0xBC96], NFD: [0x1107, 0x1165, 0x11B9], NFKC: [0xBC96], NFKD: [0x1107, 0x1165, 0x11B9] },
+{ source: [0xBC97], NFC: [0xBC97], NFD: [0x1107, 0x1165, 0x11BA], NFKC: [0xBC97], NFKD: [0x1107, 0x1165, 0x11BA] },
+{ source: [0xBC98], NFC: [0xBC98], NFD: [0x1107, 0x1165, 0x11BB], NFKC: [0xBC98], NFKD: [0x1107, 0x1165, 0x11BB] },
+{ source: [0xBC99], NFC: [0xBC99], NFD: [0x1107, 0x1165, 0x11BC], NFKC: [0xBC99], NFKD: [0x1107, 0x1165, 0x11BC] },
+{ source: [0xBC9A], NFC: [0xBC9A], NFD: [0x1107, 0x1165, 0x11BD], NFKC: [0xBC9A], NFKD: [0x1107, 0x1165, 0x11BD] },
+{ source: [0xBC9B], NFC: [0xBC9B], NFD: [0x1107, 0x1165, 0x11BE], NFKC: [0xBC9B], NFKD: [0x1107, 0x1165, 0x11BE] },
+{ source: [0xBC9C], NFC: [0xBC9C], NFD: [0x1107, 0x1165, 0x11BF], NFKC: [0xBC9C], NFKD: [0x1107, 0x1165, 0x11BF] },
+{ source: [0xBC9D], NFC: [0xBC9D], NFD: [0x1107, 0x1165, 0x11C0], NFKC: [0xBC9D], NFKD: [0x1107, 0x1165, 0x11C0] },
+{ source: [0xBC9E], NFC: [0xBC9E], NFD: [0x1107, 0x1165, 0x11C1], NFKC: [0xBC9E], NFKD: [0x1107, 0x1165, 0x11C1] },
+{ source: [0xBC9F], NFC: [0xBC9F], NFD: [0x1107, 0x1165, 0x11C2], NFKC: [0xBC9F], NFKD: [0x1107, 0x1165, 0x11C2] },
+{ source: [0xBCA0], NFC: [0xBCA0], NFD: [0x1107, 0x1166], NFKC: [0xBCA0], NFKD: [0x1107, 0x1166] },
+{ source: [0xBCA1], NFC: [0xBCA1], NFD: [0x1107, 0x1166, 0x11A8], NFKC: [0xBCA1], NFKD: [0x1107, 0x1166, 0x11A8] },
+{ source: [0xBCA2], NFC: [0xBCA2], NFD: [0x1107, 0x1166, 0x11A9], NFKC: [0xBCA2], NFKD: [0x1107, 0x1166, 0x11A9] },
+{ source: [0xBCA3], NFC: [0xBCA3], NFD: [0x1107, 0x1166, 0x11AA], NFKC: [0xBCA3], NFKD: [0x1107, 0x1166, 0x11AA] },
+{ source: [0xBCA4], NFC: [0xBCA4], NFD: [0x1107, 0x1166, 0x11AB], NFKC: [0xBCA4], NFKD: [0x1107, 0x1166, 0x11AB] },
+{ source: [0xBCA5], NFC: [0xBCA5], NFD: [0x1107, 0x1166, 0x11AC], NFKC: [0xBCA5], NFKD: [0x1107, 0x1166, 0x11AC] },
+{ source: [0xBCA6], NFC: [0xBCA6], NFD: [0x1107, 0x1166, 0x11AD], NFKC: [0xBCA6], NFKD: [0x1107, 0x1166, 0x11AD] },
+{ source: [0xBCA7], NFC: [0xBCA7], NFD: [0x1107, 0x1166, 0x11AE], NFKC: [0xBCA7], NFKD: [0x1107, 0x1166, 0x11AE] },
+{ source: [0xBCA8], NFC: [0xBCA8], NFD: [0x1107, 0x1166, 0x11AF], NFKC: [0xBCA8], NFKD: [0x1107, 0x1166, 0x11AF] },
+{ source: [0xBCA9], NFC: [0xBCA9], NFD: [0x1107, 0x1166, 0x11B0], NFKC: [0xBCA9], NFKD: [0x1107, 0x1166, 0x11B0] },
+{ source: [0xBCAA], NFC: [0xBCAA], NFD: [0x1107, 0x1166, 0x11B1], NFKC: [0xBCAA], NFKD: [0x1107, 0x1166, 0x11B1] },
+{ source: [0xBCAB], NFC: [0xBCAB], NFD: [0x1107, 0x1166, 0x11B2], NFKC: [0xBCAB], NFKD: [0x1107, 0x1166, 0x11B2] },
+{ source: [0xBCAC], NFC: [0xBCAC], NFD: [0x1107, 0x1166, 0x11B3], NFKC: [0xBCAC], NFKD: [0x1107, 0x1166, 0x11B3] },
+{ source: [0xBCAD], NFC: [0xBCAD], NFD: [0x1107, 0x1166, 0x11B4], NFKC: [0xBCAD], NFKD: [0x1107, 0x1166, 0x11B4] },
+{ source: [0xBCAE], NFC: [0xBCAE], NFD: [0x1107, 0x1166, 0x11B5], NFKC: [0xBCAE], NFKD: [0x1107, 0x1166, 0x11B5] },
+{ source: [0xBCAF], NFC: [0xBCAF], NFD: [0x1107, 0x1166, 0x11B6], NFKC: [0xBCAF], NFKD: [0x1107, 0x1166, 0x11B6] },
+{ source: [0xBCB0], NFC: [0xBCB0], NFD: [0x1107, 0x1166, 0x11B7], NFKC: [0xBCB0], NFKD: [0x1107, 0x1166, 0x11B7] },
+{ source: [0xBCB1], NFC: [0xBCB1], NFD: [0x1107, 0x1166, 0x11B8], NFKC: [0xBCB1], NFKD: [0x1107, 0x1166, 0x11B8] },
+{ source: [0xBCB2], NFC: [0xBCB2], NFD: [0x1107, 0x1166, 0x11B9], NFKC: [0xBCB2], NFKD: [0x1107, 0x1166, 0x11B9] },
+{ source: [0xBCB3], NFC: [0xBCB3], NFD: [0x1107, 0x1166, 0x11BA], NFKC: [0xBCB3], NFKD: [0x1107, 0x1166, 0x11BA] },
+{ source: [0xBCB4], NFC: [0xBCB4], NFD: [0x1107, 0x1166, 0x11BB], NFKC: [0xBCB4], NFKD: [0x1107, 0x1166, 0x11BB] },
+{ source: [0xBCB5], NFC: [0xBCB5], NFD: [0x1107, 0x1166, 0x11BC], NFKC: [0xBCB5], NFKD: [0x1107, 0x1166, 0x11BC] },
+{ source: [0xBCB6], NFC: [0xBCB6], NFD: [0x1107, 0x1166, 0x11BD], NFKC: [0xBCB6], NFKD: [0x1107, 0x1166, 0x11BD] },
+{ source: [0xBCB7], NFC: [0xBCB7], NFD: [0x1107, 0x1166, 0x11BE], NFKC: [0xBCB7], NFKD: [0x1107, 0x1166, 0x11BE] },
+{ source: [0xBCB8], NFC: [0xBCB8], NFD: [0x1107, 0x1166, 0x11BF], NFKC: [0xBCB8], NFKD: [0x1107, 0x1166, 0x11BF] },
+{ source: [0xBCB9], NFC: [0xBCB9], NFD: [0x1107, 0x1166, 0x11C0], NFKC: [0xBCB9], NFKD: [0x1107, 0x1166, 0x11C0] },
+{ source: [0xBCBA], NFC: [0xBCBA], NFD: [0x1107, 0x1166, 0x11C1], NFKC: [0xBCBA], NFKD: [0x1107, 0x1166, 0x11C1] },
+{ source: [0xBCBB], NFC: [0xBCBB], NFD: [0x1107, 0x1166, 0x11C2], NFKC: [0xBCBB], NFKD: [0x1107, 0x1166, 0x11C2] },
+{ source: [0xBCBC], NFC: [0xBCBC], NFD: [0x1107, 0x1167], NFKC: [0xBCBC], NFKD: [0x1107, 0x1167] },
+{ source: [0xBCBD], NFC: [0xBCBD], NFD: [0x1107, 0x1167, 0x11A8], NFKC: [0xBCBD], NFKD: [0x1107, 0x1167, 0x11A8] },
+{ source: [0xBCBE], NFC: [0xBCBE], NFD: [0x1107, 0x1167, 0x11A9], NFKC: [0xBCBE], NFKD: [0x1107, 0x1167, 0x11A9] },
+{ source: [0xBCBF], NFC: [0xBCBF], NFD: [0x1107, 0x1167, 0x11AA], NFKC: [0xBCBF], NFKD: [0x1107, 0x1167, 0x11AA] },
+{ source: [0xBCC0], NFC: [0xBCC0], NFD: [0x1107, 0x1167, 0x11AB], NFKC: [0xBCC0], NFKD: [0x1107, 0x1167, 0x11AB] },
+{ source: [0xBCC1], NFC: [0xBCC1], NFD: [0x1107, 0x1167, 0x11AC], NFKC: [0xBCC1], NFKD: [0x1107, 0x1167, 0x11AC] },
+{ source: [0xBCC2], NFC: [0xBCC2], NFD: [0x1107, 0x1167, 0x11AD], NFKC: [0xBCC2], NFKD: [0x1107, 0x1167, 0x11AD] },
+{ source: [0xBCC3], NFC: [0xBCC3], NFD: [0x1107, 0x1167, 0x11AE], NFKC: [0xBCC3], NFKD: [0x1107, 0x1167, 0x11AE] },
+{ source: [0xBCC4], NFC: [0xBCC4], NFD: [0x1107, 0x1167, 0x11AF], NFKC: [0xBCC4], NFKD: [0x1107, 0x1167, 0x11AF] },
+{ source: [0xBCC5], NFC: [0xBCC5], NFD: [0x1107, 0x1167, 0x11B0], NFKC: [0xBCC5], NFKD: [0x1107, 0x1167, 0x11B0] },
+{ source: [0xBCC6], NFC: [0xBCC6], NFD: [0x1107, 0x1167, 0x11B1], NFKC: [0xBCC6], NFKD: [0x1107, 0x1167, 0x11B1] },
+{ source: [0xBCC7], NFC: [0xBCC7], NFD: [0x1107, 0x1167, 0x11B2], NFKC: [0xBCC7], NFKD: [0x1107, 0x1167, 0x11B2] },
+{ source: [0xBCC8], NFC: [0xBCC8], NFD: [0x1107, 0x1167, 0x11B3], NFKC: [0xBCC8], NFKD: [0x1107, 0x1167, 0x11B3] },
+{ source: [0xBCC9], NFC: [0xBCC9], NFD: [0x1107, 0x1167, 0x11B4], NFKC: [0xBCC9], NFKD: [0x1107, 0x1167, 0x11B4] },
+{ source: [0xBCCA], NFC: [0xBCCA], NFD: [0x1107, 0x1167, 0x11B5], NFKC: [0xBCCA], NFKD: [0x1107, 0x1167, 0x11B5] },
+{ source: [0xBCCB], NFC: [0xBCCB], NFD: [0x1107, 0x1167, 0x11B6], NFKC: [0xBCCB], NFKD: [0x1107, 0x1167, 0x11B6] },
+{ source: [0xBCCC], NFC: [0xBCCC], NFD: [0x1107, 0x1167, 0x11B7], NFKC: [0xBCCC], NFKD: [0x1107, 0x1167, 0x11B7] },
+{ source: [0xBCCD], NFC: [0xBCCD], NFD: [0x1107, 0x1167, 0x11B8], NFKC: [0xBCCD], NFKD: [0x1107, 0x1167, 0x11B8] },
+{ source: [0xBCCE], NFC: [0xBCCE], NFD: [0x1107, 0x1167, 0x11B9], NFKC: [0xBCCE], NFKD: [0x1107, 0x1167, 0x11B9] },
+{ source: [0xBCCF], NFC: [0xBCCF], NFD: [0x1107, 0x1167, 0x11BA], NFKC: [0xBCCF], NFKD: [0x1107, 0x1167, 0x11BA] },
+{ source: [0xBCD0], NFC: [0xBCD0], NFD: [0x1107, 0x1167, 0x11BB], NFKC: [0xBCD0], NFKD: [0x1107, 0x1167, 0x11BB] },
+{ source: [0xBCD1], NFC: [0xBCD1], NFD: [0x1107, 0x1167, 0x11BC], NFKC: [0xBCD1], NFKD: [0x1107, 0x1167, 0x11BC] },
+{ source: [0xBCD2], NFC: [0xBCD2], NFD: [0x1107, 0x1167, 0x11BD], NFKC: [0xBCD2], NFKD: [0x1107, 0x1167, 0x11BD] },
+{ source: [0xBCD3], NFC: [0xBCD3], NFD: [0x1107, 0x1167, 0x11BE], NFKC: [0xBCD3], NFKD: [0x1107, 0x1167, 0x11BE] },
+{ source: [0xBCD4], NFC: [0xBCD4], NFD: [0x1107, 0x1167, 0x11BF], NFKC: [0xBCD4], NFKD: [0x1107, 0x1167, 0x11BF] },
+{ source: [0xBCD5], NFC: [0xBCD5], NFD: [0x1107, 0x1167, 0x11C0], NFKC: [0xBCD5], NFKD: [0x1107, 0x1167, 0x11C0] },
+{ source: [0xBCD6], NFC: [0xBCD6], NFD: [0x1107, 0x1167, 0x11C1], NFKC: [0xBCD6], NFKD: [0x1107, 0x1167, 0x11C1] },
+{ source: [0xBCD7], NFC: [0xBCD7], NFD: [0x1107, 0x1167, 0x11C2], NFKC: [0xBCD7], NFKD: [0x1107, 0x1167, 0x11C2] },
+{ source: [0xBCD8], NFC: [0xBCD8], NFD: [0x1107, 0x1168], NFKC: [0xBCD8], NFKD: [0x1107, 0x1168] },
+{ source: [0xBCD9], NFC: [0xBCD9], NFD: [0x1107, 0x1168, 0x11A8], NFKC: [0xBCD9], NFKD: [0x1107, 0x1168, 0x11A8] },
+{ source: [0xBCDA], NFC: [0xBCDA], NFD: [0x1107, 0x1168, 0x11A9], NFKC: [0xBCDA], NFKD: [0x1107, 0x1168, 0x11A9] },
+{ source: [0xBCDB], NFC: [0xBCDB], NFD: [0x1107, 0x1168, 0x11AA], NFKC: [0xBCDB], NFKD: [0x1107, 0x1168, 0x11AA] },
+{ source: [0xBCDC], NFC: [0xBCDC], NFD: [0x1107, 0x1168, 0x11AB], NFKC: [0xBCDC], NFKD: [0x1107, 0x1168, 0x11AB] },
+{ source: [0xBCDD], NFC: [0xBCDD], NFD: [0x1107, 0x1168, 0x11AC], NFKC: [0xBCDD], NFKD: [0x1107, 0x1168, 0x11AC] },
+{ source: [0xBCDE], NFC: [0xBCDE], NFD: [0x1107, 0x1168, 0x11AD], NFKC: [0xBCDE], NFKD: [0x1107, 0x1168, 0x11AD] },
+{ source: [0xBCDF], NFC: [0xBCDF], NFD: [0x1107, 0x1168, 0x11AE], NFKC: [0xBCDF], NFKD: [0x1107, 0x1168, 0x11AE] },
+{ source: [0xBCE0], NFC: [0xBCE0], NFD: [0x1107, 0x1168, 0x11AF], NFKC: [0xBCE0], NFKD: [0x1107, 0x1168, 0x11AF] },
+{ source: [0xBCE1], NFC: [0xBCE1], NFD: [0x1107, 0x1168, 0x11B0], NFKC: [0xBCE1], NFKD: [0x1107, 0x1168, 0x11B0] },
+{ source: [0xBCE2], NFC: [0xBCE2], NFD: [0x1107, 0x1168, 0x11B1], NFKC: [0xBCE2], NFKD: [0x1107, 0x1168, 0x11B1] },
+{ source: [0xBCE3], NFC: [0xBCE3], NFD: [0x1107, 0x1168, 0x11B2], NFKC: [0xBCE3], NFKD: [0x1107, 0x1168, 0x11B2] },
+{ source: [0xBCE4], NFC: [0xBCE4], NFD: [0x1107, 0x1168, 0x11B3], NFKC: [0xBCE4], NFKD: [0x1107, 0x1168, 0x11B3] },
+{ source: [0xBCE5], NFC: [0xBCE5], NFD: [0x1107, 0x1168, 0x11B4], NFKC: [0xBCE5], NFKD: [0x1107, 0x1168, 0x11B4] },
+{ source: [0xBCE6], NFC: [0xBCE6], NFD: [0x1107, 0x1168, 0x11B5], NFKC: [0xBCE6], NFKD: [0x1107, 0x1168, 0x11B5] },
+{ source: [0xBCE7], NFC: [0xBCE7], NFD: [0x1107, 0x1168, 0x11B6], NFKC: [0xBCE7], NFKD: [0x1107, 0x1168, 0x11B6] },
+{ source: [0xBCE8], NFC: [0xBCE8], NFD: [0x1107, 0x1168, 0x11B7], NFKC: [0xBCE8], NFKD: [0x1107, 0x1168, 0x11B7] },
+{ source: [0xBCE9], NFC: [0xBCE9], NFD: [0x1107, 0x1168, 0x11B8], NFKC: [0xBCE9], NFKD: [0x1107, 0x1168, 0x11B8] },
+{ source: [0xBCEA], NFC: [0xBCEA], NFD: [0x1107, 0x1168, 0x11B9], NFKC: [0xBCEA], NFKD: [0x1107, 0x1168, 0x11B9] },
+{ source: [0xBCEB], NFC: [0xBCEB], NFD: [0x1107, 0x1168, 0x11BA], NFKC: [0xBCEB], NFKD: [0x1107, 0x1168, 0x11BA] },
+{ source: [0xBCEC], NFC: [0xBCEC], NFD: [0x1107, 0x1168, 0x11BB], NFKC: [0xBCEC], NFKD: [0x1107, 0x1168, 0x11BB] },
+{ source: [0xBCED], NFC: [0xBCED], NFD: [0x1107, 0x1168, 0x11BC], NFKC: [0xBCED], NFKD: [0x1107, 0x1168, 0x11BC] },
+{ source: [0xBCEE], NFC: [0xBCEE], NFD: [0x1107, 0x1168, 0x11BD], NFKC: [0xBCEE], NFKD: [0x1107, 0x1168, 0x11BD] },
+{ source: [0xBCEF], NFC: [0xBCEF], NFD: [0x1107, 0x1168, 0x11BE], NFKC: [0xBCEF], NFKD: [0x1107, 0x1168, 0x11BE] },
+{ source: [0xBCF0], NFC: [0xBCF0], NFD: [0x1107, 0x1168, 0x11BF], NFKC: [0xBCF0], NFKD: [0x1107, 0x1168, 0x11BF] },
+{ source: [0xBCF1], NFC: [0xBCF1], NFD: [0x1107, 0x1168, 0x11C0], NFKC: [0xBCF1], NFKD: [0x1107, 0x1168, 0x11C0] },
+{ source: [0xBCF2], NFC: [0xBCF2], NFD: [0x1107, 0x1168, 0x11C1], NFKC: [0xBCF2], NFKD: [0x1107, 0x1168, 0x11C1] },
+{ source: [0xBCF3], NFC: [0xBCF3], NFD: [0x1107, 0x1168, 0x11C2], NFKC: [0xBCF3], NFKD: [0x1107, 0x1168, 0x11C2] },
+{ source: [0xBCF4], NFC: [0xBCF4], NFD: [0x1107, 0x1169], NFKC: [0xBCF4], NFKD: [0x1107, 0x1169] },
+{ source: [0xBCF5], NFC: [0xBCF5], NFD: [0x1107, 0x1169, 0x11A8], NFKC: [0xBCF5], NFKD: [0x1107, 0x1169, 0x11A8] },
+{ source: [0xBCF6], NFC: [0xBCF6], NFD: [0x1107, 0x1169, 0x11A9], NFKC: [0xBCF6], NFKD: [0x1107, 0x1169, 0x11A9] },
+{ source: [0xBCF7], NFC: [0xBCF7], NFD: [0x1107, 0x1169, 0x11AA], NFKC: [0xBCF7], NFKD: [0x1107, 0x1169, 0x11AA] },
+{ source: [0xBCF8], NFC: [0xBCF8], NFD: [0x1107, 0x1169, 0x11AB], NFKC: [0xBCF8], NFKD: [0x1107, 0x1169, 0x11AB] },
+{ source: [0xBCF9], NFC: [0xBCF9], NFD: [0x1107, 0x1169, 0x11AC], NFKC: [0xBCF9], NFKD: [0x1107, 0x1169, 0x11AC] },
+{ source: [0xBCFA], NFC: [0xBCFA], NFD: [0x1107, 0x1169, 0x11AD], NFKC: [0xBCFA], NFKD: [0x1107, 0x1169, 0x11AD] },
+{ source: [0xBCFB], NFC: [0xBCFB], NFD: [0x1107, 0x1169, 0x11AE], NFKC: [0xBCFB], NFKD: [0x1107, 0x1169, 0x11AE] },
+{ source: [0xBCFC], NFC: [0xBCFC], NFD: [0x1107, 0x1169, 0x11AF], NFKC: [0xBCFC], NFKD: [0x1107, 0x1169, 0x11AF] },
+{ source: [0xBCFD], NFC: [0xBCFD], NFD: [0x1107, 0x1169, 0x11B0], NFKC: [0xBCFD], NFKD: [0x1107, 0x1169, 0x11B0] },
+{ source: [0xBCFE], NFC: [0xBCFE], NFD: [0x1107, 0x1169, 0x11B1], NFKC: [0xBCFE], NFKD: [0x1107, 0x1169, 0x11B1] },
+{ source: [0xBCFF], NFC: [0xBCFF], NFD: [0x1107, 0x1169, 0x11B2], NFKC: [0xBCFF], NFKD: [0x1107, 0x1169, 0x11B2] },
+{ source: [0xBD00], NFC: [0xBD00], NFD: [0x1107, 0x1169, 0x11B3], NFKC: [0xBD00], NFKD: [0x1107, 0x1169, 0x11B3] },
+{ source: [0xBD01], NFC: [0xBD01], NFD: [0x1107, 0x1169, 0x11B4], NFKC: [0xBD01], NFKD: [0x1107, 0x1169, 0x11B4] },
+{ source: [0xBD02], NFC: [0xBD02], NFD: [0x1107, 0x1169, 0x11B5], NFKC: [0xBD02], NFKD: [0x1107, 0x1169, 0x11B5] },
+{ source: [0xBD03], NFC: [0xBD03], NFD: [0x1107, 0x1169, 0x11B6], NFKC: [0xBD03], NFKD: [0x1107, 0x1169, 0x11B6] },
+{ source: [0xBD04], NFC: [0xBD04], NFD: [0x1107, 0x1169, 0x11B7], NFKC: [0xBD04], NFKD: [0x1107, 0x1169, 0x11B7] },
+{ source: [0xBD05], NFC: [0xBD05], NFD: [0x1107, 0x1169, 0x11B8], NFKC: [0xBD05], NFKD: [0x1107, 0x1169, 0x11B8] },
+{ source: [0xBD06], NFC: [0xBD06], NFD: [0x1107, 0x1169, 0x11B9], NFKC: [0xBD06], NFKD: [0x1107, 0x1169, 0x11B9] },
+{ source: [0xBD07], NFC: [0xBD07], NFD: [0x1107, 0x1169, 0x11BA], NFKC: [0xBD07], NFKD: [0x1107, 0x1169, 0x11BA] },
+{ source: [0xBD08], NFC: [0xBD08], NFD: [0x1107, 0x1169, 0x11BB], NFKC: [0xBD08], NFKD: [0x1107, 0x1169, 0x11BB] },
+{ source: [0xBD09], NFC: [0xBD09], NFD: [0x1107, 0x1169, 0x11BC], NFKC: [0xBD09], NFKD: [0x1107, 0x1169, 0x11BC] },
+{ source: [0xBD0A], NFC: [0xBD0A], NFD: [0x1107, 0x1169, 0x11BD], NFKC: [0xBD0A], NFKD: [0x1107, 0x1169, 0x11BD] },
+{ source: [0xBD0B], NFC: [0xBD0B], NFD: [0x1107, 0x1169, 0x11BE], NFKC: [0xBD0B], NFKD: [0x1107, 0x1169, 0x11BE] },
+{ source: [0xBD0C], NFC: [0xBD0C], NFD: [0x1107, 0x1169, 0x11BF], NFKC: [0xBD0C], NFKD: [0x1107, 0x1169, 0x11BF] },
+{ source: [0xBD0D], NFC: [0xBD0D], NFD: [0x1107, 0x1169, 0x11C0], NFKC: [0xBD0D], NFKD: [0x1107, 0x1169, 0x11C0] },
+{ source: [0xBD0E], NFC: [0xBD0E], NFD: [0x1107, 0x1169, 0x11C1], NFKC: [0xBD0E], NFKD: [0x1107, 0x1169, 0x11C1] },
+{ source: [0xBD0F], NFC: [0xBD0F], NFD: [0x1107, 0x1169, 0x11C2], NFKC: [0xBD0F], NFKD: [0x1107, 0x1169, 0x11C2] },
+{ source: [0xBD10], NFC: [0xBD10], NFD: [0x1107, 0x116A], NFKC: [0xBD10], NFKD: [0x1107, 0x116A] },
+{ source: [0xBD11], NFC: [0xBD11], NFD: [0x1107, 0x116A, 0x11A8], NFKC: [0xBD11], NFKD: [0x1107, 0x116A, 0x11A8] },
+{ source: [0xBD12], NFC: [0xBD12], NFD: [0x1107, 0x116A, 0x11A9], NFKC: [0xBD12], NFKD: [0x1107, 0x116A, 0x11A9] },
+{ source: [0xBD13], NFC: [0xBD13], NFD: [0x1107, 0x116A, 0x11AA], NFKC: [0xBD13], NFKD: [0x1107, 0x116A, 0x11AA] },
+{ source: [0xBD14], NFC: [0xBD14], NFD: [0x1107, 0x116A, 0x11AB], NFKC: [0xBD14], NFKD: [0x1107, 0x116A, 0x11AB] },
+{ source: [0xBD15], NFC: [0xBD15], NFD: [0x1107, 0x116A, 0x11AC], NFKC: [0xBD15], NFKD: [0x1107, 0x116A, 0x11AC] },
+{ source: [0xBD16], NFC: [0xBD16], NFD: [0x1107, 0x116A, 0x11AD], NFKC: [0xBD16], NFKD: [0x1107, 0x116A, 0x11AD] },
+{ source: [0xBD17], NFC: [0xBD17], NFD: [0x1107, 0x116A, 0x11AE], NFKC: [0xBD17], NFKD: [0x1107, 0x116A, 0x11AE] },
+{ source: [0xBD18], NFC: [0xBD18], NFD: [0x1107, 0x116A, 0x11AF], NFKC: [0xBD18], NFKD: [0x1107, 0x116A, 0x11AF] },
+{ source: [0xBD19], NFC: [0xBD19], NFD: [0x1107, 0x116A, 0x11B0], NFKC: [0xBD19], NFKD: [0x1107, 0x116A, 0x11B0] },
+{ source: [0xBD1A], NFC: [0xBD1A], NFD: [0x1107, 0x116A, 0x11B1], NFKC: [0xBD1A], NFKD: [0x1107, 0x116A, 0x11B1] },
+{ source: [0xBD1B], NFC: [0xBD1B], NFD: [0x1107, 0x116A, 0x11B2], NFKC: [0xBD1B], NFKD: [0x1107, 0x116A, 0x11B2] },
+{ source: [0xBD1C], NFC: [0xBD1C], NFD: [0x1107, 0x116A, 0x11B3], NFKC: [0xBD1C], NFKD: [0x1107, 0x116A, 0x11B3] },
+{ source: [0xBD1D], NFC: [0xBD1D], NFD: [0x1107, 0x116A, 0x11B4], NFKC: [0xBD1D], NFKD: [0x1107, 0x116A, 0x11B4] },
+{ source: [0xBD1E], NFC: [0xBD1E], NFD: [0x1107, 0x116A, 0x11B5], NFKC: [0xBD1E], NFKD: [0x1107, 0x116A, 0x11B5] },
+{ source: [0xBD1F], NFC: [0xBD1F], NFD: [0x1107, 0x116A, 0x11B6], NFKC: [0xBD1F], NFKD: [0x1107, 0x116A, 0x11B6] },
+{ source: [0xBD20], NFC: [0xBD20], NFD: [0x1107, 0x116A, 0x11B7], NFKC: [0xBD20], NFKD: [0x1107, 0x116A, 0x11B7] },
+{ source: [0xBD21], NFC: [0xBD21], NFD: [0x1107, 0x116A, 0x11B8], NFKC: [0xBD21], NFKD: [0x1107, 0x116A, 0x11B8] },
+{ source: [0xBD22], NFC: [0xBD22], NFD: [0x1107, 0x116A, 0x11B9], NFKC: [0xBD22], NFKD: [0x1107, 0x116A, 0x11B9] },
+{ source: [0xBD23], NFC: [0xBD23], NFD: [0x1107, 0x116A, 0x11BA], NFKC: [0xBD23], NFKD: [0x1107, 0x116A, 0x11BA] },
+{ source: [0xBD24], NFC: [0xBD24], NFD: [0x1107, 0x116A, 0x11BB], NFKC: [0xBD24], NFKD: [0x1107, 0x116A, 0x11BB] },
+{ source: [0xBD25], NFC: [0xBD25], NFD: [0x1107, 0x116A, 0x11BC], NFKC: [0xBD25], NFKD: [0x1107, 0x116A, 0x11BC] },
+{ source: [0xBD26], NFC: [0xBD26], NFD: [0x1107, 0x116A, 0x11BD], NFKC: [0xBD26], NFKD: [0x1107, 0x116A, 0x11BD] },
+{ source: [0xBD27], NFC: [0xBD27], NFD: [0x1107, 0x116A, 0x11BE], NFKC: [0xBD27], NFKD: [0x1107, 0x116A, 0x11BE] },
+{ source: [0xBD28], NFC: [0xBD28], NFD: [0x1107, 0x116A, 0x11BF], NFKC: [0xBD28], NFKD: [0x1107, 0x116A, 0x11BF] },
+{ source: [0xBD29], NFC: [0xBD29], NFD: [0x1107, 0x116A, 0x11C0], NFKC: [0xBD29], NFKD: [0x1107, 0x116A, 0x11C0] },
+{ source: [0xBD2A], NFC: [0xBD2A], NFD: [0x1107, 0x116A, 0x11C1], NFKC: [0xBD2A], NFKD: [0x1107, 0x116A, 0x11C1] },
+{ source: [0xBD2B], NFC: [0xBD2B], NFD: [0x1107, 0x116A, 0x11C2], NFKC: [0xBD2B], NFKD: [0x1107, 0x116A, 0x11C2] },
+{ source: [0xBD2C], NFC: [0xBD2C], NFD: [0x1107, 0x116B], NFKC: [0xBD2C], NFKD: [0x1107, 0x116B] },
+{ source: [0xBD2D], NFC: [0xBD2D], NFD: [0x1107, 0x116B, 0x11A8], NFKC: [0xBD2D], NFKD: [0x1107, 0x116B, 0x11A8] },
+{ source: [0xBD2E], NFC: [0xBD2E], NFD: [0x1107, 0x116B, 0x11A9], NFKC: [0xBD2E], NFKD: [0x1107, 0x116B, 0x11A9] },
+{ source: [0xBD2F], NFC: [0xBD2F], NFD: [0x1107, 0x116B, 0x11AA], NFKC: [0xBD2F], NFKD: [0x1107, 0x116B, 0x11AA] },
+{ source: [0xBD30], NFC: [0xBD30], NFD: [0x1107, 0x116B, 0x11AB], NFKC: [0xBD30], NFKD: [0x1107, 0x116B, 0x11AB] },
+{ source: [0xBD31], NFC: [0xBD31], NFD: [0x1107, 0x116B, 0x11AC], NFKC: [0xBD31], NFKD: [0x1107, 0x116B, 0x11AC] },
+{ source: [0xBD32], NFC: [0xBD32], NFD: [0x1107, 0x116B, 0x11AD], NFKC: [0xBD32], NFKD: [0x1107, 0x116B, 0x11AD] },
+{ source: [0xBD33], NFC: [0xBD33], NFD: [0x1107, 0x116B, 0x11AE], NFKC: [0xBD33], NFKD: [0x1107, 0x116B, 0x11AE] },
+{ source: [0xBD34], NFC: [0xBD34], NFD: [0x1107, 0x116B, 0x11AF], NFKC: [0xBD34], NFKD: [0x1107, 0x116B, 0x11AF] },
+{ source: [0xBD35], NFC: [0xBD35], NFD: [0x1107, 0x116B, 0x11B0], NFKC: [0xBD35], NFKD: [0x1107, 0x116B, 0x11B0] },
+{ source: [0xBD36], NFC: [0xBD36], NFD: [0x1107, 0x116B, 0x11B1], NFKC: [0xBD36], NFKD: [0x1107, 0x116B, 0x11B1] },
+{ source: [0xBD37], NFC: [0xBD37], NFD: [0x1107, 0x116B, 0x11B2], NFKC: [0xBD37], NFKD: [0x1107, 0x116B, 0x11B2] },
+{ source: [0xBD38], NFC: [0xBD38], NFD: [0x1107, 0x116B, 0x11B3], NFKC: [0xBD38], NFKD: [0x1107, 0x116B, 0x11B3] },
+{ source: [0xBD39], NFC: [0xBD39], NFD: [0x1107, 0x116B, 0x11B4], NFKC: [0xBD39], NFKD: [0x1107, 0x116B, 0x11B4] },
+{ source: [0xBD3A], NFC: [0xBD3A], NFD: [0x1107, 0x116B, 0x11B5], NFKC: [0xBD3A], NFKD: [0x1107, 0x116B, 0x11B5] },
+{ source: [0xBD3B], NFC: [0xBD3B], NFD: [0x1107, 0x116B, 0x11B6], NFKC: [0xBD3B], NFKD: [0x1107, 0x116B, 0x11B6] },
+{ source: [0xBD3C], NFC: [0xBD3C], NFD: [0x1107, 0x116B, 0x11B7], NFKC: [0xBD3C], NFKD: [0x1107, 0x116B, 0x11B7] },
+{ source: [0xBD3D], NFC: [0xBD3D], NFD: [0x1107, 0x116B, 0x11B8], NFKC: [0xBD3D], NFKD: [0x1107, 0x116B, 0x11B8] },
+{ source: [0xBD3E], NFC: [0xBD3E], NFD: [0x1107, 0x116B, 0x11B9], NFKC: [0xBD3E], NFKD: [0x1107, 0x116B, 0x11B9] },
+{ source: [0xBD3F], NFC: [0xBD3F], NFD: [0x1107, 0x116B, 0x11BA], NFKC: [0xBD3F], NFKD: [0x1107, 0x116B, 0x11BA] },
+{ source: [0xBD40], NFC: [0xBD40], NFD: [0x1107, 0x116B, 0x11BB], NFKC: [0xBD40], NFKD: [0x1107, 0x116B, 0x11BB] },
+{ source: [0xBD41], NFC: [0xBD41], NFD: [0x1107, 0x116B, 0x11BC], NFKC: [0xBD41], NFKD: [0x1107, 0x116B, 0x11BC] },
+{ source: [0xBD42], NFC: [0xBD42], NFD: [0x1107, 0x116B, 0x11BD], NFKC: [0xBD42], NFKD: [0x1107, 0x116B, 0x11BD] },
+{ source: [0xBD43], NFC: [0xBD43], NFD: [0x1107, 0x116B, 0x11BE], NFKC: [0xBD43], NFKD: [0x1107, 0x116B, 0x11BE] },
+{ source: [0xBD44], NFC: [0xBD44], NFD: [0x1107, 0x116B, 0x11BF], NFKC: [0xBD44], NFKD: [0x1107, 0x116B, 0x11BF] },
+{ source: [0xBD45], NFC: [0xBD45], NFD: [0x1107, 0x116B, 0x11C0], NFKC: [0xBD45], NFKD: [0x1107, 0x116B, 0x11C0] },
+{ source: [0xBD46], NFC: [0xBD46], NFD: [0x1107, 0x116B, 0x11C1], NFKC: [0xBD46], NFKD: [0x1107, 0x116B, 0x11C1] },
+{ source: [0xBD47], NFC: [0xBD47], NFD: [0x1107, 0x116B, 0x11C2], NFKC: [0xBD47], NFKD: [0x1107, 0x116B, 0x11C2] },
+{ source: [0xBD48], NFC: [0xBD48], NFD: [0x1107, 0x116C], NFKC: [0xBD48], NFKD: [0x1107, 0x116C] },
+{ source: [0xBD49], NFC: [0xBD49], NFD: [0x1107, 0x116C, 0x11A8], NFKC: [0xBD49], NFKD: [0x1107, 0x116C, 0x11A8] },
+{ source: [0xBD4A], NFC: [0xBD4A], NFD: [0x1107, 0x116C, 0x11A9], NFKC: [0xBD4A], NFKD: [0x1107, 0x116C, 0x11A9] },
+{ source: [0xBD4B], NFC: [0xBD4B], NFD: [0x1107, 0x116C, 0x11AA], NFKC: [0xBD4B], NFKD: [0x1107, 0x116C, 0x11AA] },
+{ source: [0xBD4C], NFC: [0xBD4C], NFD: [0x1107, 0x116C, 0x11AB], NFKC: [0xBD4C], NFKD: [0x1107, 0x116C, 0x11AB] },
+{ source: [0xBD4D], NFC: [0xBD4D], NFD: [0x1107, 0x116C, 0x11AC], NFKC: [0xBD4D], NFKD: [0x1107, 0x116C, 0x11AC] },
+{ source: [0xBD4E], NFC: [0xBD4E], NFD: [0x1107, 0x116C, 0x11AD], NFKC: [0xBD4E], NFKD: [0x1107, 0x116C, 0x11AD] },
+{ source: [0xBD4F], NFC: [0xBD4F], NFD: [0x1107, 0x116C, 0x11AE], NFKC: [0xBD4F], NFKD: [0x1107, 0x116C, 0x11AE] },
+{ source: [0xBD50], NFC: [0xBD50], NFD: [0x1107, 0x116C, 0x11AF], NFKC: [0xBD50], NFKD: [0x1107, 0x116C, 0x11AF] },
+{ source: [0xBD51], NFC: [0xBD51], NFD: [0x1107, 0x116C, 0x11B0], NFKC: [0xBD51], NFKD: [0x1107, 0x116C, 0x11B0] },
+{ source: [0xBD52], NFC: [0xBD52], NFD: [0x1107, 0x116C, 0x11B1], NFKC: [0xBD52], NFKD: [0x1107, 0x116C, 0x11B1] },
+{ source: [0xBD53], NFC: [0xBD53], NFD: [0x1107, 0x116C, 0x11B2], NFKC: [0xBD53], NFKD: [0x1107, 0x116C, 0x11B2] },
+{ source: [0xBD54], NFC: [0xBD54], NFD: [0x1107, 0x116C, 0x11B3], NFKC: [0xBD54], NFKD: [0x1107, 0x116C, 0x11B3] },
+{ source: [0xBD55], NFC: [0xBD55], NFD: [0x1107, 0x116C, 0x11B4], NFKC: [0xBD55], NFKD: [0x1107, 0x116C, 0x11B4] },
+{ source: [0xBD56], NFC: [0xBD56], NFD: [0x1107, 0x116C, 0x11B5], NFKC: [0xBD56], NFKD: [0x1107, 0x116C, 0x11B5] },
+{ source: [0xBD57], NFC: [0xBD57], NFD: [0x1107, 0x116C, 0x11B6], NFKC: [0xBD57], NFKD: [0x1107, 0x116C, 0x11B6] },
+{ source: [0xBD58], NFC: [0xBD58], NFD: [0x1107, 0x116C, 0x11B7], NFKC: [0xBD58], NFKD: [0x1107, 0x116C, 0x11B7] },
+{ source: [0xBD59], NFC: [0xBD59], NFD: [0x1107, 0x116C, 0x11B8], NFKC: [0xBD59], NFKD: [0x1107, 0x116C, 0x11B8] },
+{ source: [0xBD5A], NFC: [0xBD5A], NFD: [0x1107, 0x116C, 0x11B9], NFKC: [0xBD5A], NFKD: [0x1107, 0x116C, 0x11B9] },
+{ source: [0xBD5B], NFC: [0xBD5B], NFD: [0x1107, 0x116C, 0x11BA], NFKC: [0xBD5B], NFKD: [0x1107, 0x116C, 0x11BA] },
+{ source: [0xBD5C], NFC: [0xBD5C], NFD: [0x1107, 0x116C, 0x11BB], NFKC: [0xBD5C], NFKD: [0x1107, 0x116C, 0x11BB] },
+{ source: [0xBD5D], NFC: [0xBD5D], NFD: [0x1107, 0x116C, 0x11BC], NFKC: [0xBD5D], NFKD: [0x1107, 0x116C, 0x11BC] },
+{ source: [0xBD5E], NFC: [0xBD5E], NFD: [0x1107, 0x116C, 0x11BD], NFKC: [0xBD5E], NFKD: [0x1107, 0x116C, 0x11BD] },
+{ source: [0xBD5F], NFC: [0xBD5F], NFD: [0x1107, 0x116C, 0x11BE], NFKC: [0xBD5F], NFKD: [0x1107, 0x116C, 0x11BE] },
+{ source: [0xBD60], NFC: [0xBD60], NFD: [0x1107, 0x116C, 0x11BF], NFKC: [0xBD60], NFKD: [0x1107, 0x116C, 0x11BF] },
+{ source: [0xBD61], NFC: [0xBD61], NFD: [0x1107, 0x116C, 0x11C0], NFKC: [0xBD61], NFKD: [0x1107, 0x116C, 0x11C0] },
+{ source: [0xBD62], NFC: [0xBD62], NFD: [0x1107, 0x116C, 0x11C1], NFKC: [0xBD62], NFKD: [0x1107, 0x116C, 0x11C1] },
+{ source: [0xBD63], NFC: [0xBD63], NFD: [0x1107, 0x116C, 0x11C2], NFKC: [0xBD63], NFKD: [0x1107, 0x116C, 0x11C2] },
+{ source: [0xBD64], NFC: [0xBD64], NFD: [0x1107, 0x116D], NFKC: [0xBD64], NFKD: [0x1107, 0x116D] },
+{ source: [0xBD65], NFC: [0xBD65], NFD: [0x1107, 0x116D, 0x11A8], NFKC: [0xBD65], NFKD: [0x1107, 0x116D, 0x11A8] },
+{ source: [0xBD66], NFC: [0xBD66], NFD: [0x1107, 0x116D, 0x11A9], NFKC: [0xBD66], NFKD: [0x1107, 0x116D, 0x11A9] },
+{ source: [0xBD67], NFC: [0xBD67], NFD: [0x1107, 0x116D, 0x11AA], NFKC: [0xBD67], NFKD: [0x1107, 0x116D, 0x11AA] },
+{ source: [0xBD68], NFC: [0xBD68], NFD: [0x1107, 0x116D, 0x11AB], NFKC: [0xBD68], NFKD: [0x1107, 0x116D, 0x11AB] },
+{ source: [0xBD69], NFC: [0xBD69], NFD: [0x1107, 0x116D, 0x11AC], NFKC: [0xBD69], NFKD: [0x1107, 0x116D, 0x11AC] },
+{ source: [0xBD6A], NFC: [0xBD6A], NFD: [0x1107, 0x116D, 0x11AD], NFKC: [0xBD6A], NFKD: [0x1107, 0x116D, 0x11AD] },
+{ source: [0xBD6B], NFC: [0xBD6B], NFD: [0x1107, 0x116D, 0x11AE], NFKC: [0xBD6B], NFKD: [0x1107, 0x116D, 0x11AE] },
+{ source: [0xBD6C], NFC: [0xBD6C], NFD: [0x1107, 0x116D, 0x11AF], NFKC: [0xBD6C], NFKD: [0x1107, 0x116D, 0x11AF] },
+{ source: [0xBD6D], NFC: [0xBD6D], NFD: [0x1107, 0x116D, 0x11B0], NFKC: [0xBD6D], NFKD: [0x1107, 0x116D, 0x11B0] },
+{ source: [0xBD6E], NFC: [0xBD6E], NFD: [0x1107, 0x116D, 0x11B1], NFKC: [0xBD6E], NFKD: [0x1107, 0x116D, 0x11B1] },
+{ source: [0xBD6F], NFC: [0xBD6F], NFD: [0x1107, 0x116D, 0x11B2], NFKC: [0xBD6F], NFKD: [0x1107, 0x116D, 0x11B2] },
+{ source: [0xBD70], NFC: [0xBD70], NFD: [0x1107, 0x116D, 0x11B3], NFKC: [0xBD70], NFKD: [0x1107, 0x116D, 0x11B3] },
+{ source: [0xBD71], NFC: [0xBD71], NFD: [0x1107, 0x116D, 0x11B4], NFKC: [0xBD71], NFKD: [0x1107, 0x116D, 0x11B4] },
+{ source: [0xBD72], NFC: [0xBD72], NFD: [0x1107, 0x116D, 0x11B5], NFKC: [0xBD72], NFKD: [0x1107, 0x116D, 0x11B5] },
+{ source: [0xBD73], NFC: [0xBD73], NFD: [0x1107, 0x116D, 0x11B6], NFKC: [0xBD73], NFKD: [0x1107, 0x116D, 0x11B6] },
+{ source: [0xBD74], NFC: [0xBD74], NFD: [0x1107, 0x116D, 0x11B7], NFKC: [0xBD74], NFKD: [0x1107, 0x116D, 0x11B7] },
+{ source: [0xBD75], NFC: [0xBD75], NFD: [0x1107, 0x116D, 0x11B8], NFKC: [0xBD75], NFKD: [0x1107, 0x116D, 0x11B8] },
+{ source: [0xBD76], NFC: [0xBD76], NFD: [0x1107, 0x116D, 0x11B9], NFKC: [0xBD76], NFKD: [0x1107, 0x116D, 0x11B9] },
+{ source: [0xBD77], NFC: [0xBD77], NFD: [0x1107, 0x116D, 0x11BA], NFKC: [0xBD77], NFKD: [0x1107, 0x116D, 0x11BA] },
+{ source: [0xBD78], NFC: [0xBD78], NFD: [0x1107, 0x116D, 0x11BB], NFKC: [0xBD78], NFKD: [0x1107, 0x116D, 0x11BB] },
+{ source: [0xBD79], NFC: [0xBD79], NFD: [0x1107, 0x116D, 0x11BC], NFKC: [0xBD79], NFKD: [0x1107, 0x116D, 0x11BC] },
+{ source: [0xBD7A], NFC: [0xBD7A], NFD: [0x1107, 0x116D, 0x11BD], NFKC: [0xBD7A], NFKD: [0x1107, 0x116D, 0x11BD] },
+{ source: [0xBD7B], NFC: [0xBD7B], NFD: [0x1107, 0x116D, 0x11BE], NFKC: [0xBD7B], NFKD: [0x1107, 0x116D, 0x11BE] },
+{ source: [0xBD7C], NFC: [0xBD7C], NFD: [0x1107, 0x116D, 0x11BF], NFKC: [0xBD7C], NFKD: [0x1107, 0x116D, 0x11BF] },
+{ source: [0xBD7D], NFC: [0xBD7D], NFD: [0x1107, 0x116D, 0x11C0], NFKC: [0xBD7D], NFKD: [0x1107, 0x116D, 0x11C0] },
+{ source: [0xBD7E], NFC: [0xBD7E], NFD: [0x1107, 0x116D, 0x11C1], NFKC: [0xBD7E], NFKD: [0x1107, 0x116D, 0x11C1] },
+{ source: [0xBD7F], NFC: [0xBD7F], NFD: [0x1107, 0x116D, 0x11C2], NFKC: [0xBD7F], NFKD: [0x1107, 0x116D, 0x11C2] },
+{ source: [0xBD80], NFC: [0xBD80], NFD: [0x1107, 0x116E], NFKC: [0xBD80], NFKD: [0x1107, 0x116E] },
+{ source: [0xBD81], NFC: [0xBD81], NFD: [0x1107, 0x116E, 0x11A8], NFKC: [0xBD81], NFKD: [0x1107, 0x116E, 0x11A8] },
+{ source: [0xBD82], NFC: [0xBD82], NFD: [0x1107, 0x116E, 0x11A9], NFKC: [0xBD82], NFKD: [0x1107, 0x116E, 0x11A9] },
+{ source: [0xBD83], NFC: [0xBD83], NFD: [0x1107, 0x116E, 0x11AA], NFKC: [0xBD83], NFKD: [0x1107, 0x116E, 0x11AA] },
+{ source: [0xBD84], NFC: [0xBD84], NFD: [0x1107, 0x116E, 0x11AB], NFKC: [0xBD84], NFKD: [0x1107, 0x116E, 0x11AB] },
+{ source: [0xBD85], NFC: [0xBD85], NFD: [0x1107, 0x116E, 0x11AC], NFKC: [0xBD85], NFKD: [0x1107, 0x116E, 0x11AC] },
+{ source: [0xBD86], NFC: [0xBD86], NFD: [0x1107, 0x116E, 0x11AD], NFKC: [0xBD86], NFKD: [0x1107, 0x116E, 0x11AD] },
+{ source: [0xBD87], NFC: [0xBD87], NFD: [0x1107, 0x116E, 0x11AE], NFKC: [0xBD87], NFKD: [0x1107, 0x116E, 0x11AE] },
+{ source: [0xBD88], NFC: [0xBD88], NFD: [0x1107, 0x116E, 0x11AF], NFKC: [0xBD88], NFKD: [0x1107, 0x116E, 0x11AF] },
+{ source: [0xBD89], NFC: [0xBD89], NFD: [0x1107, 0x116E, 0x11B0], NFKC: [0xBD89], NFKD: [0x1107, 0x116E, 0x11B0] },
+{ source: [0xBD8A], NFC: [0xBD8A], NFD: [0x1107, 0x116E, 0x11B1], NFKC: [0xBD8A], NFKD: [0x1107, 0x116E, 0x11B1] },
+{ source: [0xBD8B], NFC: [0xBD8B], NFD: [0x1107, 0x116E, 0x11B2], NFKC: [0xBD8B], NFKD: [0x1107, 0x116E, 0x11B2] },
+{ source: [0xBD8C], NFC: [0xBD8C], NFD: [0x1107, 0x116E, 0x11B3], NFKC: [0xBD8C], NFKD: [0x1107, 0x116E, 0x11B3] },
+{ source: [0xBD8D], NFC: [0xBD8D], NFD: [0x1107, 0x116E, 0x11B4], NFKC: [0xBD8D], NFKD: [0x1107, 0x116E, 0x11B4] },
+{ source: [0xBD8E], NFC: [0xBD8E], NFD: [0x1107, 0x116E, 0x11B5], NFKC: [0xBD8E], NFKD: [0x1107, 0x116E, 0x11B5] },
+{ source: [0xBD8F], NFC: [0xBD8F], NFD: [0x1107, 0x116E, 0x11B6], NFKC: [0xBD8F], NFKD: [0x1107, 0x116E, 0x11B6] },
+{ source: [0xBD90], NFC: [0xBD90], NFD: [0x1107, 0x116E, 0x11B7], NFKC: [0xBD90], NFKD: [0x1107, 0x116E, 0x11B7] },
+{ source: [0xBD91], NFC: [0xBD91], NFD: [0x1107, 0x116E, 0x11B8], NFKC: [0xBD91], NFKD: [0x1107, 0x116E, 0x11B8] },
+{ source: [0xBD92], NFC: [0xBD92], NFD: [0x1107, 0x116E, 0x11B9], NFKC: [0xBD92], NFKD: [0x1107, 0x116E, 0x11B9] },
+{ source: [0xBD93], NFC: [0xBD93], NFD: [0x1107, 0x116E, 0x11BA], NFKC: [0xBD93], NFKD: [0x1107, 0x116E, 0x11BA] },
+{ source: [0xBD94], NFC: [0xBD94], NFD: [0x1107, 0x116E, 0x11BB], NFKC: [0xBD94], NFKD: [0x1107, 0x116E, 0x11BB] },
+{ source: [0xBD95], NFC: [0xBD95], NFD: [0x1107, 0x116E, 0x11BC], NFKC: [0xBD95], NFKD: [0x1107, 0x116E, 0x11BC] },
+{ source: [0xBD96], NFC: [0xBD96], NFD: [0x1107, 0x116E, 0x11BD], NFKC: [0xBD96], NFKD: [0x1107, 0x116E, 0x11BD] },
+{ source: [0xBD97], NFC: [0xBD97], NFD: [0x1107, 0x116E, 0x11BE], NFKC: [0xBD97], NFKD: [0x1107, 0x116E, 0x11BE] },
+{ source: [0xBD98], NFC: [0xBD98], NFD: [0x1107, 0x116E, 0x11BF], NFKC: [0xBD98], NFKD: [0x1107, 0x116E, 0x11BF] },
+{ source: [0xBD99], NFC: [0xBD99], NFD: [0x1107, 0x116E, 0x11C0], NFKC: [0xBD99], NFKD: [0x1107, 0x116E, 0x11C0] },
+{ source: [0xBD9A], NFC: [0xBD9A], NFD: [0x1107, 0x116E, 0x11C1], NFKC: [0xBD9A], NFKD: [0x1107, 0x116E, 0x11C1] },
+{ source: [0xBD9B], NFC: [0xBD9B], NFD: [0x1107, 0x116E, 0x11C2], NFKC: [0xBD9B], NFKD: [0x1107, 0x116E, 0x11C2] },
+{ source: [0xBD9C], NFC: [0xBD9C], NFD: [0x1107, 0x116F], NFKC: [0xBD9C], NFKD: [0x1107, 0x116F] },
+{ source: [0xBD9D], NFC: [0xBD9D], NFD: [0x1107, 0x116F, 0x11A8], NFKC: [0xBD9D], NFKD: [0x1107, 0x116F, 0x11A8] },
+{ source: [0xBD9E], NFC: [0xBD9E], NFD: [0x1107, 0x116F, 0x11A9], NFKC: [0xBD9E], NFKD: [0x1107, 0x116F, 0x11A9] },
+{ source: [0xBD9F], NFC: [0xBD9F], NFD: [0x1107, 0x116F, 0x11AA], NFKC: [0xBD9F], NFKD: [0x1107, 0x116F, 0x11AA] },
+{ source: [0xBDA0], NFC: [0xBDA0], NFD: [0x1107, 0x116F, 0x11AB], NFKC: [0xBDA0], NFKD: [0x1107, 0x116F, 0x11AB] },
+{ source: [0xBDA1], NFC: [0xBDA1], NFD: [0x1107, 0x116F, 0x11AC], NFKC: [0xBDA1], NFKD: [0x1107, 0x116F, 0x11AC] },
+{ source: [0xBDA2], NFC: [0xBDA2], NFD: [0x1107, 0x116F, 0x11AD], NFKC: [0xBDA2], NFKD: [0x1107, 0x116F, 0x11AD] },
+{ source: [0xBDA3], NFC: [0xBDA3], NFD: [0x1107, 0x116F, 0x11AE], NFKC: [0xBDA3], NFKD: [0x1107, 0x116F, 0x11AE] },
+{ source: [0xBDA4], NFC: [0xBDA4], NFD: [0x1107, 0x116F, 0x11AF], NFKC: [0xBDA4], NFKD: [0x1107, 0x116F, 0x11AF] },
+{ source: [0xBDA5], NFC: [0xBDA5], NFD: [0x1107, 0x116F, 0x11B0], NFKC: [0xBDA5], NFKD: [0x1107, 0x116F, 0x11B0] },
+{ source: [0xBDA6], NFC: [0xBDA6], NFD: [0x1107, 0x116F, 0x11B1], NFKC: [0xBDA6], NFKD: [0x1107, 0x116F, 0x11B1] },
+{ source: [0xBDA7], NFC: [0xBDA7], NFD: [0x1107, 0x116F, 0x11B2], NFKC: [0xBDA7], NFKD: [0x1107, 0x116F, 0x11B2] },
+{ source: [0xBDA8], NFC: [0xBDA8], NFD: [0x1107, 0x116F, 0x11B3], NFKC: [0xBDA8], NFKD: [0x1107, 0x116F, 0x11B3] },
+{ source: [0xBDA9], NFC: [0xBDA9], NFD: [0x1107, 0x116F, 0x11B4], NFKC: [0xBDA9], NFKD: [0x1107, 0x116F, 0x11B4] },
+{ source: [0xBDAA], NFC: [0xBDAA], NFD: [0x1107, 0x116F, 0x11B5], NFKC: [0xBDAA], NFKD: [0x1107, 0x116F, 0x11B5] },
+{ source: [0xBDAB], NFC: [0xBDAB], NFD: [0x1107, 0x116F, 0x11B6], NFKC: [0xBDAB], NFKD: [0x1107, 0x116F, 0x11B6] },
+{ source: [0xBDAC], NFC: [0xBDAC], NFD: [0x1107, 0x116F, 0x11B7], NFKC: [0xBDAC], NFKD: [0x1107, 0x116F, 0x11B7] },
+{ source: [0xBDAD], NFC: [0xBDAD], NFD: [0x1107, 0x116F, 0x11B8], NFKC: [0xBDAD], NFKD: [0x1107, 0x116F, 0x11B8] },
+{ source: [0xBDAE], NFC: [0xBDAE], NFD: [0x1107, 0x116F, 0x11B9], NFKC: [0xBDAE], NFKD: [0x1107, 0x116F, 0x11B9] },
+{ source: [0xBDAF], NFC: [0xBDAF], NFD: [0x1107, 0x116F, 0x11BA], NFKC: [0xBDAF], NFKD: [0x1107, 0x116F, 0x11BA] },
+{ source: [0xBDB0], NFC: [0xBDB0], NFD: [0x1107, 0x116F, 0x11BB], NFKC: [0xBDB0], NFKD: [0x1107, 0x116F, 0x11BB] },
+{ source: [0xBDB1], NFC: [0xBDB1], NFD: [0x1107, 0x116F, 0x11BC], NFKC: [0xBDB1], NFKD: [0x1107, 0x116F, 0x11BC] },
+{ source: [0xBDB2], NFC: [0xBDB2], NFD: [0x1107, 0x116F, 0x11BD], NFKC: [0xBDB2], NFKD: [0x1107, 0x116F, 0x11BD] },
+{ source: [0xBDB3], NFC: [0xBDB3], NFD: [0x1107, 0x116F, 0x11BE], NFKC: [0xBDB3], NFKD: [0x1107, 0x116F, 0x11BE] },
+{ source: [0xBDB4], NFC: [0xBDB4], NFD: [0x1107, 0x116F, 0x11BF], NFKC: [0xBDB4], NFKD: [0x1107, 0x116F, 0x11BF] },
+{ source: [0xBDB5], NFC: [0xBDB5], NFD: [0x1107, 0x116F, 0x11C0], NFKC: [0xBDB5], NFKD: [0x1107, 0x116F, 0x11C0] },
+{ source: [0xBDB6], NFC: [0xBDB6], NFD: [0x1107, 0x116F, 0x11C1], NFKC: [0xBDB6], NFKD: [0x1107, 0x116F, 0x11C1] },
+{ source: [0xBDB7], NFC: [0xBDB7], NFD: [0x1107, 0x116F, 0x11C2], NFKC: [0xBDB7], NFKD: [0x1107, 0x116F, 0x11C2] },
+{ source: [0xBDB8], NFC: [0xBDB8], NFD: [0x1107, 0x1170], NFKC: [0xBDB8], NFKD: [0x1107, 0x1170] },
+{ source: [0xBDB9], NFC: [0xBDB9], NFD: [0x1107, 0x1170, 0x11A8], NFKC: [0xBDB9], NFKD: [0x1107, 0x1170, 0x11A8] },
+{ source: [0xBDBA], NFC: [0xBDBA], NFD: [0x1107, 0x1170, 0x11A9], NFKC: [0xBDBA], NFKD: [0x1107, 0x1170, 0x11A9] },
+{ source: [0xBDBB], NFC: [0xBDBB], NFD: [0x1107, 0x1170, 0x11AA], NFKC: [0xBDBB], NFKD: [0x1107, 0x1170, 0x11AA] },
+{ source: [0xBDBC], NFC: [0xBDBC], NFD: [0x1107, 0x1170, 0x11AB], NFKC: [0xBDBC], NFKD: [0x1107, 0x1170, 0x11AB] },
+{ source: [0xBDBD], NFC: [0xBDBD], NFD: [0x1107, 0x1170, 0x11AC], NFKC: [0xBDBD], NFKD: [0x1107, 0x1170, 0x11AC] },
+{ source: [0xBDBE], NFC: [0xBDBE], NFD: [0x1107, 0x1170, 0x11AD], NFKC: [0xBDBE], NFKD: [0x1107, 0x1170, 0x11AD] },
+{ source: [0xBDBF], NFC: [0xBDBF], NFD: [0x1107, 0x1170, 0x11AE], NFKC: [0xBDBF], NFKD: [0x1107, 0x1170, 0x11AE] },
+{ source: [0xBDC0], NFC: [0xBDC0], NFD: [0x1107, 0x1170, 0x11AF], NFKC: [0xBDC0], NFKD: [0x1107, 0x1170, 0x11AF] },
+{ source: [0xBDC1], NFC: [0xBDC1], NFD: [0x1107, 0x1170, 0x11B0], NFKC: [0xBDC1], NFKD: [0x1107, 0x1170, 0x11B0] },
+{ source: [0xBDC2], NFC: [0xBDC2], NFD: [0x1107, 0x1170, 0x11B1], NFKC: [0xBDC2], NFKD: [0x1107, 0x1170, 0x11B1] },
+{ source: [0xBDC3], NFC: [0xBDC3], NFD: [0x1107, 0x1170, 0x11B2], NFKC: [0xBDC3], NFKD: [0x1107, 0x1170, 0x11B2] },
+{ source: [0xBDC4], NFC: [0xBDC4], NFD: [0x1107, 0x1170, 0x11B3], NFKC: [0xBDC4], NFKD: [0x1107, 0x1170, 0x11B3] },
+{ source: [0xBDC5], NFC: [0xBDC5], NFD: [0x1107, 0x1170, 0x11B4], NFKC: [0xBDC5], NFKD: [0x1107, 0x1170, 0x11B4] },
+{ source: [0xBDC6], NFC: [0xBDC6], NFD: [0x1107, 0x1170, 0x11B5], NFKC: [0xBDC6], NFKD: [0x1107, 0x1170, 0x11B5] },
+{ source: [0xBDC7], NFC: [0xBDC7], NFD: [0x1107, 0x1170, 0x11B6], NFKC: [0xBDC7], NFKD: [0x1107, 0x1170, 0x11B6] },
+{ source: [0xBDC8], NFC: [0xBDC8], NFD: [0x1107, 0x1170, 0x11B7], NFKC: [0xBDC8], NFKD: [0x1107, 0x1170, 0x11B7] },
+{ source: [0xBDC9], NFC: [0xBDC9], NFD: [0x1107, 0x1170, 0x11B8], NFKC: [0xBDC9], NFKD: [0x1107, 0x1170, 0x11B8] },
+{ source: [0xBDCA], NFC: [0xBDCA], NFD: [0x1107, 0x1170, 0x11B9], NFKC: [0xBDCA], NFKD: [0x1107, 0x1170, 0x11B9] },
+{ source: [0xBDCB], NFC: [0xBDCB], NFD: [0x1107, 0x1170, 0x11BA], NFKC: [0xBDCB], NFKD: [0x1107, 0x1170, 0x11BA] },
+{ source: [0xBDCC], NFC: [0xBDCC], NFD: [0x1107, 0x1170, 0x11BB], NFKC: [0xBDCC], NFKD: [0x1107, 0x1170, 0x11BB] },
+{ source: [0xBDCD], NFC: [0xBDCD], NFD: [0x1107, 0x1170, 0x11BC], NFKC: [0xBDCD], NFKD: [0x1107, 0x1170, 0x11BC] },
+{ source: [0xBDCE], NFC: [0xBDCE], NFD: [0x1107, 0x1170, 0x11BD], NFKC: [0xBDCE], NFKD: [0x1107, 0x1170, 0x11BD] },
+{ source: [0xBDCF], NFC: [0xBDCF], NFD: [0x1107, 0x1170, 0x11BE], NFKC: [0xBDCF], NFKD: [0x1107, 0x1170, 0x11BE] },
+{ source: [0xBDD0], NFC: [0xBDD0], NFD: [0x1107, 0x1170, 0x11BF], NFKC: [0xBDD0], NFKD: [0x1107, 0x1170, 0x11BF] },
+{ source: [0xBDD1], NFC: [0xBDD1], NFD: [0x1107, 0x1170, 0x11C0], NFKC: [0xBDD1], NFKD: [0x1107, 0x1170, 0x11C0] },
+{ source: [0xBDD2], NFC: [0xBDD2], NFD: [0x1107, 0x1170, 0x11C1], NFKC: [0xBDD2], NFKD: [0x1107, 0x1170, 0x11C1] },
+{ source: [0xBDD3], NFC: [0xBDD3], NFD: [0x1107, 0x1170, 0x11C2], NFKC: [0xBDD3], NFKD: [0x1107, 0x1170, 0x11C2] },
+{ source: [0xBDD4], NFC: [0xBDD4], NFD: [0x1107, 0x1171], NFKC: [0xBDD4], NFKD: [0x1107, 0x1171] },
+{ source: [0xBDD5], NFC: [0xBDD5], NFD: [0x1107, 0x1171, 0x11A8], NFKC: [0xBDD5], NFKD: [0x1107, 0x1171, 0x11A8] },
+{ source: [0xBDD6], NFC: [0xBDD6], NFD: [0x1107, 0x1171, 0x11A9], NFKC: [0xBDD6], NFKD: [0x1107, 0x1171, 0x11A9] },
+{ source: [0xBDD7], NFC: [0xBDD7], NFD: [0x1107, 0x1171, 0x11AA], NFKC: [0xBDD7], NFKD: [0x1107, 0x1171, 0x11AA] },
+{ source: [0xBDD8], NFC: [0xBDD8], NFD: [0x1107, 0x1171, 0x11AB], NFKC: [0xBDD8], NFKD: [0x1107, 0x1171, 0x11AB] },
+{ source: [0xBDD9], NFC: [0xBDD9], NFD: [0x1107, 0x1171, 0x11AC], NFKC: [0xBDD9], NFKD: [0x1107, 0x1171, 0x11AC] },
+{ source: [0xBDDA], NFC: [0xBDDA], NFD: [0x1107, 0x1171, 0x11AD], NFKC: [0xBDDA], NFKD: [0x1107, 0x1171, 0x11AD] },
+{ source: [0xBDDB], NFC: [0xBDDB], NFD: [0x1107, 0x1171, 0x11AE], NFKC: [0xBDDB], NFKD: [0x1107, 0x1171, 0x11AE] },
+{ source: [0xBDDC], NFC: [0xBDDC], NFD: [0x1107, 0x1171, 0x11AF], NFKC: [0xBDDC], NFKD: [0x1107, 0x1171, 0x11AF] },
+{ source: [0xBDDD], NFC: [0xBDDD], NFD: [0x1107, 0x1171, 0x11B0], NFKC: [0xBDDD], NFKD: [0x1107, 0x1171, 0x11B0] },
+{ source: [0xBDDE], NFC: [0xBDDE], NFD: [0x1107, 0x1171, 0x11B1], NFKC: [0xBDDE], NFKD: [0x1107, 0x1171, 0x11B1] },
+{ source: [0xBDDF], NFC: [0xBDDF], NFD: [0x1107, 0x1171, 0x11B2], NFKC: [0xBDDF], NFKD: [0x1107, 0x1171, 0x11B2] },
+{ source: [0xBDE0], NFC: [0xBDE0], NFD: [0x1107, 0x1171, 0x11B3], NFKC: [0xBDE0], NFKD: [0x1107, 0x1171, 0x11B3] },
+{ source: [0xBDE1], NFC: [0xBDE1], NFD: [0x1107, 0x1171, 0x11B4], NFKC: [0xBDE1], NFKD: [0x1107, 0x1171, 0x11B4] },
+{ source: [0xBDE2], NFC: [0xBDE2], NFD: [0x1107, 0x1171, 0x11B5], NFKC: [0xBDE2], NFKD: [0x1107, 0x1171, 0x11B5] },
+{ source: [0xBDE3], NFC: [0xBDE3], NFD: [0x1107, 0x1171, 0x11B6], NFKC: [0xBDE3], NFKD: [0x1107, 0x1171, 0x11B6] },
+{ source: [0xBDE4], NFC: [0xBDE4], NFD: [0x1107, 0x1171, 0x11B7], NFKC: [0xBDE4], NFKD: [0x1107, 0x1171, 0x11B7] },
+{ source: [0xBDE5], NFC: [0xBDE5], NFD: [0x1107, 0x1171, 0x11B8], NFKC: [0xBDE5], NFKD: [0x1107, 0x1171, 0x11B8] },
+{ source: [0xBDE6], NFC: [0xBDE6], NFD: [0x1107, 0x1171, 0x11B9], NFKC: [0xBDE6], NFKD: [0x1107, 0x1171, 0x11B9] },
+{ source: [0xBDE7], NFC: [0xBDE7], NFD: [0x1107, 0x1171, 0x11BA], NFKC: [0xBDE7], NFKD: [0x1107, 0x1171, 0x11BA] },
+{ source: [0xBDE8], NFC: [0xBDE8], NFD: [0x1107, 0x1171, 0x11BB], NFKC: [0xBDE8], NFKD: [0x1107, 0x1171, 0x11BB] },
+{ source: [0xBDE9], NFC: [0xBDE9], NFD: [0x1107, 0x1171, 0x11BC], NFKC: [0xBDE9], NFKD: [0x1107, 0x1171, 0x11BC] },
+{ source: [0xBDEA], NFC: [0xBDEA], NFD: [0x1107, 0x1171, 0x11BD], NFKC: [0xBDEA], NFKD: [0x1107, 0x1171, 0x11BD] },
+{ source: [0xBDEB], NFC: [0xBDEB], NFD: [0x1107, 0x1171, 0x11BE], NFKC: [0xBDEB], NFKD: [0x1107, 0x1171, 0x11BE] },
+{ source: [0xBDEC], NFC: [0xBDEC], NFD: [0x1107, 0x1171, 0x11BF], NFKC: [0xBDEC], NFKD: [0x1107, 0x1171, 0x11BF] },
+{ source: [0xBDED], NFC: [0xBDED], NFD: [0x1107, 0x1171, 0x11C0], NFKC: [0xBDED], NFKD: [0x1107, 0x1171, 0x11C0] },
+{ source: [0xBDEE], NFC: [0xBDEE], NFD: [0x1107, 0x1171, 0x11C1], NFKC: [0xBDEE], NFKD: [0x1107, 0x1171, 0x11C1] },
+{ source: [0xBDEF], NFC: [0xBDEF], NFD: [0x1107, 0x1171, 0x11C2], NFKC: [0xBDEF], NFKD: [0x1107, 0x1171, 0x11C2] },
+{ source: [0xBDF0], NFC: [0xBDF0], NFD: [0x1107, 0x1172], NFKC: [0xBDF0], NFKD: [0x1107, 0x1172] },
+{ source: [0xBDF1], NFC: [0xBDF1], NFD: [0x1107, 0x1172, 0x11A8], NFKC: [0xBDF1], NFKD: [0x1107, 0x1172, 0x11A8] },
+{ source: [0xBDF2], NFC: [0xBDF2], NFD: [0x1107, 0x1172, 0x11A9], NFKC: [0xBDF2], NFKD: [0x1107, 0x1172, 0x11A9] },
+{ source: [0xBDF3], NFC: [0xBDF3], NFD: [0x1107, 0x1172, 0x11AA], NFKC: [0xBDF3], NFKD: [0x1107, 0x1172, 0x11AA] },
+{ source: [0xBDF4], NFC: [0xBDF4], NFD: [0x1107, 0x1172, 0x11AB], NFKC: [0xBDF4], NFKD: [0x1107, 0x1172, 0x11AB] },
+{ source: [0xBDF5], NFC: [0xBDF5], NFD: [0x1107, 0x1172, 0x11AC], NFKC: [0xBDF5], NFKD: [0x1107, 0x1172, 0x11AC] },
+{ source: [0xBDF6], NFC: [0xBDF6], NFD: [0x1107, 0x1172, 0x11AD], NFKC: [0xBDF6], NFKD: [0x1107, 0x1172, 0x11AD] },
+{ source: [0xBDF7], NFC: [0xBDF7], NFD: [0x1107, 0x1172, 0x11AE], NFKC: [0xBDF7], NFKD: [0x1107, 0x1172, 0x11AE] },
+{ source: [0xBDF8], NFC: [0xBDF8], NFD: [0x1107, 0x1172, 0x11AF], NFKC: [0xBDF8], NFKD: [0x1107, 0x1172, 0x11AF] },
+{ source: [0xBDF9], NFC: [0xBDF9], NFD: [0x1107, 0x1172, 0x11B0], NFKC: [0xBDF9], NFKD: [0x1107, 0x1172, 0x11B0] },
+{ source: [0xBDFA], NFC: [0xBDFA], NFD: [0x1107, 0x1172, 0x11B1], NFKC: [0xBDFA], NFKD: [0x1107, 0x1172, 0x11B1] },
+{ source: [0xBDFB], NFC: [0xBDFB], NFD: [0x1107, 0x1172, 0x11B2], NFKC: [0xBDFB], NFKD: [0x1107, 0x1172, 0x11B2] },
+{ source: [0xBDFC], NFC: [0xBDFC], NFD: [0x1107, 0x1172, 0x11B3], NFKC: [0xBDFC], NFKD: [0x1107, 0x1172, 0x11B3] },
+{ source: [0xBDFD], NFC: [0xBDFD], NFD: [0x1107, 0x1172, 0x11B4], NFKC: [0xBDFD], NFKD: [0x1107, 0x1172, 0x11B4] },
+{ source: [0xBDFE], NFC: [0xBDFE], NFD: [0x1107, 0x1172, 0x11B5], NFKC: [0xBDFE], NFKD: [0x1107, 0x1172, 0x11B5] },
+{ source: [0xBDFF], NFC: [0xBDFF], NFD: [0x1107, 0x1172, 0x11B6], NFKC: [0xBDFF], NFKD: [0x1107, 0x1172, 0x11B6] },
+{ source: [0xBE00], NFC: [0xBE00], NFD: [0x1107, 0x1172, 0x11B7], NFKC: [0xBE00], NFKD: [0x1107, 0x1172, 0x11B7] },
+{ source: [0xBE01], NFC: [0xBE01], NFD: [0x1107, 0x1172, 0x11B8], NFKC: [0xBE01], NFKD: [0x1107, 0x1172, 0x11B8] },
+{ source: [0xBE02], NFC: [0xBE02], NFD: [0x1107, 0x1172, 0x11B9], NFKC: [0xBE02], NFKD: [0x1107, 0x1172, 0x11B9] },
+{ source: [0xBE03], NFC: [0xBE03], NFD: [0x1107, 0x1172, 0x11BA], NFKC: [0xBE03], NFKD: [0x1107, 0x1172, 0x11BA] },
+{ source: [0xBE04], NFC: [0xBE04], NFD: [0x1107, 0x1172, 0x11BB], NFKC: [0xBE04], NFKD: [0x1107, 0x1172, 0x11BB] },
+{ source: [0xBE05], NFC: [0xBE05], NFD: [0x1107, 0x1172, 0x11BC], NFKC: [0xBE05], NFKD: [0x1107, 0x1172, 0x11BC] },
+{ source: [0xBE06], NFC: [0xBE06], NFD: [0x1107, 0x1172, 0x11BD], NFKC: [0xBE06], NFKD: [0x1107, 0x1172, 0x11BD] },
+{ source: [0xBE07], NFC: [0xBE07], NFD: [0x1107, 0x1172, 0x11BE], NFKC: [0xBE07], NFKD: [0x1107, 0x1172, 0x11BE] },
+{ source: [0xBE08], NFC: [0xBE08], NFD: [0x1107, 0x1172, 0x11BF], NFKC: [0xBE08], NFKD: [0x1107, 0x1172, 0x11BF] },
+{ source: [0xBE09], NFC: [0xBE09], NFD: [0x1107, 0x1172, 0x11C0], NFKC: [0xBE09], NFKD: [0x1107, 0x1172, 0x11C0] },
+{ source: [0xBE0A], NFC: [0xBE0A], NFD: [0x1107, 0x1172, 0x11C1], NFKC: [0xBE0A], NFKD: [0x1107, 0x1172, 0x11C1] },
+{ source: [0xBE0B], NFC: [0xBE0B], NFD: [0x1107, 0x1172, 0x11C2], NFKC: [0xBE0B], NFKD: [0x1107, 0x1172, 0x11C2] },
+{ source: [0xBE0C], NFC: [0xBE0C], NFD: [0x1107, 0x1173], NFKC: [0xBE0C], NFKD: [0x1107, 0x1173] },
+{ source: [0xBE0D], NFC: [0xBE0D], NFD: [0x1107, 0x1173, 0x11A8], NFKC: [0xBE0D], NFKD: [0x1107, 0x1173, 0x11A8] },
+{ source: [0xBE0E], NFC: [0xBE0E], NFD: [0x1107, 0x1173, 0x11A9], NFKC: [0xBE0E], NFKD: [0x1107, 0x1173, 0x11A9] },
+{ source: [0xBE0F], NFC: [0xBE0F], NFD: [0x1107, 0x1173, 0x11AA], NFKC: [0xBE0F], NFKD: [0x1107, 0x1173, 0x11AA] },
+{ source: [0xBE10], NFC: [0xBE10], NFD: [0x1107, 0x1173, 0x11AB], NFKC: [0xBE10], NFKD: [0x1107, 0x1173, 0x11AB] },
+{ source: [0xBE11], NFC: [0xBE11], NFD: [0x1107, 0x1173, 0x11AC], NFKC: [0xBE11], NFKD: [0x1107, 0x1173, 0x11AC] },
+{ source: [0xBE12], NFC: [0xBE12], NFD: [0x1107, 0x1173, 0x11AD], NFKC: [0xBE12], NFKD: [0x1107, 0x1173, 0x11AD] },
+{ source: [0xBE13], NFC: [0xBE13], NFD: [0x1107, 0x1173, 0x11AE], NFKC: [0xBE13], NFKD: [0x1107, 0x1173, 0x11AE] },
+{ source: [0xBE14], NFC: [0xBE14], NFD: [0x1107, 0x1173, 0x11AF], NFKC: [0xBE14], NFKD: [0x1107, 0x1173, 0x11AF] },
+{ source: [0xBE15], NFC: [0xBE15], NFD: [0x1107, 0x1173, 0x11B0], NFKC: [0xBE15], NFKD: [0x1107, 0x1173, 0x11B0] },
+{ source: [0xBE16], NFC: [0xBE16], NFD: [0x1107, 0x1173, 0x11B1], NFKC: [0xBE16], NFKD: [0x1107, 0x1173, 0x11B1] },
+{ source: [0xBE17], NFC: [0xBE17], NFD: [0x1107, 0x1173, 0x11B2], NFKC: [0xBE17], NFKD: [0x1107, 0x1173, 0x11B2] },
+{ source: [0xBE18], NFC: [0xBE18], NFD: [0x1107, 0x1173, 0x11B3], NFKC: [0xBE18], NFKD: [0x1107, 0x1173, 0x11B3] },
+{ source: [0xBE19], NFC: [0xBE19], NFD: [0x1107, 0x1173, 0x11B4], NFKC: [0xBE19], NFKD: [0x1107, 0x1173, 0x11B4] },
+{ source: [0xBE1A], NFC: [0xBE1A], NFD: [0x1107, 0x1173, 0x11B5], NFKC: [0xBE1A], NFKD: [0x1107, 0x1173, 0x11B5] },
+{ source: [0xBE1B], NFC: [0xBE1B], NFD: [0x1107, 0x1173, 0x11B6], NFKC: [0xBE1B], NFKD: [0x1107, 0x1173, 0x11B6] },
+{ source: [0xBE1C], NFC: [0xBE1C], NFD: [0x1107, 0x1173, 0x11B7], NFKC: [0xBE1C], NFKD: [0x1107, 0x1173, 0x11B7] },
+{ source: [0xBE1D], NFC: [0xBE1D], NFD: [0x1107, 0x1173, 0x11B8], NFKC: [0xBE1D], NFKD: [0x1107, 0x1173, 0x11B8] },
+{ source: [0xBE1E], NFC: [0xBE1E], NFD: [0x1107, 0x1173, 0x11B9], NFKC: [0xBE1E], NFKD: [0x1107, 0x1173, 0x11B9] },
+{ source: [0xBE1F], NFC: [0xBE1F], NFD: [0x1107, 0x1173, 0x11BA], NFKC: [0xBE1F], NFKD: [0x1107, 0x1173, 0x11BA] },
+{ source: [0xBE20], NFC: [0xBE20], NFD: [0x1107, 0x1173, 0x11BB], NFKC: [0xBE20], NFKD: [0x1107, 0x1173, 0x11BB] },
+{ source: [0xBE21], NFC: [0xBE21], NFD: [0x1107, 0x1173, 0x11BC], NFKC: [0xBE21], NFKD: [0x1107, 0x1173, 0x11BC] },
+{ source: [0xBE22], NFC: [0xBE22], NFD: [0x1107, 0x1173, 0x11BD], NFKC: [0xBE22], NFKD: [0x1107, 0x1173, 0x11BD] },
+{ source: [0xBE23], NFC: [0xBE23], NFD: [0x1107, 0x1173, 0x11BE], NFKC: [0xBE23], NFKD: [0x1107, 0x1173, 0x11BE] },
+{ source: [0xBE24], NFC: [0xBE24], NFD: [0x1107, 0x1173, 0x11BF], NFKC: [0xBE24], NFKD: [0x1107, 0x1173, 0x11BF] },
+{ source: [0xBE25], NFC: [0xBE25], NFD: [0x1107, 0x1173, 0x11C0], NFKC: [0xBE25], NFKD: [0x1107, 0x1173, 0x11C0] },
+{ source: [0xBE26], NFC: [0xBE26], NFD: [0x1107, 0x1173, 0x11C1], NFKC: [0xBE26], NFKD: [0x1107, 0x1173, 0x11C1] },
+{ source: [0xBE27], NFC: [0xBE27], NFD: [0x1107, 0x1173, 0x11C2], NFKC: [0xBE27], NFKD: [0x1107, 0x1173, 0x11C2] },
+{ source: [0xBE28], NFC: [0xBE28], NFD: [0x1107, 0x1174], NFKC: [0xBE28], NFKD: [0x1107, 0x1174] },
+{ source: [0xBE29], NFC: [0xBE29], NFD: [0x1107, 0x1174, 0x11A8], NFKC: [0xBE29], NFKD: [0x1107, 0x1174, 0x11A8] },
+{ source: [0xBE2A], NFC: [0xBE2A], NFD: [0x1107, 0x1174, 0x11A9], NFKC: [0xBE2A], NFKD: [0x1107, 0x1174, 0x11A9] },
+{ source: [0xBE2B], NFC: [0xBE2B], NFD: [0x1107, 0x1174, 0x11AA], NFKC: [0xBE2B], NFKD: [0x1107, 0x1174, 0x11AA] },
+{ source: [0xBE2C], NFC: [0xBE2C], NFD: [0x1107, 0x1174, 0x11AB], NFKC: [0xBE2C], NFKD: [0x1107, 0x1174, 0x11AB] },
+{ source: [0xBE2D], NFC: [0xBE2D], NFD: [0x1107, 0x1174, 0x11AC], NFKC: [0xBE2D], NFKD: [0x1107, 0x1174, 0x11AC] },
+{ source: [0xBE2E], NFC: [0xBE2E], NFD: [0x1107, 0x1174, 0x11AD], NFKC: [0xBE2E], NFKD: [0x1107, 0x1174, 0x11AD] },
+{ source: [0xBE2F], NFC: [0xBE2F], NFD: [0x1107, 0x1174, 0x11AE], NFKC: [0xBE2F], NFKD: [0x1107, 0x1174, 0x11AE] },
+{ source: [0xBE30], NFC: [0xBE30], NFD: [0x1107, 0x1174, 0x11AF], NFKC: [0xBE30], NFKD: [0x1107, 0x1174, 0x11AF] },
+{ source: [0xBE31], NFC: [0xBE31], NFD: [0x1107, 0x1174, 0x11B0], NFKC: [0xBE31], NFKD: [0x1107, 0x1174, 0x11B0] },
+{ source: [0xBE32], NFC: [0xBE32], NFD: [0x1107, 0x1174, 0x11B1], NFKC: [0xBE32], NFKD: [0x1107, 0x1174, 0x11B1] },
+{ source: [0xBE33], NFC: [0xBE33], NFD: [0x1107, 0x1174, 0x11B2], NFKC: [0xBE33], NFKD: [0x1107, 0x1174, 0x11B2] },
+{ source: [0xBE34], NFC: [0xBE34], NFD: [0x1107, 0x1174, 0x11B3], NFKC: [0xBE34], NFKD: [0x1107, 0x1174, 0x11B3] },
+{ source: [0xBE35], NFC: [0xBE35], NFD: [0x1107, 0x1174, 0x11B4], NFKC: [0xBE35], NFKD: [0x1107, 0x1174, 0x11B4] },
+{ source: [0xBE36], NFC: [0xBE36], NFD: [0x1107, 0x1174, 0x11B5], NFKC: [0xBE36], NFKD: [0x1107, 0x1174, 0x11B5] },
+{ source: [0xBE37], NFC: [0xBE37], NFD: [0x1107, 0x1174, 0x11B6], NFKC: [0xBE37], NFKD: [0x1107, 0x1174, 0x11B6] },
+{ source: [0xBE38], NFC: [0xBE38], NFD: [0x1107, 0x1174, 0x11B7], NFKC: [0xBE38], NFKD: [0x1107, 0x1174, 0x11B7] },
+{ source: [0xBE39], NFC: [0xBE39], NFD: [0x1107, 0x1174, 0x11B8], NFKC: [0xBE39], NFKD: [0x1107, 0x1174, 0x11B8] },
+{ source: [0xBE3A], NFC: [0xBE3A], NFD: [0x1107, 0x1174, 0x11B9], NFKC: [0xBE3A], NFKD: [0x1107, 0x1174, 0x11B9] },
+{ source: [0xBE3B], NFC: [0xBE3B], NFD: [0x1107, 0x1174, 0x11BA], NFKC: [0xBE3B], NFKD: [0x1107, 0x1174, 0x11BA] },
+{ source: [0xBE3C], NFC: [0xBE3C], NFD: [0x1107, 0x1174, 0x11BB], NFKC: [0xBE3C], NFKD: [0x1107, 0x1174, 0x11BB] },
+{ source: [0xBE3D], NFC: [0xBE3D], NFD: [0x1107, 0x1174, 0x11BC], NFKC: [0xBE3D], NFKD: [0x1107, 0x1174, 0x11BC] },
+{ source: [0xBE3E], NFC: [0xBE3E], NFD: [0x1107, 0x1174, 0x11BD], NFKC: [0xBE3E], NFKD: [0x1107, 0x1174, 0x11BD] },
+{ source: [0xBE3F], NFC: [0xBE3F], NFD: [0x1107, 0x1174, 0x11BE], NFKC: [0xBE3F], NFKD: [0x1107, 0x1174, 0x11BE] },
+{ source: [0xBE40], NFC: [0xBE40], NFD: [0x1107, 0x1174, 0x11BF], NFKC: [0xBE40], NFKD: [0x1107, 0x1174, 0x11BF] },
+{ source: [0xBE41], NFC: [0xBE41], NFD: [0x1107, 0x1174, 0x11C0], NFKC: [0xBE41], NFKD: [0x1107, 0x1174, 0x11C0] },
+{ source: [0xBE42], NFC: [0xBE42], NFD: [0x1107, 0x1174, 0x11C1], NFKC: [0xBE42], NFKD: [0x1107, 0x1174, 0x11C1] },
+{ source: [0xBE43], NFC: [0xBE43], NFD: [0x1107, 0x1174, 0x11C2], NFKC: [0xBE43], NFKD: [0x1107, 0x1174, 0x11C2] },
+{ source: [0xBE44], NFC: [0xBE44], NFD: [0x1107, 0x1175], NFKC: [0xBE44], NFKD: [0x1107, 0x1175] },
+{ source: [0xBE45], NFC: [0xBE45], NFD: [0x1107, 0x1175, 0x11A8], NFKC: [0xBE45], NFKD: [0x1107, 0x1175, 0x11A8] },
+{ source: [0xBE46], NFC: [0xBE46], NFD: [0x1107, 0x1175, 0x11A9], NFKC: [0xBE46], NFKD: [0x1107, 0x1175, 0x11A9] },
+{ source: [0xBE47], NFC: [0xBE47], NFD: [0x1107, 0x1175, 0x11AA], NFKC: [0xBE47], NFKD: [0x1107, 0x1175, 0x11AA] },
+{ source: [0xBE48], NFC: [0xBE48], NFD: [0x1107, 0x1175, 0x11AB], NFKC: [0xBE48], NFKD: [0x1107, 0x1175, 0x11AB] },
+{ source: [0xBE49], NFC: [0xBE49], NFD: [0x1107, 0x1175, 0x11AC], NFKC: [0xBE49], NFKD: [0x1107, 0x1175, 0x11AC] },
+{ source: [0xBE4A], NFC: [0xBE4A], NFD: [0x1107, 0x1175, 0x11AD], NFKC: [0xBE4A], NFKD: [0x1107, 0x1175, 0x11AD] },
+{ source: [0xBE4B], NFC: [0xBE4B], NFD: [0x1107, 0x1175, 0x11AE], NFKC: [0xBE4B], NFKD: [0x1107, 0x1175, 0x11AE] },
+{ source: [0xBE4C], NFC: [0xBE4C], NFD: [0x1107, 0x1175, 0x11AF], NFKC: [0xBE4C], NFKD: [0x1107, 0x1175, 0x11AF] },
+{ source: [0xBE4D], NFC: [0xBE4D], NFD: [0x1107, 0x1175, 0x11B0], NFKC: [0xBE4D], NFKD: [0x1107, 0x1175, 0x11B0] },
+{ source: [0xBE4E], NFC: [0xBE4E], NFD: [0x1107, 0x1175, 0x11B1], NFKC: [0xBE4E], NFKD: [0x1107, 0x1175, 0x11B1] },
+{ source: [0xBE4F], NFC: [0xBE4F], NFD: [0x1107, 0x1175, 0x11B2], NFKC: [0xBE4F], NFKD: [0x1107, 0x1175, 0x11B2] },
+{ source: [0xBE50], NFC: [0xBE50], NFD: [0x1107, 0x1175, 0x11B3], NFKC: [0xBE50], NFKD: [0x1107, 0x1175, 0x11B3] },
+{ source: [0xBE51], NFC: [0xBE51], NFD: [0x1107, 0x1175, 0x11B4], NFKC: [0xBE51], NFKD: [0x1107, 0x1175, 0x11B4] },
+{ source: [0xBE52], NFC: [0xBE52], NFD: [0x1107, 0x1175, 0x11B5], NFKC: [0xBE52], NFKD: [0x1107, 0x1175, 0x11B5] },
+{ source: [0xBE53], NFC: [0xBE53], NFD: [0x1107, 0x1175, 0x11B6], NFKC: [0xBE53], NFKD: [0x1107, 0x1175, 0x11B6] },
+{ source: [0xBE54], NFC: [0xBE54], NFD: [0x1107, 0x1175, 0x11B7], NFKC: [0xBE54], NFKD: [0x1107, 0x1175, 0x11B7] },
+{ source: [0xBE55], NFC: [0xBE55], NFD: [0x1107, 0x1175, 0x11B8], NFKC: [0xBE55], NFKD: [0x1107, 0x1175, 0x11B8] },
+{ source: [0xBE56], NFC: [0xBE56], NFD: [0x1107, 0x1175, 0x11B9], NFKC: [0xBE56], NFKD: [0x1107, 0x1175, 0x11B9] },
+{ source: [0xBE57], NFC: [0xBE57], NFD: [0x1107, 0x1175, 0x11BA], NFKC: [0xBE57], NFKD: [0x1107, 0x1175, 0x11BA] },
+{ source: [0xBE58], NFC: [0xBE58], NFD: [0x1107, 0x1175, 0x11BB], NFKC: [0xBE58], NFKD: [0x1107, 0x1175, 0x11BB] },
+{ source: [0xBE59], NFC: [0xBE59], NFD: [0x1107, 0x1175, 0x11BC], NFKC: [0xBE59], NFKD: [0x1107, 0x1175, 0x11BC] },
+{ source: [0xBE5A], NFC: [0xBE5A], NFD: [0x1107, 0x1175, 0x11BD], NFKC: [0xBE5A], NFKD: [0x1107, 0x1175, 0x11BD] },
+{ source: [0xBE5B], NFC: [0xBE5B], NFD: [0x1107, 0x1175, 0x11BE], NFKC: [0xBE5B], NFKD: [0x1107, 0x1175, 0x11BE] },
+{ source: [0xBE5C], NFC: [0xBE5C], NFD: [0x1107, 0x1175, 0x11BF], NFKC: [0xBE5C], NFKD: [0x1107, 0x1175, 0x11BF] },
+{ source: [0xBE5D], NFC: [0xBE5D], NFD: [0x1107, 0x1175, 0x11C0], NFKC: [0xBE5D], NFKD: [0x1107, 0x1175, 0x11C0] },
+{ source: [0xBE5E], NFC: [0xBE5E], NFD: [0x1107, 0x1175, 0x11C1], NFKC: [0xBE5E], NFKD: [0x1107, 0x1175, 0x11C1] },
+{ source: [0xBE5F], NFC: [0xBE5F], NFD: [0x1107, 0x1175, 0x11C2], NFKC: [0xBE5F], NFKD: [0x1107, 0x1175, 0x11C2] },
+{ source: [0xBE60], NFC: [0xBE60], NFD: [0x1108, 0x1161], NFKC: [0xBE60], NFKD: [0x1108, 0x1161] },
+{ source: [0xBE61], NFC: [0xBE61], NFD: [0x1108, 0x1161, 0x11A8], NFKC: [0xBE61], NFKD: [0x1108, 0x1161, 0x11A8] },
+{ source: [0xBE62], NFC: [0xBE62], NFD: [0x1108, 0x1161, 0x11A9], NFKC: [0xBE62], NFKD: [0x1108, 0x1161, 0x11A9] },
+{ source: [0xBE63], NFC: [0xBE63], NFD: [0x1108, 0x1161, 0x11AA], NFKC: [0xBE63], NFKD: [0x1108, 0x1161, 0x11AA] },
+{ source: [0xBE64], NFC: [0xBE64], NFD: [0x1108, 0x1161, 0x11AB], NFKC: [0xBE64], NFKD: [0x1108, 0x1161, 0x11AB] },
+{ source: [0xBE65], NFC: [0xBE65], NFD: [0x1108, 0x1161, 0x11AC], NFKC: [0xBE65], NFKD: [0x1108, 0x1161, 0x11AC] },
+{ source: [0xBE66], NFC: [0xBE66], NFD: [0x1108, 0x1161, 0x11AD], NFKC: [0xBE66], NFKD: [0x1108, 0x1161, 0x11AD] },
+{ source: [0xBE67], NFC: [0xBE67], NFD: [0x1108, 0x1161, 0x11AE], NFKC: [0xBE67], NFKD: [0x1108, 0x1161, 0x11AE] },
+{ source: [0xBE68], NFC: [0xBE68], NFD: [0x1108, 0x1161, 0x11AF], NFKC: [0xBE68], NFKD: [0x1108, 0x1161, 0x11AF] },
+{ source: [0xBE69], NFC: [0xBE69], NFD: [0x1108, 0x1161, 0x11B0], NFKC: [0xBE69], NFKD: [0x1108, 0x1161, 0x11B0] },
+{ source: [0xBE6A], NFC: [0xBE6A], NFD: [0x1108, 0x1161, 0x11B1], NFKC: [0xBE6A], NFKD: [0x1108, 0x1161, 0x11B1] },
+{ source: [0xBE6B], NFC: [0xBE6B], NFD: [0x1108, 0x1161, 0x11B2], NFKC: [0xBE6B], NFKD: [0x1108, 0x1161, 0x11B2] },
+{ source: [0xBE6C], NFC: [0xBE6C], NFD: [0x1108, 0x1161, 0x11B3], NFKC: [0xBE6C], NFKD: [0x1108, 0x1161, 0x11B3] },
+{ source: [0xBE6D], NFC: [0xBE6D], NFD: [0x1108, 0x1161, 0x11B4], NFKC: [0xBE6D], NFKD: [0x1108, 0x1161, 0x11B4] },
+{ source: [0xBE6E], NFC: [0xBE6E], NFD: [0x1108, 0x1161, 0x11B5], NFKC: [0xBE6E], NFKD: [0x1108, 0x1161, 0x11B5] },
+{ source: [0xBE6F], NFC: [0xBE6F], NFD: [0x1108, 0x1161, 0x11B6], NFKC: [0xBE6F], NFKD: [0x1108, 0x1161, 0x11B6] },
+{ source: [0xBE70], NFC: [0xBE70], NFD: [0x1108, 0x1161, 0x11B7], NFKC: [0xBE70], NFKD: [0x1108, 0x1161, 0x11B7] },
+{ source: [0xBE71], NFC: [0xBE71], NFD: [0x1108, 0x1161, 0x11B8], NFKC: [0xBE71], NFKD: [0x1108, 0x1161, 0x11B8] },
+{ source: [0xBE72], NFC: [0xBE72], NFD: [0x1108, 0x1161, 0x11B9], NFKC: [0xBE72], NFKD: [0x1108, 0x1161, 0x11B9] },
+{ source: [0xBE73], NFC: [0xBE73], NFD: [0x1108, 0x1161, 0x11BA], NFKC: [0xBE73], NFKD: [0x1108, 0x1161, 0x11BA] },
+{ source: [0xBE74], NFC: [0xBE74], NFD: [0x1108, 0x1161, 0x11BB], NFKC: [0xBE74], NFKD: [0x1108, 0x1161, 0x11BB] },
+{ source: [0xBE75], NFC: [0xBE75], NFD: [0x1108, 0x1161, 0x11BC], NFKC: [0xBE75], NFKD: [0x1108, 0x1161, 0x11BC] },
+{ source: [0xBE76], NFC: [0xBE76], NFD: [0x1108, 0x1161, 0x11BD], NFKC: [0xBE76], NFKD: [0x1108, 0x1161, 0x11BD] },
+{ source: [0xBE77], NFC: [0xBE77], NFD: [0x1108, 0x1161, 0x11BE], NFKC: [0xBE77], NFKD: [0x1108, 0x1161, 0x11BE] },
+{ source: [0xBE78], NFC: [0xBE78], NFD: [0x1108, 0x1161, 0x11BF], NFKC: [0xBE78], NFKD: [0x1108, 0x1161, 0x11BF] },
+{ source: [0xBE79], NFC: [0xBE79], NFD: [0x1108, 0x1161, 0x11C0], NFKC: [0xBE79], NFKD: [0x1108, 0x1161, 0x11C0] },
+{ source: [0xBE7A], NFC: [0xBE7A], NFD: [0x1108, 0x1161, 0x11C1], NFKC: [0xBE7A], NFKD: [0x1108, 0x1161, 0x11C1] },
+{ source: [0xBE7B], NFC: [0xBE7B], NFD: [0x1108, 0x1161, 0x11C2], NFKC: [0xBE7B], NFKD: [0x1108, 0x1161, 0x11C2] },
+{ source: [0xBE7C], NFC: [0xBE7C], NFD: [0x1108, 0x1162], NFKC: [0xBE7C], NFKD: [0x1108, 0x1162] },
+{ source: [0xBE7D], NFC: [0xBE7D], NFD: [0x1108, 0x1162, 0x11A8], NFKC: [0xBE7D], NFKD: [0x1108, 0x1162, 0x11A8] },
+{ source: [0xBE7E], NFC: [0xBE7E], NFD: [0x1108, 0x1162, 0x11A9], NFKC: [0xBE7E], NFKD: [0x1108, 0x1162, 0x11A9] },
+{ source: [0xBE7F], NFC: [0xBE7F], NFD: [0x1108, 0x1162, 0x11AA], NFKC: [0xBE7F], NFKD: [0x1108, 0x1162, 0x11AA] },
+{ source: [0xBE80], NFC: [0xBE80], NFD: [0x1108, 0x1162, 0x11AB], NFKC: [0xBE80], NFKD: [0x1108, 0x1162, 0x11AB] },
+{ source: [0xBE81], NFC: [0xBE81], NFD: [0x1108, 0x1162, 0x11AC], NFKC: [0xBE81], NFKD: [0x1108, 0x1162, 0x11AC] },
+{ source: [0xBE82], NFC: [0xBE82], NFD: [0x1108, 0x1162, 0x11AD], NFKC: [0xBE82], NFKD: [0x1108, 0x1162, 0x11AD] },
+{ source: [0xBE83], NFC: [0xBE83], NFD: [0x1108, 0x1162, 0x11AE], NFKC: [0xBE83], NFKD: [0x1108, 0x1162, 0x11AE] },
+{ source: [0xBE84], NFC: [0xBE84], NFD: [0x1108, 0x1162, 0x11AF], NFKC: [0xBE84], NFKD: [0x1108, 0x1162, 0x11AF] },
+{ source: [0xBE85], NFC: [0xBE85], NFD: [0x1108, 0x1162, 0x11B0], NFKC: [0xBE85], NFKD: [0x1108, 0x1162, 0x11B0] },
+{ source: [0xBE86], NFC: [0xBE86], NFD: [0x1108, 0x1162, 0x11B1], NFKC: [0xBE86], NFKD: [0x1108, 0x1162, 0x11B1] },
+{ source: [0xBE87], NFC: [0xBE87], NFD: [0x1108, 0x1162, 0x11B2], NFKC: [0xBE87], NFKD: [0x1108, 0x1162, 0x11B2] },
+{ source: [0xBE88], NFC: [0xBE88], NFD: [0x1108, 0x1162, 0x11B3], NFKC: [0xBE88], NFKD: [0x1108, 0x1162, 0x11B3] },
+{ source: [0xBE89], NFC: [0xBE89], NFD: [0x1108, 0x1162, 0x11B4], NFKC: [0xBE89], NFKD: [0x1108, 0x1162, 0x11B4] },
+{ source: [0xBE8A], NFC: [0xBE8A], NFD: [0x1108, 0x1162, 0x11B5], NFKC: [0xBE8A], NFKD: [0x1108, 0x1162, 0x11B5] },
+{ source: [0xBE8B], NFC: [0xBE8B], NFD: [0x1108, 0x1162, 0x11B6], NFKC: [0xBE8B], NFKD: [0x1108, 0x1162, 0x11B6] },
+{ source: [0xBE8C], NFC: [0xBE8C], NFD: [0x1108, 0x1162, 0x11B7], NFKC: [0xBE8C], NFKD: [0x1108, 0x1162, 0x11B7] },
+{ source: [0xBE8D], NFC: [0xBE8D], NFD: [0x1108, 0x1162, 0x11B8], NFKC: [0xBE8D], NFKD: [0x1108, 0x1162, 0x11B8] },
+{ source: [0xBE8E], NFC: [0xBE8E], NFD: [0x1108, 0x1162, 0x11B9], NFKC: [0xBE8E], NFKD: [0x1108, 0x1162, 0x11B9] },
+{ source: [0xBE8F], NFC: [0xBE8F], NFD: [0x1108, 0x1162, 0x11BA], NFKC: [0xBE8F], NFKD: [0x1108, 0x1162, 0x11BA] },
+{ source: [0xBE90], NFC: [0xBE90], NFD: [0x1108, 0x1162, 0x11BB], NFKC: [0xBE90], NFKD: [0x1108, 0x1162, 0x11BB] },
+{ source: [0xBE91], NFC: [0xBE91], NFD: [0x1108, 0x1162, 0x11BC], NFKC: [0xBE91], NFKD: [0x1108, 0x1162, 0x11BC] },
+{ source: [0xBE92], NFC: [0xBE92], NFD: [0x1108, 0x1162, 0x11BD], NFKC: [0xBE92], NFKD: [0x1108, 0x1162, 0x11BD] },
+{ source: [0xBE93], NFC: [0xBE93], NFD: [0x1108, 0x1162, 0x11BE], NFKC: [0xBE93], NFKD: [0x1108, 0x1162, 0x11BE] },
+{ source: [0xBE94], NFC: [0xBE94], NFD: [0x1108, 0x1162, 0x11BF], NFKC: [0xBE94], NFKD: [0x1108, 0x1162, 0x11BF] },
+{ source: [0xBE95], NFC: [0xBE95], NFD: [0x1108, 0x1162, 0x11C0], NFKC: [0xBE95], NFKD: [0x1108, 0x1162, 0x11C0] },
+{ source: [0xBE96], NFC: [0xBE96], NFD: [0x1108, 0x1162, 0x11C1], NFKC: [0xBE96], NFKD: [0x1108, 0x1162, 0x11C1] },
+{ source: [0xBE97], NFC: [0xBE97], NFD: [0x1108, 0x1162, 0x11C2], NFKC: [0xBE97], NFKD: [0x1108, 0x1162, 0x11C2] },
+{ source: [0xBE98], NFC: [0xBE98], NFD: [0x1108, 0x1163], NFKC: [0xBE98], NFKD: [0x1108, 0x1163] },
+{ source: [0xBE99], NFC: [0xBE99], NFD: [0x1108, 0x1163, 0x11A8], NFKC: [0xBE99], NFKD: [0x1108, 0x1163, 0x11A8] },
+{ source: [0xBE9A], NFC: [0xBE9A], NFD: [0x1108, 0x1163, 0x11A9], NFKC: [0xBE9A], NFKD: [0x1108, 0x1163, 0x11A9] },
+{ source: [0xBE9B], NFC: [0xBE9B], NFD: [0x1108, 0x1163, 0x11AA], NFKC: [0xBE9B], NFKD: [0x1108, 0x1163, 0x11AA] },
+{ source: [0xBE9C], NFC: [0xBE9C], NFD: [0x1108, 0x1163, 0x11AB], NFKC: [0xBE9C], NFKD: [0x1108, 0x1163, 0x11AB] },
+{ source: [0xBE9D], NFC: [0xBE9D], NFD: [0x1108, 0x1163, 0x11AC], NFKC: [0xBE9D], NFKD: [0x1108, 0x1163, 0x11AC] },
+{ source: [0xBE9E], NFC: [0xBE9E], NFD: [0x1108, 0x1163, 0x11AD], NFKC: [0xBE9E], NFKD: [0x1108, 0x1163, 0x11AD] },
+{ source: [0xBE9F], NFC: [0xBE9F], NFD: [0x1108, 0x1163, 0x11AE], NFKC: [0xBE9F], NFKD: [0x1108, 0x1163, 0x11AE] },
+{ source: [0xBEA0], NFC: [0xBEA0], NFD: [0x1108, 0x1163, 0x11AF], NFKC: [0xBEA0], NFKD: [0x1108, 0x1163, 0x11AF] },
+{ source: [0xBEA1], NFC: [0xBEA1], NFD: [0x1108, 0x1163, 0x11B0], NFKC: [0xBEA1], NFKD: [0x1108, 0x1163, 0x11B0] },
+{ source: [0xBEA2], NFC: [0xBEA2], NFD: [0x1108, 0x1163, 0x11B1], NFKC: [0xBEA2], NFKD: [0x1108, 0x1163, 0x11B1] },
+{ source: [0xBEA3], NFC: [0xBEA3], NFD: [0x1108, 0x1163, 0x11B2], NFKC: [0xBEA3], NFKD: [0x1108, 0x1163, 0x11B2] },
+{ source: [0xBEA4], NFC: [0xBEA4], NFD: [0x1108, 0x1163, 0x11B3], NFKC: [0xBEA4], NFKD: [0x1108, 0x1163, 0x11B3] },
+{ source: [0xBEA5], NFC: [0xBEA5], NFD: [0x1108, 0x1163, 0x11B4], NFKC: [0xBEA5], NFKD: [0x1108, 0x1163, 0x11B4] },
+{ source: [0xBEA6], NFC: [0xBEA6], NFD: [0x1108, 0x1163, 0x11B5], NFKC: [0xBEA6], NFKD: [0x1108, 0x1163, 0x11B5] },
+{ source: [0xBEA7], NFC: [0xBEA7], NFD: [0x1108, 0x1163, 0x11B6], NFKC: [0xBEA7], NFKD: [0x1108, 0x1163, 0x11B6] },
+{ source: [0xBEA8], NFC: [0xBEA8], NFD: [0x1108, 0x1163, 0x11B7], NFKC: [0xBEA8], NFKD: [0x1108, 0x1163, 0x11B7] },
+{ source: [0xBEA9], NFC: [0xBEA9], NFD: [0x1108, 0x1163, 0x11B8], NFKC: [0xBEA9], NFKD: [0x1108, 0x1163, 0x11B8] },
+{ source: [0xBEAA], NFC: [0xBEAA], NFD: [0x1108, 0x1163, 0x11B9], NFKC: [0xBEAA], NFKD: [0x1108, 0x1163, 0x11B9] },
+{ source: [0xBEAB], NFC: [0xBEAB], NFD: [0x1108, 0x1163, 0x11BA], NFKC: [0xBEAB], NFKD: [0x1108, 0x1163, 0x11BA] },
+{ source: [0xBEAC], NFC: [0xBEAC], NFD: [0x1108, 0x1163, 0x11BB], NFKC: [0xBEAC], NFKD: [0x1108, 0x1163, 0x11BB] },
+{ source: [0xBEAD], NFC: [0xBEAD], NFD: [0x1108, 0x1163, 0x11BC], NFKC: [0xBEAD], NFKD: [0x1108, 0x1163, 0x11BC] },
+{ source: [0xBEAE], NFC: [0xBEAE], NFD: [0x1108, 0x1163, 0x11BD], NFKC: [0xBEAE], NFKD: [0x1108, 0x1163, 0x11BD] },
+{ source: [0xBEAF], NFC: [0xBEAF], NFD: [0x1108, 0x1163, 0x11BE], NFKC: [0xBEAF], NFKD: [0x1108, 0x1163, 0x11BE] },
+{ source: [0xBEB0], NFC: [0xBEB0], NFD: [0x1108, 0x1163, 0x11BF], NFKC: [0xBEB0], NFKD: [0x1108, 0x1163, 0x11BF] },
+{ source: [0xBEB1], NFC: [0xBEB1], NFD: [0x1108, 0x1163, 0x11C0], NFKC: [0xBEB1], NFKD: [0x1108, 0x1163, 0x11C0] },
+{ source: [0xBEB2], NFC: [0xBEB2], NFD: [0x1108, 0x1163, 0x11C1], NFKC: [0xBEB2], NFKD: [0x1108, 0x1163, 0x11C1] },
+{ source: [0xBEB3], NFC: [0xBEB3], NFD: [0x1108, 0x1163, 0x11C2], NFKC: [0xBEB3], NFKD: [0x1108, 0x1163, 0x11C2] },
+{ source: [0xBEB4], NFC: [0xBEB4], NFD: [0x1108, 0x1164], NFKC: [0xBEB4], NFKD: [0x1108, 0x1164] },
+{ source: [0xBEB5], NFC: [0xBEB5], NFD: [0x1108, 0x1164, 0x11A8], NFKC: [0xBEB5], NFKD: [0x1108, 0x1164, 0x11A8] },
+{ source: [0xBEB6], NFC: [0xBEB6], NFD: [0x1108, 0x1164, 0x11A9], NFKC: [0xBEB6], NFKD: [0x1108, 0x1164, 0x11A9] },
+{ source: [0xBEB7], NFC: [0xBEB7], NFD: [0x1108, 0x1164, 0x11AA], NFKC: [0xBEB7], NFKD: [0x1108, 0x1164, 0x11AA] },
+{ source: [0xBEB8], NFC: [0xBEB8], NFD: [0x1108, 0x1164, 0x11AB], NFKC: [0xBEB8], NFKD: [0x1108, 0x1164, 0x11AB] },
+{ source: [0xBEB9], NFC: [0xBEB9], NFD: [0x1108, 0x1164, 0x11AC], NFKC: [0xBEB9], NFKD: [0x1108, 0x1164, 0x11AC] },
+{ source: [0xBEBA], NFC: [0xBEBA], NFD: [0x1108, 0x1164, 0x11AD], NFKC: [0xBEBA], NFKD: [0x1108, 0x1164, 0x11AD] },
+{ source: [0xBEBB], NFC: [0xBEBB], NFD: [0x1108, 0x1164, 0x11AE], NFKC: [0xBEBB], NFKD: [0x1108, 0x1164, 0x11AE] },
+{ source: [0xBEBC], NFC: [0xBEBC], NFD: [0x1108, 0x1164, 0x11AF], NFKC: [0xBEBC], NFKD: [0x1108, 0x1164, 0x11AF] },
+{ source: [0xBEBD], NFC: [0xBEBD], NFD: [0x1108, 0x1164, 0x11B0], NFKC: [0xBEBD], NFKD: [0x1108, 0x1164, 0x11B0] },
+{ source: [0xBEBE], NFC: [0xBEBE], NFD: [0x1108, 0x1164, 0x11B1], NFKC: [0xBEBE], NFKD: [0x1108, 0x1164, 0x11B1] },
+{ source: [0xBEBF], NFC: [0xBEBF], NFD: [0x1108, 0x1164, 0x11B2], NFKC: [0xBEBF], NFKD: [0x1108, 0x1164, 0x11B2] },
+{ source: [0xBEC0], NFC: [0xBEC0], NFD: [0x1108, 0x1164, 0x11B3], NFKC: [0xBEC0], NFKD: [0x1108, 0x1164, 0x11B3] },
+{ source: [0xBEC1], NFC: [0xBEC1], NFD: [0x1108, 0x1164, 0x11B4], NFKC: [0xBEC1], NFKD: [0x1108, 0x1164, 0x11B4] },
+{ source: [0xBEC2], NFC: [0xBEC2], NFD: [0x1108, 0x1164, 0x11B5], NFKC: [0xBEC2], NFKD: [0x1108, 0x1164, 0x11B5] },
+{ source: [0xBEC3], NFC: [0xBEC3], NFD: [0x1108, 0x1164, 0x11B6], NFKC: [0xBEC3], NFKD: [0x1108, 0x1164, 0x11B6] },
+{ source: [0xBEC4], NFC: [0xBEC4], NFD: [0x1108, 0x1164, 0x11B7], NFKC: [0xBEC4], NFKD: [0x1108, 0x1164, 0x11B7] },
+{ source: [0xBEC5], NFC: [0xBEC5], NFD: [0x1108, 0x1164, 0x11B8], NFKC: [0xBEC5], NFKD: [0x1108, 0x1164, 0x11B8] },
+{ source: [0xBEC6], NFC: [0xBEC6], NFD: [0x1108, 0x1164, 0x11B9], NFKC: [0xBEC6], NFKD: [0x1108, 0x1164, 0x11B9] },
+{ source: [0xBEC7], NFC: [0xBEC7], NFD: [0x1108, 0x1164, 0x11BA], NFKC: [0xBEC7], NFKD: [0x1108, 0x1164, 0x11BA] },
+{ source: [0xBEC8], NFC: [0xBEC8], NFD: [0x1108, 0x1164, 0x11BB], NFKC: [0xBEC8], NFKD: [0x1108, 0x1164, 0x11BB] },
+{ source: [0xBEC9], NFC: [0xBEC9], NFD: [0x1108, 0x1164, 0x11BC], NFKC: [0xBEC9], NFKD: [0x1108, 0x1164, 0x11BC] },
+{ source: [0xBECA], NFC: [0xBECA], NFD: [0x1108, 0x1164, 0x11BD], NFKC: [0xBECA], NFKD: [0x1108, 0x1164, 0x11BD] },
+{ source: [0xBECB], NFC: [0xBECB], NFD: [0x1108, 0x1164, 0x11BE], NFKC: [0xBECB], NFKD: [0x1108, 0x1164, 0x11BE] },
+{ source: [0xBECC], NFC: [0xBECC], NFD: [0x1108, 0x1164, 0x11BF], NFKC: [0xBECC], NFKD: [0x1108, 0x1164, 0x11BF] },
+{ source: [0xBECD], NFC: [0xBECD], NFD: [0x1108, 0x1164, 0x11C0], NFKC: [0xBECD], NFKD: [0x1108, 0x1164, 0x11C0] },
+{ source: [0xBECE], NFC: [0xBECE], NFD: [0x1108, 0x1164, 0x11C1], NFKC: [0xBECE], NFKD: [0x1108, 0x1164, 0x11C1] },
+{ source: [0xBECF], NFC: [0xBECF], NFD: [0x1108, 0x1164, 0x11C2], NFKC: [0xBECF], NFKD: [0x1108, 0x1164, 0x11C2] },
+{ source: [0xBED0], NFC: [0xBED0], NFD: [0x1108, 0x1165], NFKC: [0xBED0], NFKD: [0x1108, 0x1165] },
+{ source: [0xBED1], NFC: [0xBED1], NFD: [0x1108, 0x1165, 0x11A8], NFKC: [0xBED1], NFKD: [0x1108, 0x1165, 0x11A8] },
+{ source: [0xBED2], NFC: [0xBED2], NFD: [0x1108, 0x1165, 0x11A9], NFKC: [0xBED2], NFKD: [0x1108, 0x1165, 0x11A9] },
+{ source: [0xBED3], NFC: [0xBED3], NFD: [0x1108, 0x1165, 0x11AA], NFKC: [0xBED3], NFKD: [0x1108, 0x1165, 0x11AA] },
+{ source: [0xBED4], NFC: [0xBED4], NFD: [0x1108, 0x1165, 0x11AB], NFKC: [0xBED4], NFKD: [0x1108, 0x1165, 0x11AB] },
+{ source: [0xBED5], NFC: [0xBED5], NFD: [0x1108, 0x1165, 0x11AC], NFKC: [0xBED5], NFKD: [0x1108, 0x1165, 0x11AC] },
+{ source: [0xBED6], NFC: [0xBED6], NFD: [0x1108, 0x1165, 0x11AD], NFKC: [0xBED6], NFKD: [0x1108, 0x1165, 0x11AD] },
+{ source: [0xBED7], NFC: [0xBED7], NFD: [0x1108, 0x1165, 0x11AE], NFKC: [0xBED7], NFKD: [0x1108, 0x1165, 0x11AE] },
+{ source: [0xBED8], NFC: [0xBED8], NFD: [0x1108, 0x1165, 0x11AF], NFKC: [0xBED8], NFKD: [0x1108, 0x1165, 0x11AF] },
+{ source: [0xBED9], NFC: [0xBED9], NFD: [0x1108, 0x1165, 0x11B0], NFKC: [0xBED9], NFKD: [0x1108, 0x1165, 0x11B0] },
+{ source: [0xBEDA], NFC: [0xBEDA], NFD: [0x1108, 0x1165, 0x11B1], NFKC: [0xBEDA], NFKD: [0x1108, 0x1165, 0x11B1] },
+{ source: [0xBEDB], NFC: [0xBEDB], NFD: [0x1108, 0x1165, 0x11B2], NFKC: [0xBEDB], NFKD: [0x1108, 0x1165, 0x11B2] },
+{ source: [0xBEDC], NFC: [0xBEDC], NFD: [0x1108, 0x1165, 0x11B3], NFKC: [0xBEDC], NFKD: [0x1108, 0x1165, 0x11B3] },
+{ source: [0xBEDD], NFC: [0xBEDD], NFD: [0x1108, 0x1165, 0x11B4], NFKC: [0xBEDD], NFKD: [0x1108, 0x1165, 0x11B4] },
+{ source: [0xBEDE], NFC: [0xBEDE], NFD: [0x1108, 0x1165, 0x11B5], NFKC: [0xBEDE], NFKD: [0x1108, 0x1165, 0x11B5] },
+{ source: [0xBEDF], NFC: [0xBEDF], NFD: [0x1108, 0x1165, 0x11B6], NFKC: [0xBEDF], NFKD: [0x1108, 0x1165, 0x11B6] },
+{ source: [0xBEE0], NFC: [0xBEE0], NFD: [0x1108, 0x1165, 0x11B7], NFKC: [0xBEE0], NFKD: [0x1108, 0x1165, 0x11B7] },
+{ source: [0xBEE1], NFC: [0xBEE1], NFD: [0x1108, 0x1165, 0x11B8], NFKC: [0xBEE1], NFKD: [0x1108, 0x1165, 0x11B8] },
+{ source: [0xBEE2], NFC: [0xBEE2], NFD: [0x1108, 0x1165, 0x11B9], NFKC: [0xBEE2], NFKD: [0x1108, 0x1165, 0x11B9] },
+{ source: [0xBEE3], NFC: [0xBEE3], NFD: [0x1108, 0x1165, 0x11BA], NFKC: [0xBEE3], NFKD: [0x1108, 0x1165, 0x11BA] },
+{ source: [0xBEE4], NFC: [0xBEE4], NFD: [0x1108, 0x1165, 0x11BB], NFKC: [0xBEE4], NFKD: [0x1108, 0x1165, 0x11BB] },
+{ source: [0xBEE5], NFC: [0xBEE5], NFD: [0x1108, 0x1165, 0x11BC], NFKC: [0xBEE5], NFKD: [0x1108, 0x1165, 0x11BC] },
+{ source: [0xBEE6], NFC: [0xBEE6], NFD: [0x1108, 0x1165, 0x11BD], NFKC: [0xBEE6], NFKD: [0x1108, 0x1165, 0x11BD] },
+{ source: [0xBEE7], NFC: [0xBEE7], NFD: [0x1108, 0x1165, 0x11BE], NFKC: [0xBEE7], NFKD: [0x1108, 0x1165, 0x11BE] },
+{ source: [0xBEE8], NFC: [0xBEE8], NFD: [0x1108, 0x1165, 0x11BF], NFKC: [0xBEE8], NFKD: [0x1108, 0x1165, 0x11BF] },
+{ source: [0xBEE9], NFC: [0xBEE9], NFD: [0x1108, 0x1165, 0x11C0], NFKC: [0xBEE9], NFKD: [0x1108, 0x1165, 0x11C0] },
+{ source: [0xBEEA], NFC: [0xBEEA], NFD: [0x1108, 0x1165, 0x11C1], NFKC: [0xBEEA], NFKD: [0x1108, 0x1165, 0x11C1] },
+{ source: [0xBEEB], NFC: [0xBEEB], NFD: [0x1108, 0x1165, 0x11C2], NFKC: [0xBEEB], NFKD: [0x1108, 0x1165, 0x11C2] },
+{ source: [0xBEEC], NFC: [0xBEEC], NFD: [0x1108, 0x1166], NFKC: [0xBEEC], NFKD: [0x1108, 0x1166] },
+{ source: [0xBEED], NFC: [0xBEED], NFD: [0x1108, 0x1166, 0x11A8], NFKC: [0xBEED], NFKD: [0x1108, 0x1166, 0x11A8] },
+{ source: [0xBEEE], NFC: [0xBEEE], NFD: [0x1108, 0x1166, 0x11A9], NFKC: [0xBEEE], NFKD: [0x1108, 0x1166, 0x11A9] },
+{ source: [0xBEEF], NFC: [0xBEEF], NFD: [0x1108, 0x1166, 0x11AA], NFKC: [0xBEEF], NFKD: [0x1108, 0x1166, 0x11AA] },
+{ source: [0xBEF0], NFC: [0xBEF0], NFD: [0x1108, 0x1166, 0x11AB], NFKC: [0xBEF0], NFKD: [0x1108, 0x1166, 0x11AB] },
+{ source: [0xBEF1], NFC: [0xBEF1], NFD: [0x1108, 0x1166, 0x11AC], NFKC: [0xBEF1], NFKD: [0x1108, 0x1166, 0x11AC] },
+{ source: [0xBEF2], NFC: [0xBEF2], NFD: [0x1108, 0x1166, 0x11AD], NFKC: [0xBEF2], NFKD: [0x1108, 0x1166, 0x11AD] },
+{ source: [0xBEF3], NFC: [0xBEF3], NFD: [0x1108, 0x1166, 0x11AE], NFKC: [0xBEF3], NFKD: [0x1108, 0x1166, 0x11AE] },
+{ source: [0xBEF4], NFC: [0xBEF4], NFD: [0x1108, 0x1166, 0x11AF], NFKC: [0xBEF4], NFKD: [0x1108, 0x1166, 0x11AF] },
+{ source: [0xBEF5], NFC: [0xBEF5], NFD: [0x1108, 0x1166, 0x11B0], NFKC: [0xBEF5], NFKD: [0x1108, 0x1166, 0x11B0] },
+{ source: [0xBEF6], NFC: [0xBEF6], NFD: [0x1108, 0x1166, 0x11B1], NFKC: [0xBEF6], NFKD: [0x1108, 0x1166, 0x11B1] },
+{ source: [0xBEF7], NFC: [0xBEF7], NFD: [0x1108, 0x1166, 0x11B2], NFKC: [0xBEF7], NFKD: [0x1108, 0x1166, 0x11B2] },
+{ source: [0xBEF8], NFC: [0xBEF8], NFD: [0x1108, 0x1166, 0x11B3], NFKC: [0xBEF8], NFKD: [0x1108, 0x1166, 0x11B3] },
+{ source: [0xBEF9], NFC: [0xBEF9], NFD: [0x1108, 0x1166, 0x11B4], NFKC: [0xBEF9], NFKD: [0x1108, 0x1166, 0x11B4] },
+{ source: [0xBEFA], NFC: [0xBEFA], NFD: [0x1108, 0x1166, 0x11B5], NFKC: [0xBEFA], NFKD: [0x1108, 0x1166, 0x11B5] },
+{ source: [0xBEFB], NFC: [0xBEFB], NFD: [0x1108, 0x1166, 0x11B6], NFKC: [0xBEFB], NFKD: [0x1108, 0x1166, 0x11B6] },
+{ source: [0xBEFC], NFC: [0xBEFC], NFD: [0x1108, 0x1166, 0x11B7], NFKC: [0xBEFC], NFKD: [0x1108, 0x1166, 0x11B7] },
+{ source: [0xBEFD], NFC: [0xBEFD], NFD: [0x1108, 0x1166, 0x11B8], NFKC: [0xBEFD], NFKD: [0x1108, 0x1166, 0x11B8] },
+{ source: [0xBEFE], NFC: [0xBEFE], NFD: [0x1108, 0x1166, 0x11B9], NFKC: [0xBEFE], NFKD: [0x1108, 0x1166, 0x11B9] },
+{ source: [0xBEFF], NFC: [0xBEFF], NFD: [0x1108, 0x1166, 0x11BA], NFKC: [0xBEFF], NFKD: [0x1108, 0x1166, 0x11BA] },
+{ source: [0xBF00], NFC: [0xBF00], NFD: [0x1108, 0x1166, 0x11BB], NFKC: [0xBF00], NFKD: [0x1108, 0x1166, 0x11BB] },
+{ source: [0xBF01], NFC: [0xBF01], NFD: [0x1108, 0x1166, 0x11BC], NFKC: [0xBF01], NFKD: [0x1108, 0x1166, 0x11BC] },
+{ source: [0xBF02], NFC: [0xBF02], NFD: [0x1108, 0x1166, 0x11BD], NFKC: [0xBF02], NFKD: [0x1108, 0x1166, 0x11BD] },
+{ source: [0xBF03], NFC: [0xBF03], NFD: [0x1108, 0x1166, 0x11BE], NFKC: [0xBF03], NFKD: [0x1108, 0x1166, 0x11BE] },
+{ source: [0xBF04], NFC: [0xBF04], NFD: [0x1108, 0x1166, 0x11BF], NFKC: [0xBF04], NFKD: [0x1108, 0x1166, 0x11BF] },
+{ source: [0xBF05], NFC: [0xBF05], NFD: [0x1108, 0x1166, 0x11C0], NFKC: [0xBF05], NFKD: [0x1108, 0x1166, 0x11C0] },
+{ source: [0xBF06], NFC: [0xBF06], NFD: [0x1108, 0x1166, 0x11C1], NFKC: [0xBF06], NFKD: [0x1108, 0x1166, 0x11C1] },
+{ source: [0xBF07], NFC: [0xBF07], NFD: [0x1108, 0x1166, 0x11C2], NFKC: [0xBF07], NFKD: [0x1108, 0x1166, 0x11C2] },
+{ source: [0xBF08], NFC: [0xBF08], NFD: [0x1108, 0x1167], NFKC: [0xBF08], NFKD: [0x1108, 0x1167] },
+{ source: [0xBF09], NFC: [0xBF09], NFD: [0x1108, 0x1167, 0x11A8], NFKC: [0xBF09], NFKD: [0x1108, 0x1167, 0x11A8] },
+{ source: [0xBF0A], NFC: [0xBF0A], NFD: [0x1108, 0x1167, 0x11A9], NFKC: [0xBF0A], NFKD: [0x1108, 0x1167, 0x11A9] },
+{ source: [0xBF0B], NFC: [0xBF0B], NFD: [0x1108, 0x1167, 0x11AA], NFKC: [0xBF0B], NFKD: [0x1108, 0x1167, 0x11AA] },
+{ source: [0xBF0C], NFC: [0xBF0C], NFD: [0x1108, 0x1167, 0x11AB], NFKC: [0xBF0C], NFKD: [0x1108, 0x1167, 0x11AB] },
+{ source: [0xBF0D], NFC: [0xBF0D], NFD: [0x1108, 0x1167, 0x11AC], NFKC: [0xBF0D], NFKD: [0x1108, 0x1167, 0x11AC] },
+{ source: [0xBF0E], NFC: [0xBF0E], NFD: [0x1108, 0x1167, 0x11AD], NFKC: [0xBF0E], NFKD: [0x1108, 0x1167, 0x11AD] },
+{ source: [0xBF0F], NFC: [0xBF0F], NFD: [0x1108, 0x1167, 0x11AE], NFKC: [0xBF0F], NFKD: [0x1108, 0x1167, 0x11AE] },
+{ source: [0xBF10], NFC: [0xBF10], NFD: [0x1108, 0x1167, 0x11AF], NFKC: [0xBF10], NFKD: [0x1108, 0x1167, 0x11AF] },
+{ source: [0xBF11], NFC: [0xBF11], NFD: [0x1108, 0x1167, 0x11B0], NFKC: [0xBF11], NFKD: [0x1108, 0x1167, 0x11B0] },
+{ source: [0xBF12], NFC: [0xBF12], NFD: [0x1108, 0x1167, 0x11B1], NFKC: [0xBF12], NFKD: [0x1108, 0x1167, 0x11B1] },
+{ source: [0xBF13], NFC: [0xBF13], NFD: [0x1108, 0x1167, 0x11B2], NFKC: [0xBF13], NFKD: [0x1108, 0x1167, 0x11B2] },
+{ source: [0xBF14], NFC: [0xBF14], NFD: [0x1108, 0x1167, 0x11B3], NFKC: [0xBF14], NFKD: [0x1108, 0x1167, 0x11B3] },
+{ source: [0xBF15], NFC: [0xBF15], NFD: [0x1108, 0x1167, 0x11B4], NFKC: [0xBF15], NFKD: [0x1108, 0x1167, 0x11B4] },
+{ source: [0xBF16], NFC: [0xBF16], NFD: [0x1108, 0x1167, 0x11B5], NFKC: [0xBF16], NFKD: [0x1108, 0x1167, 0x11B5] },
+{ source: [0xBF17], NFC: [0xBF17], NFD: [0x1108, 0x1167, 0x11B6], NFKC: [0xBF17], NFKD: [0x1108, 0x1167, 0x11B6] },
+{ source: [0xBF18], NFC: [0xBF18], NFD: [0x1108, 0x1167, 0x11B7], NFKC: [0xBF18], NFKD: [0x1108, 0x1167, 0x11B7] },
+{ source: [0xBF19], NFC: [0xBF19], NFD: [0x1108, 0x1167, 0x11B8], NFKC: [0xBF19], NFKD: [0x1108, 0x1167, 0x11B8] },
+{ source: [0xBF1A], NFC: [0xBF1A], NFD: [0x1108, 0x1167, 0x11B9], NFKC: [0xBF1A], NFKD: [0x1108, 0x1167, 0x11B9] },
+{ source: [0xBF1B], NFC: [0xBF1B], NFD: [0x1108, 0x1167, 0x11BA], NFKC: [0xBF1B], NFKD: [0x1108, 0x1167, 0x11BA] },
+{ source: [0xBF1C], NFC: [0xBF1C], NFD: [0x1108, 0x1167, 0x11BB], NFKC: [0xBF1C], NFKD: [0x1108, 0x1167, 0x11BB] },
+{ source: [0xBF1D], NFC: [0xBF1D], NFD: [0x1108, 0x1167, 0x11BC], NFKC: [0xBF1D], NFKD: [0x1108, 0x1167, 0x11BC] },
+{ source: [0xBF1E], NFC: [0xBF1E], NFD: [0x1108, 0x1167, 0x11BD], NFKC: [0xBF1E], NFKD: [0x1108, 0x1167, 0x11BD] },
+{ source: [0xBF1F], NFC: [0xBF1F], NFD: [0x1108, 0x1167, 0x11BE], NFKC: [0xBF1F], NFKD: [0x1108, 0x1167, 0x11BE] },
+{ source: [0xBF20], NFC: [0xBF20], NFD: [0x1108, 0x1167, 0x11BF], NFKC: [0xBF20], NFKD: [0x1108, 0x1167, 0x11BF] },
+{ source: [0xBF21], NFC: [0xBF21], NFD: [0x1108, 0x1167, 0x11C0], NFKC: [0xBF21], NFKD: [0x1108, 0x1167, 0x11C0] },
+{ source: [0xBF22], NFC: [0xBF22], NFD: [0x1108, 0x1167, 0x11C1], NFKC: [0xBF22], NFKD: [0x1108, 0x1167, 0x11C1] },
+{ source: [0xBF23], NFC: [0xBF23], NFD: [0x1108, 0x1167, 0x11C2], NFKC: [0xBF23], NFKD: [0x1108, 0x1167, 0x11C2] },
+{ source: [0xBF24], NFC: [0xBF24], NFD: [0x1108, 0x1168], NFKC: [0xBF24], NFKD: [0x1108, 0x1168] },
+{ source: [0xBF25], NFC: [0xBF25], NFD: [0x1108, 0x1168, 0x11A8], NFKC: [0xBF25], NFKD: [0x1108, 0x1168, 0x11A8] },
+{ source: [0xBF26], NFC: [0xBF26], NFD: [0x1108, 0x1168, 0x11A9], NFKC: [0xBF26], NFKD: [0x1108, 0x1168, 0x11A9] },
+{ source: [0xBF27], NFC: [0xBF27], NFD: [0x1108, 0x1168, 0x11AA], NFKC: [0xBF27], NFKD: [0x1108, 0x1168, 0x11AA] },
+{ source: [0xBF28], NFC: [0xBF28], NFD: [0x1108, 0x1168, 0x11AB], NFKC: [0xBF28], NFKD: [0x1108, 0x1168, 0x11AB] },
+{ source: [0xBF29], NFC: [0xBF29], NFD: [0x1108, 0x1168, 0x11AC], NFKC: [0xBF29], NFKD: [0x1108, 0x1168, 0x11AC] },
+{ source: [0xBF2A], NFC: [0xBF2A], NFD: [0x1108, 0x1168, 0x11AD], NFKC: [0xBF2A], NFKD: [0x1108, 0x1168, 0x11AD] },
+{ source: [0xBF2B], NFC: [0xBF2B], NFD: [0x1108, 0x1168, 0x11AE], NFKC: [0xBF2B], NFKD: [0x1108, 0x1168, 0x11AE] },
+{ source: [0xBF2C], NFC: [0xBF2C], NFD: [0x1108, 0x1168, 0x11AF], NFKC: [0xBF2C], NFKD: [0x1108, 0x1168, 0x11AF] },
+{ source: [0xBF2D], NFC: [0xBF2D], NFD: [0x1108, 0x1168, 0x11B0], NFKC: [0xBF2D], NFKD: [0x1108, 0x1168, 0x11B0] },
+{ source: [0xBF2E], NFC: [0xBF2E], NFD: [0x1108, 0x1168, 0x11B1], NFKC: [0xBF2E], NFKD: [0x1108, 0x1168, 0x11B1] },
+{ source: [0xBF2F], NFC: [0xBF2F], NFD: [0x1108, 0x1168, 0x11B2], NFKC: [0xBF2F], NFKD: [0x1108, 0x1168, 0x11B2] },
+{ source: [0xBF30], NFC: [0xBF30], NFD: [0x1108, 0x1168, 0x11B3], NFKC: [0xBF30], NFKD: [0x1108, 0x1168, 0x11B3] },
+{ source: [0xBF31], NFC: [0xBF31], NFD: [0x1108, 0x1168, 0x11B4], NFKC: [0xBF31], NFKD: [0x1108, 0x1168, 0x11B4] },
+{ source: [0xBF32], NFC: [0xBF32], NFD: [0x1108, 0x1168, 0x11B5], NFKC: [0xBF32], NFKD: [0x1108, 0x1168, 0x11B5] },
+{ source: [0xBF33], NFC: [0xBF33], NFD: [0x1108, 0x1168, 0x11B6], NFKC: [0xBF33], NFKD: [0x1108, 0x1168, 0x11B6] },
+{ source: [0xBF34], NFC: [0xBF34], NFD: [0x1108, 0x1168, 0x11B7], NFKC: [0xBF34], NFKD: [0x1108, 0x1168, 0x11B7] },
+{ source: [0xBF35], NFC: [0xBF35], NFD: [0x1108, 0x1168, 0x11B8], NFKC: [0xBF35], NFKD: [0x1108, 0x1168, 0x11B8] },
+{ source: [0xBF36], NFC: [0xBF36], NFD: [0x1108, 0x1168, 0x11B9], NFKC: [0xBF36], NFKD: [0x1108, 0x1168, 0x11B9] },
+{ source: [0xBF37], NFC: [0xBF37], NFD: [0x1108, 0x1168, 0x11BA], NFKC: [0xBF37], NFKD: [0x1108, 0x1168, 0x11BA] },
+{ source: [0xBF38], NFC: [0xBF38], NFD: [0x1108, 0x1168, 0x11BB], NFKC: [0xBF38], NFKD: [0x1108, 0x1168, 0x11BB] },
+{ source: [0xBF39], NFC: [0xBF39], NFD: [0x1108, 0x1168, 0x11BC], NFKC: [0xBF39], NFKD: [0x1108, 0x1168, 0x11BC] },
+{ source: [0xBF3A], NFC: [0xBF3A], NFD: [0x1108, 0x1168, 0x11BD], NFKC: [0xBF3A], NFKD: [0x1108, 0x1168, 0x11BD] },
+{ source: [0xBF3B], NFC: [0xBF3B], NFD: [0x1108, 0x1168, 0x11BE], NFKC: [0xBF3B], NFKD: [0x1108, 0x1168, 0x11BE] },
+{ source: [0xBF3C], NFC: [0xBF3C], NFD: [0x1108, 0x1168, 0x11BF], NFKC: [0xBF3C], NFKD: [0x1108, 0x1168, 0x11BF] },
+{ source: [0xBF3D], NFC: [0xBF3D], NFD: [0x1108, 0x1168, 0x11C0], NFKC: [0xBF3D], NFKD: [0x1108, 0x1168, 0x11C0] },
+{ source: [0xBF3E], NFC: [0xBF3E], NFD: [0x1108, 0x1168, 0x11C1], NFKC: [0xBF3E], NFKD: [0x1108, 0x1168, 0x11C1] },
+{ source: [0xBF3F], NFC: [0xBF3F], NFD: [0x1108, 0x1168, 0x11C2], NFKC: [0xBF3F], NFKD: [0x1108, 0x1168, 0x11C2] },
+{ source: [0xBF40], NFC: [0xBF40], NFD: [0x1108, 0x1169], NFKC: [0xBF40], NFKD: [0x1108, 0x1169] },
+{ source: [0xBF41], NFC: [0xBF41], NFD: [0x1108, 0x1169, 0x11A8], NFKC: [0xBF41], NFKD: [0x1108, 0x1169, 0x11A8] },
+{ source: [0xBF42], NFC: [0xBF42], NFD: [0x1108, 0x1169, 0x11A9], NFKC: [0xBF42], NFKD: [0x1108, 0x1169, 0x11A9] },
+{ source: [0xBF43], NFC: [0xBF43], NFD: [0x1108, 0x1169, 0x11AA], NFKC: [0xBF43], NFKD: [0x1108, 0x1169, 0x11AA] },
+{ source: [0xBF44], NFC: [0xBF44], NFD: [0x1108, 0x1169, 0x11AB], NFKC: [0xBF44], NFKD: [0x1108, 0x1169, 0x11AB] },
+{ source: [0xBF45], NFC: [0xBF45], NFD: [0x1108, 0x1169, 0x11AC], NFKC: [0xBF45], NFKD: [0x1108, 0x1169, 0x11AC] },
+{ source: [0xBF46], NFC: [0xBF46], NFD: [0x1108, 0x1169, 0x11AD], NFKC: [0xBF46], NFKD: [0x1108, 0x1169, 0x11AD] },
+{ source: [0xBF47], NFC: [0xBF47], NFD: [0x1108, 0x1169, 0x11AE], NFKC: [0xBF47], NFKD: [0x1108, 0x1169, 0x11AE] },
+{ source: [0xBF48], NFC: [0xBF48], NFD: [0x1108, 0x1169, 0x11AF], NFKC: [0xBF48], NFKD: [0x1108, 0x1169, 0x11AF] },
+{ source: [0xBF49], NFC: [0xBF49], NFD: [0x1108, 0x1169, 0x11B0], NFKC: [0xBF49], NFKD: [0x1108, 0x1169, 0x11B0] },
+{ source: [0xBF4A], NFC: [0xBF4A], NFD: [0x1108, 0x1169, 0x11B1], NFKC: [0xBF4A], NFKD: [0x1108, 0x1169, 0x11B1] },
+{ source: [0xBF4B], NFC: [0xBF4B], NFD: [0x1108, 0x1169, 0x11B2], NFKC: [0xBF4B], NFKD: [0x1108, 0x1169, 0x11B2] },
+{ source: [0xBF4C], NFC: [0xBF4C], NFD: [0x1108, 0x1169, 0x11B3], NFKC: [0xBF4C], NFKD: [0x1108, 0x1169, 0x11B3] },
+{ source: [0xBF4D], NFC: [0xBF4D], NFD: [0x1108, 0x1169, 0x11B4], NFKC: [0xBF4D], NFKD: [0x1108, 0x1169, 0x11B4] },
+{ source: [0xBF4E], NFC: [0xBF4E], NFD: [0x1108, 0x1169, 0x11B5], NFKC: [0xBF4E], NFKD: [0x1108, 0x1169, 0x11B5] },
+{ source: [0xBF4F], NFC: [0xBF4F], NFD: [0x1108, 0x1169, 0x11B6], NFKC: [0xBF4F], NFKD: [0x1108, 0x1169, 0x11B6] },
+{ source: [0xBF50], NFC: [0xBF50], NFD: [0x1108, 0x1169, 0x11B7], NFKC: [0xBF50], NFKD: [0x1108, 0x1169, 0x11B7] },
+{ source: [0xBF51], NFC: [0xBF51], NFD: [0x1108, 0x1169, 0x11B8], NFKC: [0xBF51], NFKD: [0x1108, 0x1169, 0x11B8] },
+{ source: [0xBF52], NFC: [0xBF52], NFD: [0x1108, 0x1169, 0x11B9], NFKC: [0xBF52], NFKD: [0x1108, 0x1169, 0x11B9] },
+{ source: [0xBF53], NFC: [0xBF53], NFD: [0x1108, 0x1169, 0x11BA], NFKC: [0xBF53], NFKD: [0x1108, 0x1169, 0x11BA] },
+{ source: [0xBF54], NFC: [0xBF54], NFD: [0x1108, 0x1169, 0x11BB], NFKC: [0xBF54], NFKD: [0x1108, 0x1169, 0x11BB] },
+{ source: [0xBF55], NFC: [0xBF55], NFD: [0x1108, 0x1169, 0x11BC], NFKC: [0xBF55], NFKD: [0x1108, 0x1169, 0x11BC] },
+{ source: [0xBF56], NFC: [0xBF56], NFD: [0x1108, 0x1169, 0x11BD], NFKC: [0xBF56], NFKD: [0x1108, 0x1169, 0x11BD] },
+{ source: [0xBF57], NFC: [0xBF57], NFD: [0x1108, 0x1169, 0x11BE], NFKC: [0xBF57], NFKD: [0x1108, 0x1169, 0x11BE] },
+{ source: [0xBF58], NFC: [0xBF58], NFD: [0x1108, 0x1169, 0x11BF], NFKC: [0xBF58], NFKD: [0x1108, 0x1169, 0x11BF] },
+{ source: [0xBF59], NFC: [0xBF59], NFD: [0x1108, 0x1169, 0x11C0], NFKC: [0xBF59], NFKD: [0x1108, 0x1169, 0x11C0] },
+{ source: [0xBF5A], NFC: [0xBF5A], NFD: [0x1108, 0x1169, 0x11C1], NFKC: [0xBF5A], NFKD: [0x1108, 0x1169, 0x11C1] },
+{ source: [0xBF5B], NFC: [0xBF5B], NFD: [0x1108, 0x1169, 0x11C2], NFKC: [0xBF5B], NFKD: [0x1108, 0x1169, 0x11C2] },
+{ source: [0xBF5C], NFC: [0xBF5C], NFD: [0x1108, 0x116A], NFKC: [0xBF5C], NFKD: [0x1108, 0x116A] },
+{ source: [0xBF5D], NFC: [0xBF5D], NFD: [0x1108, 0x116A, 0x11A8], NFKC: [0xBF5D], NFKD: [0x1108, 0x116A, 0x11A8] },
+{ source: [0xBF5E], NFC: [0xBF5E], NFD: [0x1108, 0x116A, 0x11A9], NFKC: [0xBF5E], NFKD: [0x1108, 0x116A, 0x11A9] },
+{ source: [0xBF5F], NFC: [0xBF5F], NFD: [0x1108, 0x116A, 0x11AA], NFKC: [0xBF5F], NFKD: [0x1108, 0x116A, 0x11AA] },
+{ source: [0xBF60], NFC: [0xBF60], NFD: [0x1108, 0x116A, 0x11AB], NFKC: [0xBF60], NFKD: [0x1108, 0x116A, 0x11AB] },
+{ source: [0xBF61], NFC: [0xBF61], NFD: [0x1108, 0x116A, 0x11AC], NFKC: [0xBF61], NFKD: [0x1108, 0x116A, 0x11AC] },
+{ source: [0xBF62], NFC: [0xBF62], NFD: [0x1108, 0x116A, 0x11AD], NFKC: [0xBF62], NFKD: [0x1108, 0x116A, 0x11AD] },
+{ source: [0xBF63], NFC: [0xBF63], NFD: [0x1108, 0x116A, 0x11AE], NFKC: [0xBF63], NFKD: [0x1108, 0x116A, 0x11AE] },
+{ source: [0xBF64], NFC: [0xBF64], NFD: [0x1108, 0x116A, 0x11AF], NFKC: [0xBF64], NFKD: [0x1108, 0x116A, 0x11AF] },
+{ source: [0xBF65], NFC: [0xBF65], NFD: [0x1108, 0x116A, 0x11B0], NFKC: [0xBF65], NFKD: [0x1108, 0x116A, 0x11B0] },
+{ source: [0xBF66], NFC: [0xBF66], NFD: [0x1108, 0x116A, 0x11B1], NFKC: [0xBF66], NFKD: [0x1108, 0x116A, 0x11B1] },
+{ source: [0xBF67], NFC: [0xBF67], NFD: [0x1108, 0x116A, 0x11B2], NFKC: [0xBF67], NFKD: [0x1108, 0x116A, 0x11B2] },
+{ source: [0xBF68], NFC: [0xBF68], NFD: [0x1108, 0x116A, 0x11B3], NFKC: [0xBF68], NFKD: [0x1108, 0x116A, 0x11B3] },
+{ source: [0xBF69], NFC: [0xBF69], NFD: [0x1108, 0x116A, 0x11B4], NFKC: [0xBF69], NFKD: [0x1108, 0x116A, 0x11B4] },
+{ source: [0xBF6A], NFC: [0xBF6A], NFD: [0x1108, 0x116A, 0x11B5], NFKC: [0xBF6A], NFKD: [0x1108, 0x116A, 0x11B5] },
+{ source: [0xBF6B], NFC: [0xBF6B], NFD: [0x1108, 0x116A, 0x11B6], NFKC: [0xBF6B], NFKD: [0x1108, 0x116A, 0x11B6] },
+{ source: [0xBF6C], NFC: [0xBF6C], NFD: [0x1108, 0x116A, 0x11B7], NFKC: [0xBF6C], NFKD: [0x1108, 0x116A, 0x11B7] },
+{ source: [0xBF6D], NFC: [0xBF6D], NFD: [0x1108, 0x116A, 0x11B8], NFKC: [0xBF6D], NFKD: [0x1108, 0x116A, 0x11B8] },
+{ source: [0xBF6E], NFC: [0xBF6E], NFD: [0x1108, 0x116A, 0x11B9], NFKC: [0xBF6E], NFKD: [0x1108, 0x116A, 0x11B9] },
+{ source: [0xBF6F], NFC: [0xBF6F], NFD: [0x1108, 0x116A, 0x11BA], NFKC: [0xBF6F], NFKD: [0x1108, 0x116A, 0x11BA] },
+{ source: [0xBF70], NFC: [0xBF70], NFD: [0x1108, 0x116A, 0x11BB], NFKC: [0xBF70], NFKD: [0x1108, 0x116A, 0x11BB] },
+{ source: [0xBF71], NFC: [0xBF71], NFD: [0x1108, 0x116A, 0x11BC], NFKC: [0xBF71], NFKD: [0x1108, 0x116A, 0x11BC] },
+{ source: [0xBF72], NFC: [0xBF72], NFD: [0x1108, 0x116A, 0x11BD], NFKC: [0xBF72], NFKD: [0x1108, 0x116A, 0x11BD] },
+{ source: [0xBF73], NFC: [0xBF73], NFD: [0x1108, 0x116A, 0x11BE], NFKC: [0xBF73], NFKD: [0x1108, 0x116A, 0x11BE] },
+{ source: [0xBF74], NFC: [0xBF74], NFD: [0x1108, 0x116A, 0x11BF], NFKC: [0xBF74], NFKD: [0x1108, 0x116A, 0x11BF] },
+{ source: [0xBF75], NFC: [0xBF75], NFD: [0x1108, 0x116A, 0x11C0], NFKC: [0xBF75], NFKD: [0x1108, 0x116A, 0x11C0] },
+{ source: [0xBF76], NFC: [0xBF76], NFD: [0x1108, 0x116A, 0x11C1], NFKC: [0xBF76], NFKD: [0x1108, 0x116A, 0x11C1] },
+{ source: [0xBF77], NFC: [0xBF77], NFD: [0x1108, 0x116A, 0x11C2], NFKC: [0xBF77], NFKD: [0x1108, 0x116A, 0x11C2] },
+{ source: [0xBF78], NFC: [0xBF78], NFD: [0x1108, 0x116B], NFKC: [0xBF78], NFKD: [0x1108, 0x116B] },
+{ source: [0xBF79], NFC: [0xBF79], NFD: [0x1108, 0x116B, 0x11A8], NFKC: [0xBF79], NFKD: [0x1108, 0x116B, 0x11A8] },
+{ source: [0xBF7A], NFC: [0xBF7A], NFD: [0x1108, 0x116B, 0x11A9], NFKC: [0xBF7A], NFKD: [0x1108, 0x116B, 0x11A9] },
+{ source: [0xBF7B], NFC: [0xBF7B], NFD: [0x1108, 0x116B, 0x11AA], NFKC: [0xBF7B], NFKD: [0x1108, 0x116B, 0x11AA] },
+{ source: [0xBF7C], NFC: [0xBF7C], NFD: [0x1108, 0x116B, 0x11AB], NFKC: [0xBF7C], NFKD: [0x1108, 0x116B, 0x11AB] },
+{ source: [0xBF7D], NFC: [0xBF7D], NFD: [0x1108, 0x116B, 0x11AC], NFKC: [0xBF7D], NFKD: [0x1108, 0x116B, 0x11AC] },
+{ source: [0xBF7E], NFC: [0xBF7E], NFD: [0x1108, 0x116B, 0x11AD], NFKC: [0xBF7E], NFKD: [0x1108, 0x116B, 0x11AD] },
+{ source: [0xBF7F], NFC: [0xBF7F], NFD: [0x1108, 0x116B, 0x11AE], NFKC: [0xBF7F], NFKD: [0x1108, 0x116B, 0x11AE] },
+{ source: [0xBF80], NFC: [0xBF80], NFD: [0x1108, 0x116B, 0x11AF], NFKC: [0xBF80], NFKD: [0x1108, 0x116B, 0x11AF] },
+{ source: [0xBF81], NFC: [0xBF81], NFD: [0x1108, 0x116B, 0x11B0], NFKC: [0xBF81], NFKD: [0x1108, 0x116B, 0x11B0] },
+{ source: [0xBF82], NFC: [0xBF82], NFD: [0x1108, 0x116B, 0x11B1], NFKC: [0xBF82], NFKD: [0x1108, 0x116B, 0x11B1] },
+{ source: [0xBF83], NFC: [0xBF83], NFD: [0x1108, 0x116B, 0x11B2], NFKC: [0xBF83], NFKD: [0x1108, 0x116B, 0x11B2] },
+{ source: [0xBF84], NFC: [0xBF84], NFD: [0x1108, 0x116B, 0x11B3], NFKC: [0xBF84], NFKD: [0x1108, 0x116B, 0x11B3] },
+{ source: [0xBF85], NFC: [0xBF85], NFD: [0x1108, 0x116B, 0x11B4], NFKC: [0xBF85], NFKD: [0x1108, 0x116B, 0x11B4] },
+{ source: [0xBF86], NFC: [0xBF86], NFD: [0x1108, 0x116B, 0x11B5], NFKC: [0xBF86], NFKD: [0x1108, 0x116B, 0x11B5] },
+{ source: [0xBF87], NFC: [0xBF87], NFD: [0x1108, 0x116B, 0x11B6], NFKC: [0xBF87], NFKD: [0x1108, 0x116B, 0x11B6] },
+{ source: [0xBF88], NFC: [0xBF88], NFD: [0x1108, 0x116B, 0x11B7], NFKC: [0xBF88], NFKD: [0x1108, 0x116B, 0x11B7] },
+{ source: [0xBF89], NFC: [0xBF89], NFD: [0x1108, 0x116B, 0x11B8], NFKC: [0xBF89], NFKD: [0x1108, 0x116B, 0x11B8] },
+{ source: [0xBF8A], NFC: [0xBF8A], NFD: [0x1108, 0x116B, 0x11B9], NFKC: [0xBF8A], NFKD: [0x1108, 0x116B, 0x11B9] },
+{ source: [0xBF8B], NFC: [0xBF8B], NFD: [0x1108, 0x116B, 0x11BA], NFKC: [0xBF8B], NFKD: [0x1108, 0x116B, 0x11BA] },
+{ source: [0xBF8C], NFC: [0xBF8C], NFD: [0x1108, 0x116B, 0x11BB], NFKC: [0xBF8C], NFKD: [0x1108, 0x116B, 0x11BB] },
+{ source: [0xBF8D], NFC: [0xBF8D], NFD: [0x1108, 0x116B, 0x11BC], NFKC: [0xBF8D], NFKD: [0x1108, 0x116B, 0x11BC] },
+{ source: [0xBF8E], NFC: [0xBF8E], NFD: [0x1108, 0x116B, 0x11BD], NFKC: [0xBF8E], NFKD: [0x1108, 0x116B, 0x11BD] },
+{ source: [0xBF8F], NFC: [0xBF8F], NFD: [0x1108, 0x116B, 0x11BE], NFKC: [0xBF8F], NFKD: [0x1108, 0x116B, 0x11BE] },
+{ source: [0xBF90], NFC: [0xBF90], NFD: [0x1108, 0x116B, 0x11BF], NFKC: [0xBF90], NFKD: [0x1108, 0x116B, 0x11BF] },
+{ source: [0xBF91], NFC: [0xBF91], NFD: [0x1108, 0x116B, 0x11C0], NFKC: [0xBF91], NFKD: [0x1108, 0x116B, 0x11C0] },
+{ source: [0xBF92], NFC: [0xBF92], NFD: [0x1108, 0x116B, 0x11C1], NFKC: [0xBF92], NFKD: [0x1108, 0x116B, 0x11C1] },
+{ source: [0xBF93], NFC: [0xBF93], NFD: [0x1108, 0x116B, 0x11C2], NFKC: [0xBF93], NFKD: [0x1108, 0x116B, 0x11C2] },
+{ source: [0xBF94], NFC: [0xBF94], NFD: [0x1108, 0x116C], NFKC: [0xBF94], NFKD: [0x1108, 0x116C] },
+{ source: [0xBF95], NFC: [0xBF95], NFD: [0x1108, 0x116C, 0x11A8], NFKC: [0xBF95], NFKD: [0x1108, 0x116C, 0x11A8] },
+{ source: [0xBF96], NFC: [0xBF96], NFD: [0x1108, 0x116C, 0x11A9], NFKC: [0xBF96], NFKD: [0x1108, 0x116C, 0x11A9] },
+{ source: [0xBF97], NFC: [0xBF97], NFD: [0x1108, 0x116C, 0x11AA], NFKC: [0xBF97], NFKD: [0x1108, 0x116C, 0x11AA] },
+{ source: [0xBF98], NFC: [0xBF98], NFD: [0x1108, 0x116C, 0x11AB], NFKC: [0xBF98], NFKD: [0x1108, 0x116C, 0x11AB] },
+{ source: [0xBF99], NFC: [0xBF99], NFD: [0x1108, 0x116C, 0x11AC], NFKC: [0xBF99], NFKD: [0x1108, 0x116C, 0x11AC] },
+{ source: [0xBF9A], NFC: [0xBF9A], NFD: [0x1108, 0x116C, 0x11AD], NFKC: [0xBF9A], NFKD: [0x1108, 0x116C, 0x11AD] },
+{ source: [0xBF9B], NFC: [0xBF9B], NFD: [0x1108, 0x116C, 0x11AE], NFKC: [0xBF9B], NFKD: [0x1108, 0x116C, 0x11AE] },
+{ source: [0xBF9C], NFC: [0xBF9C], NFD: [0x1108, 0x116C, 0x11AF], NFKC: [0xBF9C], NFKD: [0x1108, 0x116C, 0x11AF] },
+{ source: [0xBF9D], NFC: [0xBF9D], NFD: [0x1108, 0x116C, 0x11B0], NFKC: [0xBF9D], NFKD: [0x1108, 0x116C, 0x11B0] },
+{ source: [0xBF9E], NFC: [0xBF9E], NFD: [0x1108, 0x116C, 0x11B1], NFKC: [0xBF9E], NFKD: [0x1108, 0x116C, 0x11B1] },
+{ source: [0xBF9F], NFC: [0xBF9F], NFD: [0x1108, 0x116C, 0x11B2], NFKC: [0xBF9F], NFKD: [0x1108, 0x116C, 0x11B2] },
+{ source: [0xBFA0], NFC: [0xBFA0], NFD: [0x1108, 0x116C, 0x11B3], NFKC: [0xBFA0], NFKD: [0x1108, 0x116C, 0x11B3] },
+{ source: [0xBFA1], NFC: [0xBFA1], NFD: [0x1108, 0x116C, 0x11B4], NFKC: [0xBFA1], NFKD: [0x1108, 0x116C, 0x11B4] },
+{ source: [0xBFA2], NFC: [0xBFA2], NFD: [0x1108, 0x116C, 0x11B5], NFKC: [0xBFA2], NFKD: [0x1108, 0x116C, 0x11B5] },
+{ source: [0xBFA3], NFC: [0xBFA3], NFD: [0x1108, 0x116C, 0x11B6], NFKC: [0xBFA3], NFKD: [0x1108, 0x116C, 0x11B6] },
+{ source: [0xBFA4], NFC: [0xBFA4], NFD: [0x1108, 0x116C, 0x11B7], NFKC: [0xBFA4], NFKD: [0x1108, 0x116C, 0x11B7] },
+{ source: [0xBFA5], NFC: [0xBFA5], NFD: [0x1108, 0x116C, 0x11B8], NFKC: [0xBFA5], NFKD: [0x1108, 0x116C, 0x11B8] },
+{ source: [0xBFA6], NFC: [0xBFA6], NFD: [0x1108, 0x116C, 0x11B9], NFKC: [0xBFA6], NFKD: [0x1108, 0x116C, 0x11B9] },
+{ source: [0xBFA7], NFC: [0xBFA7], NFD: [0x1108, 0x116C, 0x11BA], NFKC: [0xBFA7], NFKD: [0x1108, 0x116C, 0x11BA] },
+{ source: [0xBFA8], NFC: [0xBFA8], NFD: [0x1108, 0x116C, 0x11BB], NFKC: [0xBFA8], NFKD: [0x1108, 0x116C, 0x11BB] },
+{ source: [0xBFA9], NFC: [0xBFA9], NFD: [0x1108, 0x116C, 0x11BC], NFKC: [0xBFA9], NFKD: [0x1108, 0x116C, 0x11BC] },
+{ source: [0xBFAA], NFC: [0xBFAA], NFD: [0x1108, 0x116C, 0x11BD], NFKC: [0xBFAA], NFKD: [0x1108, 0x116C, 0x11BD] },
+{ source: [0xBFAB], NFC: [0xBFAB], NFD: [0x1108, 0x116C, 0x11BE], NFKC: [0xBFAB], NFKD: [0x1108, 0x116C, 0x11BE] },
+{ source: [0xBFAC], NFC: [0xBFAC], NFD: [0x1108, 0x116C, 0x11BF], NFKC: [0xBFAC], NFKD: [0x1108, 0x116C, 0x11BF] },
+{ source: [0xBFAD], NFC: [0xBFAD], NFD: [0x1108, 0x116C, 0x11C0], NFKC: [0xBFAD], NFKD: [0x1108, 0x116C, 0x11C0] },
+{ source: [0xBFAE], NFC: [0xBFAE], NFD: [0x1108, 0x116C, 0x11C1], NFKC: [0xBFAE], NFKD: [0x1108, 0x116C, 0x11C1] },
+{ source: [0xBFAF], NFC: [0xBFAF], NFD: [0x1108, 0x116C, 0x11C2], NFKC: [0xBFAF], NFKD: [0x1108, 0x116C, 0x11C2] },
+{ source: [0xBFB0], NFC: [0xBFB0], NFD: [0x1108, 0x116D], NFKC: [0xBFB0], NFKD: [0x1108, 0x116D] },
+{ source: [0xBFB1], NFC: [0xBFB1], NFD: [0x1108, 0x116D, 0x11A8], NFKC: [0xBFB1], NFKD: [0x1108, 0x116D, 0x11A8] },
+{ source: [0xBFB2], NFC: [0xBFB2], NFD: [0x1108, 0x116D, 0x11A9], NFKC: [0xBFB2], NFKD: [0x1108, 0x116D, 0x11A9] },
+{ source: [0xBFB3], NFC: [0xBFB3], NFD: [0x1108, 0x116D, 0x11AA], NFKC: [0xBFB3], NFKD: [0x1108, 0x116D, 0x11AA] },
+{ source: [0xBFB4], NFC: [0xBFB4], NFD: [0x1108, 0x116D, 0x11AB], NFKC: [0xBFB4], NFKD: [0x1108, 0x116D, 0x11AB] },
+{ source: [0xBFB5], NFC: [0xBFB5], NFD: [0x1108, 0x116D, 0x11AC], NFKC: [0xBFB5], NFKD: [0x1108, 0x116D, 0x11AC] },
+{ source: [0xBFB6], NFC: [0xBFB6], NFD: [0x1108, 0x116D, 0x11AD], NFKC: [0xBFB6], NFKD: [0x1108, 0x116D, 0x11AD] },
+{ source: [0xBFB7], NFC: [0xBFB7], NFD: [0x1108, 0x116D, 0x11AE], NFKC: [0xBFB7], NFKD: [0x1108, 0x116D, 0x11AE] },
+{ source: [0xBFB8], NFC: [0xBFB8], NFD: [0x1108, 0x116D, 0x11AF], NFKC: [0xBFB8], NFKD: [0x1108, 0x116D, 0x11AF] },
+{ source: [0xBFB9], NFC: [0xBFB9], NFD: [0x1108, 0x116D, 0x11B0], NFKC: [0xBFB9], NFKD: [0x1108, 0x116D, 0x11B0] },
+{ source: [0xBFBA], NFC: [0xBFBA], NFD: [0x1108, 0x116D, 0x11B1], NFKC: [0xBFBA], NFKD: [0x1108, 0x116D, 0x11B1] },
+{ source: [0xBFBB], NFC: [0xBFBB], NFD: [0x1108, 0x116D, 0x11B2], NFKC: [0xBFBB], NFKD: [0x1108, 0x116D, 0x11B2] },
+{ source: [0xBFBC], NFC: [0xBFBC], NFD: [0x1108, 0x116D, 0x11B3], NFKC: [0xBFBC], NFKD: [0x1108, 0x116D, 0x11B3] },
+{ source: [0xBFBD], NFC: [0xBFBD], NFD: [0x1108, 0x116D, 0x11B4], NFKC: [0xBFBD], NFKD: [0x1108, 0x116D, 0x11B4] },
+{ source: [0xBFBE], NFC: [0xBFBE], NFD: [0x1108, 0x116D, 0x11B5], NFKC: [0xBFBE], NFKD: [0x1108, 0x116D, 0x11B5] },
+{ source: [0xBFBF], NFC: [0xBFBF], NFD: [0x1108, 0x116D, 0x11B6], NFKC: [0xBFBF], NFKD: [0x1108, 0x116D, 0x11B6] },
+{ source: [0xBFC0], NFC: [0xBFC0], NFD: [0x1108, 0x116D, 0x11B7], NFKC: [0xBFC0], NFKD: [0x1108, 0x116D, 0x11B7] },
+{ source: [0xBFC1], NFC: [0xBFC1], NFD: [0x1108, 0x116D, 0x11B8], NFKC: [0xBFC1], NFKD: [0x1108, 0x116D, 0x11B8] },
+{ source: [0xBFC2], NFC: [0xBFC2], NFD: [0x1108, 0x116D, 0x11B9], NFKC: [0xBFC2], NFKD: [0x1108, 0x116D, 0x11B9] },
+{ source: [0xBFC3], NFC: [0xBFC3], NFD: [0x1108, 0x116D, 0x11BA], NFKC: [0xBFC3], NFKD: [0x1108, 0x116D, 0x11BA] },
+{ source: [0xBFC4], NFC: [0xBFC4], NFD: [0x1108, 0x116D, 0x11BB], NFKC: [0xBFC4], NFKD: [0x1108, 0x116D, 0x11BB] },
+{ source: [0xBFC5], NFC: [0xBFC5], NFD: [0x1108, 0x116D, 0x11BC], NFKC: [0xBFC5], NFKD: [0x1108, 0x116D, 0x11BC] },
+{ source: [0xBFC6], NFC: [0xBFC6], NFD: [0x1108, 0x116D, 0x11BD], NFKC: [0xBFC6], NFKD: [0x1108, 0x116D, 0x11BD] },
+{ source: [0xBFC7], NFC: [0xBFC7], NFD: [0x1108, 0x116D, 0x11BE], NFKC: [0xBFC7], NFKD: [0x1108, 0x116D, 0x11BE] },
+{ source: [0xBFC8], NFC: [0xBFC8], NFD: [0x1108, 0x116D, 0x11BF], NFKC: [0xBFC8], NFKD: [0x1108, 0x116D, 0x11BF] },
+{ source: [0xBFC9], NFC: [0xBFC9], NFD: [0x1108, 0x116D, 0x11C0], NFKC: [0xBFC9], NFKD: [0x1108, 0x116D, 0x11C0] },
+{ source: [0xBFCA], NFC: [0xBFCA], NFD: [0x1108, 0x116D, 0x11C1], NFKC: [0xBFCA], NFKD: [0x1108, 0x116D, 0x11C1] },
+{ source: [0xBFCB], NFC: [0xBFCB], NFD: [0x1108, 0x116D, 0x11C2], NFKC: [0xBFCB], NFKD: [0x1108, 0x116D, 0x11C2] },
+{ source: [0xBFCC], NFC: [0xBFCC], NFD: [0x1108, 0x116E], NFKC: [0xBFCC], NFKD: [0x1108, 0x116E] },
+{ source: [0xBFCD], NFC: [0xBFCD], NFD: [0x1108, 0x116E, 0x11A8], NFKC: [0xBFCD], NFKD: [0x1108, 0x116E, 0x11A8] },
+{ source: [0xBFCE], NFC: [0xBFCE], NFD: [0x1108, 0x116E, 0x11A9], NFKC: [0xBFCE], NFKD: [0x1108, 0x116E, 0x11A9] },
+{ source: [0xBFCF], NFC: [0xBFCF], NFD: [0x1108, 0x116E, 0x11AA], NFKC: [0xBFCF], NFKD: [0x1108, 0x116E, 0x11AA] },
+{ source: [0xBFD0], NFC: [0xBFD0], NFD: [0x1108, 0x116E, 0x11AB], NFKC: [0xBFD0], NFKD: [0x1108, 0x116E, 0x11AB] },
+{ source: [0xBFD1], NFC: [0xBFD1], NFD: [0x1108, 0x116E, 0x11AC], NFKC: [0xBFD1], NFKD: [0x1108, 0x116E, 0x11AC] },
+{ source: [0xBFD2], NFC: [0xBFD2], NFD: [0x1108, 0x116E, 0x11AD], NFKC: [0xBFD2], NFKD: [0x1108, 0x116E, 0x11AD] },
+{ source: [0xBFD3], NFC: [0xBFD3], NFD: [0x1108, 0x116E, 0x11AE], NFKC: [0xBFD3], NFKD: [0x1108, 0x116E, 0x11AE] },
+{ source: [0xBFD4], NFC: [0xBFD4], NFD: [0x1108, 0x116E, 0x11AF], NFKC: [0xBFD4], NFKD: [0x1108, 0x116E, 0x11AF] },
+{ source: [0xBFD5], NFC: [0xBFD5], NFD: [0x1108, 0x116E, 0x11B0], NFKC: [0xBFD5], NFKD: [0x1108, 0x116E, 0x11B0] },
+{ source: [0xBFD6], NFC: [0xBFD6], NFD: [0x1108, 0x116E, 0x11B1], NFKC: [0xBFD6], NFKD: [0x1108, 0x116E, 0x11B1] },
+{ source: [0xBFD7], NFC: [0xBFD7], NFD: [0x1108, 0x116E, 0x11B2], NFKC: [0xBFD7], NFKD: [0x1108, 0x116E, 0x11B2] },
+{ source: [0xBFD8], NFC: [0xBFD8], NFD: [0x1108, 0x116E, 0x11B3], NFKC: [0xBFD8], NFKD: [0x1108, 0x116E, 0x11B3] },
+{ source: [0xBFD9], NFC: [0xBFD9], NFD: [0x1108, 0x116E, 0x11B4], NFKC: [0xBFD9], NFKD: [0x1108, 0x116E, 0x11B4] },
+{ source: [0xBFDA], NFC: [0xBFDA], NFD: [0x1108, 0x116E, 0x11B5], NFKC: [0xBFDA], NFKD: [0x1108, 0x116E, 0x11B5] },
+{ source: [0xBFDB], NFC: [0xBFDB], NFD: [0x1108, 0x116E, 0x11B6], NFKC: [0xBFDB], NFKD: [0x1108, 0x116E, 0x11B6] },
+{ source: [0xBFDC], NFC: [0xBFDC], NFD: [0x1108, 0x116E, 0x11B7], NFKC: [0xBFDC], NFKD: [0x1108, 0x116E, 0x11B7] },
+{ source: [0xBFDD], NFC: [0xBFDD], NFD: [0x1108, 0x116E, 0x11B8], NFKC: [0xBFDD], NFKD: [0x1108, 0x116E, 0x11B8] },
+{ source: [0xBFDE], NFC: [0xBFDE], NFD: [0x1108, 0x116E, 0x11B9], NFKC: [0xBFDE], NFKD: [0x1108, 0x116E, 0x11B9] },
+{ source: [0xBFDF], NFC: [0xBFDF], NFD: [0x1108, 0x116E, 0x11BA], NFKC: [0xBFDF], NFKD: [0x1108, 0x116E, 0x11BA] },
+{ source: [0xBFE0], NFC: [0xBFE0], NFD: [0x1108, 0x116E, 0x11BB], NFKC: [0xBFE0], NFKD: [0x1108, 0x116E, 0x11BB] },
+{ source: [0xBFE1], NFC: [0xBFE1], NFD: [0x1108, 0x116E, 0x11BC], NFKC: [0xBFE1], NFKD: [0x1108, 0x116E, 0x11BC] },
+{ source: [0xBFE2], NFC: [0xBFE2], NFD: [0x1108, 0x116E, 0x11BD], NFKC: [0xBFE2], NFKD: [0x1108, 0x116E, 0x11BD] },
+{ source: [0xBFE3], NFC: [0xBFE3], NFD: [0x1108, 0x116E, 0x11BE], NFKC: [0xBFE3], NFKD: [0x1108, 0x116E, 0x11BE] },
+{ source: [0xBFE4], NFC: [0xBFE4], NFD: [0x1108, 0x116E, 0x11BF], NFKC: [0xBFE4], NFKD: [0x1108, 0x116E, 0x11BF] },
+{ source: [0xBFE5], NFC: [0xBFE5], NFD: [0x1108, 0x116E, 0x11C0], NFKC: [0xBFE5], NFKD: [0x1108, 0x116E, 0x11C0] },
+{ source: [0xBFE6], NFC: [0xBFE6], NFD: [0x1108, 0x116E, 0x11C1], NFKC: [0xBFE6], NFKD: [0x1108, 0x116E, 0x11C1] },
+{ source: [0xBFE7], NFC: [0xBFE7], NFD: [0x1108, 0x116E, 0x11C2], NFKC: [0xBFE7], NFKD: [0x1108, 0x116E, 0x11C2] },
+{ source: [0xBFE8], NFC: [0xBFE8], NFD: [0x1108, 0x116F], NFKC: [0xBFE8], NFKD: [0x1108, 0x116F] },
+{ source: [0xBFE9], NFC: [0xBFE9], NFD: [0x1108, 0x116F, 0x11A8], NFKC: [0xBFE9], NFKD: [0x1108, 0x116F, 0x11A8] },
+{ source: [0xBFEA], NFC: [0xBFEA], NFD: [0x1108, 0x116F, 0x11A9], NFKC: [0xBFEA], NFKD: [0x1108, 0x116F, 0x11A9] },
+{ source: [0xBFEB], NFC: [0xBFEB], NFD: [0x1108, 0x116F, 0x11AA], NFKC: [0xBFEB], NFKD: [0x1108, 0x116F, 0x11AA] },
+{ source: [0xBFEC], NFC: [0xBFEC], NFD: [0x1108, 0x116F, 0x11AB], NFKC: [0xBFEC], NFKD: [0x1108, 0x116F, 0x11AB] },
+{ source: [0xBFED], NFC: [0xBFED], NFD: [0x1108, 0x116F, 0x11AC], NFKC: [0xBFED], NFKD: [0x1108, 0x116F, 0x11AC] },
+{ source: [0xBFEE], NFC: [0xBFEE], NFD: [0x1108, 0x116F, 0x11AD], NFKC: [0xBFEE], NFKD: [0x1108, 0x116F, 0x11AD] },
+{ source: [0xBFEF], NFC: [0xBFEF], NFD: [0x1108, 0x116F, 0x11AE], NFKC: [0xBFEF], NFKD: [0x1108, 0x116F, 0x11AE] },
+{ source: [0xBFF0], NFC: [0xBFF0], NFD: [0x1108, 0x116F, 0x11AF], NFKC: [0xBFF0], NFKD: [0x1108, 0x116F, 0x11AF] },
+{ source: [0xBFF1], NFC: [0xBFF1], NFD: [0x1108, 0x116F, 0x11B0], NFKC: [0xBFF1], NFKD: [0x1108, 0x116F, 0x11B0] },
+{ source: [0xBFF2], NFC: [0xBFF2], NFD: [0x1108, 0x116F, 0x11B1], NFKC: [0xBFF2], NFKD: [0x1108, 0x116F, 0x11B1] },
+{ source: [0xBFF3], NFC: [0xBFF3], NFD: [0x1108, 0x116F, 0x11B2], NFKC: [0xBFF3], NFKD: [0x1108, 0x116F, 0x11B2] },
+{ source: [0xBFF4], NFC: [0xBFF4], NFD: [0x1108, 0x116F, 0x11B3], NFKC: [0xBFF4], NFKD: [0x1108, 0x116F, 0x11B3] },
+{ source: [0xBFF5], NFC: [0xBFF5], NFD: [0x1108, 0x116F, 0x11B4], NFKC: [0xBFF5], NFKD: [0x1108, 0x116F, 0x11B4] },
+{ source: [0xBFF6], NFC: [0xBFF6], NFD: [0x1108, 0x116F, 0x11B5], NFKC: [0xBFF6], NFKD: [0x1108, 0x116F, 0x11B5] },
+{ source: [0xBFF7], NFC: [0xBFF7], NFD: [0x1108, 0x116F, 0x11B6], NFKC: [0xBFF7], NFKD: [0x1108, 0x116F, 0x11B6] },
+{ source: [0xBFF8], NFC: [0xBFF8], NFD: [0x1108, 0x116F, 0x11B7], NFKC: [0xBFF8], NFKD: [0x1108, 0x116F, 0x11B7] },
+{ source: [0xBFF9], NFC: [0xBFF9], NFD: [0x1108, 0x116F, 0x11B8], NFKC: [0xBFF9], NFKD: [0x1108, 0x116F, 0x11B8] },
+{ source: [0xBFFA], NFC: [0xBFFA], NFD: [0x1108, 0x116F, 0x11B9], NFKC: [0xBFFA], NFKD: [0x1108, 0x116F, 0x11B9] },
+{ source: [0xBFFB], NFC: [0xBFFB], NFD: [0x1108, 0x116F, 0x11BA], NFKC: [0xBFFB], NFKD: [0x1108, 0x116F, 0x11BA] },
+{ source: [0xBFFC], NFC: [0xBFFC], NFD: [0x1108, 0x116F, 0x11BB], NFKC: [0xBFFC], NFKD: [0x1108, 0x116F, 0x11BB] },
+{ source: [0xBFFD], NFC: [0xBFFD], NFD: [0x1108, 0x116F, 0x11BC], NFKC: [0xBFFD], NFKD: [0x1108, 0x116F, 0x11BC] },
+{ source: [0xBFFE], NFC: [0xBFFE], NFD: [0x1108, 0x116F, 0x11BD], NFKC: [0xBFFE], NFKD: [0x1108, 0x116F, 0x11BD] },
+{ source: [0xBFFF], NFC: [0xBFFF], NFD: [0x1108, 0x116F, 0x11BE], NFKC: [0xBFFF], NFKD: [0x1108, 0x116F, 0x11BE] },
+{ source: [0xC000], NFC: [0xC000], NFD: [0x1108, 0x116F, 0x11BF], NFKC: [0xC000], NFKD: [0x1108, 0x116F, 0x11BF] },
+{ source: [0xC001], NFC: [0xC001], NFD: [0x1108, 0x116F, 0x11C0], NFKC: [0xC001], NFKD: [0x1108, 0x116F, 0x11C0] },
+{ source: [0xC002], NFC: [0xC002], NFD: [0x1108, 0x116F, 0x11C1], NFKC: [0xC002], NFKD: [0x1108, 0x116F, 0x11C1] },
+{ source: [0xC003], NFC: [0xC003], NFD: [0x1108, 0x116F, 0x11C2], NFKC: [0xC003], NFKD: [0x1108, 0x116F, 0x11C2] },
+{ source: [0xC004], NFC: [0xC004], NFD: [0x1108, 0x1170], NFKC: [0xC004], NFKD: [0x1108, 0x1170] },
+{ source: [0xC005], NFC: [0xC005], NFD: [0x1108, 0x1170, 0x11A8], NFKC: [0xC005], NFKD: [0x1108, 0x1170, 0x11A8] },
+{ source: [0xC006], NFC: [0xC006], NFD: [0x1108, 0x1170, 0x11A9], NFKC: [0xC006], NFKD: [0x1108, 0x1170, 0x11A9] },
+{ source: [0xC007], NFC: [0xC007], NFD: [0x1108, 0x1170, 0x11AA], NFKC: [0xC007], NFKD: [0x1108, 0x1170, 0x11AA] },
+{ source: [0xC008], NFC: [0xC008], NFD: [0x1108, 0x1170, 0x11AB], NFKC: [0xC008], NFKD: [0x1108, 0x1170, 0x11AB] },
+{ source: [0xC009], NFC: [0xC009], NFD: [0x1108, 0x1170, 0x11AC], NFKC: [0xC009], NFKD: [0x1108, 0x1170, 0x11AC] },
+{ source: [0xC00A], NFC: [0xC00A], NFD: [0x1108, 0x1170, 0x11AD], NFKC: [0xC00A], NFKD: [0x1108, 0x1170, 0x11AD] },
+{ source: [0xC00B], NFC: [0xC00B], NFD: [0x1108, 0x1170, 0x11AE], NFKC: [0xC00B], NFKD: [0x1108, 0x1170, 0x11AE] },
+{ source: [0xC00C], NFC: [0xC00C], NFD: [0x1108, 0x1170, 0x11AF], NFKC: [0xC00C], NFKD: [0x1108, 0x1170, 0x11AF] },
+{ source: [0xC00D], NFC: [0xC00D], NFD: [0x1108, 0x1170, 0x11B0], NFKC: [0xC00D], NFKD: [0x1108, 0x1170, 0x11B0] },
+{ source: [0xC00E], NFC: [0xC00E], NFD: [0x1108, 0x1170, 0x11B1], NFKC: [0xC00E], NFKD: [0x1108, 0x1170, 0x11B1] },
+{ source: [0xC00F], NFC: [0xC00F], NFD: [0x1108, 0x1170, 0x11B2], NFKC: [0xC00F], NFKD: [0x1108, 0x1170, 0x11B2] },
+{ source: [0xC010], NFC: [0xC010], NFD: [0x1108, 0x1170, 0x11B3], NFKC: [0xC010], NFKD: [0x1108, 0x1170, 0x11B3] },
+{ source: [0xC011], NFC: [0xC011], NFD: [0x1108, 0x1170, 0x11B4], NFKC: [0xC011], NFKD: [0x1108, 0x1170, 0x11B4] },
+{ source: [0xC012], NFC: [0xC012], NFD: [0x1108, 0x1170, 0x11B5], NFKC: [0xC012], NFKD: [0x1108, 0x1170, 0x11B5] },
+{ source: [0xC013], NFC: [0xC013], NFD: [0x1108, 0x1170, 0x11B6], NFKC: [0xC013], NFKD: [0x1108, 0x1170, 0x11B6] },
+{ source: [0xC014], NFC: [0xC014], NFD: [0x1108, 0x1170, 0x11B7], NFKC: [0xC014], NFKD: [0x1108, 0x1170, 0x11B7] },
+{ source: [0xC015], NFC: [0xC015], NFD: [0x1108, 0x1170, 0x11B8], NFKC: [0xC015], NFKD: [0x1108, 0x1170, 0x11B8] },
+{ source: [0xC016], NFC: [0xC016], NFD: [0x1108, 0x1170, 0x11B9], NFKC: [0xC016], NFKD: [0x1108, 0x1170, 0x11B9] },
+{ source: [0xC017], NFC: [0xC017], NFD: [0x1108, 0x1170, 0x11BA], NFKC: [0xC017], NFKD: [0x1108, 0x1170, 0x11BA] },
+{ source: [0xC018], NFC: [0xC018], NFD: [0x1108, 0x1170, 0x11BB], NFKC: [0xC018], NFKD: [0x1108, 0x1170, 0x11BB] },
+{ source: [0xC019], NFC: [0xC019], NFD: [0x1108, 0x1170, 0x11BC], NFKC: [0xC019], NFKD: [0x1108, 0x1170, 0x11BC] },
+{ source: [0xC01A], NFC: [0xC01A], NFD: [0x1108, 0x1170, 0x11BD], NFKC: [0xC01A], NFKD: [0x1108, 0x1170, 0x11BD] },
+{ source: [0xC01B], NFC: [0xC01B], NFD: [0x1108, 0x1170, 0x11BE], NFKC: [0xC01B], NFKD: [0x1108, 0x1170, 0x11BE] },
+{ source: [0xC01C], NFC: [0xC01C], NFD: [0x1108, 0x1170, 0x11BF], NFKC: [0xC01C], NFKD: [0x1108, 0x1170, 0x11BF] },
+{ source: [0xC01D], NFC: [0xC01D], NFD: [0x1108, 0x1170, 0x11C0], NFKC: [0xC01D], NFKD: [0x1108, 0x1170, 0x11C0] },
+{ source: [0xC01E], NFC: [0xC01E], NFD: [0x1108, 0x1170, 0x11C1], NFKC: [0xC01E], NFKD: [0x1108, 0x1170, 0x11C1] },
+{ source: [0xC01F], NFC: [0xC01F], NFD: [0x1108, 0x1170, 0x11C2], NFKC: [0xC01F], NFKD: [0x1108, 0x1170, 0x11C2] },
+{ source: [0xC020], NFC: [0xC020], NFD: [0x1108, 0x1171], NFKC: [0xC020], NFKD: [0x1108, 0x1171] },
+{ source: [0xC021], NFC: [0xC021], NFD: [0x1108, 0x1171, 0x11A8], NFKC: [0xC021], NFKD: [0x1108, 0x1171, 0x11A8] },
+{ source: [0xC022], NFC: [0xC022], NFD: [0x1108, 0x1171, 0x11A9], NFKC: [0xC022], NFKD: [0x1108, 0x1171, 0x11A9] },
+{ source: [0xC023], NFC: [0xC023], NFD: [0x1108, 0x1171, 0x11AA], NFKC: [0xC023], NFKD: [0x1108, 0x1171, 0x11AA] },
+{ source: [0xC024], NFC: [0xC024], NFD: [0x1108, 0x1171, 0x11AB], NFKC: [0xC024], NFKD: [0x1108, 0x1171, 0x11AB] },
+{ source: [0xC025], NFC: [0xC025], NFD: [0x1108, 0x1171, 0x11AC], NFKC: [0xC025], NFKD: [0x1108, 0x1171, 0x11AC] },
+{ source: [0xC026], NFC: [0xC026], NFD: [0x1108, 0x1171, 0x11AD], NFKC: [0xC026], NFKD: [0x1108, 0x1171, 0x11AD] },
+{ source: [0xC027], NFC: [0xC027], NFD: [0x1108, 0x1171, 0x11AE], NFKC: [0xC027], NFKD: [0x1108, 0x1171, 0x11AE] },
+{ source: [0xC028], NFC: [0xC028], NFD: [0x1108, 0x1171, 0x11AF], NFKC: [0xC028], NFKD: [0x1108, 0x1171, 0x11AF] },
+{ source: [0xC029], NFC: [0xC029], NFD: [0x1108, 0x1171, 0x11B0], NFKC: [0xC029], NFKD: [0x1108, 0x1171, 0x11B0] },
+{ source: [0xC02A], NFC: [0xC02A], NFD: [0x1108, 0x1171, 0x11B1], NFKC: [0xC02A], NFKD: [0x1108, 0x1171, 0x11B1] },
+{ source: [0xC02B], NFC: [0xC02B], NFD: [0x1108, 0x1171, 0x11B2], NFKC: [0xC02B], NFKD: [0x1108, 0x1171, 0x11B2] },
+{ source: [0xC02C], NFC: [0xC02C], NFD: [0x1108, 0x1171, 0x11B3], NFKC: [0xC02C], NFKD: [0x1108, 0x1171, 0x11B3] },
+{ source: [0xC02D], NFC: [0xC02D], NFD: [0x1108, 0x1171, 0x11B4], NFKC: [0xC02D], NFKD: [0x1108, 0x1171, 0x11B4] },
+{ source: [0xC02E], NFC: [0xC02E], NFD: [0x1108, 0x1171, 0x11B5], NFKC: [0xC02E], NFKD: [0x1108, 0x1171, 0x11B5] },
+{ source: [0xC02F], NFC: [0xC02F], NFD: [0x1108, 0x1171, 0x11B6], NFKC: [0xC02F], NFKD: [0x1108, 0x1171, 0x11B6] },
+{ source: [0xC030], NFC: [0xC030], NFD: [0x1108, 0x1171, 0x11B7], NFKC: [0xC030], NFKD: [0x1108, 0x1171, 0x11B7] },
+{ source: [0xC031], NFC: [0xC031], NFD: [0x1108, 0x1171, 0x11B8], NFKC: [0xC031], NFKD: [0x1108, 0x1171, 0x11B8] },
+{ source: [0xC032], NFC: [0xC032], NFD: [0x1108, 0x1171, 0x11B9], NFKC: [0xC032], NFKD: [0x1108, 0x1171, 0x11B9] },
+{ source: [0xC033], NFC: [0xC033], NFD: [0x1108, 0x1171, 0x11BA], NFKC: [0xC033], NFKD: [0x1108, 0x1171, 0x11BA] },
+{ source: [0xC034], NFC: [0xC034], NFD: [0x1108, 0x1171, 0x11BB], NFKC: [0xC034], NFKD: [0x1108, 0x1171, 0x11BB] },
+{ source: [0xC035], NFC: [0xC035], NFD: [0x1108, 0x1171, 0x11BC], NFKC: [0xC035], NFKD: [0x1108, 0x1171, 0x11BC] },
+{ source: [0xC036], NFC: [0xC036], NFD: [0x1108, 0x1171, 0x11BD], NFKC: [0xC036], NFKD: [0x1108, 0x1171, 0x11BD] },
+{ source: [0xC037], NFC: [0xC037], NFD: [0x1108, 0x1171, 0x11BE], NFKC: [0xC037], NFKD: [0x1108, 0x1171, 0x11BE] },
+{ source: [0xC038], NFC: [0xC038], NFD: [0x1108, 0x1171, 0x11BF], NFKC: [0xC038], NFKD: [0x1108, 0x1171, 0x11BF] },
+{ source: [0xC039], NFC: [0xC039], NFD: [0x1108, 0x1171, 0x11C0], NFKC: [0xC039], NFKD: [0x1108, 0x1171, 0x11C0] },
+{ source: [0xC03A], NFC: [0xC03A], NFD: [0x1108, 0x1171, 0x11C1], NFKC: [0xC03A], NFKD: [0x1108, 0x1171, 0x11C1] },
+{ source: [0xC03B], NFC: [0xC03B], NFD: [0x1108, 0x1171, 0x11C2], NFKC: [0xC03B], NFKD: [0x1108, 0x1171, 0x11C2] },
+{ source: [0xC03C], NFC: [0xC03C], NFD: [0x1108, 0x1172], NFKC: [0xC03C], NFKD: [0x1108, 0x1172] },
+{ source: [0xC03D], NFC: [0xC03D], NFD: [0x1108, 0x1172, 0x11A8], NFKC: [0xC03D], NFKD: [0x1108, 0x1172, 0x11A8] },
+{ source: [0xC03E], NFC: [0xC03E], NFD: [0x1108, 0x1172, 0x11A9], NFKC: [0xC03E], NFKD: [0x1108, 0x1172, 0x11A9] },
+{ source: [0xC03F], NFC: [0xC03F], NFD: [0x1108, 0x1172, 0x11AA], NFKC: [0xC03F], NFKD: [0x1108, 0x1172, 0x11AA] },
+{ source: [0xC040], NFC: [0xC040], NFD: [0x1108, 0x1172, 0x11AB], NFKC: [0xC040], NFKD: [0x1108, 0x1172, 0x11AB] },
+{ source: [0xC041], NFC: [0xC041], NFD: [0x1108, 0x1172, 0x11AC], NFKC: [0xC041], NFKD: [0x1108, 0x1172, 0x11AC] },
+{ source: [0xC042], NFC: [0xC042], NFD: [0x1108, 0x1172, 0x11AD], NFKC: [0xC042], NFKD: [0x1108, 0x1172, 0x11AD] },
+{ source: [0xC043], NFC: [0xC043], NFD: [0x1108, 0x1172, 0x11AE], NFKC: [0xC043], NFKD: [0x1108, 0x1172, 0x11AE] },
+{ source: [0xC044], NFC: [0xC044], NFD: [0x1108, 0x1172, 0x11AF], NFKC: [0xC044], NFKD: [0x1108, 0x1172, 0x11AF] },
+{ source: [0xC045], NFC: [0xC045], NFD: [0x1108, 0x1172, 0x11B0], NFKC: [0xC045], NFKD: [0x1108, 0x1172, 0x11B0] },
+{ source: [0xC046], NFC: [0xC046], NFD: [0x1108, 0x1172, 0x11B1], NFKC: [0xC046], NFKD: [0x1108, 0x1172, 0x11B1] },
+{ source: [0xC047], NFC: [0xC047], NFD: [0x1108, 0x1172, 0x11B2], NFKC: [0xC047], NFKD: [0x1108, 0x1172, 0x11B2] },
+{ source: [0xC048], NFC: [0xC048], NFD: [0x1108, 0x1172, 0x11B3], NFKC: [0xC048], NFKD: [0x1108, 0x1172, 0x11B3] },
+{ source: [0xC049], NFC: [0xC049], NFD: [0x1108, 0x1172, 0x11B4], NFKC: [0xC049], NFKD: [0x1108, 0x1172, 0x11B4] },
+{ source: [0xC04A], NFC: [0xC04A], NFD: [0x1108, 0x1172, 0x11B5], NFKC: [0xC04A], NFKD: [0x1108, 0x1172, 0x11B5] },
+{ source: [0xC04B], NFC: [0xC04B], NFD: [0x1108, 0x1172, 0x11B6], NFKC: [0xC04B], NFKD: [0x1108, 0x1172, 0x11B6] },
+{ source: [0xC04C], NFC: [0xC04C], NFD: [0x1108, 0x1172, 0x11B7], NFKC: [0xC04C], NFKD: [0x1108, 0x1172, 0x11B7] },
+{ source: [0xC04D], NFC: [0xC04D], NFD: [0x1108, 0x1172, 0x11B8], NFKC: [0xC04D], NFKD: [0x1108, 0x1172, 0x11B8] },
+{ source: [0xC04E], NFC: [0xC04E], NFD: [0x1108, 0x1172, 0x11B9], NFKC: [0xC04E], NFKD: [0x1108, 0x1172, 0x11B9] },
+{ source: [0xC04F], NFC: [0xC04F], NFD: [0x1108, 0x1172, 0x11BA], NFKC: [0xC04F], NFKD: [0x1108, 0x1172, 0x11BA] },
+{ source: [0xC050], NFC: [0xC050], NFD: [0x1108, 0x1172, 0x11BB], NFKC: [0xC050], NFKD: [0x1108, 0x1172, 0x11BB] },
+{ source: [0xC051], NFC: [0xC051], NFD: [0x1108, 0x1172, 0x11BC], NFKC: [0xC051], NFKD: [0x1108, 0x1172, 0x11BC] },
+{ source: [0xC052], NFC: [0xC052], NFD: [0x1108, 0x1172, 0x11BD], NFKC: [0xC052], NFKD: [0x1108, 0x1172, 0x11BD] },
+{ source: [0xC053], NFC: [0xC053], NFD: [0x1108, 0x1172, 0x11BE], NFKC: [0xC053], NFKD: [0x1108, 0x1172, 0x11BE] },
+{ source: [0xC054], NFC: [0xC054], NFD: [0x1108, 0x1172, 0x11BF], NFKC: [0xC054], NFKD: [0x1108, 0x1172, 0x11BF] },
+{ source: [0xC055], NFC: [0xC055], NFD: [0x1108, 0x1172, 0x11C0], NFKC: [0xC055], NFKD: [0x1108, 0x1172, 0x11C0] },
+{ source: [0xC056], NFC: [0xC056], NFD: [0x1108, 0x1172, 0x11C1], NFKC: [0xC056], NFKD: [0x1108, 0x1172, 0x11C1] },
+{ source: [0xC057], NFC: [0xC057], NFD: [0x1108, 0x1172, 0x11C2], NFKC: [0xC057], NFKD: [0x1108, 0x1172, 0x11C2] },
+{ source: [0xC058], NFC: [0xC058], NFD: [0x1108, 0x1173], NFKC: [0xC058], NFKD: [0x1108, 0x1173] },
+{ source: [0xC059], NFC: [0xC059], NFD: [0x1108, 0x1173, 0x11A8], NFKC: [0xC059], NFKD: [0x1108, 0x1173, 0x11A8] },
+{ source: [0xC05A], NFC: [0xC05A], NFD: [0x1108, 0x1173, 0x11A9], NFKC: [0xC05A], NFKD: [0x1108, 0x1173, 0x11A9] },
+{ source: [0xC05B], NFC: [0xC05B], NFD: [0x1108, 0x1173, 0x11AA], NFKC: [0xC05B], NFKD: [0x1108, 0x1173, 0x11AA] },
+{ source: [0xC05C], NFC: [0xC05C], NFD: [0x1108, 0x1173, 0x11AB], NFKC: [0xC05C], NFKD: [0x1108, 0x1173, 0x11AB] },
+{ source: [0xC05D], NFC: [0xC05D], NFD: [0x1108, 0x1173, 0x11AC], NFKC: [0xC05D], NFKD: [0x1108, 0x1173, 0x11AC] },
+{ source: [0xC05E], NFC: [0xC05E], NFD: [0x1108, 0x1173, 0x11AD], NFKC: [0xC05E], NFKD: [0x1108, 0x1173, 0x11AD] },
+{ source: [0xC05F], NFC: [0xC05F], NFD: [0x1108, 0x1173, 0x11AE], NFKC: [0xC05F], NFKD: [0x1108, 0x1173, 0x11AE] },
+{ source: [0xC060], NFC: [0xC060], NFD: [0x1108, 0x1173, 0x11AF], NFKC: [0xC060], NFKD: [0x1108, 0x1173, 0x11AF] },
+{ source: [0xC061], NFC: [0xC061], NFD: [0x1108, 0x1173, 0x11B0], NFKC: [0xC061], NFKD: [0x1108, 0x1173, 0x11B0] },
+{ source: [0xC062], NFC: [0xC062], NFD: [0x1108, 0x1173, 0x11B1], NFKC: [0xC062], NFKD: [0x1108, 0x1173, 0x11B1] },
+{ source: [0xC063], NFC: [0xC063], NFD: [0x1108, 0x1173, 0x11B2], NFKC: [0xC063], NFKD: [0x1108, 0x1173, 0x11B2] },
+{ source: [0xC064], NFC: [0xC064], NFD: [0x1108, 0x1173, 0x11B3], NFKC: [0xC064], NFKD: [0x1108, 0x1173, 0x11B3] },
+{ source: [0xC065], NFC: [0xC065], NFD: [0x1108, 0x1173, 0x11B4], NFKC: [0xC065], NFKD: [0x1108, 0x1173, 0x11B4] },
+{ source: [0xC066], NFC: [0xC066], NFD: [0x1108, 0x1173, 0x11B5], NFKC: [0xC066], NFKD: [0x1108, 0x1173, 0x11B5] },
+{ source: [0xC067], NFC: [0xC067], NFD: [0x1108, 0x1173, 0x11B6], NFKC: [0xC067], NFKD: [0x1108, 0x1173, 0x11B6] },
+{ source: [0xC068], NFC: [0xC068], NFD: [0x1108, 0x1173, 0x11B7], NFKC: [0xC068], NFKD: [0x1108, 0x1173, 0x11B7] },
+{ source: [0xC069], NFC: [0xC069], NFD: [0x1108, 0x1173, 0x11B8], NFKC: [0xC069], NFKD: [0x1108, 0x1173, 0x11B8] },
+{ source: [0xC06A], NFC: [0xC06A], NFD: [0x1108, 0x1173, 0x11B9], NFKC: [0xC06A], NFKD: [0x1108, 0x1173, 0x11B9] },
+{ source: [0xC06B], NFC: [0xC06B], NFD: [0x1108, 0x1173, 0x11BA], NFKC: [0xC06B], NFKD: [0x1108, 0x1173, 0x11BA] },
+{ source: [0xC06C], NFC: [0xC06C], NFD: [0x1108, 0x1173, 0x11BB], NFKC: [0xC06C], NFKD: [0x1108, 0x1173, 0x11BB] },
+{ source: [0xC06D], NFC: [0xC06D], NFD: [0x1108, 0x1173, 0x11BC], NFKC: [0xC06D], NFKD: [0x1108, 0x1173, 0x11BC] },
+{ source: [0xC06E], NFC: [0xC06E], NFD: [0x1108, 0x1173, 0x11BD], NFKC: [0xC06E], NFKD: [0x1108, 0x1173, 0x11BD] },
+{ source: [0xC06F], NFC: [0xC06F], NFD: [0x1108, 0x1173, 0x11BE], NFKC: [0xC06F], NFKD: [0x1108, 0x1173, 0x11BE] },
+{ source: [0xC070], NFC: [0xC070], NFD: [0x1108, 0x1173, 0x11BF], NFKC: [0xC070], NFKD: [0x1108, 0x1173, 0x11BF] },
+{ source: [0xC071], NFC: [0xC071], NFD: [0x1108, 0x1173, 0x11C0], NFKC: [0xC071], NFKD: [0x1108, 0x1173, 0x11C0] },
+{ source: [0xC072], NFC: [0xC072], NFD: [0x1108, 0x1173, 0x11C1], NFKC: [0xC072], NFKD: [0x1108, 0x1173, 0x11C1] },
+{ source: [0xC073], NFC: [0xC073], NFD: [0x1108, 0x1173, 0x11C2], NFKC: [0xC073], NFKD: [0x1108, 0x1173, 0x11C2] },
+{ source: [0xC074], NFC: [0xC074], NFD: [0x1108, 0x1174], NFKC: [0xC074], NFKD: [0x1108, 0x1174] },
+{ source: [0xC075], NFC: [0xC075], NFD: [0x1108, 0x1174, 0x11A8], NFKC: [0xC075], NFKD: [0x1108, 0x1174, 0x11A8] },
+{ source: [0xC076], NFC: [0xC076], NFD: [0x1108, 0x1174, 0x11A9], NFKC: [0xC076], NFKD: [0x1108, 0x1174, 0x11A9] },
+{ source: [0xC077], NFC: [0xC077], NFD: [0x1108, 0x1174, 0x11AA], NFKC: [0xC077], NFKD: [0x1108, 0x1174, 0x11AA] },
+{ source: [0xC078], NFC: [0xC078], NFD: [0x1108, 0x1174, 0x11AB], NFKC: [0xC078], NFKD: [0x1108, 0x1174, 0x11AB] },
+{ source: [0xC079], NFC: [0xC079], NFD: [0x1108, 0x1174, 0x11AC], NFKC: [0xC079], NFKD: [0x1108, 0x1174, 0x11AC] },
+{ source: [0xC07A], NFC: [0xC07A], NFD: [0x1108, 0x1174, 0x11AD], NFKC: [0xC07A], NFKD: [0x1108, 0x1174, 0x11AD] },
+{ source: [0xC07B], NFC: [0xC07B], NFD: [0x1108, 0x1174, 0x11AE], NFKC: [0xC07B], NFKD: [0x1108, 0x1174, 0x11AE] },
+{ source: [0xC07C], NFC: [0xC07C], NFD: [0x1108, 0x1174, 0x11AF], NFKC: [0xC07C], NFKD: [0x1108, 0x1174, 0x11AF] },
+{ source: [0xC07D], NFC: [0xC07D], NFD: [0x1108, 0x1174, 0x11B0], NFKC: [0xC07D], NFKD: [0x1108, 0x1174, 0x11B0] },
+{ source: [0xC07E], NFC: [0xC07E], NFD: [0x1108, 0x1174, 0x11B1], NFKC: [0xC07E], NFKD: [0x1108, 0x1174, 0x11B1] },
+{ source: [0xC07F], NFC: [0xC07F], NFD: [0x1108, 0x1174, 0x11B2], NFKC: [0xC07F], NFKD: [0x1108, 0x1174, 0x11B2] },
+{ source: [0xC080], NFC: [0xC080], NFD: [0x1108, 0x1174, 0x11B3], NFKC: [0xC080], NFKD: [0x1108, 0x1174, 0x11B3] },
+{ source: [0xC081], NFC: [0xC081], NFD: [0x1108, 0x1174, 0x11B4], NFKC: [0xC081], NFKD: [0x1108, 0x1174, 0x11B4] },
+{ source: [0xC082], NFC: [0xC082], NFD: [0x1108, 0x1174, 0x11B5], NFKC: [0xC082], NFKD: [0x1108, 0x1174, 0x11B5] },
+{ source: [0xC083], NFC: [0xC083], NFD: [0x1108, 0x1174, 0x11B6], NFKC: [0xC083], NFKD: [0x1108, 0x1174, 0x11B6] },
+{ source: [0xC084], NFC: [0xC084], NFD: [0x1108, 0x1174, 0x11B7], NFKC: [0xC084], NFKD: [0x1108, 0x1174, 0x11B7] },
+{ source: [0xC085], NFC: [0xC085], NFD: [0x1108, 0x1174, 0x11B8], NFKC: [0xC085], NFKD: [0x1108, 0x1174, 0x11B8] },
+{ source: [0xC086], NFC: [0xC086], NFD: [0x1108, 0x1174, 0x11B9], NFKC: [0xC086], NFKD: [0x1108, 0x1174, 0x11B9] },
+{ source: [0xC087], NFC: [0xC087], NFD: [0x1108, 0x1174, 0x11BA], NFKC: [0xC087], NFKD: [0x1108, 0x1174, 0x11BA] },
+{ source: [0xC088], NFC: [0xC088], NFD: [0x1108, 0x1174, 0x11BB], NFKC: [0xC088], NFKD: [0x1108, 0x1174, 0x11BB] },
+{ source: [0xC089], NFC: [0xC089], NFD: [0x1108, 0x1174, 0x11BC], NFKC: [0xC089], NFKD: [0x1108, 0x1174, 0x11BC] },
+{ source: [0xC08A], NFC: [0xC08A], NFD: [0x1108, 0x1174, 0x11BD], NFKC: [0xC08A], NFKD: [0x1108, 0x1174, 0x11BD] },
+{ source: [0xC08B], NFC: [0xC08B], NFD: [0x1108, 0x1174, 0x11BE], NFKC: [0xC08B], NFKD: [0x1108, 0x1174, 0x11BE] },
+{ source: [0xC08C], NFC: [0xC08C], NFD: [0x1108, 0x1174, 0x11BF], NFKC: [0xC08C], NFKD: [0x1108, 0x1174, 0x11BF] },
+{ source: [0xC08D], NFC: [0xC08D], NFD: [0x1108, 0x1174, 0x11C0], NFKC: [0xC08D], NFKD: [0x1108, 0x1174, 0x11C0] },
+{ source: [0xC08E], NFC: [0xC08E], NFD: [0x1108, 0x1174, 0x11C1], NFKC: [0xC08E], NFKD: [0x1108, 0x1174, 0x11C1] },
+{ source: [0xC08F], NFC: [0xC08F], NFD: [0x1108, 0x1174, 0x11C2], NFKC: [0xC08F], NFKD: [0x1108, 0x1174, 0x11C2] },
+{ source: [0xC090], NFC: [0xC090], NFD: [0x1108, 0x1175], NFKC: [0xC090], NFKD: [0x1108, 0x1175] },
+{ source: [0xC091], NFC: [0xC091], NFD: [0x1108, 0x1175, 0x11A8], NFKC: [0xC091], NFKD: [0x1108, 0x1175, 0x11A8] },
+{ source: [0xC092], NFC: [0xC092], NFD: [0x1108, 0x1175, 0x11A9], NFKC: [0xC092], NFKD: [0x1108, 0x1175, 0x11A9] },
+{ source: [0xC093], NFC: [0xC093], NFD: [0x1108, 0x1175, 0x11AA], NFKC: [0xC093], NFKD: [0x1108, 0x1175, 0x11AA] },
+{ source: [0xC094], NFC: [0xC094], NFD: [0x1108, 0x1175, 0x11AB], NFKC: [0xC094], NFKD: [0x1108, 0x1175, 0x11AB] },
+{ source: [0xC095], NFC: [0xC095], NFD: [0x1108, 0x1175, 0x11AC], NFKC: [0xC095], NFKD: [0x1108, 0x1175, 0x11AC] },
+{ source: [0xC096], NFC: [0xC096], NFD: [0x1108, 0x1175, 0x11AD], NFKC: [0xC096], NFKD: [0x1108, 0x1175, 0x11AD] },
+{ source: [0xC097], NFC: [0xC097], NFD: [0x1108, 0x1175, 0x11AE], NFKC: [0xC097], NFKD: [0x1108, 0x1175, 0x11AE] },
+{ source: [0xC098], NFC: [0xC098], NFD: [0x1108, 0x1175, 0x11AF], NFKC: [0xC098], NFKD: [0x1108, 0x1175, 0x11AF] },
+{ source: [0xC099], NFC: [0xC099], NFD: [0x1108, 0x1175, 0x11B0], NFKC: [0xC099], NFKD: [0x1108, 0x1175, 0x11B0] },
+{ source: [0xC09A], NFC: [0xC09A], NFD: [0x1108, 0x1175, 0x11B1], NFKC: [0xC09A], NFKD: [0x1108, 0x1175, 0x11B1] },
+{ source: [0xC09B], NFC: [0xC09B], NFD: [0x1108, 0x1175, 0x11B2], NFKC: [0xC09B], NFKD: [0x1108, 0x1175, 0x11B2] },
+{ source: [0xC09C], NFC: [0xC09C], NFD: [0x1108, 0x1175, 0x11B3], NFKC: [0xC09C], NFKD: [0x1108, 0x1175, 0x11B3] },
+{ source: [0xC09D], NFC: [0xC09D], NFD: [0x1108, 0x1175, 0x11B4], NFKC: [0xC09D], NFKD: [0x1108, 0x1175, 0x11B4] },
+{ source: [0xC09E], NFC: [0xC09E], NFD: [0x1108, 0x1175, 0x11B5], NFKC: [0xC09E], NFKD: [0x1108, 0x1175, 0x11B5] },
+{ source: [0xC09F], NFC: [0xC09F], NFD: [0x1108, 0x1175, 0x11B6], NFKC: [0xC09F], NFKD: [0x1108, 0x1175, 0x11B6] },
+{ source: [0xC0A0], NFC: [0xC0A0], NFD: [0x1108, 0x1175, 0x11B7], NFKC: [0xC0A0], NFKD: [0x1108, 0x1175, 0x11B7] },
+{ source: [0xC0A1], NFC: [0xC0A1], NFD: [0x1108, 0x1175, 0x11B8], NFKC: [0xC0A1], NFKD: [0x1108, 0x1175, 0x11B8] },
+{ source: [0xC0A2], NFC: [0xC0A2], NFD: [0x1108, 0x1175, 0x11B9], NFKC: [0xC0A2], NFKD: [0x1108, 0x1175, 0x11B9] },
+{ source: [0xC0A3], NFC: [0xC0A3], NFD: [0x1108, 0x1175, 0x11BA], NFKC: [0xC0A3], NFKD: [0x1108, 0x1175, 0x11BA] },
+{ source: [0xC0A4], NFC: [0xC0A4], NFD: [0x1108, 0x1175, 0x11BB], NFKC: [0xC0A4], NFKD: [0x1108, 0x1175, 0x11BB] },
+{ source: [0xC0A5], NFC: [0xC0A5], NFD: [0x1108, 0x1175, 0x11BC], NFKC: [0xC0A5], NFKD: [0x1108, 0x1175, 0x11BC] },
+{ source: [0xC0A6], NFC: [0xC0A6], NFD: [0x1108, 0x1175, 0x11BD], NFKC: [0xC0A6], NFKD: [0x1108, 0x1175, 0x11BD] },
+{ source: [0xC0A7], NFC: [0xC0A7], NFD: [0x1108, 0x1175, 0x11BE], NFKC: [0xC0A7], NFKD: [0x1108, 0x1175, 0x11BE] },
+{ source: [0xC0A8], NFC: [0xC0A8], NFD: [0x1108, 0x1175, 0x11BF], NFKC: [0xC0A8], NFKD: [0x1108, 0x1175, 0x11BF] },
+{ source: [0xC0A9], NFC: [0xC0A9], NFD: [0x1108, 0x1175, 0x11C0], NFKC: [0xC0A9], NFKD: [0x1108, 0x1175, 0x11C0] },
+{ source: [0xC0AA], NFC: [0xC0AA], NFD: [0x1108, 0x1175, 0x11C1], NFKC: [0xC0AA], NFKD: [0x1108, 0x1175, 0x11C1] },
+{ source: [0xC0AB], NFC: [0xC0AB], NFD: [0x1108, 0x1175, 0x11C2], NFKC: [0xC0AB], NFKD: [0x1108, 0x1175, 0x11C2] },
+{ source: [0xC0AC], NFC: [0xC0AC], NFD: [0x1109, 0x1161], NFKC: [0xC0AC], NFKD: [0x1109, 0x1161] },
+{ source: [0xC0AD], NFC: [0xC0AD], NFD: [0x1109, 0x1161, 0x11A8], NFKC: [0xC0AD], NFKD: [0x1109, 0x1161, 0x11A8] },
+{ source: [0xC0AE], NFC: [0xC0AE], NFD: [0x1109, 0x1161, 0x11A9], NFKC: [0xC0AE], NFKD: [0x1109, 0x1161, 0x11A9] },
+{ source: [0xC0AF], NFC: [0xC0AF], NFD: [0x1109, 0x1161, 0x11AA], NFKC: [0xC0AF], NFKD: [0x1109, 0x1161, 0x11AA] },
+{ source: [0xC0B0], NFC: [0xC0B0], NFD: [0x1109, 0x1161, 0x11AB], NFKC: [0xC0B0], NFKD: [0x1109, 0x1161, 0x11AB] },
+{ source: [0xC0B1], NFC: [0xC0B1], NFD: [0x1109, 0x1161, 0x11AC], NFKC: [0xC0B1], NFKD: [0x1109, 0x1161, 0x11AC] },
+{ source: [0xC0B2], NFC: [0xC0B2], NFD: [0x1109, 0x1161, 0x11AD], NFKC: [0xC0B2], NFKD: [0x1109, 0x1161, 0x11AD] },
+{ source: [0xC0B3], NFC: [0xC0B3], NFD: [0x1109, 0x1161, 0x11AE], NFKC: [0xC0B3], NFKD: [0x1109, 0x1161, 0x11AE] },
+{ source: [0xC0B4], NFC: [0xC0B4], NFD: [0x1109, 0x1161, 0x11AF], NFKC: [0xC0B4], NFKD: [0x1109, 0x1161, 0x11AF] },
+{ source: [0xC0B5], NFC: [0xC0B5], NFD: [0x1109, 0x1161, 0x11B0], NFKC: [0xC0B5], NFKD: [0x1109, 0x1161, 0x11B0] },
+{ source: [0xC0B6], NFC: [0xC0B6], NFD: [0x1109, 0x1161, 0x11B1], NFKC: [0xC0B6], NFKD: [0x1109, 0x1161, 0x11B1] },
+{ source: [0xC0B7], NFC: [0xC0B7], NFD: [0x1109, 0x1161, 0x11B2], NFKC: [0xC0B7], NFKD: [0x1109, 0x1161, 0x11B2] },
+{ source: [0xC0B8], NFC: [0xC0B8], NFD: [0x1109, 0x1161, 0x11B3], NFKC: [0xC0B8], NFKD: [0x1109, 0x1161, 0x11B3] },
+{ source: [0xC0B9], NFC: [0xC0B9], NFD: [0x1109, 0x1161, 0x11B4], NFKC: [0xC0B9], NFKD: [0x1109, 0x1161, 0x11B4] },
+{ source: [0xC0BA], NFC: [0xC0BA], NFD: [0x1109, 0x1161, 0x11B5], NFKC: [0xC0BA], NFKD: [0x1109, 0x1161, 0x11B5] },
+{ source: [0xC0BB], NFC: [0xC0BB], NFD: [0x1109, 0x1161, 0x11B6], NFKC: [0xC0BB], NFKD: [0x1109, 0x1161, 0x11B6] },
+{ source: [0xC0BC], NFC: [0xC0BC], NFD: [0x1109, 0x1161, 0x11B7], NFKC: [0xC0BC], NFKD: [0x1109, 0x1161, 0x11B7] },
+{ source: [0xC0BD], NFC: [0xC0BD], NFD: [0x1109, 0x1161, 0x11B8], NFKC: [0xC0BD], NFKD: [0x1109, 0x1161, 0x11B8] },
+{ source: [0xC0BE], NFC: [0xC0BE], NFD: [0x1109, 0x1161, 0x11B9], NFKC: [0xC0BE], NFKD: [0x1109, 0x1161, 0x11B9] },
+{ source: [0xC0BF], NFC: [0xC0BF], NFD: [0x1109, 0x1161, 0x11BA], NFKC: [0xC0BF], NFKD: [0x1109, 0x1161, 0x11BA] },
+{ source: [0xC0C0], NFC: [0xC0C0], NFD: [0x1109, 0x1161, 0x11BB], NFKC: [0xC0C0], NFKD: [0x1109, 0x1161, 0x11BB] },
+{ source: [0xC0C1], NFC: [0xC0C1], NFD: [0x1109, 0x1161, 0x11BC], NFKC: [0xC0C1], NFKD: [0x1109, 0x1161, 0x11BC] },
+{ source: [0xC0C2], NFC: [0xC0C2], NFD: [0x1109, 0x1161, 0x11BD], NFKC: [0xC0C2], NFKD: [0x1109, 0x1161, 0x11BD] },
+{ source: [0xC0C3], NFC: [0xC0C3], NFD: [0x1109, 0x1161, 0x11BE], NFKC: [0xC0C3], NFKD: [0x1109, 0x1161, 0x11BE] },
+{ source: [0xC0C4], NFC: [0xC0C4], NFD: [0x1109, 0x1161, 0x11BF], NFKC: [0xC0C4], NFKD: [0x1109, 0x1161, 0x11BF] },
+{ source: [0xC0C5], NFC: [0xC0C5], NFD: [0x1109, 0x1161, 0x11C0], NFKC: [0xC0C5], NFKD: [0x1109, 0x1161, 0x11C0] },
+{ source: [0xC0C6], NFC: [0xC0C6], NFD: [0x1109, 0x1161, 0x11C1], NFKC: [0xC0C6], NFKD: [0x1109, 0x1161, 0x11C1] },
+{ source: [0xC0C7], NFC: [0xC0C7], NFD: [0x1109, 0x1161, 0x11C2], NFKC: [0xC0C7], NFKD: [0x1109, 0x1161, 0x11C2] },
+{ source: [0xC0C8], NFC: [0xC0C8], NFD: [0x1109, 0x1162], NFKC: [0xC0C8], NFKD: [0x1109, 0x1162] },
+{ source: [0xC0C9], NFC: [0xC0C9], NFD: [0x1109, 0x1162, 0x11A8], NFKC: [0xC0C9], NFKD: [0x1109, 0x1162, 0x11A8] },
+{ source: [0xC0CA], NFC: [0xC0CA], NFD: [0x1109, 0x1162, 0x11A9], NFKC: [0xC0CA], NFKD: [0x1109, 0x1162, 0x11A9] },
+{ source: [0xC0CB], NFC: [0xC0CB], NFD: [0x1109, 0x1162, 0x11AA], NFKC: [0xC0CB], NFKD: [0x1109, 0x1162, 0x11AA] },
+{ source: [0xC0CC], NFC: [0xC0CC], NFD: [0x1109, 0x1162, 0x11AB], NFKC: [0xC0CC], NFKD: [0x1109, 0x1162, 0x11AB] },
+{ source: [0xC0CD], NFC: [0xC0CD], NFD: [0x1109, 0x1162, 0x11AC], NFKC: [0xC0CD], NFKD: [0x1109, 0x1162, 0x11AC] },
+{ source: [0xC0CE], NFC: [0xC0CE], NFD: [0x1109, 0x1162, 0x11AD], NFKC: [0xC0CE], NFKD: [0x1109, 0x1162, 0x11AD] },
+{ source: [0xC0CF], NFC: [0xC0CF], NFD: [0x1109, 0x1162, 0x11AE], NFKC: [0xC0CF], NFKD: [0x1109, 0x1162, 0x11AE] },
+{ source: [0xC0D0], NFC: [0xC0D0], NFD: [0x1109, 0x1162, 0x11AF], NFKC: [0xC0D0], NFKD: [0x1109, 0x1162, 0x11AF] },
+{ source: [0xC0D1], NFC: [0xC0D1], NFD: [0x1109, 0x1162, 0x11B0], NFKC: [0xC0D1], NFKD: [0x1109, 0x1162, 0x11B0] },
+{ source: [0xC0D2], NFC: [0xC0D2], NFD: [0x1109, 0x1162, 0x11B1], NFKC: [0xC0D2], NFKD: [0x1109, 0x1162, 0x11B1] },
+{ source: [0xC0D3], NFC: [0xC0D3], NFD: [0x1109, 0x1162, 0x11B2], NFKC: [0xC0D3], NFKD: [0x1109, 0x1162, 0x11B2] },
+{ source: [0xC0D4], NFC: [0xC0D4], NFD: [0x1109, 0x1162, 0x11B3], NFKC: [0xC0D4], NFKD: [0x1109, 0x1162, 0x11B3] },
+{ source: [0xC0D5], NFC: [0xC0D5], NFD: [0x1109, 0x1162, 0x11B4], NFKC: [0xC0D5], NFKD: [0x1109, 0x1162, 0x11B4] },
+{ source: [0xC0D6], NFC: [0xC0D6], NFD: [0x1109, 0x1162, 0x11B5], NFKC: [0xC0D6], NFKD: [0x1109, 0x1162, 0x11B5] },
+{ source: [0xC0D7], NFC: [0xC0D7], NFD: [0x1109, 0x1162, 0x11B6], NFKC: [0xC0D7], NFKD: [0x1109, 0x1162, 0x11B6] },
+{ source: [0xC0D8], NFC: [0xC0D8], NFD: [0x1109, 0x1162, 0x11B7], NFKC: [0xC0D8], NFKD: [0x1109, 0x1162, 0x11B7] },
+{ source: [0xC0D9], NFC: [0xC0D9], NFD: [0x1109, 0x1162, 0x11B8], NFKC: [0xC0D9], NFKD: [0x1109, 0x1162, 0x11B8] },
+{ source: [0xC0DA], NFC: [0xC0DA], NFD: [0x1109, 0x1162, 0x11B9], NFKC: [0xC0DA], NFKD: [0x1109, 0x1162, 0x11B9] },
+{ source: [0xC0DB], NFC: [0xC0DB], NFD: [0x1109, 0x1162, 0x11BA], NFKC: [0xC0DB], NFKD: [0x1109, 0x1162, 0x11BA] },
+{ source: [0xC0DC], NFC: [0xC0DC], NFD: [0x1109, 0x1162, 0x11BB], NFKC: [0xC0DC], NFKD: [0x1109, 0x1162, 0x11BB] },
+{ source: [0xC0DD], NFC: [0xC0DD], NFD: [0x1109, 0x1162, 0x11BC], NFKC: [0xC0DD], NFKD: [0x1109, 0x1162, 0x11BC] },
+{ source: [0xC0DE], NFC: [0xC0DE], NFD: [0x1109, 0x1162, 0x11BD], NFKC: [0xC0DE], NFKD: [0x1109, 0x1162, 0x11BD] },
+{ source: [0xC0DF], NFC: [0xC0DF], NFD: [0x1109, 0x1162, 0x11BE], NFKC: [0xC0DF], NFKD: [0x1109, 0x1162, 0x11BE] },
+{ source: [0xC0E0], NFC: [0xC0E0], NFD: [0x1109, 0x1162, 0x11BF], NFKC: [0xC0E0], NFKD: [0x1109, 0x1162, 0x11BF] },
+{ source: [0xC0E1], NFC: [0xC0E1], NFD: [0x1109, 0x1162, 0x11C0], NFKC: [0xC0E1], NFKD: [0x1109, 0x1162, 0x11C0] },
+{ source: [0xC0E2], NFC: [0xC0E2], NFD: [0x1109, 0x1162, 0x11C1], NFKC: [0xC0E2], NFKD: [0x1109, 0x1162, 0x11C1] },
+{ source: [0xC0E3], NFC: [0xC0E3], NFD: [0x1109, 0x1162, 0x11C2], NFKC: [0xC0E3], NFKD: [0x1109, 0x1162, 0x11C2] },
+{ source: [0xC0E4], NFC: [0xC0E4], NFD: [0x1109, 0x1163], NFKC: [0xC0E4], NFKD: [0x1109, 0x1163] },
+{ source: [0xC0E5], NFC: [0xC0E5], NFD: [0x1109, 0x1163, 0x11A8], NFKC: [0xC0E5], NFKD: [0x1109, 0x1163, 0x11A8] },
+{ source: [0xC0E6], NFC: [0xC0E6], NFD: [0x1109, 0x1163, 0x11A9], NFKC: [0xC0E6], NFKD: [0x1109, 0x1163, 0x11A9] },
+{ source: [0xC0E7], NFC: [0xC0E7], NFD: [0x1109, 0x1163, 0x11AA], NFKC: [0xC0E7], NFKD: [0x1109, 0x1163, 0x11AA] },
+{ source: [0xC0E8], NFC: [0xC0E8], NFD: [0x1109, 0x1163, 0x11AB], NFKC: [0xC0E8], NFKD: [0x1109, 0x1163, 0x11AB] },
+{ source: [0xC0E9], NFC: [0xC0E9], NFD: [0x1109, 0x1163, 0x11AC], NFKC: [0xC0E9], NFKD: [0x1109, 0x1163, 0x11AC] },
+{ source: [0xC0EA], NFC: [0xC0EA], NFD: [0x1109, 0x1163, 0x11AD], NFKC: [0xC0EA], NFKD: [0x1109, 0x1163, 0x11AD] },
+{ source: [0xC0EB], NFC: [0xC0EB], NFD: [0x1109, 0x1163, 0x11AE], NFKC: [0xC0EB], NFKD: [0x1109, 0x1163, 0x11AE] },
+{ source: [0xC0EC], NFC: [0xC0EC], NFD: [0x1109, 0x1163, 0x11AF], NFKC: [0xC0EC], NFKD: [0x1109, 0x1163, 0x11AF] },
+{ source: [0xC0ED], NFC: [0xC0ED], NFD: [0x1109, 0x1163, 0x11B0], NFKC: [0xC0ED], NFKD: [0x1109, 0x1163, 0x11B0] },
+{ source: [0xC0EE], NFC: [0xC0EE], NFD: [0x1109, 0x1163, 0x11B1], NFKC: [0xC0EE], NFKD: [0x1109, 0x1163, 0x11B1] },
+{ source: [0xC0EF], NFC: [0xC0EF], NFD: [0x1109, 0x1163, 0x11B2], NFKC: [0xC0EF], NFKD: [0x1109, 0x1163, 0x11B2] },
+{ source: [0xC0F0], NFC: [0xC0F0], NFD: [0x1109, 0x1163, 0x11B3], NFKC: [0xC0F0], NFKD: [0x1109, 0x1163, 0x11B3] },
+{ source: [0xC0F1], NFC: [0xC0F1], NFD: [0x1109, 0x1163, 0x11B4], NFKC: [0xC0F1], NFKD: [0x1109, 0x1163, 0x11B4] },
+{ source: [0xC0F2], NFC: [0xC0F2], NFD: [0x1109, 0x1163, 0x11B5], NFKC: [0xC0F2], NFKD: [0x1109, 0x1163, 0x11B5] },
+{ source: [0xC0F3], NFC: [0xC0F3], NFD: [0x1109, 0x1163, 0x11B6], NFKC: [0xC0F3], NFKD: [0x1109, 0x1163, 0x11B6] },
+{ source: [0xC0F4], NFC: [0xC0F4], NFD: [0x1109, 0x1163, 0x11B7], NFKC: [0xC0F4], NFKD: [0x1109, 0x1163, 0x11B7] },
+{ source: [0xC0F5], NFC: [0xC0F5], NFD: [0x1109, 0x1163, 0x11B8], NFKC: [0xC0F5], NFKD: [0x1109, 0x1163, 0x11B8] },
+{ source: [0xC0F6], NFC: [0xC0F6], NFD: [0x1109, 0x1163, 0x11B9], NFKC: [0xC0F6], NFKD: [0x1109, 0x1163, 0x11B9] },
+{ source: [0xC0F7], NFC: [0xC0F7], NFD: [0x1109, 0x1163, 0x11BA], NFKC: [0xC0F7], NFKD: [0x1109, 0x1163, 0x11BA] },
+{ source: [0xC0F8], NFC: [0xC0F8], NFD: [0x1109, 0x1163, 0x11BB], NFKC: [0xC0F8], NFKD: [0x1109, 0x1163, 0x11BB] },
+{ source: [0xC0F9], NFC: [0xC0F9], NFD: [0x1109, 0x1163, 0x11BC], NFKC: [0xC0F9], NFKD: [0x1109, 0x1163, 0x11BC] },
+{ source: [0xC0FA], NFC: [0xC0FA], NFD: [0x1109, 0x1163, 0x11BD], NFKC: [0xC0FA], NFKD: [0x1109, 0x1163, 0x11BD] },
+{ source: [0xC0FB], NFC: [0xC0FB], NFD: [0x1109, 0x1163, 0x11BE], NFKC: [0xC0FB], NFKD: [0x1109, 0x1163, 0x11BE] },
+{ source: [0xC0FC], NFC: [0xC0FC], NFD: [0x1109, 0x1163, 0x11BF], NFKC: [0xC0FC], NFKD: [0x1109, 0x1163, 0x11BF] },
+{ source: [0xC0FD], NFC: [0xC0FD], NFD: [0x1109, 0x1163, 0x11C0], NFKC: [0xC0FD], NFKD: [0x1109, 0x1163, 0x11C0] },
+{ source: [0xC0FE], NFC: [0xC0FE], NFD: [0x1109, 0x1163, 0x11C1], NFKC: [0xC0FE], NFKD: [0x1109, 0x1163, 0x11C1] },
+{ source: [0xC0FF], NFC: [0xC0FF], NFD: [0x1109, 0x1163, 0x11C2], NFKC: [0xC0FF], NFKD: [0x1109, 0x1163, 0x11C2] },
+{ source: [0xC100], NFC: [0xC100], NFD: [0x1109, 0x1164], NFKC: [0xC100], NFKD: [0x1109, 0x1164] },
+{ source: [0xC101], NFC: [0xC101], NFD: [0x1109, 0x1164, 0x11A8], NFKC: [0xC101], NFKD: [0x1109, 0x1164, 0x11A8] },
+{ source: [0xC102], NFC: [0xC102], NFD: [0x1109, 0x1164, 0x11A9], NFKC: [0xC102], NFKD: [0x1109, 0x1164, 0x11A9] },
+{ source: [0xC103], NFC: [0xC103], NFD: [0x1109, 0x1164, 0x11AA], NFKC: [0xC103], NFKD: [0x1109, 0x1164, 0x11AA] },
+{ source: [0xC104], NFC: [0xC104], NFD: [0x1109, 0x1164, 0x11AB], NFKC: [0xC104], NFKD: [0x1109, 0x1164, 0x11AB] },
+{ source: [0xC105], NFC: [0xC105], NFD: [0x1109, 0x1164, 0x11AC], NFKC: [0xC105], NFKD: [0x1109, 0x1164, 0x11AC] },
+{ source: [0xC106], NFC: [0xC106], NFD: [0x1109, 0x1164, 0x11AD], NFKC: [0xC106], NFKD: [0x1109, 0x1164, 0x11AD] },
+{ source: [0xC107], NFC: [0xC107], NFD: [0x1109, 0x1164, 0x11AE], NFKC: [0xC107], NFKD: [0x1109, 0x1164, 0x11AE] },
+{ source: [0xC108], NFC: [0xC108], NFD: [0x1109, 0x1164, 0x11AF], NFKC: [0xC108], NFKD: [0x1109, 0x1164, 0x11AF] },
+{ source: [0xC109], NFC: [0xC109], NFD: [0x1109, 0x1164, 0x11B0], NFKC: [0xC109], NFKD: [0x1109, 0x1164, 0x11B0] },
+{ source: [0xC10A], NFC: [0xC10A], NFD: [0x1109, 0x1164, 0x11B1], NFKC: [0xC10A], NFKD: [0x1109, 0x1164, 0x11B1] },
+{ source: [0xC10B], NFC: [0xC10B], NFD: [0x1109, 0x1164, 0x11B2], NFKC: [0xC10B], NFKD: [0x1109, 0x1164, 0x11B2] },
+{ source: [0xC10C], NFC: [0xC10C], NFD: [0x1109, 0x1164, 0x11B3], NFKC: [0xC10C], NFKD: [0x1109, 0x1164, 0x11B3] },
+{ source: [0xC10D], NFC: [0xC10D], NFD: [0x1109, 0x1164, 0x11B4], NFKC: [0xC10D], NFKD: [0x1109, 0x1164, 0x11B4] },
+{ source: [0xC10E], NFC: [0xC10E], NFD: [0x1109, 0x1164, 0x11B5], NFKC: [0xC10E], NFKD: [0x1109, 0x1164, 0x11B5] },
+{ source: [0xC10F], NFC: [0xC10F], NFD: [0x1109, 0x1164, 0x11B6], NFKC: [0xC10F], NFKD: [0x1109, 0x1164, 0x11B6] },
+{ source: [0xC110], NFC: [0xC110], NFD: [0x1109, 0x1164, 0x11B7], NFKC: [0xC110], NFKD: [0x1109, 0x1164, 0x11B7] },
+{ source: [0xC111], NFC: [0xC111], NFD: [0x1109, 0x1164, 0x11B8], NFKC: [0xC111], NFKD: [0x1109, 0x1164, 0x11B8] },
+{ source: [0xC112], NFC: [0xC112], NFD: [0x1109, 0x1164, 0x11B9], NFKC: [0xC112], NFKD: [0x1109, 0x1164, 0x11B9] },
+{ source: [0xC113], NFC: [0xC113], NFD: [0x1109, 0x1164, 0x11BA], NFKC: [0xC113], NFKD: [0x1109, 0x1164, 0x11BA] },
+{ source: [0xC114], NFC: [0xC114], NFD: [0x1109, 0x1164, 0x11BB], NFKC: [0xC114], NFKD: [0x1109, 0x1164, 0x11BB] },
+{ source: [0xC115], NFC: [0xC115], NFD: [0x1109, 0x1164, 0x11BC], NFKC: [0xC115], NFKD: [0x1109, 0x1164, 0x11BC] },
+{ source: [0xC116], NFC: [0xC116], NFD: [0x1109, 0x1164, 0x11BD], NFKC: [0xC116], NFKD: [0x1109, 0x1164, 0x11BD] },
+{ source: [0xC117], NFC: [0xC117], NFD: [0x1109, 0x1164, 0x11BE], NFKC: [0xC117], NFKD: [0x1109, 0x1164, 0x11BE] },
+{ source: [0xC118], NFC: [0xC118], NFD: [0x1109, 0x1164, 0x11BF], NFKC: [0xC118], NFKD: [0x1109, 0x1164, 0x11BF] },
+{ source: [0xC119], NFC: [0xC119], NFD: [0x1109, 0x1164, 0x11C0], NFKC: [0xC119], NFKD: [0x1109, 0x1164, 0x11C0] },
+{ source: [0xC11A], NFC: [0xC11A], NFD: [0x1109, 0x1164, 0x11C1], NFKC: [0xC11A], NFKD: [0x1109, 0x1164, 0x11C1] },
+{ source: [0xC11B], NFC: [0xC11B], NFD: [0x1109, 0x1164, 0x11C2], NFKC: [0xC11B], NFKD: [0x1109, 0x1164, 0x11C2] },
+{ source: [0xC11C], NFC: [0xC11C], NFD: [0x1109, 0x1165], NFKC: [0xC11C], NFKD: [0x1109, 0x1165] },
+{ source: [0xC11D], NFC: [0xC11D], NFD: [0x1109, 0x1165, 0x11A8], NFKC: [0xC11D], NFKD: [0x1109, 0x1165, 0x11A8] },
+{ source: [0xC11E], NFC: [0xC11E], NFD: [0x1109, 0x1165, 0x11A9], NFKC: [0xC11E], NFKD: [0x1109, 0x1165, 0x11A9] },
+{ source: [0xC11F], NFC: [0xC11F], NFD: [0x1109, 0x1165, 0x11AA], NFKC: [0xC11F], NFKD: [0x1109, 0x1165, 0x11AA] },
+{ source: [0xC120], NFC: [0xC120], NFD: [0x1109, 0x1165, 0x11AB], NFKC: [0xC120], NFKD: [0x1109, 0x1165, 0x11AB] },
+{ source: [0xC121], NFC: [0xC121], NFD: [0x1109, 0x1165, 0x11AC], NFKC: [0xC121], NFKD: [0x1109, 0x1165, 0x11AC] },
+{ source: [0xC122], NFC: [0xC122], NFD: [0x1109, 0x1165, 0x11AD], NFKC: [0xC122], NFKD: [0x1109, 0x1165, 0x11AD] },
+{ source: [0xC123], NFC: [0xC123], NFD: [0x1109, 0x1165, 0x11AE], NFKC: [0xC123], NFKD: [0x1109, 0x1165, 0x11AE] },
+{ source: [0xC124], NFC: [0xC124], NFD: [0x1109, 0x1165, 0x11AF], NFKC: [0xC124], NFKD: [0x1109, 0x1165, 0x11AF] },
+{ source: [0xC125], NFC: [0xC125], NFD: [0x1109, 0x1165, 0x11B0], NFKC: [0xC125], NFKD: [0x1109, 0x1165, 0x11B0] },
+{ source: [0xC126], NFC: [0xC126], NFD: [0x1109, 0x1165, 0x11B1], NFKC: [0xC126], NFKD: [0x1109, 0x1165, 0x11B1] },
+{ source: [0xC127], NFC: [0xC127], NFD: [0x1109, 0x1165, 0x11B2], NFKC: [0xC127], NFKD: [0x1109, 0x1165, 0x11B2] },
+{ source: [0xC128], NFC: [0xC128], NFD: [0x1109, 0x1165, 0x11B3], NFKC: [0xC128], NFKD: [0x1109, 0x1165, 0x11B3] },
+{ source: [0xC129], NFC: [0xC129], NFD: [0x1109, 0x1165, 0x11B4], NFKC: [0xC129], NFKD: [0x1109, 0x1165, 0x11B4] },
+{ source: [0xC12A], NFC: [0xC12A], NFD: [0x1109, 0x1165, 0x11B5], NFKC: [0xC12A], NFKD: [0x1109, 0x1165, 0x11B5] },
+{ source: [0xC12B], NFC: [0xC12B], NFD: [0x1109, 0x1165, 0x11B6], NFKC: [0xC12B], NFKD: [0x1109, 0x1165, 0x11B6] },
+{ source: [0xC12C], NFC: [0xC12C], NFD: [0x1109, 0x1165, 0x11B7], NFKC: [0xC12C], NFKD: [0x1109, 0x1165, 0x11B7] },
+{ source: [0xC12D], NFC: [0xC12D], NFD: [0x1109, 0x1165, 0x11B8], NFKC: [0xC12D], NFKD: [0x1109, 0x1165, 0x11B8] },
+{ source: [0xC12E], NFC: [0xC12E], NFD: [0x1109, 0x1165, 0x11B9], NFKC: [0xC12E], NFKD: [0x1109, 0x1165, 0x11B9] },
+{ source: [0xC12F], NFC: [0xC12F], NFD: [0x1109, 0x1165, 0x11BA], NFKC: [0xC12F], NFKD: [0x1109, 0x1165, 0x11BA] },
+{ source: [0xC130], NFC: [0xC130], NFD: [0x1109, 0x1165, 0x11BB], NFKC: [0xC130], NFKD: [0x1109, 0x1165, 0x11BB] },
+{ source: [0xC131], NFC: [0xC131], NFD: [0x1109, 0x1165, 0x11BC], NFKC: [0xC131], NFKD: [0x1109, 0x1165, 0x11BC] },
+{ source: [0xC132], NFC: [0xC132], NFD: [0x1109, 0x1165, 0x11BD], NFKC: [0xC132], NFKD: [0x1109, 0x1165, 0x11BD] },
+{ source: [0xC133], NFC: [0xC133], NFD: [0x1109, 0x1165, 0x11BE], NFKC: [0xC133], NFKD: [0x1109, 0x1165, 0x11BE] },
+{ source: [0xC134], NFC: [0xC134], NFD: [0x1109, 0x1165, 0x11BF], NFKC: [0xC134], NFKD: [0x1109, 0x1165, 0x11BF] },
+{ source: [0xC135], NFC: [0xC135], NFD: [0x1109, 0x1165, 0x11C0], NFKC: [0xC135], NFKD: [0x1109, 0x1165, 0x11C0] },
+{ source: [0xC136], NFC: [0xC136], NFD: [0x1109, 0x1165, 0x11C1], NFKC: [0xC136], NFKD: [0x1109, 0x1165, 0x11C1] },
+{ source: [0xC137], NFC: [0xC137], NFD: [0x1109, 0x1165, 0x11C2], NFKC: [0xC137], NFKD: [0x1109, 0x1165, 0x11C2] },
+{ source: [0xC138], NFC: [0xC138], NFD: [0x1109, 0x1166], NFKC: [0xC138], NFKD: [0x1109, 0x1166] },
+{ source: [0xC139], NFC: [0xC139], NFD: [0x1109, 0x1166, 0x11A8], NFKC: [0xC139], NFKD: [0x1109, 0x1166, 0x11A8] },
+{ source: [0xC13A], NFC: [0xC13A], NFD: [0x1109, 0x1166, 0x11A9], NFKC: [0xC13A], NFKD: [0x1109, 0x1166, 0x11A9] },
+{ source: [0xC13B], NFC: [0xC13B], NFD: [0x1109, 0x1166, 0x11AA], NFKC: [0xC13B], NFKD: [0x1109, 0x1166, 0x11AA] },
+{ source: [0xC13C], NFC: [0xC13C], NFD: [0x1109, 0x1166, 0x11AB], NFKC: [0xC13C], NFKD: [0x1109, 0x1166, 0x11AB] },
+{ source: [0xC13D], NFC: [0xC13D], NFD: [0x1109, 0x1166, 0x11AC], NFKC: [0xC13D], NFKD: [0x1109, 0x1166, 0x11AC] },
+{ source: [0xC13E], NFC: [0xC13E], NFD: [0x1109, 0x1166, 0x11AD], NFKC: [0xC13E], NFKD: [0x1109, 0x1166, 0x11AD] },
+{ source: [0xC13F], NFC: [0xC13F], NFD: [0x1109, 0x1166, 0x11AE], NFKC: [0xC13F], NFKD: [0x1109, 0x1166, 0x11AE] },
+{ source: [0xC140], NFC: [0xC140], NFD: [0x1109, 0x1166, 0x11AF], NFKC: [0xC140], NFKD: [0x1109, 0x1166, 0x11AF] },
+{ source: [0xC141], NFC: [0xC141], NFD: [0x1109, 0x1166, 0x11B0], NFKC: [0xC141], NFKD: [0x1109, 0x1166, 0x11B0] },
+{ source: [0xC142], NFC: [0xC142], NFD: [0x1109, 0x1166, 0x11B1], NFKC: [0xC142], NFKD: [0x1109, 0x1166, 0x11B1] },
+{ source: [0xC143], NFC: [0xC143], NFD: [0x1109, 0x1166, 0x11B2], NFKC: [0xC143], NFKD: [0x1109, 0x1166, 0x11B2] },
+{ source: [0xC144], NFC: [0xC144], NFD: [0x1109, 0x1166, 0x11B3], NFKC: [0xC144], NFKD: [0x1109, 0x1166, 0x11B3] },
+{ source: [0xC145], NFC: [0xC145], NFD: [0x1109, 0x1166, 0x11B4], NFKC: [0xC145], NFKD: [0x1109, 0x1166, 0x11B4] },
+{ source: [0xC146], NFC: [0xC146], NFD: [0x1109, 0x1166, 0x11B5], NFKC: [0xC146], NFKD: [0x1109, 0x1166, 0x11B5] },
+{ source: [0xC147], NFC: [0xC147], NFD: [0x1109, 0x1166, 0x11B6], NFKC: [0xC147], NFKD: [0x1109, 0x1166, 0x11B6] },
+{ source: [0xC148], NFC: [0xC148], NFD: [0x1109, 0x1166, 0x11B7], NFKC: [0xC148], NFKD: [0x1109, 0x1166, 0x11B7] },
+{ source: [0xC149], NFC: [0xC149], NFD: [0x1109, 0x1166, 0x11B8], NFKC: [0xC149], NFKD: [0x1109, 0x1166, 0x11B8] },
+{ source: [0xC14A], NFC: [0xC14A], NFD: [0x1109, 0x1166, 0x11B9], NFKC: [0xC14A], NFKD: [0x1109, 0x1166, 0x11B9] },
+{ source: [0xC14B], NFC: [0xC14B], NFD: [0x1109, 0x1166, 0x11BA], NFKC: [0xC14B], NFKD: [0x1109, 0x1166, 0x11BA] },
+{ source: [0xC14C], NFC: [0xC14C], NFD: [0x1109, 0x1166, 0x11BB], NFKC: [0xC14C], NFKD: [0x1109, 0x1166, 0x11BB] },
+{ source: [0xC14D], NFC: [0xC14D], NFD: [0x1109, 0x1166, 0x11BC], NFKC: [0xC14D], NFKD: [0x1109, 0x1166, 0x11BC] },
+{ source: [0xC14E], NFC: [0xC14E], NFD: [0x1109, 0x1166, 0x11BD], NFKC: [0xC14E], NFKD: [0x1109, 0x1166, 0x11BD] },
+{ source: [0xC14F], NFC: [0xC14F], NFD: [0x1109, 0x1166, 0x11BE], NFKC: [0xC14F], NFKD: [0x1109, 0x1166, 0x11BE] },
+{ source: [0xC150], NFC: [0xC150], NFD: [0x1109, 0x1166, 0x11BF], NFKC: [0xC150], NFKD: [0x1109, 0x1166, 0x11BF] },
+{ source: [0xC151], NFC: [0xC151], NFD: [0x1109, 0x1166, 0x11C0], NFKC: [0xC151], NFKD: [0x1109, 0x1166, 0x11C0] },
+{ source: [0xC152], NFC: [0xC152], NFD: [0x1109, 0x1166, 0x11C1], NFKC: [0xC152], NFKD: [0x1109, 0x1166, 0x11C1] },
+{ source: [0xC153], NFC: [0xC153], NFD: [0x1109, 0x1166, 0x11C2], NFKC: [0xC153], NFKD: [0x1109, 0x1166, 0x11C2] },
+{ source: [0xC154], NFC: [0xC154], NFD: [0x1109, 0x1167], NFKC: [0xC154], NFKD: [0x1109, 0x1167] },
+{ source: [0xC155], NFC: [0xC155], NFD: [0x1109, 0x1167, 0x11A8], NFKC: [0xC155], NFKD: [0x1109, 0x1167, 0x11A8] },
+{ source: [0xC156], NFC: [0xC156], NFD: [0x1109, 0x1167, 0x11A9], NFKC: [0xC156], NFKD: [0x1109, 0x1167, 0x11A9] },
+{ source: [0xC157], NFC: [0xC157], NFD: [0x1109, 0x1167, 0x11AA], NFKC: [0xC157], NFKD: [0x1109, 0x1167, 0x11AA] },
+{ source: [0xC158], NFC: [0xC158], NFD: [0x1109, 0x1167, 0x11AB], NFKC: [0xC158], NFKD: [0x1109, 0x1167, 0x11AB] },
+{ source: [0xC159], NFC: [0xC159], NFD: [0x1109, 0x1167, 0x11AC], NFKC: [0xC159], NFKD: [0x1109, 0x1167, 0x11AC] },
+{ source: [0xC15A], NFC: [0xC15A], NFD: [0x1109, 0x1167, 0x11AD], NFKC: [0xC15A], NFKD: [0x1109, 0x1167, 0x11AD] },
+{ source: [0xC15B], NFC: [0xC15B], NFD: [0x1109, 0x1167, 0x11AE], NFKC: [0xC15B], NFKD: [0x1109, 0x1167, 0x11AE] },
+{ source: [0xC15C], NFC: [0xC15C], NFD: [0x1109, 0x1167, 0x11AF], NFKC: [0xC15C], NFKD: [0x1109, 0x1167, 0x11AF] },
+{ source: [0xC15D], NFC: [0xC15D], NFD: [0x1109, 0x1167, 0x11B0], NFKC: [0xC15D], NFKD: [0x1109, 0x1167, 0x11B0] },
+{ source: [0xC15E], NFC: [0xC15E], NFD: [0x1109, 0x1167, 0x11B1], NFKC: [0xC15E], NFKD: [0x1109, 0x1167, 0x11B1] },
+{ source: [0xC15F], NFC: [0xC15F], NFD: [0x1109, 0x1167, 0x11B2], NFKC: [0xC15F], NFKD: [0x1109, 0x1167, 0x11B2] },
+{ source: [0xC160], NFC: [0xC160], NFD: [0x1109, 0x1167, 0x11B3], NFKC: [0xC160], NFKD: [0x1109, 0x1167, 0x11B3] },
+{ source: [0xC161], NFC: [0xC161], NFD: [0x1109, 0x1167, 0x11B4], NFKC: [0xC161], NFKD: [0x1109, 0x1167, 0x11B4] },
+{ source: [0xC162], NFC: [0xC162], NFD: [0x1109, 0x1167, 0x11B5], NFKC: [0xC162], NFKD: [0x1109, 0x1167, 0x11B5] },
+{ source: [0xC163], NFC: [0xC163], NFD: [0x1109, 0x1167, 0x11B6], NFKC: [0xC163], NFKD: [0x1109, 0x1167, 0x11B6] },
+{ source: [0xC164], NFC: [0xC164], NFD: [0x1109, 0x1167, 0x11B7], NFKC: [0xC164], NFKD: [0x1109, 0x1167, 0x11B7] },
+{ source: [0xC165], NFC: [0xC165], NFD: [0x1109, 0x1167, 0x11B8], NFKC: [0xC165], NFKD: [0x1109, 0x1167, 0x11B8] },
+{ source: [0xC166], NFC: [0xC166], NFD: [0x1109, 0x1167, 0x11B9], NFKC: [0xC166], NFKD: [0x1109, 0x1167, 0x11B9] },
+{ source: [0xC167], NFC: [0xC167], NFD: [0x1109, 0x1167, 0x11BA], NFKC: [0xC167], NFKD: [0x1109, 0x1167, 0x11BA] },
+{ source: [0xC168], NFC: [0xC168], NFD: [0x1109, 0x1167, 0x11BB], NFKC: [0xC168], NFKD: [0x1109, 0x1167, 0x11BB] },
+{ source: [0xC169], NFC: [0xC169], NFD: [0x1109, 0x1167, 0x11BC], NFKC: [0xC169], NFKD: [0x1109, 0x1167, 0x11BC] },
+{ source: [0xC16A], NFC: [0xC16A], NFD: [0x1109, 0x1167, 0x11BD], NFKC: [0xC16A], NFKD: [0x1109, 0x1167, 0x11BD] },
+{ source: [0xC16B], NFC: [0xC16B], NFD: [0x1109, 0x1167, 0x11BE], NFKC: [0xC16B], NFKD: [0x1109, 0x1167, 0x11BE] },
+{ source: [0xC16C], NFC: [0xC16C], NFD: [0x1109, 0x1167, 0x11BF], NFKC: [0xC16C], NFKD: [0x1109, 0x1167, 0x11BF] },
+{ source: [0xC16D], NFC: [0xC16D], NFD: [0x1109, 0x1167, 0x11C0], NFKC: [0xC16D], NFKD: [0x1109, 0x1167, 0x11C0] },
+{ source: [0xC16E], NFC: [0xC16E], NFD: [0x1109, 0x1167, 0x11C1], NFKC: [0xC16E], NFKD: [0x1109, 0x1167, 0x11C1] },
+{ source: [0xC16F], NFC: [0xC16F], NFD: [0x1109, 0x1167, 0x11C2], NFKC: [0xC16F], NFKD: [0x1109, 0x1167, 0x11C2] },
+{ source: [0xC170], NFC: [0xC170], NFD: [0x1109, 0x1168], NFKC: [0xC170], NFKD: [0x1109, 0x1168] },
+{ source: [0xC171], NFC: [0xC171], NFD: [0x1109, 0x1168, 0x11A8], NFKC: [0xC171], NFKD: [0x1109, 0x1168, 0x11A8] },
+{ source: [0xC172], NFC: [0xC172], NFD: [0x1109, 0x1168, 0x11A9], NFKC: [0xC172], NFKD: [0x1109, 0x1168, 0x11A9] },
+{ source: [0xC173], NFC: [0xC173], NFD: [0x1109, 0x1168, 0x11AA], NFKC: [0xC173], NFKD: [0x1109, 0x1168, 0x11AA] },
+{ source: [0xC174], NFC: [0xC174], NFD: [0x1109, 0x1168, 0x11AB], NFKC: [0xC174], NFKD: [0x1109, 0x1168, 0x11AB] },
+{ source: [0xC175], NFC: [0xC175], NFD: [0x1109, 0x1168, 0x11AC], NFKC: [0xC175], NFKD: [0x1109, 0x1168, 0x11AC] },
+{ source: [0xC176], NFC: [0xC176], NFD: [0x1109, 0x1168, 0x11AD], NFKC: [0xC176], NFKD: [0x1109, 0x1168, 0x11AD] },
+{ source: [0xC177], NFC: [0xC177], NFD: [0x1109, 0x1168, 0x11AE], NFKC: [0xC177], NFKD: [0x1109, 0x1168, 0x11AE] },
+{ source: [0xC178], NFC: [0xC178], NFD: [0x1109, 0x1168, 0x11AF], NFKC: [0xC178], NFKD: [0x1109, 0x1168, 0x11AF] },
+{ source: [0xC179], NFC: [0xC179], NFD: [0x1109, 0x1168, 0x11B0], NFKC: [0xC179], NFKD: [0x1109, 0x1168, 0x11B0] },
+{ source: [0xC17A], NFC: [0xC17A], NFD: [0x1109, 0x1168, 0x11B1], NFKC: [0xC17A], NFKD: [0x1109, 0x1168, 0x11B1] },
+{ source: [0xC17B], NFC: [0xC17B], NFD: [0x1109, 0x1168, 0x11B2], NFKC: [0xC17B], NFKD: [0x1109, 0x1168, 0x11B2] },
+{ source: [0xC17C], NFC: [0xC17C], NFD: [0x1109, 0x1168, 0x11B3], NFKC: [0xC17C], NFKD: [0x1109, 0x1168, 0x11B3] },
+{ source: [0xC17D], NFC: [0xC17D], NFD: [0x1109, 0x1168, 0x11B4], NFKC: [0xC17D], NFKD: [0x1109, 0x1168, 0x11B4] },
+{ source: [0xC17E], NFC: [0xC17E], NFD: [0x1109, 0x1168, 0x11B5], NFKC: [0xC17E], NFKD: [0x1109, 0x1168, 0x11B5] },
+{ source: [0xC17F], NFC: [0xC17F], NFD: [0x1109, 0x1168, 0x11B6], NFKC: [0xC17F], NFKD: [0x1109, 0x1168, 0x11B6] },
+{ source: [0xC180], NFC: [0xC180], NFD: [0x1109, 0x1168, 0x11B7], NFKC: [0xC180], NFKD: [0x1109, 0x1168, 0x11B7] },
+{ source: [0xC181], NFC: [0xC181], NFD: [0x1109, 0x1168, 0x11B8], NFKC: [0xC181], NFKD: [0x1109, 0x1168, 0x11B8] },
+{ source: [0xC182], NFC: [0xC182], NFD: [0x1109, 0x1168, 0x11B9], NFKC: [0xC182], NFKD: [0x1109, 0x1168, 0x11B9] },
+{ source: [0xC183], NFC: [0xC183], NFD: [0x1109, 0x1168, 0x11BA], NFKC: [0xC183], NFKD: [0x1109, 0x1168, 0x11BA] },
+{ source: [0xC184], NFC: [0xC184], NFD: [0x1109, 0x1168, 0x11BB], NFKC: [0xC184], NFKD: [0x1109, 0x1168, 0x11BB] },
+{ source: [0xC185], NFC: [0xC185], NFD: [0x1109, 0x1168, 0x11BC], NFKC: [0xC185], NFKD: [0x1109, 0x1168, 0x11BC] },
+{ source: [0xC186], NFC: [0xC186], NFD: [0x1109, 0x1168, 0x11BD], NFKC: [0xC186], NFKD: [0x1109, 0x1168, 0x11BD] },
+{ source: [0xC187], NFC: [0xC187], NFD: [0x1109, 0x1168, 0x11BE], NFKC: [0xC187], NFKD: [0x1109, 0x1168, 0x11BE] },
+{ source: [0xC188], NFC: [0xC188], NFD: [0x1109, 0x1168, 0x11BF], NFKC: [0xC188], NFKD: [0x1109, 0x1168, 0x11BF] },
+{ source: [0xC189], NFC: [0xC189], NFD: [0x1109, 0x1168, 0x11C0], NFKC: [0xC189], NFKD: [0x1109, 0x1168, 0x11C0] },
+{ source: [0xC18A], NFC: [0xC18A], NFD: [0x1109, 0x1168, 0x11C1], NFKC: [0xC18A], NFKD: [0x1109, 0x1168, 0x11C1] },
+{ source: [0xC18B], NFC: [0xC18B], NFD: [0x1109, 0x1168, 0x11C2], NFKC: [0xC18B], NFKD: [0x1109, 0x1168, 0x11C2] },
+{ source: [0xC18C], NFC: [0xC18C], NFD: [0x1109, 0x1169], NFKC: [0xC18C], NFKD: [0x1109, 0x1169] },
+{ source: [0xC18D], NFC: [0xC18D], NFD: [0x1109, 0x1169, 0x11A8], NFKC: [0xC18D], NFKD: [0x1109, 0x1169, 0x11A8] },
+{ source: [0xC18E], NFC: [0xC18E], NFD: [0x1109, 0x1169, 0x11A9], NFKC: [0xC18E], NFKD: [0x1109, 0x1169, 0x11A9] },
+{ source: [0xC18F], NFC: [0xC18F], NFD: [0x1109, 0x1169, 0x11AA], NFKC: [0xC18F], NFKD: [0x1109, 0x1169, 0x11AA] },
+{ source: [0xC190], NFC: [0xC190], NFD: [0x1109, 0x1169, 0x11AB], NFKC: [0xC190], NFKD: [0x1109, 0x1169, 0x11AB] },
+{ source: [0xC191], NFC: [0xC191], NFD: [0x1109, 0x1169, 0x11AC], NFKC: [0xC191], NFKD: [0x1109, 0x1169, 0x11AC] },
+{ source: [0xC192], NFC: [0xC192], NFD: [0x1109, 0x1169, 0x11AD], NFKC: [0xC192], NFKD: [0x1109, 0x1169, 0x11AD] },
+{ source: [0xC193], NFC: [0xC193], NFD: [0x1109, 0x1169, 0x11AE], NFKC: [0xC193], NFKD: [0x1109, 0x1169, 0x11AE] },
+{ source: [0xC194], NFC: [0xC194], NFD: [0x1109, 0x1169, 0x11AF], NFKC: [0xC194], NFKD: [0x1109, 0x1169, 0x11AF] },
+{ source: [0xC195], NFC: [0xC195], NFD: [0x1109, 0x1169, 0x11B0], NFKC: [0xC195], NFKD: [0x1109, 0x1169, 0x11B0] },
+{ source: [0xC196], NFC: [0xC196], NFD: [0x1109, 0x1169, 0x11B1], NFKC: [0xC196], NFKD: [0x1109, 0x1169, 0x11B1] },
+{ source: [0xC197], NFC: [0xC197], NFD: [0x1109, 0x1169, 0x11B2], NFKC: [0xC197], NFKD: [0x1109, 0x1169, 0x11B2] },
+{ source: [0xC198], NFC: [0xC198], NFD: [0x1109, 0x1169, 0x11B3], NFKC: [0xC198], NFKD: [0x1109, 0x1169, 0x11B3] },
+{ source: [0xC199], NFC: [0xC199], NFD: [0x1109, 0x1169, 0x11B4], NFKC: [0xC199], NFKD: [0x1109, 0x1169, 0x11B4] },
+{ source: [0xC19A], NFC: [0xC19A], NFD: [0x1109, 0x1169, 0x11B5], NFKC: [0xC19A], NFKD: [0x1109, 0x1169, 0x11B5] },
+{ source: [0xC19B], NFC: [0xC19B], NFD: [0x1109, 0x1169, 0x11B6], NFKC: [0xC19B], NFKD: [0x1109, 0x1169, 0x11B6] },
+{ source: [0xC19C], NFC: [0xC19C], NFD: [0x1109, 0x1169, 0x11B7], NFKC: [0xC19C], NFKD: [0x1109, 0x1169, 0x11B7] },
+{ source: [0xC19D], NFC: [0xC19D], NFD: [0x1109, 0x1169, 0x11B8], NFKC: [0xC19D], NFKD: [0x1109, 0x1169, 0x11B8] },
+{ source: [0xC19E], NFC: [0xC19E], NFD: [0x1109, 0x1169, 0x11B9], NFKC: [0xC19E], NFKD: [0x1109, 0x1169, 0x11B9] },
+{ source: [0xC19F], NFC: [0xC19F], NFD: [0x1109, 0x1169, 0x11BA], NFKC: [0xC19F], NFKD: [0x1109, 0x1169, 0x11BA] },
+{ source: [0xC1A0], NFC: [0xC1A0], NFD: [0x1109, 0x1169, 0x11BB], NFKC: [0xC1A0], NFKD: [0x1109, 0x1169, 0x11BB] },
+{ source: [0xC1A1], NFC: [0xC1A1], NFD: [0x1109, 0x1169, 0x11BC], NFKC: [0xC1A1], NFKD: [0x1109, 0x1169, 0x11BC] },
+{ source: [0xC1A2], NFC: [0xC1A2], NFD: [0x1109, 0x1169, 0x11BD], NFKC: [0xC1A2], NFKD: [0x1109, 0x1169, 0x11BD] },
+{ source: [0xC1A3], NFC: [0xC1A3], NFD: [0x1109, 0x1169, 0x11BE], NFKC: [0xC1A3], NFKD: [0x1109, 0x1169, 0x11BE] },
+{ source: [0xC1A4], NFC: [0xC1A4], NFD: [0x1109, 0x1169, 0x11BF], NFKC: [0xC1A4], NFKD: [0x1109, 0x1169, 0x11BF] },
+{ source: [0xC1A5], NFC: [0xC1A5], NFD: [0x1109, 0x1169, 0x11C0], NFKC: [0xC1A5], NFKD: [0x1109, 0x1169, 0x11C0] },
+{ source: [0xC1A6], NFC: [0xC1A6], NFD: [0x1109, 0x1169, 0x11C1], NFKC: [0xC1A6], NFKD: [0x1109, 0x1169, 0x11C1] },
+{ source: [0xC1A7], NFC: [0xC1A7], NFD: [0x1109, 0x1169, 0x11C2], NFKC: [0xC1A7], NFKD: [0x1109, 0x1169, 0x11C2] },
+{ source: [0xC1A8], NFC: [0xC1A8], NFD: [0x1109, 0x116A], NFKC: [0xC1A8], NFKD: [0x1109, 0x116A] },
+{ source: [0xC1A9], NFC: [0xC1A9], NFD: [0x1109, 0x116A, 0x11A8], NFKC: [0xC1A9], NFKD: [0x1109, 0x116A, 0x11A8] },
+{ source: [0xC1AA], NFC: [0xC1AA], NFD: [0x1109, 0x116A, 0x11A9], NFKC: [0xC1AA], NFKD: [0x1109, 0x116A, 0x11A9] },
+{ source: [0xC1AB], NFC: [0xC1AB], NFD: [0x1109, 0x116A, 0x11AA], NFKC: [0xC1AB], NFKD: [0x1109, 0x116A, 0x11AA] },
+{ source: [0xC1AC], NFC: [0xC1AC], NFD: [0x1109, 0x116A, 0x11AB], NFKC: [0xC1AC], NFKD: [0x1109, 0x116A, 0x11AB] },
+{ source: [0xC1AD], NFC: [0xC1AD], NFD: [0x1109, 0x116A, 0x11AC], NFKC: [0xC1AD], NFKD: [0x1109, 0x116A, 0x11AC] },
+{ source: [0xC1AE], NFC: [0xC1AE], NFD: [0x1109, 0x116A, 0x11AD], NFKC: [0xC1AE], NFKD: [0x1109, 0x116A, 0x11AD] },
+{ source: [0xC1AF], NFC: [0xC1AF], NFD: [0x1109, 0x116A, 0x11AE], NFKC: [0xC1AF], NFKD: [0x1109, 0x116A, 0x11AE] },
+{ source: [0xC1B0], NFC: [0xC1B0], NFD: [0x1109, 0x116A, 0x11AF], NFKC: [0xC1B0], NFKD: [0x1109, 0x116A, 0x11AF] },
+{ source: [0xC1B1], NFC: [0xC1B1], NFD: [0x1109, 0x116A, 0x11B0], NFKC: [0xC1B1], NFKD: [0x1109, 0x116A, 0x11B0] },
+{ source: [0xC1B2], NFC: [0xC1B2], NFD: [0x1109, 0x116A, 0x11B1], NFKC: [0xC1B2], NFKD: [0x1109, 0x116A, 0x11B1] },
+{ source: [0xC1B3], NFC: [0xC1B3], NFD: [0x1109, 0x116A, 0x11B2], NFKC: [0xC1B3], NFKD: [0x1109, 0x116A, 0x11B2] },
+{ source: [0xC1B4], NFC: [0xC1B4], NFD: [0x1109, 0x116A, 0x11B3], NFKC: [0xC1B4], NFKD: [0x1109, 0x116A, 0x11B3] },
+{ source: [0xC1B5], NFC: [0xC1B5], NFD: [0x1109, 0x116A, 0x11B4], NFKC: [0xC1B5], NFKD: [0x1109, 0x116A, 0x11B4] },
+{ source: [0xC1B6], NFC: [0xC1B6], NFD: [0x1109, 0x116A, 0x11B5], NFKC: [0xC1B6], NFKD: [0x1109, 0x116A, 0x11B5] },
+{ source: [0xC1B7], NFC: [0xC1B7], NFD: [0x1109, 0x116A, 0x11B6], NFKC: [0xC1B7], NFKD: [0x1109, 0x116A, 0x11B6] },
+{ source: [0xC1B8], NFC: [0xC1B8], NFD: [0x1109, 0x116A, 0x11B7], NFKC: [0xC1B8], NFKD: [0x1109, 0x116A, 0x11B7] },
+{ source: [0xC1B9], NFC: [0xC1B9], NFD: [0x1109, 0x116A, 0x11B8], NFKC: [0xC1B9], NFKD: [0x1109, 0x116A, 0x11B8] },
+{ source: [0xC1BA], NFC: [0xC1BA], NFD: [0x1109, 0x116A, 0x11B9], NFKC: [0xC1BA], NFKD: [0x1109, 0x116A, 0x11B9] },
+{ source: [0xC1BB], NFC: [0xC1BB], NFD: [0x1109, 0x116A, 0x11BA], NFKC: [0xC1BB], NFKD: [0x1109, 0x116A, 0x11BA] },
+{ source: [0xC1BC], NFC: [0xC1BC], NFD: [0x1109, 0x116A, 0x11BB], NFKC: [0xC1BC], NFKD: [0x1109, 0x116A, 0x11BB] },
+{ source: [0xC1BD], NFC: [0xC1BD], NFD: [0x1109, 0x116A, 0x11BC], NFKC: [0xC1BD], NFKD: [0x1109, 0x116A, 0x11BC] },
+{ source: [0xC1BE], NFC: [0xC1BE], NFD: [0x1109, 0x116A, 0x11BD], NFKC: [0xC1BE], NFKD: [0x1109, 0x116A, 0x11BD] },
+{ source: [0xC1BF], NFC: [0xC1BF], NFD: [0x1109, 0x116A, 0x11BE], NFKC: [0xC1BF], NFKD: [0x1109, 0x116A, 0x11BE] },
+{ source: [0xC1C0], NFC: [0xC1C0], NFD: [0x1109, 0x116A, 0x11BF], NFKC: [0xC1C0], NFKD: [0x1109, 0x116A, 0x11BF] },
+{ source: [0xC1C1], NFC: [0xC1C1], NFD: [0x1109, 0x116A, 0x11C0], NFKC: [0xC1C1], NFKD: [0x1109, 0x116A, 0x11C0] },
+{ source: [0xC1C2], NFC: [0xC1C2], NFD: [0x1109, 0x116A, 0x11C1], NFKC: [0xC1C2], NFKD: [0x1109, 0x116A, 0x11C1] },
+{ source: [0xC1C3], NFC: [0xC1C3], NFD: [0x1109, 0x116A, 0x11C2], NFKC: [0xC1C3], NFKD: [0x1109, 0x116A, 0x11C2] },
+{ source: [0xC1C4], NFC: [0xC1C4], NFD: [0x1109, 0x116B], NFKC: [0xC1C4], NFKD: [0x1109, 0x116B] },
+{ source: [0xC1C5], NFC: [0xC1C5], NFD: [0x1109, 0x116B, 0x11A8], NFKC: [0xC1C5], NFKD: [0x1109, 0x116B, 0x11A8] },
+{ source: [0xC1C6], NFC: [0xC1C6], NFD: [0x1109, 0x116B, 0x11A9], NFKC: [0xC1C6], NFKD: [0x1109, 0x116B, 0x11A9] },
+{ source: [0xC1C7], NFC: [0xC1C7], NFD: [0x1109, 0x116B, 0x11AA], NFKC: [0xC1C7], NFKD: [0x1109, 0x116B, 0x11AA] },
+{ source: [0xC1C8], NFC: [0xC1C8], NFD: [0x1109, 0x116B, 0x11AB], NFKC: [0xC1C8], NFKD: [0x1109, 0x116B, 0x11AB] },
+{ source: [0xC1C9], NFC: [0xC1C9], NFD: [0x1109, 0x116B, 0x11AC], NFKC: [0xC1C9], NFKD: [0x1109, 0x116B, 0x11AC] },
+{ source: [0xC1CA], NFC: [0xC1CA], NFD: [0x1109, 0x116B, 0x11AD], NFKC: [0xC1CA], NFKD: [0x1109, 0x116B, 0x11AD] },
+{ source: [0xC1CB], NFC: [0xC1CB], NFD: [0x1109, 0x116B, 0x11AE], NFKC: [0xC1CB], NFKD: [0x1109, 0x116B, 0x11AE] },
+{ source: [0xC1CC], NFC: [0xC1CC], NFD: [0x1109, 0x116B, 0x11AF], NFKC: [0xC1CC], NFKD: [0x1109, 0x116B, 0x11AF] },
+{ source: [0xC1CD], NFC: [0xC1CD], NFD: [0x1109, 0x116B, 0x11B0], NFKC: [0xC1CD], NFKD: [0x1109, 0x116B, 0x11B0] },
+{ source: [0xC1CE], NFC: [0xC1CE], NFD: [0x1109, 0x116B, 0x11B1], NFKC: [0xC1CE], NFKD: [0x1109, 0x116B, 0x11B1] },
+{ source: [0xC1CF], NFC: [0xC1CF], NFD: [0x1109, 0x116B, 0x11B2], NFKC: [0xC1CF], NFKD: [0x1109, 0x116B, 0x11B2] },
+{ source: [0xC1D0], NFC: [0xC1D0], NFD: [0x1109, 0x116B, 0x11B3], NFKC: [0xC1D0], NFKD: [0x1109, 0x116B, 0x11B3] },
+{ source: [0xC1D1], NFC: [0xC1D1], NFD: [0x1109, 0x116B, 0x11B4], NFKC: [0xC1D1], NFKD: [0x1109, 0x116B, 0x11B4] },
+{ source: [0xC1D2], NFC: [0xC1D2], NFD: [0x1109, 0x116B, 0x11B5], NFKC: [0xC1D2], NFKD: [0x1109, 0x116B, 0x11B5] },
+{ source: [0xC1D3], NFC: [0xC1D3], NFD: [0x1109, 0x116B, 0x11B6], NFKC: [0xC1D3], NFKD: [0x1109, 0x116B, 0x11B6] },
+{ source: [0xC1D4], NFC: [0xC1D4], NFD: [0x1109, 0x116B, 0x11B7], NFKC: [0xC1D4], NFKD: [0x1109, 0x116B, 0x11B7] },
+{ source: [0xC1D5], NFC: [0xC1D5], NFD: [0x1109, 0x116B, 0x11B8], NFKC: [0xC1D5], NFKD: [0x1109, 0x116B, 0x11B8] },
+{ source: [0xC1D6], NFC: [0xC1D6], NFD: [0x1109, 0x116B, 0x11B9], NFKC: [0xC1D6], NFKD: [0x1109, 0x116B, 0x11B9] },
+{ source: [0xC1D7], NFC: [0xC1D7], NFD: [0x1109, 0x116B, 0x11BA], NFKC: [0xC1D7], NFKD: [0x1109, 0x116B, 0x11BA] },
+{ source: [0xC1D8], NFC: [0xC1D8], NFD: [0x1109, 0x116B, 0x11BB], NFKC: [0xC1D8], NFKD: [0x1109, 0x116B, 0x11BB] },
+{ source: [0xC1D9], NFC: [0xC1D9], NFD: [0x1109, 0x116B, 0x11BC], NFKC: [0xC1D9], NFKD: [0x1109, 0x116B, 0x11BC] },
+{ source: [0xC1DA], NFC: [0xC1DA], NFD: [0x1109, 0x116B, 0x11BD], NFKC: [0xC1DA], NFKD: [0x1109, 0x116B, 0x11BD] },
+{ source: [0xC1DB], NFC: [0xC1DB], NFD: [0x1109, 0x116B, 0x11BE], NFKC: [0xC1DB], NFKD: [0x1109, 0x116B, 0x11BE] },
+{ source: [0xC1DC], NFC: [0xC1DC], NFD: [0x1109, 0x116B, 0x11BF], NFKC: [0xC1DC], NFKD: [0x1109, 0x116B, 0x11BF] },
+{ source: [0xC1DD], NFC: [0xC1DD], NFD: [0x1109, 0x116B, 0x11C0], NFKC: [0xC1DD], NFKD: [0x1109, 0x116B, 0x11C0] },
+{ source: [0xC1DE], NFC: [0xC1DE], NFD: [0x1109, 0x116B, 0x11C1], NFKC: [0xC1DE], NFKD: [0x1109, 0x116B, 0x11C1] },
+{ source: [0xC1DF], NFC: [0xC1DF], NFD: [0x1109, 0x116B, 0x11C2], NFKC: [0xC1DF], NFKD: [0x1109, 0x116B, 0x11C2] },
+{ source: [0xC1E0], NFC: [0xC1E0], NFD: [0x1109, 0x116C], NFKC: [0xC1E0], NFKD: [0x1109, 0x116C] },
+{ source: [0xC1E1], NFC: [0xC1E1], NFD: [0x1109, 0x116C, 0x11A8], NFKC: [0xC1E1], NFKD: [0x1109, 0x116C, 0x11A8] },
+{ source: [0xC1E2], NFC: [0xC1E2], NFD: [0x1109, 0x116C, 0x11A9], NFKC: [0xC1E2], NFKD: [0x1109, 0x116C, 0x11A9] },
+{ source: [0xC1E3], NFC: [0xC1E3], NFD: [0x1109, 0x116C, 0x11AA], NFKC: [0xC1E3], NFKD: [0x1109, 0x116C, 0x11AA] },
+{ source: [0xC1E4], NFC: [0xC1E4], NFD: [0x1109, 0x116C, 0x11AB], NFKC: [0xC1E4], NFKD: [0x1109, 0x116C, 0x11AB] },
+{ source: [0xC1E5], NFC: [0xC1E5], NFD: [0x1109, 0x116C, 0x11AC], NFKC: [0xC1E5], NFKD: [0x1109, 0x116C, 0x11AC] },
+{ source: [0xC1E6], NFC: [0xC1E6], NFD: [0x1109, 0x116C, 0x11AD], NFKC: [0xC1E6], NFKD: [0x1109, 0x116C, 0x11AD] },
+{ source: [0xC1E7], NFC: [0xC1E7], NFD: [0x1109, 0x116C, 0x11AE], NFKC: [0xC1E7], NFKD: [0x1109, 0x116C, 0x11AE] },
+{ source: [0xC1E8], NFC: [0xC1E8], NFD: [0x1109, 0x116C, 0x11AF], NFKC: [0xC1E8], NFKD: [0x1109, 0x116C, 0x11AF] },
+{ source: [0xC1E9], NFC: [0xC1E9], NFD: [0x1109, 0x116C, 0x11B0], NFKC: [0xC1E9], NFKD: [0x1109, 0x116C, 0x11B0] },
+{ source: [0xC1EA], NFC: [0xC1EA], NFD: [0x1109, 0x116C, 0x11B1], NFKC: [0xC1EA], NFKD: [0x1109, 0x116C, 0x11B1] },
+{ source: [0xC1EB], NFC: [0xC1EB], NFD: [0x1109, 0x116C, 0x11B2], NFKC: [0xC1EB], NFKD: [0x1109, 0x116C, 0x11B2] },
+{ source: [0xC1EC], NFC: [0xC1EC], NFD: [0x1109, 0x116C, 0x11B3], NFKC: [0xC1EC], NFKD: [0x1109, 0x116C, 0x11B3] },
+{ source: [0xC1ED], NFC: [0xC1ED], NFD: [0x1109, 0x116C, 0x11B4], NFKC: [0xC1ED], NFKD: [0x1109, 0x116C, 0x11B4] },
+{ source: [0xC1EE], NFC: [0xC1EE], NFD: [0x1109, 0x116C, 0x11B5], NFKC: [0xC1EE], NFKD: [0x1109, 0x116C, 0x11B5] },
+{ source: [0xC1EF], NFC: [0xC1EF], NFD: [0x1109, 0x116C, 0x11B6], NFKC: [0xC1EF], NFKD: [0x1109, 0x116C, 0x11B6] },
+{ source: [0xC1F0], NFC: [0xC1F0], NFD: [0x1109, 0x116C, 0x11B7], NFKC: [0xC1F0], NFKD: [0x1109, 0x116C, 0x11B7] },
+{ source: [0xC1F1], NFC: [0xC1F1], NFD: [0x1109, 0x116C, 0x11B8], NFKC: [0xC1F1], NFKD: [0x1109, 0x116C, 0x11B8] },
+{ source: [0xC1F2], NFC: [0xC1F2], NFD: [0x1109, 0x116C, 0x11B9], NFKC: [0xC1F2], NFKD: [0x1109, 0x116C, 0x11B9] },
+{ source: [0xC1F3], NFC: [0xC1F3], NFD: [0x1109, 0x116C, 0x11BA], NFKC: [0xC1F3], NFKD: [0x1109, 0x116C, 0x11BA] },
+{ source: [0xC1F4], NFC: [0xC1F4], NFD: [0x1109, 0x116C, 0x11BB], NFKC: [0xC1F4], NFKD: [0x1109, 0x116C, 0x11BB] },
+{ source: [0xC1F5], NFC: [0xC1F5], NFD: [0x1109, 0x116C, 0x11BC], NFKC: [0xC1F5], NFKD: [0x1109, 0x116C, 0x11BC] },
+{ source: [0xC1F6], NFC: [0xC1F6], NFD: [0x1109, 0x116C, 0x11BD], NFKC: [0xC1F6], NFKD: [0x1109, 0x116C, 0x11BD] },
+{ source: [0xC1F7], NFC: [0xC1F7], NFD: [0x1109, 0x116C, 0x11BE], NFKC: [0xC1F7], NFKD: [0x1109, 0x116C, 0x11BE] },
+{ source: [0xC1F8], NFC: [0xC1F8], NFD: [0x1109, 0x116C, 0x11BF], NFKC: [0xC1F8], NFKD: [0x1109, 0x116C, 0x11BF] },
+{ source: [0xC1F9], NFC: [0xC1F9], NFD: [0x1109, 0x116C, 0x11C0], NFKC: [0xC1F9], NFKD: [0x1109, 0x116C, 0x11C0] },
+{ source: [0xC1FA], NFC: [0xC1FA], NFD: [0x1109, 0x116C, 0x11C1], NFKC: [0xC1FA], NFKD: [0x1109, 0x116C, 0x11C1] },
+{ source: [0xC1FB], NFC: [0xC1FB], NFD: [0x1109, 0x116C, 0x11C2], NFKC: [0xC1FB], NFKD: [0x1109, 0x116C, 0x11C2] },
+{ source: [0xC1FC], NFC: [0xC1FC], NFD: [0x1109, 0x116D], NFKC: [0xC1FC], NFKD: [0x1109, 0x116D] },
+{ source: [0xC1FD], NFC: [0xC1FD], NFD: [0x1109, 0x116D, 0x11A8], NFKC: [0xC1FD], NFKD: [0x1109, 0x116D, 0x11A8] },
+{ source: [0xC1FE], NFC: [0xC1FE], NFD: [0x1109, 0x116D, 0x11A9], NFKC: [0xC1FE], NFKD: [0x1109, 0x116D, 0x11A9] },
+{ source: [0xC1FF], NFC: [0xC1FF], NFD: [0x1109, 0x116D, 0x11AA], NFKC: [0xC1FF], NFKD: [0x1109, 0x116D, 0x11AA] },
+{ source: [0xC200], NFC: [0xC200], NFD: [0x1109, 0x116D, 0x11AB], NFKC: [0xC200], NFKD: [0x1109, 0x116D, 0x11AB] },
+{ source: [0xC201], NFC: [0xC201], NFD: [0x1109, 0x116D, 0x11AC], NFKC: [0xC201], NFKD: [0x1109, 0x116D, 0x11AC] },
+{ source: [0xC202], NFC: [0xC202], NFD: [0x1109, 0x116D, 0x11AD], NFKC: [0xC202], NFKD: [0x1109, 0x116D, 0x11AD] },
+{ source: [0xC203], NFC: [0xC203], NFD: [0x1109, 0x116D, 0x11AE], NFKC: [0xC203], NFKD: [0x1109, 0x116D, 0x11AE] },
+{ source: [0xC204], NFC: [0xC204], NFD: [0x1109, 0x116D, 0x11AF], NFKC: [0xC204], NFKD: [0x1109, 0x116D, 0x11AF] },
+{ source: [0xC205], NFC: [0xC205], NFD: [0x1109, 0x116D, 0x11B0], NFKC: [0xC205], NFKD: [0x1109, 0x116D, 0x11B0] },
+{ source: [0xC206], NFC: [0xC206], NFD: [0x1109, 0x116D, 0x11B1], NFKC: [0xC206], NFKD: [0x1109, 0x116D, 0x11B1] },
+{ source: [0xC207], NFC: [0xC207], NFD: [0x1109, 0x116D, 0x11B2], NFKC: [0xC207], NFKD: [0x1109, 0x116D, 0x11B2] },
+{ source: [0xC208], NFC: [0xC208], NFD: [0x1109, 0x116D, 0x11B3], NFKC: [0xC208], NFKD: [0x1109, 0x116D, 0x11B3] },
+{ source: [0xC209], NFC: [0xC209], NFD: [0x1109, 0x116D, 0x11B4], NFKC: [0xC209], NFKD: [0x1109, 0x116D, 0x11B4] },
+{ source: [0xC20A], NFC: [0xC20A], NFD: [0x1109, 0x116D, 0x11B5], NFKC: [0xC20A], NFKD: [0x1109, 0x116D, 0x11B5] },
+{ source: [0xC20B], NFC: [0xC20B], NFD: [0x1109, 0x116D, 0x11B6], NFKC: [0xC20B], NFKD: [0x1109, 0x116D, 0x11B6] },
+{ source: [0xC20C], NFC: [0xC20C], NFD: [0x1109, 0x116D, 0x11B7], NFKC: [0xC20C], NFKD: [0x1109, 0x116D, 0x11B7] },
+{ source: [0xC20D], NFC: [0xC20D], NFD: [0x1109, 0x116D, 0x11B8], NFKC: [0xC20D], NFKD: [0x1109, 0x116D, 0x11B8] },
+{ source: [0xC20E], NFC: [0xC20E], NFD: [0x1109, 0x116D, 0x11B9], NFKC: [0xC20E], NFKD: [0x1109, 0x116D, 0x11B9] },
+{ source: [0xC20F], NFC: [0xC20F], NFD: [0x1109, 0x116D, 0x11BA], NFKC: [0xC20F], NFKD: [0x1109, 0x116D, 0x11BA] },
+{ source: [0xC210], NFC: [0xC210], NFD: [0x1109, 0x116D, 0x11BB], NFKC: [0xC210], NFKD: [0x1109, 0x116D, 0x11BB] },
+{ source: [0xC211], NFC: [0xC211], NFD: [0x1109, 0x116D, 0x11BC], NFKC: [0xC211], NFKD: [0x1109, 0x116D, 0x11BC] },
+{ source: [0xC212], NFC: [0xC212], NFD: [0x1109, 0x116D, 0x11BD], NFKC: [0xC212], NFKD: [0x1109, 0x116D, 0x11BD] },
+{ source: [0xC213], NFC: [0xC213], NFD: [0x1109, 0x116D, 0x11BE], NFKC: [0xC213], NFKD: [0x1109, 0x116D, 0x11BE] },
+{ source: [0xC214], NFC: [0xC214], NFD: [0x1109, 0x116D, 0x11BF], NFKC: [0xC214], NFKD: [0x1109, 0x116D, 0x11BF] },
+{ source: [0xC215], NFC: [0xC215], NFD: [0x1109, 0x116D, 0x11C0], NFKC: [0xC215], NFKD: [0x1109, 0x116D, 0x11C0] },
+{ source: [0xC216], NFC: [0xC216], NFD: [0x1109, 0x116D, 0x11C1], NFKC: [0xC216], NFKD: [0x1109, 0x116D, 0x11C1] },
+{ source: [0xC217], NFC: [0xC217], NFD: [0x1109, 0x116D, 0x11C2], NFKC: [0xC217], NFKD: [0x1109, 0x116D, 0x11C2] },
+{ source: [0xC218], NFC: [0xC218], NFD: [0x1109, 0x116E], NFKC: [0xC218], NFKD: [0x1109, 0x116E] },
+{ source: [0xC219], NFC: [0xC219], NFD: [0x1109, 0x116E, 0x11A8], NFKC: [0xC219], NFKD: [0x1109, 0x116E, 0x11A8] },
+{ source: [0xC21A], NFC: [0xC21A], NFD: [0x1109, 0x116E, 0x11A9], NFKC: [0xC21A], NFKD: [0x1109, 0x116E, 0x11A9] },
+{ source: [0xC21B], NFC: [0xC21B], NFD: [0x1109, 0x116E, 0x11AA], NFKC: [0xC21B], NFKD: [0x1109, 0x116E, 0x11AA] },
+{ source: [0xC21C], NFC: [0xC21C], NFD: [0x1109, 0x116E, 0x11AB], NFKC: [0xC21C], NFKD: [0x1109, 0x116E, 0x11AB] },
+{ source: [0xC21D], NFC: [0xC21D], NFD: [0x1109, 0x116E, 0x11AC], NFKC: [0xC21D], NFKD: [0x1109, 0x116E, 0x11AC] },
+{ source: [0xC21E], NFC: [0xC21E], NFD: [0x1109, 0x116E, 0x11AD], NFKC: [0xC21E], NFKD: [0x1109, 0x116E, 0x11AD] },
+{ source: [0xC21F], NFC: [0xC21F], NFD: [0x1109, 0x116E, 0x11AE], NFKC: [0xC21F], NFKD: [0x1109, 0x116E, 0x11AE] },
+{ source: [0xC220], NFC: [0xC220], NFD: [0x1109, 0x116E, 0x11AF], NFKC: [0xC220], NFKD: [0x1109, 0x116E, 0x11AF] },
+{ source: [0xC221], NFC: [0xC221], NFD: [0x1109, 0x116E, 0x11B0], NFKC: [0xC221], NFKD: [0x1109, 0x116E, 0x11B0] },
+{ source: [0xC222], NFC: [0xC222], NFD: [0x1109, 0x116E, 0x11B1], NFKC: [0xC222], NFKD: [0x1109, 0x116E, 0x11B1] },
+{ source: [0xC223], NFC: [0xC223], NFD: [0x1109, 0x116E, 0x11B2], NFKC: [0xC223], NFKD: [0x1109, 0x116E, 0x11B2] },
+{ source: [0xC224], NFC: [0xC224], NFD: [0x1109, 0x116E, 0x11B3], NFKC: [0xC224], NFKD: [0x1109, 0x116E, 0x11B3] },
+{ source: [0xC225], NFC: [0xC225], NFD: [0x1109, 0x116E, 0x11B4], NFKC: [0xC225], NFKD: [0x1109, 0x116E, 0x11B4] },
+{ source: [0xC226], NFC: [0xC226], NFD: [0x1109, 0x116E, 0x11B5], NFKC: [0xC226], NFKD: [0x1109, 0x116E, 0x11B5] },
+{ source: [0xC227], NFC: [0xC227], NFD: [0x1109, 0x116E, 0x11B6], NFKC: [0xC227], NFKD: [0x1109, 0x116E, 0x11B6] },
+{ source: [0xC228], NFC: [0xC228], NFD: [0x1109, 0x116E, 0x11B7], NFKC: [0xC228], NFKD: [0x1109, 0x116E, 0x11B7] },
+{ source: [0xC229], NFC: [0xC229], NFD: [0x1109, 0x116E, 0x11B8], NFKC: [0xC229], NFKD: [0x1109, 0x116E, 0x11B8] },
+{ source: [0xC22A], NFC: [0xC22A], NFD: [0x1109, 0x116E, 0x11B9], NFKC: [0xC22A], NFKD: [0x1109, 0x116E, 0x11B9] },
+{ source: [0xC22B], NFC: [0xC22B], NFD: [0x1109, 0x116E, 0x11BA], NFKC: [0xC22B], NFKD: [0x1109, 0x116E, 0x11BA] },
+{ source: [0xC22C], NFC: [0xC22C], NFD: [0x1109, 0x116E, 0x11BB], NFKC: [0xC22C], NFKD: [0x1109, 0x116E, 0x11BB] },
+{ source: [0xC22D], NFC: [0xC22D], NFD: [0x1109, 0x116E, 0x11BC], NFKC: [0xC22D], NFKD: [0x1109, 0x116E, 0x11BC] },
+{ source: [0xC22E], NFC: [0xC22E], NFD: [0x1109, 0x116E, 0x11BD], NFKC: [0xC22E], NFKD: [0x1109, 0x116E, 0x11BD] },
+{ source: [0xC22F], NFC: [0xC22F], NFD: [0x1109, 0x116E, 0x11BE], NFKC: [0xC22F], NFKD: [0x1109, 0x116E, 0x11BE] },
+{ source: [0xC230], NFC: [0xC230], NFD: [0x1109, 0x116E, 0x11BF], NFKC: [0xC230], NFKD: [0x1109, 0x116E, 0x11BF] },
+{ source: [0xC231], NFC: [0xC231], NFD: [0x1109, 0x116E, 0x11C0], NFKC: [0xC231], NFKD: [0x1109, 0x116E, 0x11C0] },
+{ source: [0xC232], NFC: [0xC232], NFD: [0x1109, 0x116E, 0x11C1], NFKC: [0xC232], NFKD: [0x1109, 0x116E, 0x11C1] },
+{ source: [0xC233], NFC: [0xC233], NFD: [0x1109, 0x116E, 0x11C2], NFKC: [0xC233], NFKD: [0x1109, 0x116E, 0x11C2] },
+{ source: [0xC234], NFC: [0xC234], NFD: [0x1109, 0x116F], NFKC: [0xC234], NFKD: [0x1109, 0x116F] },
+{ source: [0xC235], NFC: [0xC235], NFD: [0x1109, 0x116F, 0x11A8], NFKC: [0xC235], NFKD: [0x1109, 0x116F, 0x11A8] },
+{ source: [0xC236], NFC: [0xC236], NFD: [0x1109, 0x116F, 0x11A9], NFKC: [0xC236], NFKD: [0x1109, 0x116F, 0x11A9] },
+{ source: [0xC237], NFC: [0xC237], NFD: [0x1109, 0x116F, 0x11AA], NFKC: [0xC237], NFKD: [0x1109, 0x116F, 0x11AA] },
+{ source: [0xC238], NFC: [0xC238], NFD: [0x1109, 0x116F, 0x11AB], NFKC: [0xC238], NFKD: [0x1109, 0x116F, 0x11AB] },
+{ source: [0xC239], NFC: [0xC239], NFD: [0x1109, 0x116F, 0x11AC], NFKC: [0xC239], NFKD: [0x1109, 0x116F, 0x11AC] },
+{ source: [0xC23A], NFC: [0xC23A], NFD: [0x1109, 0x116F, 0x11AD], NFKC: [0xC23A], NFKD: [0x1109, 0x116F, 0x11AD] },
+{ source: [0xC23B], NFC: [0xC23B], NFD: [0x1109, 0x116F, 0x11AE], NFKC: [0xC23B], NFKD: [0x1109, 0x116F, 0x11AE] },
+{ source: [0xC23C], NFC: [0xC23C], NFD: [0x1109, 0x116F, 0x11AF], NFKC: [0xC23C], NFKD: [0x1109, 0x116F, 0x11AF] },
+{ source: [0xC23D], NFC: [0xC23D], NFD: [0x1109, 0x116F, 0x11B0], NFKC: [0xC23D], NFKD: [0x1109, 0x116F, 0x11B0] },
+{ source: [0xC23E], NFC: [0xC23E], NFD: [0x1109, 0x116F, 0x11B1], NFKC: [0xC23E], NFKD: [0x1109, 0x116F, 0x11B1] },
+{ source: [0xC23F], NFC: [0xC23F], NFD: [0x1109, 0x116F, 0x11B2], NFKC: [0xC23F], NFKD: [0x1109, 0x116F, 0x11B2] },
+{ source: [0xC240], NFC: [0xC240], NFD: [0x1109, 0x116F, 0x11B3], NFKC: [0xC240], NFKD: [0x1109, 0x116F, 0x11B3] },
+{ source: [0xC241], NFC: [0xC241], NFD: [0x1109, 0x116F, 0x11B4], NFKC: [0xC241], NFKD: [0x1109, 0x116F, 0x11B4] },
+{ source: [0xC242], NFC: [0xC242], NFD: [0x1109, 0x116F, 0x11B5], NFKC: [0xC242], NFKD: [0x1109, 0x116F, 0x11B5] },
+{ source: [0xC243], NFC: [0xC243], NFD: [0x1109, 0x116F, 0x11B6], NFKC: [0xC243], NFKD: [0x1109, 0x116F, 0x11B6] },
+{ source: [0xC244], NFC: [0xC244], NFD: [0x1109, 0x116F, 0x11B7], NFKC: [0xC244], NFKD: [0x1109, 0x116F, 0x11B7] },
+{ source: [0xC245], NFC: [0xC245], NFD: [0x1109, 0x116F, 0x11B8], NFKC: [0xC245], NFKD: [0x1109, 0x116F, 0x11B8] },
+{ source: [0xC246], NFC: [0xC246], NFD: [0x1109, 0x116F, 0x11B9], NFKC: [0xC246], NFKD: [0x1109, 0x116F, 0x11B9] },
+{ source: [0xC247], NFC: [0xC247], NFD: [0x1109, 0x116F, 0x11BA], NFKC: [0xC247], NFKD: [0x1109, 0x116F, 0x11BA] },
+{ source: [0xC248], NFC: [0xC248], NFD: [0x1109, 0x116F, 0x11BB], NFKC: [0xC248], NFKD: [0x1109, 0x116F, 0x11BB] },
+{ source: [0xC249], NFC: [0xC249], NFD: [0x1109, 0x116F, 0x11BC], NFKC: [0xC249], NFKD: [0x1109, 0x116F, 0x11BC] },
+{ source: [0xC24A], NFC: [0xC24A], NFD: [0x1109, 0x116F, 0x11BD], NFKC: [0xC24A], NFKD: [0x1109, 0x116F, 0x11BD] },
+{ source: [0xC24B], NFC: [0xC24B], NFD: [0x1109, 0x116F, 0x11BE], NFKC: [0xC24B], NFKD: [0x1109, 0x116F, 0x11BE] },
+{ source: [0xC24C], NFC: [0xC24C], NFD: [0x1109, 0x116F, 0x11BF], NFKC: [0xC24C], NFKD: [0x1109, 0x116F, 0x11BF] },
+{ source: [0xC24D], NFC: [0xC24D], NFD: [0x1109, 0x116F, 0x11C0], NFKC: [0xC24D], NFKD: [0x1109, 0x116F, 0x11C0] },
+{ source: [0xC24E], NFC: [0xC24E], NFD: [0x1109, 0x116F, 0x11C1], NFKC: [0xC24E], NFKD: [0x1109, 0x116F, 0x11C1] },
+{ source: [0xC24F], NFC: [0xC24F], NFD: [0x1109, 0x116F, 0x11C2], NFKC: [0xC24F], NFKD: [0x1109, 0x116F, 0x11C2] },
+{ source: [0xC250], NFC: [0xC250], NFD: [0x1109, 0x1170], NFKC: [0xC250], NFKD: [0x1109, 0x1170] },
+{ source: [0xC251], NFC: [0xC251], NFD: [0x1109, 0x1170, 0x11A8], NFKC: [0xC251], NFKD: [0x1109, 0x1170, 0x11A8] },
+{ source: [0xC252], NFC: [0xC252], NFD: [0x1109, 0x1170, 0x11A9], NFKC: [0xC252], NFKD: [0x1109, 0x1170, 0x11A9] },
+{ source: [0xC253], NFC: [0xC253], NFD: [0x1109, 0x1170, 0x11AA], NFKC: [0xC253], NFKD: [0x1109, 0x1170, 0x11AA] },
+{ source: [0xC254], NFC: [0xC254], NFD: [0x1109, 0x1170, 0x11AB], NFKC: [0xC254], NFKD: [0x1109, 0x1170, 0x11AB] },
+{ source: [0xC255], NFC: [0xC255], NFD: [0x1109, 0x1170, 0x11AC], NFKC: [0xC255], NFKD: [0x1109, 0x1170, 0x11AC] },
+{ source: [0xC256], NFC: [0xC256], NFD: [0x1109, 0x1170, 0x11AD], NFKC: [0xC256], NFKD: [0x1109, 0x1170, 0x11AD] },
+{ source: [0xC257], NFC: [0xC257], NFD: [0x1109, 0x1170, 0x11AE], NFKC: [0xC257], NFKD: [0x1109, 0x1170, 0x11AE] },
+{ source: [0xC258], NFC: [0xC258], NFD: [0x1109, 0x1170, 0x11AF], NFKC: [0xC258], NFKD: [0x1109, 0x1170, 0x11AF] },
+{ source: [0xC259], NFC: [0xC259], NFD: [0x1109, 0x1170, 0x11B0], NFKC: [0xC259], NFKD: [0x1109, 0x1170, 0x11B0] },
+{ source: [0xC25A], NFC: [0xC25A], NFD: [0x1109, 0x1170, 0x11B1], NFKC: [0xC25A], NFKD: [0x1109, 0x1170, 0x11B1] },
+{ source: [0xC25B], NFC: [0xC25B], NFD: [0x1109, 0x1170, 0x11B2], NFKC: [0xC25B], NFKD: [0x1109, 0x1170, 0x11B2] },
+{ source: [0xC25C], NFC: [0xC25C], NFD: [0x1109, 0x1170, 0x11B3], NFKC: [0xC25C], NFKD: [0x1109, 0x1170, 0x11B3] },
+{ source: [0xC25D], NFC: [0xC25D], NFD: [0x1109, 0x1170, 0x11B4], NFKC: [0xC25D], NFKD: [0x1109, 0x1170, 0x11B4] },
+{ source: [0xC25E], NFC: [0xC25E], NFD: [0x1109, 0x1170, 0x11B5], NFKC: [0xC25E], NFKD: [0x1109, 0x1170, 0x11B5] },
+{ source: [0xC25F], NFC: [0xC25F], NFD: [0x1109, 0x1170, 0x11B6], NFKC: [0xC25F], NFKD: [0x1109, 0x1170, 0x11B6] },
+{ source: [0xC260], NFC: [0xC260], NFD: [0x1109, 0x1170, 0x11B7], NFKC: [0xC260], NFKD: [0x1109, 0x1170, 0x11B7] },
+{ source: [0xC261], NFC: [0xC261], NFD: [0x1109, 0x1170, 0x11B8], NFKC: [0xC261], NFKD: [0x1109, 0x1170, 0x11B8] },
+{ source: [0xC262], NFC: [0xC262], NFD: [0x1109, 0x1170, 0x11B9], NFKC: [0xC262], NFKD: [0x1109, 0x1170, 0x11B9] },
+{ source: [0xC263], NFC: [0xC263], NFD: [0x1109, 0x1170, 0x11BA], NFKC: [0xC263], NFKD: [0x1109, 0x1170, 0x11BA] },
+{ source: [0xC264], NFC: [0xC264], NFD: [0x1109, 0x1170, 0x11BB], NFKC: [0xC264], NFKD: [0x1109, 0x1170, 0x11BB] },
+{ source: [0xC265], NFC: [0xC265], NFD: [0x1109, 0x1170, 0x11BC], NFKC: [0xC265], NFKD: [0x1109, 0x1170, 0x11BC] },
+{ source: [0xC266], NFC: [0xC266], NFD: [0x1109, 0x1170, 0x11BD], NFKC: [0xC266], NFKD: [0x1109, 0x1170, 0x11BD] },
+{ source: [0xC267], NFC: [0xC267], NFD: [0x1109, 0x1170, 0x11BE], NFKC: [0xC267], NFKD: [0x1109, 0x1170, 0x11BE] },
+{ source: [0xC268], NFC: [0xC268], NFD: [0x1109, 0x1170, 0x11BF], NFKC: [0xC268], NFKD: [0x1109, 0x1170, 0x11BF] },
+{ source: [0xC269], NFC: [0xC269], NFD: [0x1109, 0x1170, 0x11C0], NFKC: [0xC269], NFKD: [0x1109, 0x1170, 0x11C0] },
+{ source: [0xC26A], NFC: [0xC26A], NFD: [0x1109, 0x1170, 0x11C1], NFKC: [0xC26A], NFKD: [0x1109, 0x1170, 0x11C1] },
+{ source: [0xC26B], NFC: [0xC26B], NFD: [0x1109, 0x1170, 0x11C2], NFKC: [0xC26B], NFKD: [0x1109, 0x1170, 0x11C2] },
+{ source: [0xC26C], NFC: [0xC26C], NFD: [0x1109, 0x1171], NFKC: [0xC26C], NFKD: [0x1109, 0x1171] },
+{ source: [0xC26D], NFC: [0xC26D], NFD: [0x1109, 0x1171, 0x11A8], NFKC: [0xC26D], NFKD: [0x1109, 0x1171, 0x11A8] },
+{ source: [0xC26E], NFC: [0xC26E], NFD: [0x1109, 0x1171, 0x11A9], NFKC: [0xC26E], NFKD: [0x1109, 0x1171, 0x11A9] },
+{ source: [0xC26F], NFC: [0xC26F], NFD: [0x1109, 0x1171, 0x11AA], NFKC: [0xC26F], NFKD: [0x1109, 0x1171, 0x11AA] },
+{ source: [0xC270], NFC: [0xC270], NFD: [0x1109, 0x1171, 0x11AB], NFKC: [0xC270], NFKD: [0x1109, 0x1171, 0x11AB] },
+{ source: [0xC271], NFC: [0xC271], NFD: [0x1109, 0x1171, 0x11AC], NFKC: [0xC271], NFKD: [0x1109, 0x1171, 0x11AC] },
+{ source: [0xC272], NFC: [0xC272], NFD: [0x1109, 0x1171, 0x11AD], NFKC: [0xC272], NFKD: [0x1109, 0x1171, 0x11AD] },
+{ source: [0xC273], NFC: [0xC273], NFD: [0x1109, 0x1171, 0x11AE], NFKC: [0xC273], NFKD: [0x1109, 0x1171, 0x11AE] },
+{ source: [0xC274], NFC: [0xC274], NFD: [0x1109, 0x1171, 0x11AF], NFKC: [0xC274], NFKD: [0x1109, 0x1171, 0x11AF] },
+{ source: [0xC275], NFC: [0xC275], NFD: [0x1109, 0x1171, 0x11B0], NFKC: [0xC275], NFKD: [0x1109, 0x1171, 0x11B0] },
+{ source: [0xC276], NFC: [0xC276], NFD: [0x1109, 0x1171, 0x11B1], NFKC: [0xC276], NFKD: [0x1109, 0x1171, 0x11B1] },
+{ source: [0xC277], NFC: [0xC277], NFD: [0x1109, 0x1171, 0x11B2], NFKC: [0xC277], NFKD: [0x1109, 0x1171, 0x11B2] },
+{ source: [0xC278], NFC: [0xC278], NFD: [0x1109, 0x1171, 0x11B3], NFKC: [0xC278], NFKD: [0x1109, 0x1171, 0x11B3] },
+{ source: [0xC279], NFC: [0xC279], NFD: [0x1109, 0x1171, 0x11B4], NFKC: [0xC279], NFKD: [0x1109, 0x1171, 0x11B4] },
+{ source: [0xC27A], NFC: [0xC27A], NFD: [0x1109, 0x1171, 0x11B5], NFKC: [0xC27A], NFKD: [0x1109, 0x1171, 0x11B5] },
+{ source: [0xC27B], NFC: [0xC27B], NFD: [0x1109, 0x1171, 0x11B6], NFKC: [0xC27B], NFKD: [0x1109, 0x1171, 0x11B6] },
+{ source: [0xC27C], NFC: [0xC27C], NFD: [0x1109, 0x1171, 0x11B7], NFKC: [0xC27C], NFKD: [0x1109, 0x1171, 0x11B7] },
+{ source: [0xC27D], NFC: [0xC27D], NFD: [0x1109, 0x1171, 0x11B8], NFKC: [0xC27D], NFKD: [0x1109, 0x1171, 0x11B8] },
+{ source: [0xC27E], NFC: [0xC27E], NFD: [0x1109, 0x1171, 0x11B9], NFKC: [0xC27E], NFKD: [0x1109, 0x1171, 0x11B9] },
+{ source: [0xC27F], NFC: [0xC27F], NFD: [0x1109, 0x1171, 0x11BA], NFKC: [0xC27F], NFKD: [0x1109, 0x1171, 0x11BA] },
+{ source: [0xC280], NFC: [0xC280], NFD: [0x1109, 0x1171, 0x11BB], NFKC: [0xC280], NFKD: [0x1109, 0x1171, 0x11BB] },
+{ source: [0xC281], NFC: [0xC281], NFD: [0x1109, 0x1171, 0x11BC], NFKC: [0xC281], NFKD: [0x1109, 0x1171, 0x11BC] },
+{ source: [0xC282], NFC: [0xC282], NFD: [0x1109, 0x1171, 0x11BD], NFKC: [0xC282], NFKD: [0x1109, 0x1171, 0x11BD] },
+{ source: [0xC283], NFC: [0xC283], NFD: [0x1109, 0x1171, 0x11BE], NFKC: [0xC283], NFKD: [0x1109, 0x1171, 0x11BE] },
+{ source: [0xC284], NFC: [0xC284], NFD: [0x1109, 0x1171, 0x11BF], NFKC: [0xC284], NFKD: [0x1109, 0x1171, 0x11BF] },
+{ source: [0xC285], NFC: [0xC285], NFD: [0x1109, 0x1171, 0x11C0], NFKC: [0xC285], NFKD: [0x1109, 0x1171, 0x11C0] },
+{ source: [0xC286], NFC: [0xC286], NFD: [0x1109, 0x1171, 0x11C1], NFKC: [0xC286], NFKD: [0x1109, 0x1171, 0x11C1] },
+{ source: [0xC287], NFC: [0xC287], NFD: [0x1109, 0x1171, 0x11C2], NFKC: [0xC287], NFKD: [0x1109, 0x1171, 0x11C2] },
+{ source: [0xC288], NFC: [0xC288], NFD: [0x1109, 0x1172], NFKC: [0xC288], NFKD: [0x1109, 0x1172] },
+{ source: [0xC289], NFC: [0xC289], NFD: [0x1109, 0x1172, 0x11A8], NFKC: [0xC289], NFKD: [0x1109, 0x1172, 0x11A8] },
+{ source: [0xC28A], NFC: [0xC28A], NFD: [0x1109, 0x1172, 0x11A9], NFKC: [0xC28A], NFKD: [0x1109, 0x1172, 0x11A9] },
+{ source: [0xC28B], NFC: [0xC28B], NFD: [0x1109, 0x1172, 0x11AA], NFKC: [0xC28B], NFKD: [0x1109, 0x1172, 0x11AA] },
+{ source: [0xC28C], NFC: [0xC28C], NFD: [0x1109, 0x1172, 0x11AB], NFKC: [0xC28C], NFKD: [0x1109, 0x1172, 0x11AB] },
+{ source: [0xC28D], NFC: [0xC28D], NFD: [0x1109, 0x1172, 0x11AC], NFKC: [0xC28D], NFKD: [0x1109, 0x1172, 0x11AC] },
+{ source: [0xC28E], NFC: [0xC28E], NFD: [0x1109, 0x1172, 0x11AD], NFKC: [0xC28E], NFKD: [0x1109, 0x1172, 0x11AD] },
+{ source: [0xC28F], NFC: [0xC28F], NFD: [0x1109, 0x1172, 0x11AE], NFKC: [0xC28F], NFKD: [0x1109, 0x1172, 0x11AE] },
+{ source: [0xC290], NFC: [0xC290], NFD: [0x1109, 0x1172, 0x11AF], NFKC: [0xC290], NFKD: [0x1109, 0x1172, 0x11AF] },
+{ source: [0xC291], NFC: [0xC291], NFD: [0x1109, 0x1172, 0x11B0], NFKC: [0xC291], NFKD: [0x1109, 0x1172, 0x11B0] },
+{ source: [0xC292], NFC: [0xC292], NFD: [0x1109, 0x1172, 0x11B1], NFKC: [0xC292], NFKD: [0x1109, 0x1172, 0x11B1] },
+{ source: [0xC293], NFC: [0xC293], NFD: [0x1109, 0x1172, 0x11B2], NFKC: [0xC293], NFKD: [0x1109, 0x1172, 0x11B2] },
+{ source: [0xC294], NFC: [0xC294], NFD: [0x1109, 0x1172, 0x11B3], NFKC: [0xC294], NFKD: [0x1109, 0x1172, 0x11B3] },
+{ source: [0xC295], NFC: [0xC295], NFD: [0x1109, 0x1172, 0x11B4], NFKC: [0xC295], NFKD: [0x1109, 0x1172, 0x11B4] },
+{ source: [0xC296], NFC: [0xC296], NFD: [0x1109, 0x1172, 0x11B5], NFKC: [0xC296], NFKD: [0x1109, 0x1172, 0x11B5] },
+{ source: [0xC297], NFC: [0xC297], NFD: [0x1109, 0x1172, 0x11B6], NFKC: [0xC297], NFKD: [0x1109, 0x1172, 0x11B6] },
+{ source: [0xC298], NFC: [0xC298], NFD: [0x1109, 0x1172, 0x11B7], NFKC: [0xC298], NFKD: [0x1109, 0x1172, 0x11B7] },
+{ source: [0xC299], NFC: [0xC299], NFD: [0x1109, 0x1172, 0x11B8], NFKC: [0xC299], NFKD: [0x1109, 0x1172, 0x11B8] },
+{ source: [0xC29A], NFC: [0xC29A], NFD: [0x1109, 0x1172, 0x11B9], NFKC: [0xC29A], NFKD: [0x1109, 0x1172, 0x11B9] },
+{ source: [0xC29B], NFC: [0xC29B], NFD: [0x1109, 0x1172, 0x11BA], NFKC: [0xC29B], NFKD: [0x1109, 0x1172, 0x11BA] },
+{ source: [0xC29C], NFC: [0xC29C], NFD: [0x1109, 0x1172, 0x11BB], NFKC: [0xC29C], NFKD: [0x1109, 0x1172, 0x11BB] },
+{ source: [0xC29D], NFC: [0xC29D], NFD: [0x1109, 0x1172, 0x11BC], NFKC: [0xC29D], NFKD: [0x1109, 0x1172, 0x11BC] },
+{ source: [0xC29E], NFC: [0xC29E], NFD: [0x1109, 0x1172, 0x11BD], NFKC: [0xC29E], NFKD: [0x1109, 0x1172, 0x11BD] },
+{ source: [0xC29F], NFC: [0xC29F], NFD: [0x1109, 0x1172, 0x11BE], NFKC: [0xC29F], NFKD: [0x1109, 0x1172, 0x11BE] },
+{ source: [0xC2A0], NFC: [0xC2A0], NFD: [0x1109, 0x1172, 0x11BF], NFKC: [0xC2A0], NFKD: [0x1109, 0x1172, 0x11BF] },
+{ source: [0xC2A1], NFC: [0xC2A1], NFD: [0x1109, 0x1172, 0x11C0], NFKC: [0xC2A1], NFKD: [0x1109, 0x1172, 0x11C0] },
+{ source: [0xC2A2], NFC: [0xC2A2], NFD: [0x1109, 0x1172, 0x11C1], NFKC: [0xC2A2], NFKD: [0x1109, 0x1172, 0x11C1] },
+{ source: [0xC2A3], NFC: [0xC2A3], NFD: [0x1109, 0x1172, 0x11C2], NFKC: [0xC2A3], NFKD: [0x1109, 0x1172, 0x11C2] },
+{ source: [0xC2A4], NFC: [0xC2A4], NFD: [0x1109, 0x1173], NFKC: [0xC2A4], NFKD: [0x1109, 0x1173] },
+{ source: [0xC2A5], NFC: [0xC2A5], NFD: [0x1109, 0x1173, 0x11A8], NFKC: [0xC2A5], NFKD: [0x1109, 0x1173, 0x11A8] },
+{ source: [0xC2A6], NFC: [0xC2A6], NFD: [0x1109, 0x1173, 0x11A9], NFKC: [0xC2A6], NFKD: [0x1109, 0x1173, 0x11A9] },
+{ source: [0xC2A7], NFC: [0xC2A7], NFD: [0x1109, 0x1173, 0x11AA], NFKC: [0xC2A7], NFKD: [0x1109, 0x1173, 0x11AA] },
+{ source: [0xC2A8], NFC: [0xC2A8], NFD: [0x1109, 0x1173, 0x11AB], NFKC: [0xC2A8], NFKD: [0x1109, 0x1173, 0x11AB] },
+{ source: [0xC2A9], NFC: [0xC2A9], NFD: [0x1109, 0x1173, 0x11AC], NFKC: [0xC2A9], NFKD: [0x1109, 0x1173, 0x11AC] },
+{ source: [0xC2AA], NFC: [0xC2AA], NFD: [0x1109, 0x1173, 0x11AD], NFKC: [0xC2AA], NFKD: [0x1109, 0x1173, 0x11AD] },
+{ source: [0xC2AB], NFC: [0xC2AB], NFD: [0x1109, 0x1173, 0x11AE], NFKC: [0xC2AB], NFKD: [0x1109, 0x1173, 0x11AE] },
+{ source: [0xC2AC], NFC: [0xC2AC], NFD: [0x1109, 0x1173, 0x11AF], NFKC: [0xC2AC], NFKD: [0x1109, 0x1173, 0x11AF] },
+{ source: [0xC2AD], NFC: [0xC2AD], NFD: [0x1109, 0x1173, 0x11B0], NFKC: [0xC2AD], NFKD: [0x1109, 0x1173, 0x11B0] },
+{ source: [0xC2AE], NFC: [0xC2AE], NFD: [0x1109, 0x1173, 0x11B1], NFKC: [0xC2AE], NFKD: [0x1109, 0x1173, 0x11B1] },
+{ source: [0xC2AF], NFC: [0xC2AF], NFD: [0x1109, 0x1173, 0x11B2], NFKC: [0xC2AF], NFKD: [0x1109, 0x1173, 0x11B2] },
+{ source: [0xC2B0], NFC: [0xC2B0], NFD: [0x1109, 0x1173, 0x11B3], NFKC: [0xC2B0], NFKD: [0x1109, 0x1173, 0x11B3] },
+{ source: [0xC2B1], NFC: [0xC2B1], NFD: [0x1109, 0x1173, 0x11B4], NFKC: [0xC2B1], NFKD: [0x1109, 0x1173, 0x11B4] },
+{ source: [0xC2B2], NFC: [0xC2B2], NFD: [0x1109, 0x1173, 0x11B5], NFKC: [0xC2B2], NFKD: [0x1109, 0x1173, 0x11B5] },
+{ source: [0xC2B3], NFC: [0xC2B3], NFD: [0x1109, 0x1173, 0x11B6], NFKC: [0xC2B3], NFKD: [0x1109, 0x1173, 0x11B6] },
+{ source: [0xC2B4], NFC: [0xC2B4], NFD: [0x1109, 0x1173, 0x11B7], NFKC: [0xC2B4], NFKD: [0x1109, 0x1173, 0x11B7] },
+{ source: [0xC2B5], NFC: [0xC2B5], NFD: [0x1109, 0x1173, 0x11B8], NFKC: [0xC2B5], NFKD: [0x1109, 0x1173, 0x11B8] },
+{ source: [0xC2B6], NFC: [0xC2B6], NFD: [0x1109, 0x1173, 0x11B9], NFKC: [0xC2B6], NFKD: [0x1109, 0x1173, 0x11B9] },
+{ source: [0xC2B7], NFC: [0xC2B7], NFD: [0x1109, 0x1173, 0x11BA], NFKC: [0xC2B7], NFKD: [0x1109, 0x1173, 0x11BA] },
+{ source: [0xC2B8], NFC: [0xC2B8], NFD: [0x1109, 0x1173, 0x11BB], NFKC: [0xC2B8], NFKD: [0x1109, 0x1173, 0x11BB] },
+{ source: [0xC2B9], NFC: [0xC2B9], NFD: [0x1109, 0x1173, 0x11BC], NFKC: [0xC2B9], NFKD: [0x1109, 0x1173, 0x11BC] },
+{ source: [0xC2BA], NFC: [0xC2BA], NFD: [0x1109, 0x1173, 0x11BD], NFKC: [0xC2BA], NFKD: [0x1109, 0x1173, 0x11BD] },
+{ source: [0xC2BB], NFC: [0xC2BB], NFD: [0x1109, 0x1173, 0x11BE], NFKC: [0xC2BB], NFKD: [0x1109, 0x1173, 0x11BE] },
+{ source: [0xC2BC], NFC: [0xC2BC], NFD: [0x1109, 0x1173, 0x11BF], NFKC: [0xC2BC], NFKD: [0x1109, 0x1173, 0x11BF] },
+{ source: [0xC2BD], NFC: [0xC2BD], NFD: [0x1109, 0x1173, 0x11C0], NFKC: [0xC2BD], NFKD: [0x1109, 0x1173, 0x11C0] },
+{ source: [0xC2BE], NFC: [0xC2BE], NFD: [0x1109, 0x1173, 0x11C1], NFKC: [0xC2BE], NFKD: [0x1109, 0x1173, 0x11C1] },
+{ source: [0xC2BF], NFC: [0xC2BF], NFD: [0x1109, 0x1173, 0x11C2], NFKC: [0xC2BF], NFKD: [0x1109, 0x1173, 0x11C2] },
+{ source: [0xC2C0], NFC: [0xC2C0], NFD: [0x1109, 0x1174], NFKC: [0xC2C0], NFKD: [0x1109, 0x1174] },
+{ source: [0xC2C1], NFC: [0xC2C1], NFD: [0x1109, 0x1174, 0x11A8], NFKC: [0xC2C1], NFKD: [0x1109, 0x1174, 0x11A8] },
+{ source: [0xC2C2], NFC: [0xC2C2], NFD: [0x1109, 0x1174, 0x11A9], NFKC: [0xC2C2], NFKD: [0x1109, 0x1174, 0x11A9] },
+{ source: [0xC2C3], NFC: [0xC2C3], NFD: [0x1109, 0x1174, 0x11AA], NFKC: [0xC2C3], NFKD: [0x1109, 0x1174, 0x11AA] },
+{ source: [0xC2C4], NFC: [0xC2C4], NFD: [0x1109, 0x1174, 0x11AB], NFKC: [0xC2C4], NFKD: [0x1109, 0x1174, 0x11AB] },
+{ source: [0xC2C5], NFC: [0xC2C5], NFD: [0x1109, 0x1174, 0x11AC], NFKC: [0xC2C5], NFKD: [0x1109, 0x1174, 0x11AC] },
+{ source: [0xC2C6], NFC: [0xC2C6], NFD: [0x1109, 0x1174, 0x11AD], NFKC: [0xC2C6], NFKD: [0x1109, 0x1174, 0x11AD] },
+{ source: [0xC2C7], NFC: [0xC2C7], NFD: [0x1109, 0x1174, 0x11AE], NFKC: [0xC2C7], NFKD: [0x1109, 0x1174, 0x11AE] },
+{ source: [0xC2C8], NFC: [0xC2C8], NFD: [0x1109, 0x1174, 0x11AF], NFKC: [0xC2C8], NFKD: [0x1109, 0x1174, 0x11AF] },
+{ source: [0xC2C9], NFC: [0xC2C9], NFD: [0x1109, 0x1174, 0x11B0], NFKC: [0xC2C9], NFKD: [0x1109, 0x1174, 0x11B0] },
+{ source: [0xC2CA], NFC: [0xC2CA], NFD: [0x1109, 0x1174, 0x11B1], NFKC: [0xC2CA], NFKD: [0x1109, 0x1174, 0x11B1] },
+{ source: [0xC2CB], NFC: [0xC2CB], NFD: [0x1109, 0x1174, 0x11B2], NFKC: [0xC2CB], NFKD: [0x1109, 0x1174, 0x11B2] },
+{ source: [0xC2CC], NFC: [0xC2CC], NFD: [0x1109, 0x1174, 0x11B3], NFKC: [0xC2CC], NFKD: [0x1109, 0x1174, 0x11B3] },
+{ source: [0xC2CD], NFC: [0xC2CD], NFD: [0x1109, 0x1174, 0x11B4], NFKC: [0xC2CD], NFKD: [0x1109, 0x1174, 0x11B4] },
+{ source: [0xC2CE], NFC: [0xC2CE], NFD: [0x1109, 0x1174, 0x11B5], NFKC: [0xC2CE], NFKD: [0x1109, 0x1174, 0x11B5] },
+{ source: [0xC2CF], NFC: [0xC2CF], NFD: [0x1109, 0x1174, 0x11B6], NFKC: [0xC2CF], NFKD: [0x1109, 0x1174, 0x11B6] },
+{ source: [0xC2D0], NFC: [0xC2D0], NFD: [0x1109, 0x1174, 0x11B7], NFKC: [0xC2D0], NFKD: [0x1109, 0x1174, 0x11B7] },
+{ source: [0xC2D1], NFC: [0xC2D1], NFD: [0x1109, 0x1174, 0x11B8], NFKC: [0xC2D1], NFKD: [0x1109, 0x1174, 0x11B8] },
+{ source: [0xC2D2], NFC: [0xC2D2], NFD: [0x1109, 0x1174, 0x11B9], NFKC: [0xC2D2], NFKD: [0x1109, 0x1174, 0x11B9] },
+{ source: [0xC2D3], NFC: [0xC2D3], NFD: [0x1109, 0x1174, 0x11BA], NFKC: [0xC2D3], NFKD: [0x1109, 0x1174, 0x11BA] },
+{ source: [0xC2D4], NFC: [0xC2D4], NFD: [0x1109, 0x1174, 0x11BB], NFKC: [0xC2D4], NFKD: [0x1109, 0x1174, 0x11BB] },
+{ source: [0xC2D5], NFC: [0xC2D5], NFD: [0x1109, 0x1174, 0x11BC], NFKC: [0xC2D5], NFKD: [0x1109, 0x1174, 0x11BC] },
+{ source: [0xC2D6], NFC: [0xC2D6], NFD: [0x1109, 0x1174, 0x11BD], NFKC: [0xC2D6], NFKD: [0x1109, 0x1174, 0x11BD] },
+{ source: [0xC2D7], NFC: [0xC2D7], NFD: [0x1109, 0x1174, 0x11BE], NFKC: [0xC2D7], NFKD: [0x1109, 0x1174, 0x11BE] },
+{ source: [0xC2D8], NFC: [0xC2D8], NFD: [0x1109, 0x1174, 0x11BF], NFKC: [0xC2D8], NFKD: [0x1109, 0x1174, 0x11BF] },
+{ source: [0xC2D9], NFC: [0xC2D9], NFD: [0x1109, 0x1174, 0x11C0], NFKC: [0xC2D9], NFKD: [0x1109, 0x1174, 0x11C0] },
+{ source: [0xC2DA], NFC: [0xC2DA], NFD: [0x1109, 0x1174, 0x11C1], NFKC: [0xC2DA], NFKD: [0x1109, 0x1174, 0x11C1] },
+{ source: [0xC2DB], NFC: [0xC2DB], NFD: [0x1109, 0x1174, 0x11C2], NFKC: [0xC2DB], NFKD: [0x1109, 0x1174, 0x11C2] },
+{ source: [0xC2DC], NFC: [0xC2DC], NFD: [0x1109, 0x1175], NFKC: [0xC2DC], NFKD: [0x1109, 0x1175] },
+{ source: [0xC2DD], NFC: [0xC2DD], NFD: [0x1109, 0x1175, 0x11A8], NFKC: [0xC2DD], NFKD: [0x1109, 0x1175, 0x11A8] },
+{ source: [0xC2DE], NFC: [0xC2DE], NFD: [0x1109, 0x1175, 0x11A9], NFKC: [0xC2DE], NFKD: [0x1109, 0x1175, 0x11A9] },
+{ source: [0xC2DF], NFC: [0xC2DF], NFD: [0x1109, 0x1175, 0x11AA], NFKC: [0xC2DF], NFKD: [0x1109, 0x1175, 0x11AA] },
+{ source: [0xC2E0], NFC: [0xC2E0], NFD: [0x1109, 0x1175, 0x11AB], NFKC: [0xC2E0], NFKD: [0x1109, 0x1175, 0x11AB] },
+{ source: [0xC2E1], NFC: [0xC2E1], NFD: [0x1109, 0x1175, 0x11AC], NFKC: [0xC2E1], NFKD: [0x1109, 0x1175, 0x11AC] },
+{ source: [0xC2E2], NFC: [0xC2E2], NFD: [0x1109, 0x1175, 0x11AD], NFKC: [0xC2E2], NFKD: [0x1109, 0x1175, 0x11AD] },
+{ source: [0xC2E3], NFC: [0xC2E3], NFD: [0x1109, 0x1175, 0x11AE], NFKC: [0xC2E3], NFKD: [0x1109, 0x1175, 0x11AE] },
+{ source: [0xC2E4], NFC: [0xC2E4], NFD: [0x1109, 0x1175, 0x11AF], NFKC: [0xC2E4], NFKD: [0x1109, 0x1175, 0x11AF] },
+{ source: [0xC2E5], NFC: [0xC2E5], NFD: [0x1109, 0x1175, 0x11B0], NFKC: [0xC2E5], NFKD: [0x1109, 0x1175, 0x11B0] },
+{ source: [0xC2E6], NFC: [0xC2E6], NFD: [0x1109, 0x1175, 0x11B1], NFKC: [0xC2E6], NFKD: [0x1109, 0x1175, 0x11B1] },
+{ source: [0xC2E7], NFC: [0xC2E7], NFD: [0x1109, 0x1175, 0x11B2], NFKC: [0xC2E7], NFKD: [0x1109, 0x1175, 0x11B2] },
+{ source: [0xC2E8], NFC: [0xC2E8], NFD: [0x1109, 0x1175, 0x11B3], NFKC: [0xC2E8], NFKD: [0x1109, 0x1175, 0x11B3] },
+{ source: [0xC2E9], NFC: [0xC2E9], NFD: [0x1109, 0x1175, 0x11B4], NFKC: [0xC2E9], NFKD: [0x1109, 0x1175, 0x11B4] },
+{ source: [0xC2EA], NFC: [0xC2EA], NFD: [0x1109, 0x1175, 0x11B5], NFKC: [0xC2EA], NFKD: [0x1109, 0x1175, 0x11B5] },
+{ source: [0xC2EB], NFC: [0xC2EB], NFD: [0x1109, 0x1175, 0x11B6], NFKC: [0xC2EB], NFKD: [0x1109, 0x1175, 0x11B6] },
+{ source: [0xC2EC], NFC: [0xC2EC], NFD: [0x1109, 0x1175, 0x11B7], NFKC: [0xC2EC], NFKD: [0x1109, 0x1175, 0x11B7] },
+{ source: [0xC2ED], NFC: [0xC2ED], NFD: [0x1109, 0x1175, 0x11B8], NFKC: [0xC2ED], NFKD: [0x1109, 0x1175, 0x11B8] },
+{ source: [0xC2EE], NFC: [0xC2EE], NFD: [0x1109, 0x1175, 0x11B9], NFKC: [0xC2EE], NFKD: [0x1109, 0x1175, 0x11B9] },
+{ source: [0xC2EF], NFC: [0xC2EF], NFD: [0x1109, 0x1175, 0x11BA], NFKC: [0xC2EF], NFKD: [0x1109, 0x1175, 0x11BA] },
+{ source: [0xC2F0], NFC: [0xC2F0], NFD: [0x1109, 0x1175, 0x11BB], NFKC: [0xC2F0], NFKD: [0x1109, 0x1175, 0x11BB] },
+{ source: [0xC2F1], NFC: [0xC2F1], NFD: [0x1109, 0x1175, 0x11BC], NFKC: [0xC2F1], NFKD: [0x1109, 0x1175, 0x11BC] },
+{ source: [0xC2F2], NFC: [0xC2F2], NFD: [0x1109, 0x1175, 0x11BD], NFKC: [0xC2F2], NFKD: [0x1109, 0x1175, 0x11BD] },
+{ source: [0xC2F3], NFC: [0xC2F3], NFD: [0x1109, 0x1175, 0x11BE], NFKC: [0xC2F3], NFKD: [0x1109, 0x1175, 0x11BE] },
+{ source: [0xC2F4], NFC: [0xC2F4], NFD: [0x1109, 0x1175, 0x11BF], NFKC: [0xC2F4], NFKD: [0x1109, 0x1175, 0x11BF] },
+{ source: [0xC2F5], NFC: [0xC2F5], NFD: [0x1109, 0x1175, 0x11C0], NFKC: [0xC2F5], NFKD: [0x1109, 0x1175, 0x11C0] },
+{ source: [0xC2F6], NFC: [0xC2F6], NFD: [0x1109, 0x1175, 0x11C1], NFKC: [0xC2F6], NFKD: [0x1109, 0x1175, 0x11C1] },
+{ source: [0xC2F7], NFC: [0xC2F7], NFD: [0x1109, 0x1175, 0x11C2], NFKC: [0xC2F7], NFKD: [0x1109, 0x1175, 0x11C2] },
+{ source: [0xC2F8], NFC: [0xC2F8], NFD: [0x110A, 0x1161], NFKC: [0xC2F8], NFKD: [0x110A, 0x1161] },
+{ source: [0xC2F9], NFC: [0xC2F9], NFD: [0x110A, 0x1161, 0x11A8], NFKC: [0xC2F9], NFKD: [0x110A, 0x1161, 0x11A8] },
+{ source: [0xC2FA], NFC: [0xC2FA], NFD: [0x110A, 0x1161, 0x11A9], NFKC: [0xC2FA], NFKD: [0x110A, 0x1161, 0x11A9] },
+{ source: [0xC2FB], NFC: [0xC2FB], NFD: [0x110A, 0x1161, 0x11AA], NFKC: [0xC2FB], NFKD: [0x110A, 0x1161, 0x11AA] },
+{ source: [0xC2FC], NFC: [0xC2FC], NFD: [0x110A, 0x1161, 0x11AB], NFKC: [0xC2FC], NFKD: [0x110A, 0x1161, 0x11AB] },
+{ source: [0xC2FD], NFC: [0xC2FD], NFD: [0x110A, 0x1161, 0x11AC], NFKC: [0xC2FD], NFKD: [0x110A, 0x1161, 0x11AC] },
+{ source: [0xC2FE], NFC: [0xC2FE], NFD: [0x110A, 0x1161, 0x11AD], NFKC: [0xC2FE], NFKD: [0x110A, 0x1161, 0x11AD] },
+{ source: [0xC2FF], NFC: [0xC2FF], NFD: [0x110A, 0x1161, 0x11AE], NFKC: [0xC2FF], NFKD: [0x110A, 0x1161, 0x11AE] },
+{ source: [0xC300], NFC: [0xC300], NFD: [0x110A, 0x1161, 0x11AF], NFKC: [0xC300], NFKD: [0x110A, 0x1161, 0x11AF] },
+{ source: [0xC301], NFC: [0xC301], NFD: [0x110A, 0x1161, 0x11B0], NFKC: [0xC301], NFKD: [0x110A, 0x1161, 0x11B0] },
+{ source: [0xC302], NFC: [0xC302], NFD: [0x110A, 0x1161, 0x11B1], NFKC: [0xC302], NFKD: [0x110A, 0x1161, 0x11B1] },
+{ source: [0xC303], NFC: [0xC303], NFD: [0x110A, 0x1161, 0x11B2], NFKC: [0xC303], NFKD: [0x110A, 0x1161, 0x11B2] },
+{ source: [0xC304], NFC: [0xC304], NFD: [0x110A, 0x1161, 0x11B3], NFKC: [0xC304], NFKD: [0x110A, 0x1161, 0x11B3] },
+{ source: [0xC305], NFC: [0xC305], NFD: [0x110A, 0x1161, 0x11B4], NFKC: [0xC305], NFKD: [0x110A, 0x1161, 0x11B4] },
+{ source: [0xC306], NFC: [0xC306], NFD: [0x110A, 0x1161, 0x11B5], NFKC: [0xC306], NFKD: [0x110A, 0x1161, 0x11B5] },
+{ source: [0xC307], NFC: [0xC307], NFD: [0x110A, 0x1161, 0x11B6], NFKC: [0xC307], NFKD: [0x110A, 0x1161, 0x11B6] },
+{ source: [0xC308], NFC: [0xC308], NFD: [0x110A, 0x1161, 0x11B7], NFKC: [0xC308], NFKD: [0x110A, 0x1161, 0x11B7] },
+{ source: [0xC309], NFC: [0xC309], NFD: [0x110A, 0x1161, 0x11B8], NFKC: [0xC309], NFKD: [0x110A, 0x1161, 0x11B8] },
+{ source: [0xC30A], NFC: [0xC30A], NFD: [0x110A, 0x1161, 0x11B9], NFKC: [0xC30A], NFKD: [0x110A, 0x1161, 0x11B9] },
+{ source: [0xC30B], NFC: [0xC30B], NFD: [0x110A, 0x1161, 0x11BA], NFKC: [0xC30B], NFKD: [0x110A, 0x1161, 0x11BA] },
+{ source: [0xC30C], NFC: [0xC30C], NFD: [0x110A, 0x1161, 0x11BB], NFKC: [0xC30C], NFKD: [0x110A, 0x1161, 0x11BB] },
+{ source: [0xC30D], NFC: [0xC30D], NFD: [0x110A, 0x1161, 0x11BC], NFKC: [0xC30D], NFKD: [0x110A, 0x1161, 0x11BC] },
+{ source: [0xC30E], NFC: [0xC30E], NFD: [0x110A, 0x1161, 0x11BD], NFKC: [0xC30E], NFKD: [0x110A, 0x1161, 0x11BD] },
+{ source: [0xC30F], NFC: [0xC30F], NFD: [0x110A, 0x1161, 0x11BE], NFKC: [0xC30F], NFKD: [0x110A, 0x1161, 0x11BE] },
+{ source: [0xC310], NFC: [0xC310], NFD: [0x110A, 0x1161, 0x11BF], NFKC: [0xC310], NFKD: [0x110A, 0x1161, 0x11BF] },
+{ source: [0xC311], NFC: [0xC311], NFD: [0x110A, 0x1161, 0x11C0], NFKC: [0xC311], NFKD: [0x110A, 0x1161, 0x11C0] },
+{ source: [0xC312], NFC: [0xC312], NFD: [0x110A, 0x1161, 0x11C1], NFKC: [0xC312], NFKD: [0x110A, 0x1161, 0x11C1] },
+{ source: [0xC313], NFC: [0xC313], NFD: [0x110A, 0x1161, 0x11C2], NFKC: [0xC313], NFKD: [0x110A, 0x1161, 0x11C2] },
+{ source: [0xC314], NFC: [0xC314], NFD: [0x110A, 0x1162], NFKC: [0xC314], NFKD: [0x110A, 0x1162] },
+{ source: [0xC315], NFC: [0xC315], NFD: [0x110A, 0x1162, 0x11A8], NFKC: [0xC315], NFKD: [0x110A, 0x1162, 0x11A8] },
+{ source: [0xC316], NFC: [0xC316], NFD: [0x110A, 0x1162, 0x11A9], NFKC: [0xC316], NFKD: [0x110A, 0x1162, 0x11A9] },
+{ source: [0xC317], NFC: [0xC317], NFD: [0x110A, 0x1162, 0x11AA], NFKC: [0xC317], NFKD: [0x110A, 0x1162, 0x11AA] },
+{ source: [0xC318], NFC: [0xC318], NFD: [0x110A, 0x1162, 0x11AB], NFKC: [0xC318], NFKD: [0x110A, 0x1162, 0x11AB] },
+{ source: [0xC319], NFC: [0xC319], NFD: [0x110A, 0x1162, 0x11AC], NFKC: [0xC319], NFKD: [0x110A, 0x1162, 0x11AC] },
+{ source: [0xC31A], NFC: [0xC31A], NFD: [0x110A, 0x1162, 0x11AD], NFKC: [0xC31A], NFKD: [0x110A, 0x1162, 0x11AD] },
+{ source: [0xC31B], NFC: [0xC31B], NFD: [0x110A, 0x1162, 0x11AE], NFKC: [0xC31B], NFKD: [0x110A, 0x1162, 0x11AE] },
+{ source: [0xC31C], NFC: [0xC31C], NFD: [0x110A, 0x1162, 0x11AF], NFKC: [0xC31C], NFKD: [0x110A, 0x1162, 0x11AF] },
+{ source: [0xC31D], NFC: [0xC31D], NFD: [0x110A, 0x1162, 0x11B0], NFKC: [0xC31D], NFKD: [0x110A, 0x1162, 0x11B0] },
+{ source: [0xC31E], NFC: [0xC31E], NFD: [0x110A, 0x1162, 0x11B1], NFKC: [0xC31E], NFKD: [0x110A, 0x1162, 0x11B1] },
+{ source: [0xC31F], NFC: [0xC31F], NFD: [0x110A, 0x1162, 0x11B2], NFKC: [0xC31F], NFKD: [0x110A, 0x1162, 0x11B2] },
+{ source: [0xC320], NFC: [0xC320], NFD: [0x110A, 0x1162, 0x11B3], NFKC: [0xC320], NFKD: [0x110A, 0x1162, 0x11B3] },
+{ source: [0xC321], NFC: [0xC321], NFD: [0x110A, 0x1162, 0x11B4], NFKC: [0xC321], NFKD: [0x110A, 0x1162, 0x11B4] },
+{ source: [0xC322], NFC: [0xC322], NFD: [0x110A, 0x1162, 0x11B5], NFKC: [0xC322], NFKD: [0x110A, 0x1162, 0x11B5] },
+{ source: [0xC323], NFC: [0xC323], NFD: [0x110A, 0x1162, 0x11B6], NFKC: [0xC323], NFKD: [0x110A, 0x1162, 0x11B6] },
+{ source: [0xC324], NFC: [0xC324], NFD: [0x110A, 0x1162, 0x11B7], NFKC: [0xC324], NFKD: [0x110A, 0x1162, 0x11B7] },
+{ source: [0xC325], NFC: [0xC325], NFD: [0x110A, 0x1162, 0x11B8], NFKC: [0xC325], NFKD: [0x110A, 0x1162, 0x11B8] },
+{ source: [0xC326], NFC: [0xC326], NFD: [0x110A, 0x1162, 0x11B9], NFKC: [0xC326], NFKD: [0x110A, 0x1162, 0x11B9] },
+{ source: [0xC327], NFC: [0xC327], NFD: [0x110A, 0x1162, 0x11BA], NFKC: [0xC327], NFKD: [0x110A, 0x1162, 0x11BA] },
+{ source: [0xC328], NFC: [0xC328], NFD: [0x110A, 0x1162, 0x11BB], NFKC: [0xC328], NFKD: [0x110A, 0x1162, 0x11BB] },
+{ source: [0xC329], NFC: [0xC329], NFD: [0x110A, 0x1162, 0x11BC], NFKC: [0xC329], NFKD: [0x110A, 0x1162, 0x11BC] },
+{ source: [0xC32A], NFC: [0xC32A], NFD: [0x110A, 0x1162, 0x11BD], NFKC: [0xC32A], NFKD: [0x110A, 0x1162, 0x11BD] },
+{ source: [0xC32B], NFC: [0xC32B], NFD: [0x110A, 0x1162, 0x11BE], NFKC: [0xC32B], NFKD: [0x110A, 0x1162, 0x11BE] },
+{ source: [0xC32C], NFC: [0xC32C], NFD: [0x110A, 0x1162, 0x11BF], NFKC: [0xC32C], NFKD: [0x110A, 0x1162, 0x11BF] },
+{ source: [0xC32D], NFC: [0xC32D], NFD: [0x110A, 0x1162, 0x11C0], NFKC: [0xC32D], NFKD: [0x110A, 0x1162, 0x11C0] },
+{ source: [0xC32E], NFC: [0xC32E], NFD: [0x110A, 0x1162, 0x11C1], NFKC: [0xC32E], NFKD: [0x110A, 0x1162, 0x11C1] },
+{ source: [0xC32F], NFC: [0xC32F], NFD: [0x110A, 0x1162, 0x11C2], NFKC: [0xC32F], NFKD: [0x110A, 0x1162, 0x11C2] },
+{ source: [0xC330], NFC: [0xC330], NFD: [0x110A, 0x1163], NFKC: [0xC330], NFKD: [0x110A, 0x1163] },
+{ source: [0xC331], NFC: [0xC331], NFD: [0x110A, 0x1163, 0x11A8], NFKC: [0xC331], NFKD: [0x110A, 0x1163, 0x11A8] },
+{ source: [0xC332], NFC: [0xC332], NFD: [0x110A, 0x1163, 0x11A9], NFKC: [0xC332], NFKD: [0x110A, 0x1163, 0x11A9] },
+{ source: [0xC333], NFC: [0xC333], NFD: [0x110A, 0x1163, 0x11AA], NFKC: [0xC333], NFKD: [0x110A, 0x1163, 0x11AA] },
+{ source: [0xC334], NFC: [0xC334], NFD: [0x110A, 0x1163, 0x11AB], NFKC: [0xC334], NFKD: [0x110A, 0x1163, 0x11AB] },
+{ source: [0xC335], NFC: [0xC335], NFD: [0x110A, 0x1163, 0x11AC], NFKC: [0xC335], NFKD: [0x110A, 0x1163, 0x11AC] },
+{ source: [0xC336], NFC: [0xC336], NFD: [0x110A, 0x1163, 0x11AD], NFKC: [0xC336], NFKD: [0x110A, 0x1163, 0x11AD] },
+{ source: [0xC337], NFC: [0xC337], NFD: [0x110A, 0x1163, 0x11AE], NFKC: [0xC337], NFKD: [0x110A, 0x1163, 0x11AE] },
+{ source: [0xC338], NFC: [0xC338], NFD: [0x110A, 0x1163, 0x11AF], NFKC: [0xC338], NFKD: [0x110A, 0x1163, 0x11AF] },
+{ source: [0xC339], NFC: [0xC339], NFD: [0x110A, 0x1163, 0x11B0], NFKC: [0xC339], NFKD: [0x110A, 0x1163, 0x11B0] },
+{ source: [0xC33A], NFC: [0xC33A], NFD: [0x110A, 0x1163, 0x11B1], NFKC: [0xC33A], NFKD: [0x110A, 0x1163, 0x11B1] },
+{ source: [0xC33B], NFC: [0xC33B], NFD: [0x110A, 0x1163, 0x11B2], NFKC: [0xC33B], NFKD: [0x110A, 0x1163, 0x11B2] },
+{ source: [0xC33C], NFC: [0xC33C], NFD: [0x110A, 0x1163, 0x11B3], NFKC: [0xC33C], NFKD: [0x110A, 0x1163, 0x11B3] },
+{ source: [0xC33D], NFC: [0xC33D], NFD: [0x110A, 0x1163, 0x11B4], NFKC: [0xC33D], NFKD: [0x110A, 0x1163, 0x11B4] },
+{ source: [0xC33E], NFC: [0xC33E], NFD: [0x110A, 0x1163, 0x11B5], NFKC: [0xC33E], NFKD: [0x110A, 0x1163, 0x11B5] },
+{ source: [0xC33F], NFC: [0xC33F], NFD: [0x110A, 0x1163, 0x11B6], NFKC: [0xC33F], NFKD: [0x110A, 0x1163, 0x11B6] },
+{ source: [0xC340], NFC: [0xC340], NFD: [0x110A, 0x1163, 0x11B7], NFKC: [0xC340], NFKD: [0x110A, 0x1163, 0x11B7] },
+{ source: [0xC341], NFC: [0xC341], NFD: [0x110A, 0x1163, 0x11B8], NFKC: [0xC341], NFKD: [0x110A, 0x1163, 0x11B8] },
+{ source: [0xC342], NFC: [0xC342], NFD: [0x110A, 0x1163, 0x11B9], NFKC: [0xC342], NFKD: [0x110A, 0x1163, 0x11B9] },
+{ source: [0xC343], NFC: [0xC343], NFD: [0x110A, 0x1163, 0x11BA], NFKC: [0xC343], NFKD: [0x110A, 0x1163, 0x11BA] },
+{ source: [0xC344], NFC: [0xC344], NFD: [0x110A, 0x1163, 0x11BB], NFKC: [0xC344], NFKD: [0x110A, 0x1163, 0x11BB] },
+{ source: [0xC345], NFC: [0xC345], NFD: [0x110A, 0x1163, 0x11BC], NFKC: [0xC345], NFKD: [0x110A, 0x1163, 0x11BC] },
+{ source: [0xC346], NFC: [0xC346], NFD: [0x110A, 0x1163, 0x11BD], NFKC: [0xC346], NFKD: [0x110A, 0x1163, 0x11BD] },
+{ source: [0xC347], NFC: [0xC347], NFD: [0x110A, 0x1163, 0x11BE], NFKC: [0xC347], NFKD: [0x110A, 0x1163, 0x11BE] },
+{ source: [0xC348], NFC: [0xC348], NFD: [0x110A, 0x1163, 0x11BF], NFKC: [0xC348], NFKD: [0x110A, 0x1163, 0x11BF] },
+{ source: [0xC349], NFC: [0xC349], NFD: [0x110A, 0x1163, 0x11C0], NFKC: [0xC349], NFKD: [0x110A, 0x1163, 0x11C0] },
+{ source: [0xC34A], NFC: [0xC34A], NFD: [0x110A, 0x1163, 0x11C1], NFKC: [0xC34A], NFKD: [0x110A, 0x1163, 0x11C1] },
+{ source: [0xC34B], NFC: [0xC34B], NFD: [0x110A, 0x1163, 0x11C2], NFKC: [0xC34B], NFKD: [0x110A, 0x1163, 0x11C2] },
+{ source: [0xC34C], NFC: [0xC34C], NFD: [0x110A, 0x1164], NFKC: [0xC34C], NFKD: [0x110A, 0x1164] },
+{ source: [0xC34D], NFC: [0xC34D], NFD: [0x110A, 0x1164, 0x11A8], NFKC: [0xC34D], NFKD: [0x110A, 0x1164, 0x11A8] },
+{ source: [0xC34E], NFC: [0xC34E], NFD: [0x110A, 0x1164, 0x11A9], NFKC: [0xC34E], NFKD: [0x110A, 0x1164, 0x11A9] },
+{ source: [0xC34F], NFC: [0xC34F], NFD: [0x110A, 0x1164, 0x11AA], NFKC: [0xC34F], NFKD: [0x110A, 0x1164, 0x11AA] },
+{ source: [0xC350], NFC: [0xC350], NFD: [0x110A, 0x1164, 0x11AB], NFKC: [0xC350], NFKD: [0x110A, 0x1164, 0x11AB] },
+{ source: [0xC351], NFC: [0xC351], NFD: [0x110A, 0x1164, 0x11AC], NFKC: [0xC351], NFKD: [0x110A, 0x1164, 0x11AC] },
+{ source: [0xC352], NFC: [0xC352], NFD: [0x110A, 0x1164, 0x11AD], NFKC: [0xC352], NFKD: [0x110A, 0x1164, 0x11AD] },
+{ source: [0xC353], NFC: [0xC353], NFD: [0x110A, 0x1164, 0x11AE], NFKC: [0xC353], NFKD: [0x110A, 0x1164, 0x11AE] },
+{ source: [0xC354], NFC: [0xC354], NFD: [0x110A, 0x1164, 0x11AF], NFKC: [0xC354], NFKD: [0x110A, 0x1164, 0x11AF] },
+{ source: [0xC355], NFC: [0xC355], NFD: [0x110A, 0x1164, 0x11B0], NFKC: [0xC355], NFKD: [0x110A, 0x1164, 0x11B0] },
+{ source: [0xC356], NFC: [0xC356], NFD: [0x110A, 0x1164, 0x11B1], NFKC: [0xC356], NFKD: [0x110A, 0x1164, 0x11B1] },
+{ source: [0xC357], NFC: [0xC357], NFD: [0x110A, 0x1164, 0x11B2], NFKC: [0xC357], NFKD: [0x110A, 0x1164, 0x11B2] },
+{ source: [0xC358], NFC: [0xC358], NFD: [0x110A, 0x1164, 0x11B3], NFKC: [0xC358], NFKD: [0x110A, 0x1164, 0x11B3] },
+{ source: [0xC359], NFC: [0xC359], NFD: [0x110A, 0x1164, 0x11B4], NFKC: [0xC359], NFKD: [0x110A, 0x1164, 0x11B4] },
+{ source: [0xC35A], NFC: [0xC35A], NFD: [0x110A, 0x1164, 0x11B5], NFKC: [0xC35A], NFKD: [0x110A, 0x1164, 0x11B5] },
+{ source: [0xC35B], NFC: [0xC35B], NFD: [0x110A, 0x1164, 0x11B6], NFKC: [0xC35B], NFKD: [0x110A, 0x1164, 0x11B6] },
+{ source: [0xC35C], NFC: [0xC35C], NFD: [0x110A, 0x1164, 0x11B7], NFKC: [0xC35C], NFKD: [0x110A, 0x1164, 0x11B7] },
+{ source: [0xC35D], NFC: [0xC35D], NFD: [0x110A, 0x1164, 0x11B8], NFKC: [0xC35D], NFKD: [0x110A, 0x1164, 0x11B8] },
+{ source: [0xC35E], NFC: [0xC35E], NFD: [0x110A, 0x1164, 0x11B9], NFKC: [0xC35E], NFKD: [0x110A, 0x1164, 0x11B9] },
+{ source: [0xC35F], NFC: [0xC35F], NFD: [0x110A, 0x1164, 0x11BA], NFKC: [0xC35F], NFKD: [0x110A, 0x1164, 0x11BA] },
+{ source: [0xC360], NFC: [0xC360], NFD: [0x110A, 0x1164, 0x11BB], NFKC: [0xC360], NFKD: [0x110A, 0x1164, 0x11BB] },
+{ source: [0xC361], NFC: [0xC361], NFD: [0x110A, 0x1164, 0x11BC], NFKC: [0xC361], NFKD: [0x110A, 0x1164, 0x11BC] },
+{ source: [0xC362], NFC: [0xC362], NFD: [0x110A, 0x1164, 0x11BD], NFKC: [0xC362], NFKD: [0x110A, 0x1164, 0x11BD] },
+{ source: [0xC363], NFC: [0xC363], NFD: [0x110A, 0x1164, 0x11BE], NFKC: [0xC363], NFKD: [0x110A, 0x1164, 0x11BE] },
+{ source: [0xC364], NFC: [0xC364], NFD: [0x110A, 0x1164, 0x11BF], NFKC: [0xC364], NFKD: [0x110A, 0x1164, 0x11BF] },
+{ source: [0xC365], NFC: [0xC365], NFD: [0x110A, 0x1164, 0x11C0], NFKC: [0xC365], NFKD: [0x110A, 0x1164, 0x11C0] },
+{ source: [0xC366], NFC: [0xC366], NFD: [0x110A, 0x1164, 0x11C1], NFKC: [0xC366], NFKD: [0x110A, 0x1164, 0x11C1] },
+{ source: [0xC367], NFC: [0xC367], NFD: [0x110A, 0x1164, 0x11C2], NFKC: [0xC367], NFKD: [0x110A, 0x1164, 0x11C2] },
+{ source: [0xC368], NFC: [0xC368], NFD: [0x110A, 0x1165], NFKC: [0xC368], NFKD: [0x110A, 0x1165] },
+{ source: [0xC369], NFC: [0xC369], NFD: [0x110A, 0x1165, 0x11A8], NFKC: [0xC369], NFKD: [0x110A, 0x1165, 0x11A8] },
+{ source: [0xC36A], NFC: [0xC36A], NFD: [0x110A, 0x1165, 0x11A9], NFKC: [0xC36A], NFKD: [0x110A, 0x1165, 0x11A9] },
+{ source: [0xC36B], NFC: [0xC36B], NFD: [0x110A, 0x1165, 0x11AA], NFKC: [0xC36B], NFKD: [0x110A, 0x1165, 0x11AA] },
+{ source: [0xC36C], NFC: [0xC36C], NFD: [0x110A, 0x1165, 0x11AB], NFKC: [0xC36C], NFKD: [0x110A, 0x1165, 0x11AB] },
+{ source: [0xC36D], NFC: [0xC36D], NFD: [0x110A, 0x1165, 0x11AC], NFKC: [0xC36D], NFKD: [0x110A, 0x1165, 0x11AC] },
+{ source: [0xC36E], NFC: [0xC36E], NFD: [0x110A, 0x1165, 0x11AD], NFKC: [0xC36E], NFKD: [0x110A, 0x1165, 0x11AD] },
+{ source: [0xC36F], NFC: [0xC36F], NFD: [0x110A, 0x1165, 0x11AE], NFKC: [0xC36F], NFKD: [0x110A, 0x1165, 0x11AE] },
+{ source: [0xC370], NFC: [0xC370], NFD: [0x110A, 0x1165, 0x11AF], NFKC: [0xC370], NFKD: [0x110A, 0x1165, 0x11AF] },
+{ source: [0xC371], NFC: [0xC371], NFD: [0x110A, 0x1165, 0x11B0], NFKC: [0xC371], NFKD: [0x110A, 0x1165, 0x11B0] },
+{ source: [0xC372], NFC: [0xC372], NFD: [0x110A, 0x1165, 0x11B1], NFKC: [0xC372], NFKD: [0x110A, 0x1165, 0x11B1] },
+{ source: [0xC373], NFC: [0xC373], NFD: [0x110A, 0x1165, 0x11B2], NFKC: [0xC373], NFKD: [0x110A, 0x1165, 0x11B2] },
+{ source: [0xC374], NFC: [0xC374], NFD: [0x110A, 0x1165, 0x11B3], NFKC: [0xC374], NFKD: [0x110A, 0x1165, 0x11B3] },
+{ source: [0xC375], NFC: [0xC375], NFD: [0x110A, 0x1165, 0x11B4], NFKC: [0xC375], NFKD: [0x110A, 0x1165, 0x11B4] },
+{ source: [0xC376], NFC: [0xC376], NFD: [0x110A, 0x1165, 0x11B5], NFKC: [0xC376], NFKD: [0x110A, 0x1165, 0x11B5] },
+{ source: [0xC377], NFC: [0xC377], NFD: [0x110A, 0x1165, 0x11B6], NFKC: [0xC377], NFKD: [0x110A, 0x1165, 0x11B6] },
+{ source: [0xC378], NFC: [0xC378], NFD: [0x110A, 0x1165, 0x11B7], NFKC: [0xC378], NFKD: [0x110A, 0x1165, 0x11B7] },
+{ source: [0xC379], NFC: [0xC379], NFD: [0x110A, 0x1165, 0x11B8], NFKC: [0xC379], NFKD: [0x110A, 0x1165, 0x11B8] },
+{ source: [0xC37A], NFC: [0xC37A], NFD: [0x110A, 0x1165, 0x11B9], NFKC: [0xC37A], NFKD: [0x110A, 0x1165, 0x11B9] },
+{ source: [0xC37B], NFC: [0xC37B], NFD: [0x110A, 0x1165, 0x11BA], NFKC: [0xC37B], NFKD: [0x110A, 0x1165, 0x11BA] },
+{ source: [0xC37C], NFC: [0xC37C], NFD: [0x110A, 0x1165, 0x11BB], NFKC: [0xC37C], NFKD: [0x110A, 0x1165, 0x11BB] },
+{ source: [0xC37D], NFC: [0xC37D], NFD: [0x110A, 0x1165, 0x11BC], NFKC: [0xC37D], NFKD: [0x110A, 0x1165, 0x11BC] },
+{ source: [0xC37E], NFC: [0xC37E], NFD: [0x110A, 0x1165, 0x11BD], NFKC: [0xC37E], NFKD: [0x110A, 0x1165, 0x11BD] },
+{ source: [0xC37F], NFC: [0xC37F], NFD: [0x110A, 0x1165, 0x11BE], NFKC: [0xC37F], NFKD: [0x110A, 0x1165, 0x11BE] },
+{ source: [0xC380], NFC: [0xC380], NFD: [0x110A, 0x1165, 0x11BF], NFKC: [0xC380], NFKD: [0x110A, 0x1165, 0x11BF] },
+{ source: [0xC381], NFC: [0xC381], NFD: [0x110A, 0x1165, 0x11C0], NFKC: [0xC381], NFKD: [0x110A, 0x1165, 0x11C0] },
+{ source: [0xC382], NFC: [0xC382], NFD: [0x110A, 0x1165, 0x11C1], NFKC: [0xC382], NFKD: [0x110A, 0x1165, 0x11C1] },
+{ source: [0xC383], NFC: [0xC383], NFD: [0x110A, 0x1165, 0x11C2], NFKC: [0xC383], NFKD: [0x110A, 0x1165, 0x11C2] },
+{ source: [0xC384], NFC: [0xC384], NFD: [0x110A, 0x1166], NFKC: [0xC384], NFKD: [0x110A, 0x1166] },
+{ source: [0xC385], NFC: [0xC385], NFD: [0x110A, 0x1166, 0x11A8], NFKC: [0xC385], NFKD: [0x110A, 0x1166, 0x11A8] },
+{ source: [0xC386], NFC: [0xC386], NFD: [0x110A, 0x1166, 0x11A9], NFKC: [0xC386], NFKD: [0x110A, 0x1166, 0x11A9] },
+{ source: [0xC387], NFC: [0xC387], NFD: [0x110A, 0x1166, 0x11AA], NFKC: [0xC387], NFKD: [0x110A, 0x1166, 0x11AA] },
+{ source: [0xC388], NFC: [0xC388], NFD: [0x110A, 0x1166, 0x11AB], NFKC: [0xC388], NFKD: [0x110A, 0x1166, 0x11AB] },
+{ source: [0xC389], NFC: [0xC389], NFD: [0x110A, 0x1166, 0x11AC], NFKC: [0xC389], NFKD: [0x110A, 0x1166, 0x11AC] },
+{ source: [0xC38A], NFC: [0xC38A], NFD: [0x110A, 0x1166, 0x11AD], NFKC: [0xC38A], NFKD: [0x110A, 0x1166, 0x11AD] },
+{ source: [0xC38B], NFC: [0xC38B], NFD: [0x110A, 0x1166, 0x11AE], NFKC: [0xC38B], NFKD: [0x110A, 0x1166, 0x11AE] },
+{ source: [0xC38C], NFC: [0xC38C], NFD: [0x110A, 0x1166, 0x11AF], NFKC: [0xC38C], NFKD: [0x110A, 0x1166, 0x11AF] },
+{ source: [0xC38D], NFC: [0xC38D], NFD: [0x110A, 0x1166, 0x11B0], NFKC: [0xC38D], NFKD: [0x110A, 0x1166, 0x11B0] },
+{ source: [0xC38E], NFC: [0xC38E], NFD: [0x110A, 0x1166, 0x11B1], NFKC: [0xC38E], NFKD: [0x110A, 0x1166, 0x11B1] },
+{ source: [0xC38F], NFC: [0xC38F], NFD: [0x110A, 0x1166, 0x11B2], NFKC: [0xC38F], NFKD: [0x110A, 0x1166, 0x11B2] },
+{ source: [0xC390], NFC: [0xC390], NFD: [0x110A, 0x1166, 0x11B3], NFKC: [0xC390], NFKD: [0x110A, 0x1166, 0x11B3] },
+{ source: [0xC391], NFC: [0xC391], NFD: [0x110A, 0x1166, 0x11B4], NFKC: [0xC391], NFKD: [0x110A, 0x1166, 0x11B4] },
+{ source: [0xC392], NFC: [0xC392], NFD: [0x110A, 0x1166, 0x11B5], NFKC: [0xC392], NFKD: [0x110A, 0x1166, 0x11B5] },
+{ source: [0xC393], NFC: [0xC393], NFD: [0x110A, 0x1166, 0x11B6], NFKC: [0xC393], NFKD: [0x110A, 0x1166, 0x11B6] },
+{ source: [0xC394], NFC: [0xC394], NFD: [0x110A, 0x1166, 0x11B7], NFKC: [0xC394], NFKD: [0x110A, 0x1166, 0x11B7] },
+{ source: [0xC395], NFC: [0xC395], NFD: [0x110A, 0x1166, 0x11B8], NFKC: [0xC395], NFKD: [0x110A, 0x1166, 0x11B8] },
+{ source: [0xC396], NFC: [0xC396], NFD: [0x110A, 0x1166, 0x11B9], NFKC: [0xC396], NFKD: [0x110A, 0x1166, 0x11B9] },
+{ source: [0xC397], NFC: [0xC397], NFD: [0x110A, 0x1166, 0x11BA], NFKC: [0xC397], NFKD: [0x110A, 0x1166, 0x11BA] },
+{ source: [0xC398], NFC: [0xC398], NFD: [0x110A, 0x1166, 0x11BB], NFKC: [0xC398], NFKD: [0x110A, 0x1166, 0x11BB] },
+{ source: [0xC399], NFC: [0xC399], NFD: [0x110A, 0x1166, 0x11BC], NFKC: [0xC399], NFKD: [0x110A, 0x1166, 0x11BC] },
+{ source: [0xC39A], NFC: [0xC39A], NFD: [0x110A, 0x1166, 0x11BD], NFKC: [0xC39A], NFKD: [0x110A, 0x1166, 0x11BD] },
+{ source: [0xC39B], NFC: [0xC39B], NFD: [0x110A, 0x1166, 0x11BE], NFKC: [0xC39B], NFKD: [0x110A, 0x1166, 0x11BE] },
+{ source: [0xC39C], NFC: [0xC39C], NFD: [0x110A, 0x1166, 0x11BF], NFKC: [0xC39C], NFKD: [0x110A, 0x1166, 0x11BF] },
+{ source: [0xC39D], NFC: [0xC39D], NFD: [0x110A, 0x1166, 0x11C0], NFKC: [0xC39D], NFKD: [0x110A, 0x1166, 0x11C0] },
+{ source: [0xC39E], NFC: [0xC39E], NFD: [0x110A, 0x1166, 0x11C1], NFKC: [0xC39E], NFKD: [0x110A, 0x1166, 0x11C1] },
+{ source: [0xC39F], NFC: [0xC39F], NFD: [0x110A, 0x1166, 0x11C2], NFKC: [0xC39F], NFKD: [0x110A, 0x1166, 0x11C2] },
+{ source: [0xC3A0], NFC: [0xC3A0], NFD: [0x110A, 0x1167], NFKC: [0xC3A0], NFKD: [0x110A, 0x1167] },
+{ source: [0xC3A1], NFC: [0xC3A1], NFD: [0x110A, 0x1167, 0x11A8], NFKC: [0xC3A1], NFKD: [0x110A, 0x1167, 0x11A8] },
+{ source: [0xC3A2], NFC: [0xC3A2], NFD: [0x110A, 0x1167, 0x11A9], NFKC: [0xC3A2], NFKD: [0x110A, 0x1167, 0x11A9] },
+{ source: [0xC3A3], NFC: [0xC3A3], NFD: [0x110A, 0x1167, 0x11AA], NFKC: [0xC3A3], NFKD: [0x110A, 0x1167, 0x11AA] },
+{ source: [0xC3A4], NFC: [0xC3A4], NFD: [0x110A, 0x1167, 0x11AB], NFKC: [0xC3A4], NFKD: [0x110A, 0x1167, 0x11AB] },
+{ source: [0xC3A5], NFC: [0xC3A5], NFD: [0x110A, 0x1167, 0x11AC], NFKC: [0xC3A5], NFKD: [0x110A, 0x1167, 0x11AC] },
+{ source: [0xC3A6], NFC: [0xC3A6], NFD: [0x110A, 0x1167, 0x11AD], NFKC: [0xC3A6], NFKD: [0x110A, 0x1167, 0x11AD] },
+{ source: [0xC3A7], NFC: [0xC3A7], NFD: [0x110A, 0x1167, 0x11AE], NFKC: [0xC3A7], NFKD: [0x110A, 0x1167, 0x11AE] },
+{ source: [0xC3A8], NFC: [0xC3A8], NFD: [0x110A, 0x1167, 0x11AF], NFKC: [0xC3A8], NFKD: [0x110A, 0x1167, 0x11AF] },
+{ source: [0xC3A9], NFC: [0xC3A9], NFD: [0x110A, 0x1167, 0x11B0], NFKC: [0xC3A9], NFKD: [0x110A, 0x1167, 0x11B0] },
+{ source: [0xC3AA], NFC: [0xC3AA], NFD: [0x110A, 0x1167, 0x11B1], NFKC: [0xC3AA], NFKD: [0x110A, 0x1167, 0x11B1] },
+{ source: [0xC3AB], NFC: [0xC3AB], NFD: [0x110A, 0x1167, 0x11B2], NFKC: [0xC3AB], NFKD: [0x110A, 0x1167, 0x11B2] },
+{ source: [0xC3AC], NFC: [0xC3AC], NFD: [0x110A, 0x1167, 0x11B3], NFKC: [0xC3AC], NFKD: [0x110A, 0x1167, 0x11B3] },
+{ source: [0xC3AD], NFC: [0xC3AD], NFD: [0x110A, 0x1167, 0x11B4], NFKC: [0xC3AD], NFKD: [0x110A, 0x1167, 0x11B4] },
+{ source: [0xC3AE], NFC: [0xC3AE], NFD: [0x110A, 0x1167, 0x11B5], NFKC: [0xC3AE], NFKD: [0x110A, 0x1167, 0x11B5] },
+{ source: [0xC3AF], NFC: [0xC3AF], NFD: [0x110A, 0x1167, 0x11B6], NFKC: [0xC3AF], NFKD: [0x110A, 0x1167, 0x11B6] },
+{ source: [0xC3B0], NFC: [0xC3B0], NFD: [0x110A, 0x1167, 0x11B7], NFKC: [0xC3B0], NFKD: [0x110A, 0x1167, 0x11B7] },
+{ source: [0xC3B1], NFC: [0xC3B1], NFD: [0x110A, 0x1167, 0x11B8], NFKC: [0xC3B1], NFKD: [0x110A, 0x1167, 0x11B8] },
+{ source: [0xC3B2], NFC: [0xC3B2], NFD: [0x110A, 0x1167, 0x11B9], NFKC: [0xC3B2], NFKD: [0x110A, 0x1167, 0x11B9] },
+{ source: [0xC3B3], NFC: [0xC3B3], NFD: [0x110A, 0x1167, 0x11BA], NFKC: [0xC3B3], NFKD: [0x110A, 0x1167, 0x11BA] },
+{ source: [0xC3B4], NFC: [0xC3B4], NFD: [0x110A, 0x1167, 0x11BB], NFKC: [0xC3B4], NFKD: [0x110A, 0x1167, 0x11BB] },
+{ source: [0xC3B5], NFC: [0xC3B5], NFD: [0x110A, 0x1167, 0x11BC], NFKC: [0xC3B5], NFKD: [0x110A, 0x1167, 0x11BC] },
+{ source: [0xC3B6], NFC: [0xC3B6], NFD: [0x110A, 0x1167, 0x11BD], NFKC: [0xC3B6], NFKD: [0x110A, 0x1167, 0x11BD] },
+{ source: [0xC3B7], NFC: [0xC3B7], NFD: [0x110A, 0x1167, 0x11BE], NFKC: [0xC3B7], NFKD: [0x110A, 0x1167, 0x11BE] },
+{ source: [0xC3B8], NFC: [0xC3B8], NFD: [0x110A, 0x1167, 0x11BF], NFKC: [0xC3B8], NFKD: [0x110A, 0x1167, 0x11BF] },
+{ source: [0xC3B9], NFC: [0xC3B9], NFD: [0x110A, 0x1167, 0x11C0], NFKC: [0xC3B9], NFKD: [0x110A, 0x1167, 0x11C0] },
+{ source: [0xC3BA], NFC: [0xC3BA], NFD: [0x110A, 0x1167, 0x11C1], NFKC: [0xC3BA], NFKD: [0x110A, 0x1167, 0x11C1] },
+{ source: [0xC3BB], NFC: [0xC3BB], NFD: [0x110A, 0x1167, 0x11C2], NFKC: [0xC3BB], NFKD: [0x110A, 0x1167, 0x11C2] },
+{ source: [0xC3BC], NFC: [0xC3BC], NFD: [0x110A, 0x1168], NFKC: [0xC3BC], NFKD: [0x110A, 0x1168] },
+{ source: [0xC3BD], NFC: [0xC3BD], NFD: [0x110A, 0x1168, 0x11A8], NFKC: [0xC3BD], NFKD: [0x110A, 0x1168, 0x11A8] },
+{ source: [0xC3BE], NFC: [0xC3BE], NFD: [0x110A, 0x1168, 0x11A9], NFKC: [0xC3BE], NFKD: [0x110A, 0x1168, 0x11A9] },
+{ source: [0xC3BF], NFC: [0xC3BF], NFD: [0x110A, 0x1168, 0x11AA], NFKC: [0xC3BF], NFKD: [0x110A, 0x1168, 0x11AA] },
+{ source: [0xC3C0], NFC: [0xC3C0], NFD: [0x110A, 0x1168, 0x11AB], NFKC: [0xC3C0], NFKD: [0x110A, 0x1168, 0x11AB] },
+{ source: [0xC3C1], NFC: [0xC3C1], NFD: [0x110A, 0x1168, 0x11AC], NFKC: [0xC3C1], NFKD: [0x110A, 0x1168, 0x11AC] },
+{ source: [0xC3C2], NFC: [0xC3C2], NFD: [0x110A, 0x1168, 0x11AD], NFKC: [0xC3C2], NFKD: [0x110A, 0x1168, 0x11AD] },
+{ source: [0xC3C3], NFC: [0xC3C3], NFD: [0x110A, 0x1168, 0x11AE], NFKC: [0xC3C3], NFKD: [0x110A, 0x1168, 0x11AE] },
+{ source: [0xC3C4], NFC: [0xC3C4], NFD: [0x110A, 0x1168, 0x11AF], NFKC: [0xC3C4], NFKD: [0x110A, 0x1168, 0x11AF] },
+{ source: [0xC3C5], NFC: [0xC3C5], NFD: [0x110A, 0x1168, 0x11B0], NFKC: [0xC3C5], NFKD: [0x110A, 0x1168, 0x11B0] },
+{ source: [0xC3C6], NFC: [0xC3C6], NFD: [0x110A, 0x1168, 0x11B1], NFKC: [0xC3C6], NFKD: [0x110A, 0x1168, 0x11B1] },
+{ source: [0xC3C7], NFC: [0xC3C7], NFD: [0x110A, 0x1168, 0x11B2], NFKC: [0xC3C7], NFKD: [0x110A, 0x1168, 0x11B2] },
+{ source: [0xC3C8], NFC: [0xC3C8], NFD: [0x110A, 0x1168, 0x11B3], NFKC: [0xC3C8], NFKD: [0x110A, 0x1168, 0x11B3] },
+{ source: [0xC3C9], NFC: [0xC3C9], NFD: [0x110A, 0x1168, 0x11B4], NFKC: [0xC3C9], NFKD: [0x110A, 0x1168, 0x11B4] },
+{ source: [0xC3CA], NFC: [0xC3CA], NFD: [0x110A, 0x1168, 0x11B5], NFKC: [0xC3CA], NFKD: [0x110A, 0x1168, 0x11B5] },
+{ source: [0xC3CB], NFC: [0xC3CB], NFD: [0x110A, 0x1168, 0x11B6], NFKC: [0xC3CB], NFKD: [0x110A, 0x1168, 0x11B6] },
+{ source: [0xC3CC], NFC: [0xC3CC], NFD: [0x110A, 0x1168, 0x11B7], NFKC: [0xC3CC], NFKD: [0x110A, 0x1168, 0x11B7] },
+{ source: [0xC3CD], NFC: [0xC3CD], NFD: [0x110A, 0x1168, 0x11B8], NFKC: [0xC3CD], NFKD: [0x110A, 0x1168, 0x11B8] },
+{ source: [0xC3CE], NFC: [0xC3CE], NFD: [0x110A, 0x1168, 0x11B9], NFKC: [0xC3CE], NFKD: [0x110A, 0x1168, 0x11B9] },
+{ source: [0xC3CF], NFC: [0xC3CF], NFD: [0x110A, 0x1168, 0x11BA], NFKC: [0xC3CF], NFKD: [0x110A, 0x1168, 0x11BA] },
+{ source: [0xC3D0], NFC: [0xC3D0], NFD: [0x110A, 0x1168, 0x11BB], NFKC: [0xC3D0], NFKD: [0x110A, 0x1168, 0x11BB] },
+{ source: [0xC3D1], NFC: [0xC3D1], NFD: [0x110A, 0x1168, 0x11BC], NFKC: [0xC3D1], NFKD: [0x110A, 0x1168, 0x11BC] },
+{ source: [0xC3D2], NFC: [0xC3D2], NFD: [0x110A, 0x1168, 0x11BD], NFKC: [0xC3D2], NFKD: [0x110A, 0x1168, 0x11BD] },
+{ source: [0xC3D3], NFC: [0xC3D3], NFD: [0x110A, 0x1168, 0x11BE], NFKC: [0xC3D3], NFKD: [0x110A, 0x1168, 0x11BE] },
+{ source: [0xC3D4], NFC: [0xC3D4], NFD: [0x110A, 0x1168, 0x11BF], NFKC: [0xC3D4], NFKD: [0x110A, 0x1168, 0x11BF] },
+{ source: [0xC3D5], NFC: [0xC3D5], NFD: [0x110A, 0x1168, 0x11C0], NFKC: [0xC3D5], NFKD: [0x110A, 0x1168, 0x11C0] },
+{ source: [0xC3D6], NFC: [0xC3D6], NFD: [0x110A, 0x1168, 0x11C1], NFKC: [0xC3D6], NFKD: [0x110A, 0x1168, 0x11C1] },
+{ source: [0xC3D7], NFC: [0xC3D7], NFD: [0x110A, 0x1168, 0x11C2], NFKC: [0xC3D7], NFKD: [0x110A, 0x1168, 0x11C2] },
+{ source: [0xC3D8], NFC: [0xC3D8], NFD: [0x110A, 0x1169], NFKC: [0xC3D8], NFKD: [0x110A, 0x1169] },
+{ source: [0xC3D9], NFC: [0xC3D9], NFD: [0x110A, 0x1169, 0x11A8], NFKC: [0xC3D9], NFKD: [0x110A, 0x1169, 0x11A8] },
+{ source: [0xC3DA], NFC: [0xC3DA], NFD: [0x110A, 0x1169, 0x11A9], NFKC: [0xC3DA], NFKD: [0x110A, 0x1169, 0x11A9] },
+{ source: [0xC3DB], NFC: [0xC3DB], NFD: [0x110A, 0x1169, 0x11AA], NFKC: [0xC3DB], NFKD: [0x110A, 0x1169, 0x11AA] },
+{ source: [0xC3DC], NFC: [0xC3DC], NFD: [0x110A, 0x1169, 0x11AB], NFKC: [0xC3DC], NFKD: [0x110A, 0x1169, 0x11AB] },
+{ source: [0xC3DD], NFC: [0xC3DD], NFD: [0x110A, 0x1169, 0x11AC], NFKC: [0xC3DD], NFKD: [0x110A, 0x1169, 0x11AC] },
+{ source: [0xC3DE], NFC: [0xC3DE], NFD: [0x110A, 0x1169, 0x11AD], NFKC: [0xC3DE], NFKD: [0x110A, 0x1169, 0x11AD] },
+{ source: [0xC3DF], NFC: [0xC3DF], NFD: [0x110A, 0x1169, 0x11AE], NFKC: [0xC3DF], NFKD: [0x110A, 0x1169, 0x11AE] },
+{ source: [0xC3E0], NFC: [0xC3E0], NFD: [0x110A, 0x1169, 0x11AF], NFKC: [0xC3E0], NFKD: [0x110A, 0x1169, 0x11AF] },
+{ source: [0xC3E1], NFC: [0xC3E1], NFD: [0x110A, 0x1169, 0x11B0], NFKC: [0xC3E1], NFKD: [0x110A, 0x1169, 0x11B0] },
+{ source: [0xC3E2], NFC: [0xC3E2], NFD: [0x110A, 0x1169, 0x11B1], NFKC: [0xC3E2], NFKD: [0x110A, 0x1169, 0x11B1] },
+{ source: [0xC3E3], NFC: [0xC3E3], NFD: [0x110A, 0x1169, 0x11B2], NFKC: [0xC3E3], NFKD: [0x110A, 0x1169, 0x11B2] },
+{ source: [0xC3E4], NFC: [0xC3E4], NFD: [0x110A, 0x1169, 0x11B3], NFKC: [0xC3E4], NFKD: [0x110A, 0x1169, 0x11B3] },
+{ source: [0xC3E5], NFC: [0xC3E5], NFD: [0x110A, 0x1169, 0x11B4], NFKC: [0xC3E5], NFKD: [0x110A, 0x1169, 0x11B4] },
+{ source: [0xC3E6], NFC: [0xC3E6], NFD: [0x110A, 0x1169, 0x11B5], NFKC: [0xC3E6], NFKD: [0x110A, 0x1169, 0x11B5] },
+{ source: [0xC3E7], NFC: [0xC3E7], NFD: [0x110A, 0x1169, 0x11B6], NFKC: [0xC3E7], NFKD: [0x110A, 0x1169, 0x11B6] },
+{ source: [0xC3E8], NFC: [0xC3E8], NFD: [0x110A, 0x1169, 0x11B7], NFKC: [0xC3E8], NFKD: [0x110A, 0x1169, 0x11B7] },
+{ source: [0xC3E9], NFC: [0xC3E9], NFD: [0x110A, 0x1169, 0x11B8], NFKC: [0xC3E9], NFKD: [0x110A, 0x1169, 0x11B8] },
+{ source: [0xC3EA], NFC: [0xC3EA], NFD: [0x110A, 0x1169, 0x11B9], NFKC: [0xC3EA], NFKD: [0x110A, 0x1169, 0x11B9] },
+{ source: [0xC3EB], NFC: [0xC3EB], NFD: [0x110A, 0x1169, 0x11BA], NFKC: [0xC3EB], NFKD: [0x110A, 0x1169, 0x11BA] },
+{ source: [0xC3EC], NFC: [0xC3EC], NFD: [0x110A, 0x1169, 0x11BB], NFKC: [0xC3EC], NFKD: [0x110A, 0x1169, 0x11BB] },
+{ source: [0xC3ED], NFC: [0xC3ED], NFD: [0x110A, 0x1169, 0x11BC], NFKC: [0xC3ED], NFKD: [0x110A, 0x1169, 0x11BC] },
+{ source: [0xC3EE], NFC: [0xC3EE], NFD: [0x110A, 0x1169, 0x11BD], NFKC: [0xC3EE], NFKD: [0x110A, 0x1169, 0x11BD] },
+{ source: [0xC3EF], NFC: [0xC3EF], NFD: [0x110A, 0x1169, 0x11BE], NFKC: [0xC3EF], NFKD: [0x110A, 0x1169, 0x11BE] },
+{ source: [0xC3F0], NFC: [0xC3F0], NFD: [0x110A, 0x1169, 0x11BF], NFKC: [0xC3F0], NFKD: [0x110A, 0x1169, 0x11BF] },
+{ source: [0xC3F1], NFC: [0xC3F1], NFD: [0x110A, 0x1169, 0x11C0], NFKC: [0xC3F1], NFKD: [0x110A, 0x1169, 0x11C0] },
+{ source: [0xC3F2], NFC: [0xC3F2], NFD: [0x110A, 0x1169, 0x11C1], NFKC: [0xC3F2], NFKD: [0x110A, 0x1169, 0x11C1] },
+{ source: [0xC3F3], NFC: [0xC3F3], NFD: [0x110A, 0x1169, 0x11C2], NFKC: [0xC3F3], NFKD: [0x110A, 0x1169, 0x11C2] },
+{ source: [0xC3F4], NFC: [0xC3F4], NFD: [0x110A, 0x116A], NFKC: [0xC3F4], NFKD: [0x110A, 0x116A] },
+{ source: [0xC3F5], NFC: [0xC3F5], NFD: [0x110A, 0x116A, 0x11A8], NFKC: [0xC3F5], NFKD: [0x110A, 0x116A, 0x11A8] },
+{ source: [0xC3F6], NFC: [0xC3F6], NFD: [0x110A, 0x116A, 0x11A9], NFKC: [0xC3F6], NFKD: [0x110A, 0x116A, 0x11A9] },
+{ source: [0xC3F7], NFC: [0xC3F7], NFD: [0x110A, 0x116A, 0x11AA], NFKC: [0xC3F7], NFKD: [0x110A, 0x116A, 0x11AA] },
+{ source: [0xC3F8], NFC: [0xC3F8], NFD: [0x110A, 0x116A, 0x11AB], NFKC: [0xC3F8], NFKD: [0x110A, 0x116A, 0x11AB] },
+{ source: [0xC3F9], NFC: [0xC3F9], NFD: [0x110A, 0x116A, 0x11AC], NFKC: [0xC3F9], NFKD: [0x110A, 0x116A, 0x11AC] },
+{ source: [0xC3FA], NFC: [0xC3FA], NFD: [0x110A, 0x116A, 0x11AD], NFKC: [0xC3FA], NFKD: [0x110A, 0x116A, 0x11AD] },
+{ source: [0xC3FB], NFC: [0xC3FB], NFD: [0x110A, 0x116A, 0x11AE], NFKC: [0xC3FB], NFKD: [0x110A, 0x116A, 0x11AE] },
+{ source: [0xC3FC], NFC: [0xC3FC], NFD: [0x110A, 0x116A, 0x11AF], NFKC: [0xC3FC], NFKD: [0x110A, 0x116A, 0x11AF] },
+{ source: [0xC3FD], NFC: [0xC3FD], NFD: [0x110A, 0x116A, 0x11B0], NFKC: [0xC3FD], NFKD: [0x110A, 0x116A, 0x11B0] },
+{ source: [0xC3FE], NFC: [0xC3FE], NFD: [0x110A, 0x116A, 0x11B1], NFKC: [0xC3FE], NFKD: [0x110A, 0x116A, 0x11B1] },
+{ source: [0xC3FF], NFC: [0xC3FF], NFD: [0x110A, 0x116A, 0x11B2], NFKC: [0xC3FF], NFKD: [0x110A, 0x116A, 0x11B2] },
+{ source: [0xC400], NFC: [0xC400], NFD: [0x110A, 0x116A, 0x11B3], NFKC: [0xC400], NFKD: [0x110A, 0x116A, 0x11B3] },
+{ source: [0xC401], NFC: [0xC401], NFD: [0x110A, 0x116A, 0x11B4], NFKC: [0xC401], NFKD: [0x110A, 0x116A, 0x11B4] },
+{ source: [0xC402], NFC: [0xC402], NFD: [0x110A, 0x116A, 0x11B5], NFKC: [0xC402], NFKD: [0x110A, 0x116A, 0x11B5] },
+{ source: [0xC403], NFC: [0xC403], NFD: [0x110A, 0x116A, 0x11B6], NFKC: [0xC403], NFKD: [0x110A, 0x116A, 0x11B6] },
+{ source: [0xC404], NFC: [0xC404], NFD: [0x110A, 0x116A, 0x11B7], NFKC: [0xC404], NFKD: [0x110A, 0x116A, 0x11B7] },
+{ source: [0xC405], NFC: [0xC405], NFD: [0x110A, 0x116A, 0x11B8], NFKC: [0xC405], NFKD: [0x110A, 0x116A, 0x11B8] },
+{ source: [0xC406], NFC: [0xC406], NFD: [0x110A, 0x116A, 0x11B9], NFKC: [0xC406], NFKD: [0x110A, 0x116A, 0x11B9] },
+{ source: [0xC407], NFC: [0xC407], NFD: [0x110A, 0x116A, 0x11BA], NFKC: [0xC407], NFKD: [0x110A, 0x116A, 0x11BA] },
+{ source: [0xC408], NFC: [0xC408], NFD: [0x110A, 0x116A, 0x11BB], NFKC: [0xC408], NFKD: [0x110A, 0x116A, 0x11BB] },
+{ source: [0xC409], NFC: [0xC409], NFD: [0x110A, 0x116A, 0x11BC], NFKC: [0xC409], NFKD: [0x110A, 0x116A, 0x11BC] },
+{ source: [0xC40A], NFC: [0xC40A], NFD: [0x110A, 0x116A, 0x11BD], NFKC: [0xC40A], NFKD: [0x110A, 0x116A, 0x11BD] },
+{ source: [0xC40B], NFC: [0xC40B], NFD: [0x110A, 0x116A, 0x11BE], NFKC: [0xC40B], NFKD: [0x110A, 0x116A, 0x11BE] },
+{ source: [0xC40C], NFC: [0xC40C], NFD: [0x110A, 0x116A, 0x11BF], NFKC: [0xC40C], NFKD: [0x110A, 0x116A, 0x11BF] },
+{ source: [0xC40D], NFC: [0xC40D], NFD: [0x110A, 0x116A, 0x11C0], NFKC: [0xC40D], NFKD: [0x110A, 0x116A, 0x11C0] },
+{ source: [0xC40E], NFC: [0xC40E], NFD: [0x110A, 0x116A, 0x11C1], NFKC: [0xC40E], NFKD: [0x110A, 0x116A, 0x11C1] },
+{ source: [0xC40F], NFC: [0xC40F], NFD: [0x110A, 0x116A, 0x11C2], NFKC: [0xC40F], NFKD: [0x110A, 0x116A, 0x11C2] },
+{ source: [0xC410], NFC: [0xC410], NFD: [0x110A, 0x116B], NFKC: [0xC410], NFKD: [0x110A, 0x116B] },
+{ source: [0xC411], NFC: [0xC411], NFD: [0x110A, 0x116B, 0x11A8], NFKC: [0xC411], NFKD: [0x110A, 0x116B, 0x11A8] },
+{ source: [0xC412], NFC: [0xC412], NFD: [0x110A, 0x116B, 0x11A9], NFKC: [0xC412], NFKD: [0x110A, 0x116B, 0x11A9] },
+{ source: [0xC413], NFC: [0xC413], NFD: [0x110A, 0x116B, 0x11AA], NFKC: [0xC413], NFKD: [0x110A, 0x116B, 0x11AA] },
+{ source: [0xC414], NFC: [0xC414], NFD: [0x110A, 0x116B, 0x11AB], NFKC: [0xC414], NFKD: [0x110A, 0x116B, 0x11AB] },
+{ source: [0xC415], NFC: [0xC415], NFD: [0x110A, 0x116B, 0x11AC], NFKC: [0xC415], NFKD: [0x110A, 0x116B, 0x11AC] },
+{ source: [0xC416], NFC: [0xC416], NFD: [0x110A, 0x116B, 0x11AD], NFKC: [0xC416], NFKD: [0x110A, 0x116B, 0x11AD] },
+{ source: [0xC417], NFC: [0xC417], NFD: [0x110A, 0x116B, 0x11AE], NFKC: [0xC417], NFKD: [0x110A, 0x116B, 0x11AE] },
+{ source: [0xC418], NFC: [0xC418], NFD: [0x110A, 0x116B, 0x11AF], NFKC: [0xC418], NFKD: [0x110A, 0x116B, 0x11AF] },
+{ source: [0xC419], NFC: [0xC419], NFD: [0x110A, 0x116B, 0x11B0], NFKC: [0xC419], NFKD: [0x110A, 0x116B, 0x11B0] },
+{ source: [0xC41A], NFC: [0xC41A], NFD: [0x110A, 0x116B, 0x11B1], NFKC: [0xC41A], NFKD: [0x110A, 0x116B, 0x11B1] },
+{ source: [0xC41B], NFC: [0xC41B], NFD: [0x110A, 0x116B, 0x11B2], NFKC: [0xC41B], NFKD: [0x110A, 0x116B, 0x11B2] },
+{ source: [0xC41C], NFC: [0xC41C], NFD: [0x110A, 0x116B, 0x11B3], NFKC: [0xC41C], NFKD: [0x110A, 0x116B, 0x11B3] },
+{ source: [0xC41D], NFC: [0xC41D], NFD: [0x110A, 0x116B, 0x11B4], NFKC: [0xC41D], NFKD: [0x110A, 0x116B, 0x11B4] },
+{ source: [0xC41E], NFC: [0xC41E], NFD: [0x110A, 0x116B, 0x11B5], NFKC: [0xC41E], NFKD: [0x110A, 0x116B, 0x11B5] },
+{ source: [0xC41F], NFC: [0xC41F], NFD: [0x110A, 0x116B, 0x11B6], NFKC: [0xC41F], NFKD: [0x110A, 0x116B, 0x11B6] },
+{ source: [0xC420], NFC: [0xC420], NFD: [0x110A, 0x116B, 0x11B7], NFKC: [0xC420], NFKD: [0x110A, 0x116B, 0x11B7] },
+{ source: [0xC421], NFC: [0xC421], NFD: [0x110A, 0x116B, 0x11B8], NFKC: [0xC421], NFKD: [0x110A, 0x116B, 0x11B8] },
+{ source: [0xC422], NFC: [0xC422], NFD: [0x110A, 0x116B, 0x11B9], NFKC: [0xC422], NFKD: [0x110A, 0x116B, 0x11B9] },
+{ source: [0xC423], NFC: [0xC423], NFD: [0x110A, 0x116B, 0x11BA], NFKC: [0xC423], NFKD: [0x110A, 0x116B, 0x11BA] },
+{ source: [0xC424], NFC: [0xC424], NFD: [0x110A, 0x116B, 0x11BB], NFKC: [0xC424], NFKD: [0x110A, 0x116B, 0x11BB] },
+{ source: [0xC425], NFC: [0xC425], NFD: [0x110A, 0x116B, 0x11BC], NFKC: [0xC425], NFKD: [0x110A, 0x116B, 0x11BC] },
+{ source: [0xC426], NFC: [0xC426], NFD: [0x110A, 0x116B, 0x11BD], NFKC: [0xC426], NFKD: [0x110A, 0x116B, 0x11BD] },
+{ source: [0xC427], NFC: [0xC427], NFD: [0x110A, 0x116B, 0x11BE], NFKC: [0xC427], NFKD: [0x110A, 0x116B, 0x11BE] },
+{ source: [0xC428], NFC: [0xC428], NFD: [0x110A, 0x116B, 0x11BF], NFKC: [0xC428], NFKD: [0x110A, 0x116B, 0x11BF] },
+{ source: [0xC429], NFC: [0xC429], NFD: [0x110A, 0x116B, 0x11C0], NFKC: [0xC429], NFKD: [0x110A, 0x116B, 0x11C0] },
+{ source: [0xC42A], NFC: [0xC42A], NFD: [0x110A, 0x116B, 0x11C1], NFKC: [0xC42A], NFKD: [0x110A, 0x116B, 0x11C1] },
+{ source: [0xC42B], NFC: [0xC42B], NFD: [0x110A, 0x116B, 0x11C2], NFKC: [0xC42B], NFKD: [0x110A, 0x116B, 0x11C2] },
+{ source: [0xC42C], NFC: [0xC42C], NFD: [0x110A, 0x116C], NFKC: [0xC42C], NFKD: [0x110A, 0x116C] },
+{ source: [0xC42D], NFC: [0xC42D], NFD: [0x110A, 0x116C, 0x11A8], NFKC: [0xC42D], NFKD: [0x110A, 0x116C, 0x11A8] },
+{ source: [0xC42E], NFC: [0xC42E], NFD: [0x110A, 0x116C, 0x11A9], NFKC: [0xC42E], NFKD: [0x110A, 0x116C, 0x11A9] },
+{ source: [0xC42F], NFC: [0xC42F], NFD: [0x110A, 0x116C, 0x11AA], NFKC: [0xC42F], NFKD: [0x110A, 0x116C, 0x11AA] },
+{ source: [0xC430], NFC: [0xC430], NFD: [0x110A, 0x116C, 0x11AB], NFKC: [0xC430], NFKD: [0x110A, 0x116C, 0x11AB] },
+{ source: [0xC431], NFC: [0xC431], NFD: [0x110A, 0x116C, 0x11AC], NFKC: [0xC431], NFKD: [0x110A, 0x116C, 0x11AC] },
+{ source: [0xC432], NFC: [0xC432], NFD: [0x110A, 0x116C, 0x11AD], NFKC: [0xC432], NFKD: [0x110A, 0x116C, 0x11AD] },
+{ source: [0xC433], NFC: [0xC433], NFD: [0x110A, 0x116C, 0x11AE], NFKC: [0xC433], NFKD: [0x110A, 0x116C, 0x11AE] },
+{ source: [0xC434], NFC: [0xC434], NFD: [0x110A, 0x116C, 0x11AF], NFKC: [0xC434], NFKD: [0x110A, 0x116C, 0x11AF] },
+{ source: [0xC435], NFC: [0xC435], NFD: [0x110A, 0x116C, 0x11B0], NFKC: [0xC435], NFKD: [0x110A, 0x116C, 0x11B0] },
+{ source: [0xC436], NFC: [0xC436], NFD: [0x110A, 0x116C, 0x11B1], NFKC: [0xC436], NFKD: [0x110A, 0x116C, 0x11B1] },
+{ source: [0xC437], NFC: [0xC437], NFD: [0x110A, 0x116C, 0x11B2], NFKC: [0xC437], NFKD: [0x110A, 0x116C, 0x11B2] },
+{ source: [0xC438], NFC: [0xC438], NFD: [0x110A, 0x116C, 0x11B3], NFKC: [0xC438], NFKD: [0x110A, 0x116C, 0x11B3] },
+{ source: [0xC439], NFC: [0xC439], NFD: [0x110A, 0x116C, 0x11B4], NFKC: [0xC439], NFKD: [0x110A, 0x116C, 0x11B4] },
+{ source: [0xC43A], NFC: [0xC43A], NFD: [0x110A, 0x116C, 0x11B5], NFKC: [0xC43A], NFKD: [0x110A, 0x116C, 0x11B5] },
+{ source: [0xC43B], NFC: [0xC43B], NFD: [0x110A, 0x116C, 0x11B6], NFKC: [0xC43B], NFKD: [0x110A, 0x116C, 0x11B6] },
+{ source: [0xC43C], NFC: [0xC43C], NFD: [0x110A, 0x116C, 0x11B7], NFKC: [0xC43C], NFKD: [0x110A, 0x116C, 0x11B7] },
+{ source: [0xC43D], NFC: [0xC43D], NFD: [0x110A, 0x116C, 0x11B8], NFKC: [0xC43D], NFKD: [0x110A, 0x116C, 0x11B8] },
+{ source: [0xC43E], NFC: [0xC43E], NFD: [0x110A, 0x116C, 0x11B9], NFKC: [0xC43E], NFKD: [0x110A, 0x116C, 0x11B9] },
+{ source: [0xC43F], NFC: [0xC43F], NFD: [0x110A, 0x116C, 0x11BA], NFKC: [0xC43F], NFKD: [0x110A, 0x116C, 0x11BA] },
+{ source: [0xC440], NFC: [0xC440], NFD: [0x110A, 0x116C, 0x11BB], NFKC: [0xC440], NFKD: [0x110A, 0x116C, 0x11BB] },
+{ source: [0xC441], NFC: [0xC441], NFD: [0x110A, 0x116C, 0x11BC], NFKC: [0xC441], NFKD: [0x110A, 0x116C, 0x11BC] },
+{ source: [0xC442], NFC: [0xC442], NFD: [0x110A, 0x116C, 0x11BD], NFKC: [0xC442], NFKD: [0x110A, 0x116C, 0x11BD] },
+{ source: [0xC443], NFC: [0xC443], NFD: [0x110A, 0x116C, 0x11BE], NFKC: [0xC443], NFKD: [0x110A, 0x116C, 0x11BE] },
+{ source: [0xC444], NFC: [0xC444], NFD: [0x110A, 0x116C, 0x11BF], NFKC: [0xC444], NFKD: [0x110A, 0x116C, 0x11BF] },
+{ source: [0xC445], NFC: [0xC445], NFD: [0x110A, 0x116C, 0x11C0], NFKC: [0xC445], NFKD: [0x110A, 0x116C, 0x11C0] },
+{ source: [0xC446], NFC: [0xC446], NFD: [0x110A, 0x116C, 0x11C1], NFKC: [0xC446], NFKD: [0x110A, 0x116C, 0x11C1] },
+{ source: [0xC447], NFC: [0xC447], NFD: [0x110A, 0x116C, 0x11C2], NFKC: [0xC447], NFKD: [0x110A, 0x116C, 0x11C2] },
+{ source: [0xC448], NFC: [0xC448], NFD: [0x110A, 0x116D], NFKC: [0xC448], NFKD: [0x110A, 0x116D] },
+{ source: [0xC449], NFC: [0xC449], NFD: [0x110A, 0x116D, 0x11A8], NFKC: [0xC449], NFKD: [0x110A, 0x116D, 0x11A8] },
+{ source: [0xC44A], NFC: [0xC44A], NFD: [0x110A, 0x116D, 0x11A9], NFKC: [0xC44A], NFKD: [0x110A, 0x116D, 0x11A9] },
+{ source: [0xC44B], NFC: [0xC44B], NFD: [0x110A, 0x116D, 0x11AA], NFKC: [0xC44B], NFKD: [0x110A, 0x116D, 0x11AA] },
+{ source: [0xC44C], NFC: [0xC44C], NFD: [0x110A, 0x116D, 0x11AB], NFKC: [0xC44C], NFKD: [0x110A, 0x116D, 0x11AB] },
+{ source: [0xC44D], NFC: [0xC44D], NFD: [0x110A, 0x116D, 0x11AC], NFKC: [0xC44D], NFKD: [0x110A, 0x116D, 0x11AC] },
+{ source: [0xC44E], NFC: [0xC44E], NFD: [0x110A, 0x116D, 0x11AD], NFKC: [0xC44E], NFKD: [0x110A, 0x116D, 0x11AD] },
+{ source: [0xC44F], NFC: [0xC44F], NFD: [0x110A, 0x116D, 0x11AE], NFKC: [0xC44F], NFKD: [0x110A, 0x116D, 0x11AE] },
+{ source: [0xC450], NFC: [0xC450], NFD: [0x110A, 0x116D, 0x11AF], NFKC: [0xC450], NFKD: [0x110A, 0x116D, 0x11AF] },
+{ source: [0xC451], NFC: [0xC451], NFD: [0x110A, 0x116D, 0x11B0], NFKC: [0xC451], NFKD: [0x110A, 0x116D, 0x11B0] },
+{ source: [0xC452], NFC: [0xC452], NFD: [0x110A, 0x116D, 0x11B1], NFKC: [0xC452], NFKD: [0x110A, 0x116D, 0x11B1] },
+{ source: [0xC453], NFC: [0xC453], NFD: [0x110A, 0x116D, 0x11B2], NFKC: [0xC453], NFKD: [0x110A, 0x116D, 0x11B2] },
+{ source: [0xC454], NFC: [0xC454], NFD: [0x110A, 0x116D, 0x11B3], NFKC: [0xC454], NFKD: [0x110A, 0x116D, 0x11B3] },
+{ source: [0xC455], NFC: [0xC455], NFD: [0x110A, 0x116D, 0x11B4], NFKC: [0xC455], NFKD: [0x110A, 0x116D, 0x11B4] },
+{ source: [0xC456], NFC: [0xC456], NFD: [0x110A, 0x116D, 0x11B5], NFKC: [0xC456], NFKD: [0x110A, 0x116D, 0x11B5] },
+{ source: [0xC457], NFC: [0xC457], NFD: [0x110A, 0x116D, 0x11B6], NFKC: [0xC457], NFKD: [0x110A, 0x116D, 0x11B6] },
+{ source: [0xC458], NFC: [0xC458], NFD: [0x110A, 0x116D, 0x11B7], NFKC: [0xC458], NFKD: [0x110A, 0x116D, 0x11B7] },
+{ source: [0xC459], NFC: [0xC459], NFD: [0x110A, 0x116D, 0x11B8], NFKC: [0xC459], NFKD: [0x110A, 0x116D, 0x11B8] },
+{ source: [0xC45A], NFC: [0xC45A], NFD: [0x110A, 0x116D, 0x11B9], NFKC: [0xC45A], NFKD: [0x110A, 0x116D, 0x11B9] },
+{ source: [0xC45B], NFC: [0xC45B], NFD: [0x110A, 0x116D, 0x11BA], NFKC: [0xC45B], NFKD: [0x110A, 0x116D, 0x11BA] },
+{ source: [0xC45C], NFC: [0xC45C], NFD: [0x110A, 0x116D, 0x11BB], NFKC: [0xC45C], NFKD: [0x110A, 0x116D, 0x11BB] },
+{ source: [0xC45D], NFC: [0xC45D], NFD: [0x110A, 0x116D, 0x11BC], NFKC: [0xC45D], NFKD: [0x110A, 0x116D, 0x11BC] },
+{ source: [0xC45E], NFC: [0xC45E], NFD: [0x110A, 0x116D, 0x11BD], NFKC: [0xC45E], NFKD: [0x110A, 0x116D, 0x11BD] },
+{ source: [0xC45F], NFC: [0xC45F], NFD: [0x110A, 0x116D, 0x11BE], NFKC: [0xC45F], NFKD: [0x110A, 0x116D, 0x11BE] },
+{ source: [0xC460], NFC: [0xC460], NFD: [0x110A, 0x116D, 0x11BF], NFKC: [0xC460], NFKD: [0x110A, 0x116D, 0x11BF] },
+{ source: [0xC461], NFC: [0xC461], NFD: [0x110A, 0x116D, 0x11C0], NFKC: [0xC461], NFKD: [0x110A, 0x116D, 0x11C0] },
+{ source: [0xC462], NFC: [0xC462], NFD: [0x110A, 0x116D, 0x11C1], NFKC: [0xC462], NFKD: [0x110A, 0x116D, 0x11C1] },
+{ source: [0xC463], NFC: [0xC463], NFD: [0x110A, 0x116D, 0x11C2], NFKC: [0xC463], NFKD: [0x110A, 0x116D, 0x11C2] },
+{ source: [0xC464], NFC: [0xC464], NFD: [0x110A, 0x116E], NFKC: [0xC464], NFKD: [0x110A, 0x116E] },
+{ source: [0xC465], NFC: [0xC465], NFD: [0x110A, 0x116E, 0x11A8], NFKC: [0xC465], NFKD: [0x110A, 0x116E, 0x11A8] },
+{ source: [0xC466], NFC: [0xC466], NFD: [0x110A, 0x116E, 0x11A9], NFKC: [0xC466], NFKD: [0x110A, 0x116E, 0x11A9] },
+{ source: [0xC467], NFC: [0xC467], NFD: [0x110A, 0x116E, 0x11AA], NFKC: [0xC467], NFKD: [0x110A, 0x116E, 0x11AA] },
+{ source: [0xC468], NFC: [0xC468], NFD: [0x110A, 0x116E, 0x11AB], NFKC: [0xC468], NFKD: [0x110A, 0x116E, 0x11AB] },
+{ source: [0xC469], NFC: [0xC469], NFD: [0x110A, 0x116E, 0x11AC], NFKC: [0xC469], NFKD: [0x110A, 0x116E, 0x11AC] },
+{ source: [0xC46A], NFC: [0xC46A], NFD: [0x110A, 0x116E, 0x11AD], NFKC: [0xC46A], NFKD: [0x110A, 0x116E, 0x11AD] },
+{ source: [0xC46B], NFC: [0xC46B], NFD: [0x110A, 0x116E, 0x11AE], NFKC: [0xC46B], NFKD: [0x110A, 0x116E, 0x11AE] },
+{ source: [0xC46C], NFC: [0xC46C], NFD: [0x110A, 0x116E, 0x11AF], NFKC: [0xC46C], NFKD: [0x110A, 0x116E, 0x11AF] },
+{ source: [0xC46D], NFC: [0xC46D], NFD: [0x110A, 0x116E, 0x11B0], NFKC: [0xC46D], NFKD: [0x110A, 0x116E, 0x11B0] },
+{ source: [0xC46E], NFC: [0xC46E], NFD: [0x110A, 0x116E, 0x11B1], NFKC: [0xC46E], NFKD: [0x110A, 0x116E, 0x11B1] },
+{ source: [0xC46F], NFC: [0xC46F], NFD: [0x110A, 0x116E, 0x11B2], NFKC: [0xC46F], NFKD: [0x110A, 0x116E, 0x11B2] },
+{ source: [0xC470], NFC: [0xC470], NFD: [0x110A, 0x116E, 0x11B3], NFKC: [0xC470], NFKD: [0x110A, 0x116E, 0x11B3] },
+{ source: [0xC471], NFC: [0xC471], NFD: [0x110A, 0x116E, 0x11B4], NFKC: [0xC471], NFKD: [0x110A, 0x116E, 0x11B4] },
+{ source: [0xC472], NFC: [0xC472], NFD: [0x110A, 0x116E, 0x11B5], NFKC: [0xC472], NFKD: [0x110A, 0x116E, 0x11B5] },
+{ source: [0xC473], NFC: [0xC473], NFD: [0x110A, 0x116E, 0x11B6], NFKC: [0xC473], NFKD: [0x110A, 0x116E, 0x11B6] },
+{ source: [0xC474], NFC: [0xC474], NFD: [0x110A, 0x116E, 0x11B7], NFKC: [0xC474], NFKD: [0x110A, 0x116E, 0x11B7] },
+{ source: [0xC475], NFC: [0xC475], NFD: [0x110A, 0x116E, 0x11B8], NFKC: [0xC475], NFKD: [0x110A, 0x116E, 0x11B8] },
+{ source: [0xC476], NFC: [0xC476], NFD: [0x110A, 0x116E, 0x11B9], NFKC: [0xC476], NFKD: [0x110A, 0x116E, 0x11B9] },
+{ source: [0xC477], NFC: [0xC477], NFD: [0x110A, 0x116E, 0x11BA], NFKC: [0xC477], NFKD: [0x110A, 0x116E, 0x11BA] },
+{ source: [0xC478], NFC: [0xC478], NFD: [0x110A, 0x116E, 0x11BB], NFKC: [0xC478], NFKD: [0x110A, 0x116E, 0x11BB] },
+{ source: [0xC479], NFC: [0xC479], NFD: [0x110A, 0x116E, 0x11BC], NFKC: [0xC479], NFKD: [0x110A, 0x116E, 0x11BC] },
+{ source: [0xC47A], NFC: [0xC47A], NFD: [0x110A, 0x116E, 0x11BD], NFKC: [0xC47A], NFKD: [0x110A, 0x116E, 0x11BD] },
+{ source: [0xC47B], NFC: [0xC47B], NFD: [0x110A, 0x116E, 0x11BE], NFKC: [0xC47B], NFKD: [0x110A, 0x116E, 0x11BE] },
+{ source: [0xC47C], NFC: [0xC47C], NFD: [0x110A, 0x116E, 0x11BF], NFKC: [0xC47C], NFKD: [0x110A, 0x116E, 0x11BF] },
+{ source: [0xC47D], NFC: [0xC47D], NFD: [0x110A, 0x116E, 0x11C0], NFKC: [0xC47D], NFKD: [0x110A, 0x116E, 0x11C0] },
+{ source: [0xC47E], NFC: [0xC47E], NFD: [0x110A, 0x116E, 0x11C1], NFKC: [0xC47E], NFKD: [0x110A, 0x116E, 0x11C1] },
+{ source: [0xC47F], NFC: [0xC47F], NFD: [0x110A, 0x116E, 0x11C2], NFKC: [0xC47F], NFKD: [0x110A, 0x116E, 0x11C2] },
+{ source: [0xC480], NFC: [0xC480], NFD: [0x110A, 0x116F], NFKC: [0xC480], NFKD: [0x110A, 0x116F] },
+{ source: [0xC481], NFC: [0xC481], NFD: [0x110A, 0x116F, 0x11A8], NFKC: [0xC481], NFKD: [0x110A, 0x116F, 0x11A8] },
+{ source: [0xC482], NFC: [0xC482], NFD: [0x110A, 0x116F, 0x11A9], NFKC: [0xC482], NFKD: [0x110A, 0x116F, 0x11A9] },
+{ source: [0xC483], NFC: [0xC483], NFD: [0x110A, 0x116F, 0x11AA], NFKC: [0xC483], NFKD: [0x110A, 0x116F, 0x11AA] },
+{ source: [0xC484], NFC: [0xC484], NFD: [0x110A, 0x116F, 0x11AB], NFKC: [0xC484], NFKD: [0x110A, 0x116F, 0x11AB] },
+{ source: [0xC485], NFC: [0xC485], NFD: [0x110A, 0x116F, 0x11AC], NFKC: [0xC485], NFKD: [0x110A, 0x116F, 0x11AC] },
+{ source: [0xC486], NFC: [0xC486], NFD: [0x110A, 0x116F, 0x11AD], NFKC: [0xC486], NFKD: [0x110A, 0x116F, 0x11AD] },
+{ source: [0xC487], NFC: [0xC487], NFD: [0x110A, 0x116F, 0x11AE], NFKC: [0xC487], NFKD: [0x110A, 0x116F, 0x11AE] },
+{ source: [0xC488], NFC: [0xC488], NFD: [0x110A, 0x116F, 0x11AF], NFKC: [0xC488], NFKD: [0x110A, 0x116F, 0x11AF] },
+{ source: [0xC489], NFC: [0xC489], NFD: [0x110A, 0x116F, 0x11B0], NFKC: [0xC489], NFKD: [0x110A, 0x116F, 0x11B0] },
+{ source: [0xC48A], NFC: [0xC48A], NFD: [0x110A, 0x116F, 0x11B1], NFKC: [0xC48A], NFKD: [0x110A, 0x116F, 0x11B1] },
+{ source: [0xC48B], NFC: [0xC48B], NFD: [0x110A, 0x116F, 0x11B2], NFKC: [0xC48B], NFKD: [0x110A, 0x116F, 0x11B2] },
+{ source: [0xC48C], NFC: [0xC48C], NFD: [0x110A, 0x116F, 0x11B3], NFKC: [0xC48C], NFKD: [0x110A, 0x116F, 0x11B3] },
+{ source: [0xC48D], NFC: [0xC48D], NFD: [0x110A, 0x116F, 0x11B4], NFKC: [0xC48D], NFKD: [0x110A, 0x116F, 0x11B4] },
+{ source: [0xC48E], NFC: [0xC48E], NFD: [0x110A, 0x116F, 0x11B5], NFKC: [0xC48E], NFKD: [0x110A, 0x116F, 0x11B5] },
+{ source: [0xC48F], NFC: [0xC48F], NFD: [0x110A, 0x116F, 0x11B6], NFKC: [0xC48F], NFKD: [0x110A, 0x116F, 0x11B6] },
+{ source: [0xC490], NFC: [0xC490], NFD: [0x110A, 0x116F, 0x11B7], NFKC: [0xC490], NFKD: [0x110A, 0x116F, 0x11B7] },
+{ source: [0xC491], NFC: [0xC491], NFD: [0x110A, 0x116F, 0x11B8], NFKC: [0xC491], NFKD: [0x110A, 0x116F, 0x11B8] },
+{ source: [0xC492], NFC: [0xC492], NFD: [0x110A, 0x116F, 0x11B9], NFKC: [0xC492], NFKD: [0x110A, 0x116F, 0x11B9] },
+{ source: [0xC493], NFC: [0xC493], NFD: [0x110A, 0x116F, 0x11BA], NFKC: [0xC493], NFKD: [0x110A, 0x116F, 0x11BA] },
+{ source: [0xC494], NFC: [0xC494], NFD: [0x110A, 0x116F, 0x11BB], NFKC: [0xC494], NFKD: [0x110A, 0x116F, 0x11BB] },
+{ source: [0xC495], NFC: [0xC495], NFD: [0x110A, 0x116F, 0x11BC], NFKC: [0xC495], NFKD: [0x110A, 0x116F, 0x11BC] },
+{ source: [0xC496], NFC: [0xC496], NFD: [0x110A, 0x116F, 0x11BD], NFKC: [0xC496], NFKD: [0x110A, 0x116F, 0x11BD] },
+{ source: [0xC497], NFC: [0xC497], NFD: [0x110A, 0x116F, 0x11BE], NFKC: [0xC497], NFKD: [0x110A, 0x116F, 0x11BE] },
+{ source: [0xC498], NFC: [0xC498], NFD: [0x110A, 0x116F, 0x11BF], NFKC: [0xC498], NFKD: [0x110A, 0x116F, 0x11BF] },
+{ source: [0xC499], NFC: [0xC499], NFD: [0x110A, 0x116F, 0x11C0], NFKC: [0xC499], NFKD: [0x110A, 0x116F, 0x11C0] },
+{ source: [0xC49A], NFC: [0xC49A], NFD: [0x110A, 0x116F, 0x11C1], NFKC: [0xC49A], NFKD: [0x110A, 0x116F, 0x11C1] },
+{ source: [0xC49B], NFC: [0xC49B], NFD: [0x110A, 0x116F, 0x11C2], NFKC: [0xC49B], NFKD: [0x110A, 0x116F, 0x11C2] },
+{ source: [0xC49C], NFC: [0xC49C], NFD: [0x110A, 0x1170], NFKC: [0xC49C], NFKD: [0x110A, 0x1170] },
+{ source: [0xC49D], NFC: [0xC49D], NFD: [0x110A, 0x1170, 0x11A8], NFKC: [0xC49D], NFKD: [0x110A, 0x1170, 0x11A8] },
+{ source: [0xC49E], NFC: [0xC49E], NFD: [0x110A, 0x1170, 0x11A9], NFKC: [0xC49E], NFKD: [0x110A, 0x1170, 0x11A9] },
+{ source: [0xC49F], NFC: [0xC49F], NFD: [0x110A, 0x1170, 0x11AA], NFKC: [0xC49F], NFKD: [0x110A, 0x1170, 0x11AA] },
+{ source: [0xC4A0], NFC: [0xC4A0], NFD: [0x110A, 0x1170, 0x11AB], NFKC: [0xC4A0], NFKD: [0x110A, 0x1170, 0x11AB] },
+{ source: [0xC4A1], NFC: [0xC4A1], NFD: [0x110A, 0x1170, 0x11AC], NFKC: [0xC4A1], NFKD: [0x110A, 0x1170, 0x11AC] },
+{ source: [0xC4A2], NFC: [0xC4A2], NFD: [0x110A, 0x1170, 0x11AD], NFKC: [0xC4A2], NFKD: [0x110A, 0x1170, 0x11AD] },
+{ source: [0xC4A3], NFC: [0xC4A3], NFD: [0x110A, 0x1170, 0x11AE], NFKC: [0xC4A3], NFKD: [0x110A, 0x1170, 0x11AE] },
+{ source: [0xC4A4], NFC: [0xC4A4], NFD: [0x110A, 0x1170, 0x11AF], NFKC: [0xC4A4], NFKD: [0x110A, 0x1170, 0x11AF] },
+{ source: [0xC4A5], NFC: [0xC4A5], NFD: [0x110A, 0x1170, 0x11B0], NFKC: [0xC4A5], NFKD: [0x110A, 0x1170, 0x11B0] },
+{ source: [0xC4A6], NFC: [0xC4A6], NFD: [0x110A, 0x1170, 0x11B1], NFKC: [0xC4A6], NFKD: [0x110A, 0x1170, 0x11B1] },
+{ source: [0xC4A7], NFC: [0xC4A7], NFD: [0x110A, 0x1170, 0x11B2], NFKC: [0xC4A7], NFKD: [0x110A, 0x1170, 0x11B2] },
+{ source: [0xC4A8], NFC: [0xC4A8], NFD: [0x110A, 0x1170, 0x11B3], NFKC: [0xC4A8], NFKD: [0x110A, 0x1170, 0x11B3] },
+{ source: [0xC4A9], NFC: [0xC4A9], NFD: [0x110A, 0x1170, 0x11B4], NFKC: [0xC4A9], NFKD: [0x110A, 0x1170, 0x11B4] },
+{ source: [0xC4AA], NFC: [0xC4AA], NFD: [0x110A, 0x1170, 0x11B5], NFKC: [0xC4AA], NFKD: [0x110A, 0x1170, 0x11B5] },
+{ source: [0xC4AB], NFC: [0xC4AB], NFD: [0x110A, 0x1170, 0x11B6], NFKC: [0xC4AB], NFKD: [0x110A, 0x1170, 0x11B6] },
+{ source: [0xC4AC], NFC: [0xC4AC], NFD: [0x110A, 0x1170, 0x11B7], NFKC: [0xC4AC], NFKD: [0x110A, 0x1170, 0x11B7] },
+{ source: [0xC4AD], NFC: [0xC4AD], NFD: [0x110A, 0x1170, 0x11B8], NFKC: [0xC4AD], NFKD: [0x110A, 0x1170, 0x11B8] },
+{ source: [0xC4AE], NFC: [0xC4AE], NFD: [0x110A, 0x1170, 0x11B9], NFKC: [0xC4AE], NFKD: [0x110A, 0x1170, 0x11B9] },
+{ source: [0xC4AF], NFC: [0xC4AF], NFD: [0x110A, 0x1170, 0x11BA], NFKC: [0xC4AF], NFKD: [0x110A, 0x1170, 0x11BA] },
+{ source: [0xC4B0], NFC: [0xC4B0], NFD: [0x110A, 0x1170, 0x11BB], NFKC: [0xC4B0], NFKD: [0x110A, 0x1170, 0x11BB] },
+{ source: [0xC4B1], NFC: [0xC4B1], NFD: [0x110A, 0x1170, 0x11BC], NFKC: [0xC4B1], NFKD: [0x110A, 0x1170, 0x11BC] },
+{ source: [0xC4B2], NFC: [0xC4B2], NFD: [0x110A, 0x1170, 0x11BD], NFKC: [0xC4B2], NFKD: [0x110A, 0x1170, 0x11BD] },
+{ source: [0xC4B3], NFC: [0xC4B3], NFD: [0x110A, 0x1170, 0x11BE], NFKC: [0xC4B3], NFKD: [0x110A, 0x1170, 0x11BE] },
+{ source: [0xC4B4], NFC: [0xC4B4], NFD: [0x110A, 0x1170, 0x11BF], NFKC: [0xC4B4], NFKD: [0x110A, 0x1170, 0x11BF] },
+{ source: [0xC4B5], NFC: [0xC4B5], NFD: [0x110A, 0x1170, 0x11C0], NFKC: [0xC4B5], NFKD: [0x110A, 0x1170, 0x11C0] },
+{ source: [0xC4B6], NFC: [0xC4B6], NFD: [0x110A, 0x1170, 0x11C1], NFKC: [0xC4B6], NFKD: [0x110A, 0x1170, 0x11C1] },
+{ source: [0xC4B7], NFC: [0xC4B7], NFD: [0x110A, 0x1170, 0x11C2], NFKC: [0xC4B7], NFKD: [0x110A, 0x1170, 0x11C2] },
+{ source: [0xC4B8], NFC: [0xC4B8], NFD: [0x110A, 0x1171], NFKC: [0xC4B8], NFKD: [0x110A, 0x1171] },
+{ source: [0xC4B9], NFC: [0xC4B9], NFD: [0x110A, 0x1171, 0x11A8], NFKC: [0xC4B9], NFKD: [0x110A, 0x1171, 0x11A8] },
+{ source: [0xC4BA], NFC: [0xC4BA], NFD: [0x110A, 0x1171, 0x11A9], NFKC: [0xC4BA], NFKD: [0x110A, 0x1171, 0x11A9] },
+{ source: [0xC4BB], NFC: [0xC4BB], NFD: [0x110A, 0x1171, 0x11AA], NFKC: [0xC4BB], NFKD: [0x110A, 0x1171, 0x11AA] },
+{ source: [0xC4BC], NFC: [0xC4BC], NFD: [0x110A, 0x1171, 0x11AB], NFKC: [0xC4BC], NFKD: [0x110A, 0x1171, 0x11AB] },
+{ source: [0xC4BD], NFC: [0xC4BD], NFD: [0x110A, 0x1171, 0x11AC], NFKC: [0xC4BD], NFKD: [0x110A, 0x1171, 0x11AC] },
+{ source: [0xC4BE], NFC: [0xC4BE], NFD: [0x110A, 0x1171, 0x11AD], NFKC: [0xC4BE], NFKD: [0x110A, 0x1171, 0x11AD] },
+{ source: [0xC4BF], NFC: [0xC4BF], NFD: [0x110A, 0x1171, 0x11AE], NFKC: [0xC4BF], NFKD: [0x110A, 0x1171, 0x11AE] },
+{ source: [0xC4C0], NFC: [0xC4C0], NFD: [0x110A, 0x1171, 0x11AF], NFKC: [0xC4C0], NFKD: [0x110A, 0x1171, 0x11AF] },
+{ source: [0xC4C1], NFC: [0xC4C1], NFD: [0x110A, 0x1171, 0x11B0], NFKC: [0xC4C1], NFKD: [0x110A, 0x1171, 0x11B0] },
+{ source: [0xC4C2], NFC: [0xC4C2], NFD: [0x110A, 0x1171, 0x11B1], NFKC: [0xC4C2], NFKD: [0x110A, 0x1171, 0x11B1] },
+{ source: [0xC4C3], NFC: [0xC4C3], NFD: [0x110A, 0x1171, 0x11B2], NFKC: [0xC4C3], NFKD: [0x110A, 0x1171, 0x11B2] },
+{ source: [0xC4C4], NFC: [0xC4C4], NFD: [0x110A, 0x1171, 0x11B3], NFKC: [0xC4C4], NFKD: [0x110A, 0x1171, 0x11B3] },
+{ source: [0xC4C5], NFC: [0xC4C5], NFD: [0x110A, 0x1171, 0x11B4], NFKC: [0xC4C5], NFKD: [0x110A, 0x1171, 0x11B4] },
+{ source: [0xC4C6], NFC: [0xC4C6], NFD: [0x110A, 0x1171, 0x11B5], NFKC: [0xC4C6], NFKD: [0x110A, 0x1171, 0x11B5] },
+{ source: [0xC4C7], NFC: [0xC4C7], NFD: [0x110A, 0x1171, 0x11B6], NFKC: [0xC4C7], NFKD: [0x110A, 0x1171, 0x11B6] },
+{ source: [0xC4C8], NFC: [0xC4C8], NFD: [0x110A, 0x1171, 0x11B7], NFKC: [0xC4C8], NFKD: [0x110A, 0x1171, 0x11B7] },
+{ source: [0xC4C9], NFC: [0xC4C9], NFD: [0x110A, 0x1171, 0x11B8], NFKC: [0xC4C9], NFKD: [0x110A, 0x1171, 0x11B8] },
+{ source: [0xC4CA], NFC: [0xC4CA], NFD: [0x110A, 0x1171, 0x11B9], NFKC: [0xC4CA], NFKD: [0x110A, 0x1171, 0x11B9] },
+{ source: [0xC4CB], NFC: [0xC4CB], NFD: [0x110A, 0x1171, 0x11BA], NFKC: [0xC4CB], NFKD: [0x110A, 0x1171, 0x11BA] },
+{ source: [0xC4CC], NFC: [0xC4CC], NFD: [0x110A, 0x1171, 0x11BB], NFKC: [0xC4CC], NFKD: [0x110A, 0x1171, 0x11BB] },
+{ source: [0xC4CD], NFC: [0xC4CD], NFD: [0x110A, 0x1171, 0x11BC], NFKC: [0xC4CD], NFKD: [0x110A, 0x1171, 0x11BC] },
+{ source: [0xC4CE], NFC: [0xC4CE], NFD: [0x110A, 0x1171, 0x11BD], NFKC: [0xC4CE], NFKD: [0x110A, 0x1171, 0x11BD] },
+{ source: [0xC4CF], NFC: [0xC4CF], NFD: [0x110A, 0x1171, 0x11BE], NFKC: [0xC4CF], NFKD: [0x110A, 0x1171, 0x11BE] },
+{ source: [0xC4D0], NFC: [0xC4D0], NFD: [0x110A, 0x1171, 0x11BF], NFKC: [0xC4D0], NFKD: [0x110A, 0x1171, 0x11BF] },
+{ source: [0xC4D1], NFC: [0xC4D1], NFD: [0x110A, 0x1171, 0x11C0], NFKC: [0xC4D1], NFKD: [0x110A, 0x1171, 0x11C0] },
+{ source: [0xC4D2], NFC: [0xC4D2], NFD: [0x110A, 0x1171, 0x11C1], NFKC: [0xC4D2], NFKD: [0x110A, 0x1171, 0x11C1] },
+{ source: [0xC4D3], NFC: [0xC4D3], NFD: [0x110A, 0x1171, 0x11C2], NFKC: [0xC4D3], NFKD: [0x110A, 0x1171, 0x11C2] },
+{ source: [0xC4D4], NFC: [0xC4D4], NFD: [0x110A, 0x1172], NFKC: [0xC4D4], NFKD: [0x110A, 0x1172] },
+{ source: [0xC4D5], NFC: [0xC4D5], NFD: [0x110A, 0x1172, 0x11A8], NFKC: [0xC4D5], NFKD: [0x110A, 0x1172, 0x11A8] },
+{ source: [0xC4D6], NFC: [0xC4D6], NFD: [0x110A, 0x1172, 0x11A9], NFKC: [0xC4D6], NFKD: [0x110A, 0x1172, 0x11A9] },
+{ source: [0xC4D7], NFC: [0xC4D7], NFD: [0x110A, 0x1172, 0x11AA], NFKC: [0xC4D7], NFKD: [0x110A, 0x1172, 0x11AA] },
+{ source: [0xC4D8], NFC: [0xC4D8], NFD: [0x110A, 0x1172, 0x11AB], NFKC: [0xC4D8], NFKD: [0x110A, 0x1172, 0x11AB] },
+{ source: [0xC4D9], NFC: [0xC4D9], NFD: [0x110A, 0x1172, 0x11AC], NFKC: [0xC4D9], NFKD: [0x110A, 0x1172, 0x11AC] },
+{ source: [0xC4DA], NFC: [0xC4DA], NFD: [0x110A, 0x1172, 0x11AD], NFKC: [0xC4DA], NFKD: [0x110A, 0x1172, 0x11AD] },
+{ source: [0xC4DB], NFC: [0xC4DB], NFD: [0x110A, 0x1172, 0x11AE], NFKC: [0xC4DB], NFKD: [0x110A, 0x1172, 0x11AE] },
+{ source: [0xC4DC], NFC: [0xC4DC], NFD: [0x110A, 0x1172, 0x11AF], NFKC: [0xC4DC], NFKD: [0x110A, 0x1172, 0x11AF] },
+{ source: [0xC4DD], NFC: [0xC4DD], NFD: [0x110A, 0x1172, 0x11B0], NFKC: [0xC4DD], NFKD: [0x110A, 0x1172, 0x11B0] },
+{ source: [0xC4DE], NFC: [0xC4DE], NFD: [0x110A, 0x1172, 0x11B1], NFKC: [0xC4DE], NFKD: [0x110A, 0x1172, 0x11B1] },
+{ source: [0xC4DF], NFC: [0xC4DF], NFD: [0x110A, 0x1172, 0x11B2], NFKC: [0xC4DF], NFKD: [0x110A, 0x1172, 0x11B2] },
+{ source: [0xC4E0], NFC: [0xC4E0], NFD: [0x110A, 0x1172, 0x11B3], NFKC: [0xC4E0], NFKD: [0x110A, 0x1172, 0x11B3] },
+{ source: [0xC4E1], NFC: [0xC4E1], NFD: [0x110A, 0x1172, 0x11B4], NFKC: [0xC4E1], NFKD: [0x110A, 0x1172, 0x11B4] },
+{ source: [0xC4E2], NFC: [0xC4E2], NFD: [0x110A, 0x1172, 0x11B5], NFKC: [0xC4E2], NFKD: [0x110A, 0x1172, 0x11B5] },
+{ source: [0xC4E3], NFC: [0xC4E3], NFD: [0x110A, 0x1172, 0x11B6], NFKC: [0xC4E3], NFKD: [0x110A, 0x1172, 0x11B6] },
+{ source: [0xC4E4], NFC: [0xC4E4], NFD: [0x110A, 0x1172, 0x11B7], NFKC: [0xC4E4], NFKD: [0x110A, 0x1172, 0x11B7] },
+{ source: [0xC4E5], NFC: [0xC4E5], NFD: [0x110A, 0x1172, 0x11B8], NFKC: [0xC4E5], NFKD: [0x110A, 0x1172, 0x11B8] },
+{ source: [0xC4E6], NFC: [0xC4E6], NFD: [0x110A, 0x1172, 0x11B9], NFKC: [0xC4E6], NFKD: [0x110A, 0x1172, 0x11B9] },
+{ source: [0xC4E7], NFC: [0xC4E7], NFD: [0x110A, 0x1172, 0x11BA], NFKC: [0xC4E7], NFKD: [0x110A, 0x1172, 0x11BA] },
+{ source: [0xC4E8], NFC: [0xC4E8], NFD: [0x110A, 0x1172, 0x11BB], NFKC: [0xC4E8], NFKD: [0x110A, 0x1172, 0x11BB] },
+{ source: [0xC4E9], NFC: [0xC4E9], NFD: [0x110A, 0x1172, 0x11BC], NFKC: [0xC4E9], NFKD: [0x110A, 0x1172, 0x11BC] },
+{ source: [0xC4EA], NFC: [0xC4EA], NFD: [0x110A, 0x1172, 0x11BD], NFKC: [0xC4EA], NFKD: [0x110A, 0x1172, 0x11BD] },
+{ source: [0xC4EB], NFC: [0xC4EB], NFD: [0x110A, 0x1172, 0x11BE], NFKC: [0xC4EB], NFKD: [0x110A, 0x1172, 0x11BE] },
+{ source: [0xC4EC], NFC: [0xC4EC], NFD: [0x110A, 0x1172, 0x11BF], NFKC: [0xC4EC], NFKD: [0x110A, 0x1172, 0x11BF] },
+{ source: [0xC4ED], NFC: [0xC4ED], NFD: [0x110A, 0x1172, 0x11C0], NFKC: [0xC4ED], NFKD: [0x110A, 0x1172, 0x11C0] },
+{ source: [0xC4EE], NFC: [0xC4EE], NFD: [0x110A, 0x1172, 0x11C1], NFKC: [0xC4EE], NFKD: [0x110A, 0x1172, 0x11C1] },
+{ source: [0xC4EF], NFC: [0xC4EF], NFD: [0x110A, 0x1172, 0x11C2], NFKC: [0xC4EF], NFKD: [0x110A, 0x1172, 0x11C2] },
+{ source: [0xC4F0], NFC: [0xC4F0], NFD: [0x110A, 0x1173], NFKC: [0xC4F0], NFKD: [0x110A, 0x1173] },
+{ source: [0xC4F1], NFC: [0xC4F1], NFD: [0x110A, 0x1173, 0x11A8], NFKC: [0xC4F1], NFKD: [0x110A, 0x1173, 0x11A8] },
+{ source: [0xC4F2], NFC: [0xC4F2], NFD: [0x110A, 0x1173, 0x11A9], NFKC: [0xC4F2], NFKD: [0x110A, 0x1173, 0x11A9] },
+{ source: [0xC4F3], NFC: [0xC4F3], NFD: [0x110A, 0x1173, 0x11AA], NFKC: [0xC4F3], NFKD: [0x110A, 0x1173, 0x11AA] },
+{ source: [0xC4F4], NFC: [0xC4F4], NFD: [0x110A, 0x1173, 0x11AB], NFKC: [0xC4F4], NFKD: [0x110A, 0x1173, 0x11AB] },
+{ source: [0xC4F5], NFC: [0xC4F5], NFD: [0x110A, 0x1173, 0x11AC], NFKC: [0xC4F5], NFKD: [0x110A, 0x1173, 0x11AC] },
+{ source: [0xC4F6], NFC: [0xC4F6], NFD: [0x110A, 0x1173, 0x11AD], NFKC: [0xC4F6], NFKD: [0x110A, 0x1173, 0x11AD] },
+{ source: [0xC4F7], NFC: [0xC4F7], NFD: [0x110A, 0x1173, 0x11AE], NFKC: [0xC4F7], NFKD: [0x110A, 0x1173, 0x11AE] },
+{ source: [0xC4F8], NFC: [0xC4F8], NFD: [0x110A, 0x1173, 0x11AF], NFKC: [0xC4F8], NFKD: [0x110A, 0x1173, 0x11AF] },
+{ source: [0xC4F9], NFC: [0xC4F9], NFD: [0x110A, 0x1173, 0x11B0], NFKC: [0xC4F9], NFKD: [0x110A, 0x1173, 0x11B0] },
+{ source: [0xC4FA], NFC: [0xC4FA], NFD: [0x110A, 0x1173, 0x11B1], NFKC: [0xC4FA], NFKD: [0x110A, 0x1173, 0x11B1] },
+{ source: [0xC4FB], NFC: [0xC4FB], NFD: [0x110A, 0x1173, 0x11B2], NFKC: [0xC4FB], NFKD: [0x110A, 0x1173, 0x11B2] },
+{ source: [0xC4FC], NFC: [0xC4FC], NFD: [0x110A, 0x1173, 0x11B3], NFKC: [0xC4FC], NFKD: [0x110A, 0x1173, 0x11B3] },
+{ source: [0xC4FD], NFC: [0xC4FD], NFD: [0x110A, 0x1173, 0x11B4], NFKC: [0xC4FD], NFKD: [0x110A, 0x1173, 0x11B4] },
+{ source: [0xC4FE], NFC: [0xC4FE], NFD: [0x110A, 0x1173, 0x11B5], NFKC: [0xC4FE], NFKD: [0x110A, 0x1173, 0x11B5] },
+{ source: [0xC4FF], NFC: [0xC4FF], NFD: [0x110A, 0x1173, 0x11B6], NFKC: [0xC4FF], NFKD: [0x110A, 0x1173, 0x11B6] },
+{ source: [0xC500], NFC: [0xC500], NFD: [0x110A, 0x1173, 0x11B7], NFKC: [0xC500], NFKD: [0x110A, 0x1173, 0x11B7] },
+{ source: [0xC501], NFC: [0xC501], NFD: [0x110A, 0x1173, 0x11B8], NFKC: [0xC501], NFKD: [0x110A, 0x1173, 0x11B8] },
+{ source: [0xC502], NFC: [0xC502], NFD: [0x110A, 0x1173, 0x11B9], NFKC: [0xC502], NFKD: [0x110A, 0x1173, 0x11B9] },
+{ source: [0xC503], NFC: [0xC503], NFD: [0x110A, 0x1173, 0x11BA], NFKC: [0xC503], NFKD: [0x110A, 0x1173, 0x11BA] },
+{ source: [0xC504], NFC: [0xC504], NFD: [0x110A, 0x1173, 0x11BB], NFKC: [0xC504], NFKD: [0x110A, 0x1173, 0x11BB] },
+{ source: [0xC505], NFC: [0xC505], NFD: [0x110A, 0x1173, 0x11BC], NFKC: [0xC505], NFKD: [0x110A, 0x1173, 0x11BC] },
+{ source: [0xC506], NFC: [0xC506], NFD: [0x110A, 0x1173, 0x11BD], NFKC: [0xC506], NFKD: [0x110A, 0x1173, 0x11BD] },
+{ source: [0xC507], NFC: [0xC507], NFD: [0x110A, 0x1173, 0x11BE], NFKC: [0xC507], NFKD: [0x110A, 0x1173, 0x11BE] },
+{ source: [0xC508], NFC: [0xC508], NFD: [0x110A, 0x1173, 0x11BF], NFKC: [0xC508], NFKD: [0x110A, 0x1173, 0x11BF] },
+{ source: [0xC509], NFC: [0xC509], NFD: [0x110A, 0x1173, 0x11C0], NFKC: [0xC509], NFKD: [0x110A, 0x1173, 0x11C0] },
+{ source: [0xC50A], NFC: [0xC50A], NFD: [0x110A, 0x1173, 0x11C1], NFKC: [0xC50A], NFKD: [0x110A, 0x1173, 0x11C1] },
+{ source: [0xC50B], NFC: [0xC50B], NFD: [0x110A, 0x1173, 0x11C2], NFKC: [0xC50B], NFKD: [0x110A, 0x1173, 0x11C2] },
+{ source: [0xC50C], NFC: [0xC50C], NFD: [0x110A, 0x1174], NFKC: [0xC50C], NFKD: [0x110A, 0x1174] },
+{ source: [0xC50D], NFC: [0xC50D], NFD: [0x110A, 0x1174, 0x11A8], NFKC: [0xC50D], NFKD: [0x110A, 0x1174, 0x11A8] },
+{ source: [0xC50E], NFC: [0xC50E], NFD: [0x110A, 0x1174, 0x11A9], NFKC: [0xC50E], NFKD: [0x110A, 0x1174, 0x11A9] },
+{ source: [0xC50F], NFC: [0xC50F], NFD: [0x110A, 0x1174, 0x11AA], NFKC: [0xC50F], NFKD: [0x110A, 0x1174, 0x11AA] },
+{ source: [0xC510], NFC: [0xC510], NFD: [0x110A, 0x1174, 0x11AB], NFKC: [0xC510], NFKD: [0x110A, 0x1174, 0x11AB] },
+{ source: [0xC511], NFC: [0xC511], NFD: [0x110A, 0x1174, 0x11AC], NFKC: [0xC511], NFKD: [0x110A, 0x1174, 0x11AC] },
+{ source: [0xC512], NFC: [0xC512], NFD: [0x110A, 0x1174, 0x11AD], NFKC: [0xC512], NFKD: [0x110A, 0x1174, 0x11AD] },
+{ source: [0xC513], NFC: [0xC513], NFD: [0x110A, 0x1174, 0x11AE], NFKC: [0xC513], NFKD: [0x110A, 0x1174, 0x11AE] },
+{ source: [0xC514], NFC: [0xC514], NFD: [0x110A, 0x1174, 0x11AF], NFKC: [0xC514], NFKD: [0x110A, 0x1174, 0x11AF] },
+{ source: [0xC515], NFC: [0xC515], NFD: [0x110A, 0x1174, 0x11B0], NFKC: [0xC515], NFKD: [0x110A, 0x1174, 0x11B0] },
+{ source: [0xC516], NFC: [0xC516], NFD: [0x110A, 0x1174, 0x11B1], NFKC: [0xC516], NFKD: [0x110A, 0x1174, 0x11B1] },
+{ source: [0xC517], NFC: [0xC517], NFD: [0x110A, 0x1174, 0x11B2], NFKC: [0xC517], NFKD: [0x110A, 0x1174, 0x11B2] },
+{ source: [0xC518], NFC: [0xC518], NFD: [0x110A, 0x1174, 0x11B3], NFKC: [0xC518], NFKD: [0x110A, 0x1174, 0x11B3] },
+{ source: [0xC519], NFC: [0xC519], NFD: [0x110A, 0x1174, 0x11B4], NFKC: [0xC519], NFKD: [0x110A, 0x1174, 0x11B4] },
+{ source: [0xC51A], NFC: [0xC51A], NFD: [0x110A, 0x1174, 0x11B5], NFKC: [0xC51A], NFKD: [0x110A, 0x1174, 0x11B5] },
+{ source: [0xC51B], NFC: [0xC51B], NFD: [0x110A, 0x1174, 0x11B6], NFKC: [0xC51B], NFKD: [0x110A, 0x1174, 0x11B6] },
+{ source: [0xC51C], NFC: [0xC51C], NFD: [0x110A, 0x1174, 0x11B7], NFKC: [0xC51C], NFKD: [0x110A, 0x1174, 0x11B7] },
+{ source: [0xC51D], NFC: [0xC51D], NFD: [0x110A, 0x1174, 0x11B8], NFKC: [0xC51D], NFKD: [0x110A, 0x1174, 0x11B8] },
+{ source: [0xC51E], NFC: [0xC51E], NFD: [0x110A, 0x1174, 0x11B9], NFKC: [0xC51E], NFKD: [0x110A, 0x1174, 0x11B9] },
+{ source: [0xC51F], NFC: [0xC51F], NFD: [0x110A, 0x1174, 0x11BA], NFKC: [0xC51F], NFKD: [0x110A, 0x1174, 0x11BA] },
+{ source: [0xC520], NFC: [0xC520], NFD: [0x110A, 0x1174, 0x11BB], NFKC: [0xC520], NFKD: [0x110A, 0x1174, 0x11BB] },
+{ source: [0xC521], NFC: [0xC521], NFD: [0x110A, 0x1174, 0x11BC], NFKC: [0xC521], NFKD: [0x110A, 0x1174, 0x11BC] },
+{ source: [0xC522], NFC: [0xC522], NFD: [0x110A, 0x1174, 0x11BD], NFKC: [0xC522], NFKD: [0x110A, 0x1174, 0x11BD] },
+{ source: [0xC523], NFC: [0xC523], NFD: [0x110A, 0x1174, 0x11BE], NFKC: [0xC523], NFKD: [0x110A, 0x1174, 0x11BE] },
+{ source: [0xC524], NFC: [0xC524], NFD: [0x110A, 0x1174, 0x11BF], NFKC: [0xC524], NFKD: [0x110A, 0x1174, 0x11BF] },
+{ source: [0xC525], NFC: [0xC525], NFD: [0x110A, 0x1174, 0x11C0], NFKC: [0xC525], NFKD: [0x110A, 0x1174, 0x11C0] },
+{ source: [0xC526], NFC: [0xC526], NFD: [0x110A, 0x1174, 0x11C1], NFKC: [0xC526], NFKD: [0x110A, 0x1174, 0x11C1] },
+{ source: [0xC527], NFC: [0xC527], NFD: [0x110A, 0x1174, 0x11C2], NFKC: [0xC527], NFKD: [0x110A, 0x1174, 0x11C2] },
+{ source: [0xC528], NFC: [0xC528], NFD: [0x110A, 0x1175], NFKC: [0xC528], NFKD: [0x110A, 0x1175] },
+{ source: [0xC529], NFC: [0xC529], NFD: [0x110A, 0x1175, 0x11A8], NFKC: [0xC529], NFKD: [0x110A, 0x1175, 0x11A8] },
+{ source: [0xC52A], NFC: [0xC52A], NFD: [0x110A, 0x1175, 0x11A9], NFKC: [0xC52A], NFKD: [0x110A, 0x1175, 0x11A9] },
+{ source: [0xC52B], NFC: [0xC52B], NFD: [0x110A, 0x1175, 0x11AA], NFKC: [0xC52B], NFKD: [0x110A, 0x1175, 0x11AA] },
+{ source: [0xC52C], NFC: [0xC52C], NFD: [0x110A, 0x1175, 0x11AB], NFKC: [0xC52C], NFKD: [0x110A, 0x1175, 0x11AB] },
+{ source: [0xC52D], NFC: [0xC52D], NFD: [0x110A, 0x1175, 0x11AC], NFKC: [0xC52D], NFKD: [0x110A, 0x1175, 0x11AC] },
+{ source: [0xC52E], NFC: [0xC52E], NFD: [0x110A, 0x1175, 0x11AD], NFKC: [0xC52E], NFKD: [0x110A, 0x1175, 0x11AD] },
+{ source: [0xC52F], NFC: [0xC52F], NFD: [0x110A, 0x1175, 0x11AE], NFKC: [0xC52F], NFKD: [0x110A, 0x1175, 0x11AE] },
+{ source: [0xC530], NFC: [0xC530], NFD: [0x110A, 0x1175, 0x11AF], NFKC: [0xC530], NFKD: [0x110A, 0x1175, 0x11AF] },
+{ source: [0xC531], NFC: [0xC531], NFD: [0x110A, 0x1175, 0x11B0], NFKC: [0xC531], NFKD: [0x110A, 0x1175, 0x11B0] },
+{ source: [0xC532], NFC: [0xC532], NFD: [0x110A, 0x1175, 0x11B1], NFKC: [0xC532], NFKD: [0x110A, 0x1175, 0x11B1] },
+{ source: [0xC533], NFC: [0xC533], NFD: [0x110A, 0x1175, 0x11B2], NFKC: [0xC533], NFKD: [0x110A, 0x1175, 0x11B2] },
+{ source: [0xC534], NFC: [0xC534], NFD: [0x110A, 0x1175, 0x11B3], NFKC: [0xC534], NFKD: [0x110A, 0x1175, 0x11B3] },
+{ source: [0xC535], NFC: [0xC535], NFD: [0x110A, 0x1175, 0x11B4], NFKC: [0xC535], NFKD: [0x110A, 0x1175, 0x11B4] },
+{ source: [0xC536], NFC: [0xC536], NFD: [0x110A, 0x1175, 0x11B5], NFKC: [0xC536], NFKD: [0x110A, 0x1175, 0x11B5] },
+{ source: [0xC537], NFC: [0xC537], NFD: [0x110A, 0x1175, 0x11B6], NFKC: [0xC537], NFKD: [0x110A, 0x1175, 0x11B6] },
+{ source: [0xC538], NFC: [0xC538], NFD: [0x110A, 0x1175, 0x11B7], NFKC: [0xC538], NFKD: [0x110A, 0x1175, 0x11B7] },
+{ source: [0xC539], NFC: [0xC539], NFD: [0x110A, 0x1175, 0x11B8], NFKC: [0xC539], NFKD: [0x110A, 0x1175, 0x11B8] },
+{ source: [0xC53A], NFC: [0xC53A], NFD: [0x110A, 0x1175, 0x11B9], NFKC: [0xC53A], NFKD: [0x110A, 0x1175, 0x11B9] },
+{ source: [0xC53B], NFC: [0xC53B], NFD: [0x110A, 0x1175, 0x11BA], NFKC: [0xC53B], NFKD: [0x110A, 0x1175, 0x11BA] },
+{ source: [0xC53C], NFC: [0xC53C], NFD: [0x110A, 0x1175, 0x11BB], NFKC: [0xC53C], NFKD: [0x110A, 0x1175, 0x11BB] },
+{ source: [0xC53D], NFC: [0xC53D], NFD: [0x110A, 0x1175, 0x11BC], NFKC: [0xC53D], NFKD: [0x110A, 0x1175, 0x11BC] },
+{ source: [0xC53E], NFC: [0xC53E], NFD: [0x110A, 0x1175, 0x11BD], NFKC: [0xC53E], NFKD: [0x110A, 0x1175, 0x11BD] },
+{ source: [0xC53F], NFC: [0xC53F], NFD: [0x110A, 0x1175, 0x11BE], NFKC: [0xC53F], NFKD: [0x110A, 0x1175, 0x11BE] },
+{ source: [0xC540], NFC: [0xC540], NFD: [0x110A, 0x1175, 0x11BF], NFKC: [0xC540], NFKD: [0x110A, 0x1175, 0x11BF] },
+{ source: [0xC541], NFC: [0xC541], NFD: [0x110A, 0x1175, 0x11C0], NFKC: [0xC541], NFKD: [0x110A, 0x1175, 0x11C0] },
+{ source: [0xC542], NFC: [0xC542], NFD: [0x110A, 0x1175, 0x11C1], NFKC: [0xC542], NFKD: [0x110A, 0x1175, 0x11C1] },
+{ source: [0xC543], NFC: [0xC543], NFD: [0x110A, 0x1175, 0x11C2], NFKC: [0xC543], NFKD: [0x110A, 0x1175, 0x11C2] },
+{ source: [0xC544], NFC: [0xC544], NFD: [0x110B, 0x1161], NFKC: [0xC544], NFKD: [0x110B, 0x1161] },
+{ source: [0xC545], NFC: [0xC545], NFD: [0x110B, 0x1161, 0x11A8], NFKC: [0xC545], NFKD: [0x110B, 0x1161, 0x11A8] },
+{ source: [0xC546], NFC: [0xC546], NFD: [0x110B, 0x1161, 0x11A9], NFKC: [0xC546], NFKD: [0x110B, 0x1161, 0x11A9] },
+{ source: [0xC547], NFC: [0xC547], NFD: [0x110B, 0x1161, 0x11AA], NFKC: [0xC547], NFKD: [0x110B, 0x1161, 0x11AA] },
+{ source: [0xC548], NFC: [0xC548], NFD: [0x110B, 0x1161, 0x11AB], NFKC: [0xC548], NFKD: [0x110B, 0x1161, 0x11AB] },
+{ source: [0xC549], NFC: [0xC549], NFD: [0x110B, 0x1161, 0x11AC], NFKC: [0xC549], NFKD: [0x110B, 0x1161, 0x11AC] },
+{ source: [0xC54A], NFC: [0xC54A], NFD: [0x110B, 0x1161, 0x11AD], NFKC: [0xC54A], NFKD: [0x110B, 0x1161, 0x11AD] },
+{ source: [0xC54B], NFC: [0xC54B], NFD: [0x110B, 0x1161, 0x11AE], NFKC: [0xC54B], NFKD: [0x110B, 0x1161, 0x11AE] },
+{ source: [0xC54C], NFC: [0xC54C], NFD: [0x110B, 0x1161, 0x11AF], NFKC: [0xC54C], NFKD: [0x110B, 0x1161, 0x11AF] },
+{ source: [0xC54D], NFC: [0xC54D], NFD: [0x110B, 0x1161, 0x11B0], NFKC: [0xC54D], NFKD: [0x110B, 0x1161, 0x11B0] },
+{ source: [0xC54E], NFC: [0xC54E], NFD: [0x110B, 0x1161, 0x11B1], NFKC: [0xC54E], NFKD: [0x110B, 0x1161, 0x11B1] },
+{ source: [0xC54F], NFC: [0xC54F], NFD: [0x110B, 0x1161, 0x11B2], NFKC: [0xC54F], NFKD: [0x110B, 0x1161, 0x11B2] },
+{ source: [0xC550], NFC: [0xC550], NFD: [0x110B, 0x1161, 0x11B3], NFKC: [0xC550], NFKD: [0x110B, 0x1161, 0x11B3] },
+{ source: [0xC551], NFC: [0xC551], NFD: [0x110B, 0x1161, 0x11B4], NFKC: [0xC551], NFKD: [0x110B, 0x1161, 0x11B4] },
+{ source: [0xC552], NFC: [0xC552], NFD: [0x110B, 0x1161, 0x11B5], NFKC: [0xC552], NFKD: [0x110B, 0x1161, 0x11B5] },
+{ source: [0xC553], NFC: [0xC553], NFD: [0x110B, 0x1161, 0x11B6], NFKC: [0xC553], NFKD: [0x110B, 0x1161, 0x11B6] },
+{ source: [0xC554], NFC: [0xC554], NFD: [0x110B, 0x1161, 0x11B7], NFKC: [0xC554], NFKD: [0x110B, 0x1161, 0x11B7] },
+{ source: [0xC555], NFC: [0xC555], NFD: [0x110B, 0x1161, 0x11B8], NFKC: [0xC555], NFKD: [0x110B, 0x1161, 0x11B8] },
+{ source: [0xC556], NFC: [0xC556], NFD: [0x110B, 0x1161, 0x11B9], NFKC: [0xC556], NFKD: [0x110B, 0x1161, 0x11B9] },
+{ source: [0xC557], NFC: [0xC557], NFD: [0x110B, 0x1161, 0x11BA], NFKC: [0xC557], NFKD: [0x110B, 0x1161, 0x11BA] },
+{ source: [0xC558], NFC: [0xC558], NFD: [0x110B, 0x1161, 0x11BB], NFKC: [0xC558], NFKD: [0x110B, 0x1161, 0x11BB] },
+{ source: [0xC559], NFC: [0xC559], NFD: [0x110B, 0x1161, 0x11BC], NFKC: [0xC559], NFKD: [0x110B, 0x1161, 0x11BC] },
+{ source: [0xC55A], NFC: [0xC55A], NFD: [0x110B, 0x1161, 0x11BD], NFKC: [0xC55A], NFKD: [0x110B, 0x1161, 0x11BD] },
+{ source: [0xC55B], NFC: [0xC55B], NFD: [0x110B, 0x1161, 0x11BE], NFKC: [0xC55B], NFKD: [0x110B, 0x1161, 0x11BE] },
+{ source: [0xC55C], NFC: [0xC55C], NFD: [0x110B, 0x1161, 0x11BF], NFKC: [0xC55C], NFKD: [0x110B, 0x1161, 0x11BF] },
+{ source: [0xC55D], NFC: [0xC55D], NFD: [0x110B, 0x1161, 0x11C0], NFKC: [0xC55D], NFKD: [0x110B, 0x1161, 0x11C0] },
+{ source: [0xC55E], NFC: [0xC55E], NFD: [0x110B, 0x1161, 0x11C1], NFKC: [0xC55E], NFKD: [0x110B, 0x1161, 0x11C1] },
+{ source: [0xC55F], NFC: [0xC55F], NFD: [0x110B, 0x1161, 0x11C2], NFKC: [0xC55F], NFKD: [0x110B, 0x1161, 0x11C2] },
+{ source: [0xC560], NFC: [0xC560], NFD: [0x110B, 0x1162], NFKC: [0xC560], NFKD: [0x110B, 0x1162] },
+{ source: [0xC561], NFC: [0xC561], NFD: [0x110B, 0x1162, 0x11A8], NFKC: [0xC561], NFKD: [0x110B, 0x1162, 0x11A8] },
+{ source: [0xC562], NFC: [0xC562], NFD: [0x110B, 0x1162, 0x11A9], NFKC: [0xC562], NFKD: [0x110B, 0x1162, 0x11A9] },
+{ source: [0xC563], NFC: [0xC563], NFD: [0x110B, 0x1162, 0x11AA], NFKC: [0xC563], NFKD: [0x110B, 0x1162, 0x11AA] },
+{ source: [0xC564], NFC: [0xC564], NFD: [0x110B, 0x1162, 0x11AB], NFKC: [0xC564], NFKD: [0x110B, 0x1162, 0x11AB] },
+{ source: [0xC565], NFC: [0xC565], NFD: [0x110B, 0x1162, 0x11AC], NFKC: [0xC565], NFKD: [0x110B, 0x1162, 0x11AC] },
+{ source: [0xC566], NFC: [0xC566], NFD: [0x110B, 0x1162, 0x11AD], NFKC: [0xC566], NFKD: [0x110B, 0x1162, 0x11AD] },
+{ source: [0xC567], NFC: [0xC567], NFD: [0x110B, 0x1162, 0x11AE], NFKC: [0xC567], NFKD: [0x110B, 0x1162, 0x11AE] },
+{ source: [0xC568], NFC: [0xC568], NFD: [0x110B, 0x1162, 0x11AF], NFKC: [0xC568], NFKD: [0x110B, 0x1162, 0x11AF] },
+{ source: [0xC569], NFC: [0xC569], NFD: [0x110B, 0x1162, 0x11B0], NFKC: [0xC569], NFKD: [0x110B, 0x1162, 0x11B0] },
+{ source: [0xC56A], NFC: [0xC56A], NFD: [0x110B, 0x1162, 0x11B1], NFKC: [0xC56A], NFKD: [0x110B, 0x1162, 0x11B1] },
+{ source: [0xC56B], NFC: [0xC56B], NFD: [0x110B, 0x1162, 0x11B2], NFKC: [0xC56B], NFKD: [0x110B, 0x1162, 0x11B2] },
+{ source: [0xC56C], NFC: [0xC56C], NFD: [0x110B, 0x1162, 0x11B3], NFKC: [0xC56C], NFKD: [0x110B, 0x1162, 0x11B3] },
+{ source: [0xC56D], NFC: [0xC56D], NFD: [0x110B, 0x1162, 0x11B4], NFKC: [0xC56D], NFKD: [0x110B, 0x1162, 0x11B4] },
+{ source: [0xC56E], NFC: [0xC56E], NFD: [0x110B, 0x1162, 0x11B5], NFKC: [0xC56E], NFKD: [0x110B, 0x1162, 0x11B5] },
+{ source: [0xC56F], NFC: [0xC56F], NFD: [0x110B, 0x1162, 0x11B6], NFKC: [0xC56F], NFKD: [0x110B, 0x1162, 0x11B6] },
+{ source: [0xC570], NFC: [0xC570], NFD: [0x110B, 0x1162, 0x11B7], NFKC: [0xC570], NFKD: [0x110B, 0x1162, 0x11B7] },
+{ source: [0xC571], NFC: [0xC571], NFD: [0x110B, 0x1162, 0x11B8], NFKC: [0xC571], NFKD: [0x110B, 0x1162, 0x11B8] },
+{ source: [0xC572], NFC: [0xC572], NFD: [0x110B, 0x1162, 0x11B9], NFKC: [0xC572], NFKD: [0x110B, 0x1162, 0x11B9] },
+{ source: [0xC573], NFC: [0xC573], NFD: [0x110B, 0x1162, 0x11BA], NFKC: [0xC573], NFKD: [0x110B, 0x1162, 0x11BA] },
+{ source: [0xC574], NFC: [0xC574], NFD: [0x110B, 0x1162, 0x11BB], NFKC: [0xC574], NFKD: [0x110B, 0x1162, 0x11BB] },
+{ source: [0xC575], NFC: [0xC575], NFD: [0x110B, 0x1162, 0x11BC], NFKC: [0xC575], NFKD: [0x110B, 0x1162, 0x11BC] },
+{ source: [0xC576], NFC: [0xC576], NFD: [0x110B, 0x1162, 0x11BD], NFKC: [0xC576], NFKD: [0x110B, 0x1162, 0x11BD] },
+{ source: [0xC577], NFC: [0xC577], NFD: [0x110B, 0x1162, 0x11BE], NFKC: [0xC577], NFKD: [0x110B, 0x1162, 0x11BE] },
+{ source: [0xC578], NFC: [0xC578], NFD: [0x110B, 0x1162, 0x11BF], NFKC: [0xC578], NFKD: [0x110B, 0x1162, 0x11BF] },
+{ source: [0xC579], NFC: [0xC579], NFD: [0x110B, 0x1162, 0x11C0], NFKC: [0xC579], NFKD: [0x110B, 0x1162, 0x11C0] },
+{ source: [0xC57A], NFC: [0xC57A], NFD: [0x110B, 0x1162, 0x11C1], NFKC: [0xC57A], NFKD: [0x110B, 0x1162, 0x11C1] },
+{ source: [0xC57B], NFC: [0xC57B], NFD: [0x110B, 0x1162, 0x11C2], NFKC: [0xC57B], NFKD: [0x110B, 0x1162, 0x11C2] },
+{ source: [0xC57C], NFC: [0xC57C], NFD: [0x110B, 0x1163], NFKC: [0xC57C], NFKD: [0x110B, 0x1163] },
+{ source: [0xC57D], NFC: [0xC57D], NFD: [0x110B, 0x1163, 0x11A8], NFKC: [0xC57D], NFKD: [0x110B, 0x1163, 0x11A8] },
+{ source: [0xC57E], NFC: [0xC57E], NFD: [0x110B, 0x1163, 0x11A9], NFKC: [0xC57E], NFKD: [0x110B, 0x1163, 0x11A9] },
+{ source: [0xC57F], NFC: [0xC57F], NFD: [0x110B, 0x1163, 0x11AA], NFKC: [0xC57F], NFKD: [0x110B, 0x1163, 0x11AA] },
+{ source: [0xC580], NFC: [0xC580], NFD: [0x110B, 0x1163, 0x11AB], NFKC: [0xC580], NFKD: [0x110B, 0x1163, 0x11AB] },
+{ source: [0xC581], NFC: [0xC581], NFD: [0x110B, 0x1163, 0x11AC], NFKC: [0xC581], NFKD: [0x110B, 0x1163, 0x11AC] },
+{ source: [0xC582], NFC: [0xC582], NFD: [0x110B, 0x1163, 0x11AD], NFKC: [0xC582], NFKD: [0x110B, 0x1163, 0x11AD] },
+{ source: [0xC583], NFC: [0xC583], NFD: [0x110B, 0x1163, 0x11AE], NFKC: [0xC583], NFKD: [0x110B, 0x1163, 0x11AE] },
+{ source: [0xC584], NFC: [0xC584], NFD: [0x110B, 0x1163, 0x11AF], NFKC: [0xC584], NFKD: [0x110B, 0x1163, 0x11AF] },
+{ source: [0xC585], NFC: [0xC585], NFD: [0x110B, 0x1163, 0x11B0], NFKC: [0xC585], NFKD: [0x110B, 0x1163, 0x11B0] },
+{ source: [0xC586], NFC: [0xC586], NFD: [0x110B, 0x1163, 0x11B1], NFKC: [0xC586], NFKD: [0x110B, 0x1163, 0x11B1] },
+{ source: [0xC587], NFC: [0xC587], NFD: [0x110B, 0x1163, 0x11B2], NFKC: [0xC587], NFKD: [0x110B, 0x1163, 0x11B2] },
+{ source: [0xC588], NFC: [0xC588], NFD: [0x110B, 0x1163, 0x11B3], NFKC: [0xC588], NFKD: [0x110B, 0x1163, 0x11B3] },
+{ source: [0xC589], NFC: [0xC589], NFD: [0x110B, 0x1163, 0x11B4], NFKC: [0xC589], NFKD: [0x110B, 0x1163, 0x11B4] },
+{ source: [0xC58A], NFC: [0xC58A], NFD: [0x110B, 0x1163, 0x11B5], NFKC: [0xC58A], NFKD: [0x110B, 0x1163, 0x11B5] },
+{ source: [0xC58B], NFC: [0xC58B], NFD: [0x110B, 0x1163, 0x11B6], NFKC: [0xC58B], NFKD: [0x110B, 0x1163, 0x11B6] },
+{ source: [0xC58C], NFC: [0xC58C], NFD: [0x110B, 0x1163, 0x11B7], NFKC: [0xC58C], NFKD: [0x110B, 0x1163, 0x11B7] },
+{ source: [0xC58D], NFC: [0xC58D], NFD: [0x110B, 0x1163, 0x11B8], NFKC: [0xC58D], NFKD: [0x110B, 0x1163, 0x11B8] },
+{ source: [0xC58E], NFC: [0xC58E], NFD: [0x110B, 0x1163, 0x11B9], NFKC: [0xC58E], NFKD: [0x110B, 0x1163, 0x11B9] },
+{ source: [0xC58F], NFC: [0xC58F], NFD: [0x110B, 0x1163, 0x11BA], NFKC: [0xC58F], NFKD: [0x110B, 0x1163, 0x11BA] },
+{ source: [0xC590], NFC: [0xC590], NFD: [0x110B, 0x1163, 0x11BB], NFKC: [0xC590], NFKD: [0x110B, 0x1163, 0x11BB] },
+{ source: [0xC591], NFC: [0xC591], NFD: [0x110B, 0x1163, 0x11BC], NFKC: [0xC591], NFKD: [0x110B, 0x1163, 0x11BC] },
+{ source: [0xC592], NFC: [0xC592], NFD: [0x110B, 0x1163, 0x11BD], NFKC: [0xC592], NFKD: [0x110B, 0x1163, 0x11BD] },
+{ source: [0xC593], NFC: [0xC593], NFD: [0x110B, 0x1163, 0x11BE], NFKC: [0xC593], NFKD: [0x110B, 0x1163, 0x11BE] },
+{ source: [0xC594], NFC: [0xC594], NFD: [0x110B, 0x1163, 0x11BF], NFKC: [0xC594], NFKD: [0x110B, 0x1163, 0x11BF] },
+{ source: [0xC595], NFC: [0xC595], NFD: [0x110B, 0x1163, 0x11C0], NFKC: [0xC595], NFKD: [0x110B, 0x1163, 0x11C0] },
+{ source: [0xC596], NFC: [0xC596], NFD: [0x110B, 0x1163, 0x11C1], NFKC: [0xC596], NFKD: [0x110B, 0x1163, 0x11C1] },
+{ source: [0xC597], NFC: [0xC597], NFD: [0x110B, 0x1163, 0x11C2], NFKC: [0xC597], NFKD: [0x110B, 0x1163, 0x11C2] },
+{ source: [0xC598], NFC: [0xC598], NFD: [0x110B, 0x1164], NFKC: [0xC598], NFKD: [0x110B, 0x1164] },
+{ source: [0xC599], NFC: [0xC599], NFD: [0x110B, 0x1164, 0x11A8], NFKC: [0xC599], NFKD: [0x110B, 0x1164, 0x11A8] },
+{ source: [0xC59A], NFC: [0xC59A], NFD: [0x110B, 0x1164, 0x11A9], NFKC: [0xC59A], NFKD: [0x110B, 0x1164, 0x11A9] },
+{ source: [0xC59B], NFC: [0xC59B], NFD: [0x110B, 0x1164, 0x11AA], NFKC: [0xC59B], NFKD: [0x110B, 0x1164, 0x11AA] },
+{ source: [0xC59C], NFC: [0xC59C], NFD: [0x110B, 0x1164, 0x11AB], NFKC: [0xC59C], NFKD: [0x110B, 0x1164, 0x11AB] },
+{ source: [0xC59D], NFC: [0xC59D], NFD: [0x110B, 0x1164, 0x11AC], NFKC: [0xC59D], NFKD: [0x110B, 0x1164, 0x11AC] },
+{ source: [0xC59E], NFC: [0xC59E], NFD: [0x110B, 0x1164, 0x11AD], NFKC: [0xC59E], NFKD: [0x110B, 0x1164, 0x11AD] },
+{ source: [0xC59F], NFC: [0xC59F], NFD: [0x110B, 0x1164, 0x11AE], NFKC: [0xC59F], NFKD: [0x110B, 0x1164, 0x11AE] },
+{ source: [0xC5A0], NFC: [0xC5A0], NFD: [0x110B, 0x1164, 0x11AF], NFKC: [0xC5A0], NFKD: [0x110B, 0x1164, 0x11AF] },
+{ source: [0xC5A1], NFC: [0xC5A1], NFD: [0x110B, 0x1164, 0x11B0], NFKC: [0xC5A1], NFKD: [0x110B, 0x1164, 0x11B0] },
+{ source: [0xC5A2], NFC: [0xC5A2], NFD: [0x110B, 0x1164, 0x11B1], NFKC: [0xC5A2], NFKD: [0x110B, 0x1164, 0x11B1] },
+{ source: [0xC5A3], NFC: [0xC5A3], NFD: [0x110B, 0x1164, 0x11B2], NFKC: [0xC5A3], NFKD: [0x110B, 0x1164, 0x11B2] },
+{ source: [0xC5A4], NFC: [0xC5A4], NFD: [0x110B, 0x1164, 0x11B3], NFKC: [0xC5A4], NFKD: [0x110B, 0x1164, 0x11B3] },
+{ source: [0xC5A5], NFC: [0xC5A5], NFD: [0x110B, 0x1164, 0x11B4], NFKC: [0xC5A5], NFKD: [0x110B, 0x1164, 0x11B4] },
+{ source: [0xC5A6], NFC: [0xC5A6], NFD: [0x110B, 0x1164, 0x11B5], NFKC: [0xC5A6], NFKD: [0x110B, 0x1164, 0x11B5] },
+{ source: [0xC5A7], NFC: [0xC5A7], NFD: [0x110B, 0x1164, 0x11B6], NFKC: [0xC5A7], NFKD: [0x110B, 0x1164, 0x11B6] },
+{ source: [0xC5A8], NFC: [0xC5A8], NFD: [0x110B, 0x1164, 0x11B7], NFKC: [0xC5A8], NFKD: [0x110B, 0x1164, 0x11B7] },
+{ source: [0xC5A9], NFC: [0xC5A9], NFD: [0x110B, 0x1164, 0x11B8], NFKC: [0xC5A9], NFKD: [0x110B, 0x1164, 0x11B8] },
+{ source: [0xC5AA], NFC: [0xC5AA], NFD: [0x110B, 0x1164, 0x11B9], NFKC: [0xC5AA], NFKD: [0x110B, 0x1164, 0x11B9] },
+{ source: [0xC5AB], NFC: [0xC5AB], NFD: [0x110B, 0x1164, 0x11BA], NFKC: [0xC5AB], NFKD: [0x110B, 0x1164, 0x11BA] },
+{ source: [0xC5AC], NFC: [0xC5AC], NFD: [0x110B, 0x1164, 0x11BB], NFKC: [0xC5AC], NFKD: [0x110B, 0x1164, 0x11BB] },
+{ source: [0xC5AD], NFC: [0xC5AD], NFD: [0x110B, 0x1164, 0x11BC], NFKC: [0xC5AD], NFKD: [0x110B, 0x1164, 0x11BC] },
+{ source: [0xC5AE], NFC: [0xC5AE], NFD: [0x110B, 0x1164, 0x11BD], NFKC: [0xC5AE], NFKD: [0x110B, 0x1164, 0x11BD] },
+{ source: [0xC5AF], NFC: [0xC5AF], NFD: [0x110B, 0x1164, 0x11BE], NFKC: [0xC5AF], NFKD: [0x110B, 0x1164, 0x11BE] },
+{ source: [0xC5B0], NFC: [0xC5B0], NFD: [0x110B, 0x1164, 0x11BF], NFKC: [0xC5B0], NFKD: [0x110B, 0x1164, 0x11BF] },
+{ source: [0xC5B1], NFC: [0xC5B1], NFD: [0x110B, 0x1164, 0x11C0], NFKC: [0xC5B1], NFKD: [0x110B, 0x1164, 0x11C0] },
+{ source: [0xC5B2], NFC: [0xC5B2], NFD: [0x110B, 0x1164, 0x11C1], NFKC: [0xC5B2], NFKD: [0x110B, 0x1164, 0x11C1] },
+{ source: [0xC5B3], NFC: [0xC5B3], NFD: [0x110B, 0x1164, 0x11C2], NFKC: [0xC5B3], NFKD: [0x110B, 0x1164, 0x11C2] },
+{ source: [0xC5B4], NFC: [0xC5B4], NFD: [0x110B, 0x1165], NFKC: [0xC5B4], NFKD: [0x110B, 0x1165] },
+{ source: [0xC5B5], NFC: [0xC5B5], NFD: [0x110B, 0x1165, 0x11A8], NFKC: [0xC5B5], NFKD: [0x110B, 0x1165, 0x11A8] },
+{ source: [0xC5B6], NFC: [0xC5B6], NFD: [0x110B, 0x1165, 0x11A9], NFKC: [0xC5B6], NFKD: [0x110B, 0x1165, 0x11A9] },
+{ source: [0xC5B7], NFC: [0xC5B7], NFD: [0x110B, 0x1165, 0x11AA], NFKC: [0xC5B7], NFKD: [0x110B, 0x1165, 0x11AA] },
+{ source: [0xC5B8], NFC: [0xC5B8], NFD: [0x110B, 0x1165, 0x11AB], NFKC: [0xC5B8], NFKD: [0x110B, 0x1165, 0x11AB] },
+{ source: [0xC5B9], NFC: [0xC5B9], NFD: [0x110B, 0x1165, 0x11AC], NFKC: [0xC5B9], NFKD: [0x110B, 0x1165, 0x11AC] },
+{ source: [0xC5BA], NFC: [0xC5BA], NFD: [0x110B, 0x1165, 0x11AD], NFKC: [0xC5BA], NFKD: [0x110B, 0x1165, 0x11AD] },
+{ source: [0xC5BB], NFC: [0xC5BB], NFD: [0x110B, 0x1165, 0x11AE], NFKC: [0xC5BB], NFKD: [0x110B, 0x1165, 0x11AE] },
+{ source: [0xC5BC], NFC: [0xC5BC], NFD: [0x110B, 0x1165, 0x11AF], NFKC: [0xC5BC], NFKD: [0x110B, 0x1165, 0x11AF] },
+{ source: [0xC5BD], NFC: [0xC5BD], NFD: [0x110B, 0x1165, 0x11B0], NFKC: [0xC5BD], NFKD: [0x110B, 0x1165, 0x11B0] },
+{ source: [0xC5BE], NFC: [0xC5BE], NFD: [0x110B, 0x1165, 0x11B1], NFKC: [0xC5BE], NFKD: [0x110B, 0x1165, 0x11B1] },
+{ source: [0xC5BF], NFC: [0xC5BF], NFD: [0x110B, 0x1165, 0x11B2], NFKC: [0xC5BF], NFKD: [0x110B, 0x1165, 0x11B2] },
+{ source: [0xC5C0], NFC: [0xC5C0], NFD: [0x110B, 0x1165, 0x11B3], NFKC: [0xC5C0], NFKD: [0x110B, 0x1165, 0x11B3] },
+{ source: [0xC5C1], NFC: [0xC5C1], NFD: [0x110B, 0x1165, 0x11B4], NFKC: [0xC5C1], NFKD: [0x110B, 0x1165, 0x11B4] },
+{ source: [0xC5C2], NFC: [0xC5C2], NFD: [0x110B, 0x1165, 0x11B5], NFKC: [0xC5C2], NFKD: [0x110B, 0x1165, 0x11B5] },
+{ source: [0xC5C3], NFC: [0xC5C3], NFD: [0x110B, 0x1165, 0x11B6], NFKC: [0xC5C3], NFKD: [0x110B, 0x1165, 0x11B6] },
+{ source: [0xC5C4], NFC: [0xC5C4], NFD: [0x110B, 0x1165, 0x11B7], NFKC: [0xC5C4], NFKD: [0x110B, 0x1165, 0x11B7] },
+{ source: [0xC5C5], NFC: [0xC5C5], NFD: [0x110B, 0x1165, 0x11B8], NFKC: [0xC5C5], NFKD: [0x110B, 0x1165, 0x11B8] },
+{ source: [0xC5C6], NFC: [0xC5C6], NFD: [0x110B, 0x1165, 0x11B9], NFKC: [0xC5C6], NFKD: [0x110B, 0x1165, 0x11B9] },
+{ source: [0xC5C7], NFC: [0xC5C7], NFD: [0x110B, 0x1165, 0x11BA], NFKC: [0xC5C7], NFKD: [0x110B, 0x1165, 0x11BA] },
+{ source: [0xC5C8], NFC: [0xC5C8], NFD: [0x110B, 0x1165, 0x11BB], NFKC: [0xC5C8], NFKD: [0x110B, 0x1165, 0x11BB] },
+{ source: [0xC5C9], NFC: [0xC5C9], NFD: [0x110B, 0x1165, 0x11BC], NFKC: [0xC5C9], NFKD: [0x110B, 0x1165, 0x11BC] },
+{ source: [0xC5CA], NFC: [0xC5CA], NFD: [0x110B, 0x1165, 0x11BD], NFKC: [0xC5CA], NFKD: [0x110B, 0x1165, 0x11BD] },
+{ source: [0xC5CB], NFC: [0xC5CB], NFD: [0x110B, 0x1165, 0x11BE], NFKC: [0xC5CB], NFKD: [0x110B, 0x1165, 0x11BE] },
+{ source: [0xC5CC], NFC: [0xC5CC], NFD: [0x110B, 0x1165, 0x11BF], NFKC: [0xC5CC], NFKD: [0x110B, 0x1165, 0x11BF] },
+{ source: [0xC5CD], NFC: [0xC5CD], NFD: [0x110B, 0x1165, 0x11C0], NFKC: [0xC5CD], NFKD: [0x110B, 0x1165, 0x11C0] },
+{ source: [0xC5CE], NFC: [0xC5CE], NFD: [0x110B, 0x1165, 0x11C1], NFKC: [0xC5CE], NFKD: [0x110B, 0x1165, 0x11C1] },
+{ source: [0xC5CF], NFC: [0xC5CF], NFD: [0x110B, 0x1165, 0x11C2], NFKC: [0xC5CF], NFKD: [0x110B, 0x1165, 0x11C2] },
+{ source: [0xC5D0], NFC: [0xC5D0], NFD: [0x110B, 0x1166], NFKC: [0xC5D0], NFKD: [0x110B, 0x1166] },
+{ source: [0xC5D1], NFC: [0xC5D1], NFD: [0x110B, 0x1166, 0x11A8], NFKC: [0xC5D1], NFKD: [0x110B, 0x1166, 0x11A8] },
+{ source: [0xC5D2], NFC: [0xC5D2], NFD: [0x110B, 0x1166, 0x11A9], NFKC: [0xC5D2], NFKD: [0x110B, 0x1166, 0x11A9] },
+{ source: [0xC5D3], NFC: [0xC5D3], NFD: [0x110B, 0x1166, 0x11AA], NFKC: [0xC5D3], NFKD: [0x110B, 0x1166, 0x11AA] },
+{ source: [0xC5D4], NFC: [0xC5D4], NFD: [0x110B, 0x1166, 0x11AB], NFKC: [0xC5D4], NFKD: [0x110B, 0x1166, 0x11AB] },
+{ source: [0xC5D5], NFC: [0xC5D5], NFD: [0x110B, 0x1166, 0x11AC], NFKC: [0xC5D5], NFKD: [0x110B, 0x1166, 0x11AC] },
+{ source: [0xC5D6], NFC: [0xC5D6], NFD: [0x110B, 0x1166, 0x11AD], NFKC: [0xC5D6], NFKD: [0x110B, 0x1166, 0x11AD] },
+{ source: [0xC5D7], NFC: [0xC5D7], NFD: [0x110B, 0x1166, 0x11AE], NFKC: [0xC5D7], NFKD: [0x110B, 0x1166, 0x11AE] },
+{ source: [0xC5D8], NFC: [0xC5D8], NFD: [0x110B, 0x1166, 0x11AF], NFKC: [0xC5D8], NFKD: [0x110B, 0x1166, 0x11AF] },
+{ source: [0xC5D9], NFC: [0xC5D9], NFD: [0x110B, 0x1166, 0x11B0], NFKC: [0xC5D9], NFKD: [0x110B, 0x1166, 0x11B0] },
+{ source: [0xC5DA], NFC: [0xC5DA], NFD: [0x110B, 0x1166, 0x11B1], NFKC: [0xC5DA], NFKD: [0x110B, 0x1166, 0x11B1] },
+{ source: [0xC5DB], NFC: [0xC5DB], NFD: [0x110B, 0x1166, 0x11B2], NFKC: [0xC5DB], NFKD: [0x110B, 0x1166, 0x11B2] },
+{ source: [0xC5DC], NFC: [0xC5DC], NFD: [0x110B, 0x1166, 0x11B3], NFKC: [0xC5DC], NFKD: [0x110B, 0x1166, 0x11B3] },
+{ source: [0xC5DD], NFC: [0xC5DD], NFD: [0x110B, 0x1166, 0x11B4], NFKC: [0xC5DD], NFKD: [0x110B, 0x1166, 0x11B4] },
+{ source: [0xC5DE], NFC: [0xC5DE], NFD: [0x110B, 0x1166, 0x11B5], NFKC: [0xC5DE], NFKD: [0x110B, 0x1166, 0x11B5] },
+{ source: [0xC5DF], NFC: [0xC5DF], NFD: [0x110B, 0x1166, 0x11B6], NFKC: [0xC5DF], NFKD: [0x110B, 0x1166, 0x11B6] },
+{ source: [0xC5E0], NFC: [0xC5E0], NFD: [0x110B, 0x1166, 0x11B7], NFKC: [0xC5E0], NFKD: [0x110B, 0x1166, 0x11B7] },
+{ source: [0xC5E1], NFC: [0xC5E1], NFD: [0x110B, 0x1166, 0x11B8], NFKC: [0xC5E1], NFKD: [0x110B, 0x1166, 0x11B8] },
+{ source: [0xC5E2], NFC: [0xC5E2], NFD: [0x110B, 0x1166, 0x11B9], NFKC: [0xC5E2], NFKD: [0x110B, 0x1166, 0x11B9] },
+{ source: [0xC5E3], NFC: [0xC5E3], NFD: [0x110B, 0x1166, 0x11BA], NFKC: [0xC5E3], NFKD: [0x110B, 0x1166, 0x11BA] },
+{ source: [0xC5E4], NFC: [0xC5E4], NFD: [0x110B, 0x1166, 0x11BB], NFKC: [0xC5E4], NFKD: [0x110B, 0x1166, 0x11BB] },
+{ source: [0xC5E5], NFC: [0xC5E5], NFD: [0x110B, 0x1166, 0x11BC], NFKC: [0xC5E5], NFKD: [0x110B, 0x1166, 0x11BC] },
+{ source: [0xC5E6], NFC: [0xC5E6], NFD: [0x110B, 0x1166, 0x11BD], NFKC: [0xC5E6], NFKD: [0x110B, 0x1166, 0x11BD] },
+{ source: [0xC5E7], NFC: [0xC5E7], NFD: [0x110B, 0x1166, 0x11BE], NFKC: [0xC5E7], NFKD: [0x110B, 0x1166, 0x11BE] },
+{ source: [0xC5E8], NFC: [0xC5E8], NFD: [0x110B, 0x1166, 0x11BF], NFKC: [0xC5E8], NFKD: [0x110B, 0x1166, 0x11BF] },
+{ source: [0xC5E9], NFC: [0xC5E9], NFD: [0x110B, 0x1166, 0x11C0], NFKC: [0xC5E9], NFKD: [0x110B, 0x1166, 0x11C0] },
+{ source: [0xC5EA], NFC: [0xC5EA], NFD: [0x110B, 0x1166, 0x11C1], NFKC: [0xC5EA], NFKD: [0x110B, 0x1166, 0x11C1] },
+{ source: [0xC5EB], NFC: [0xC5EB], NFD: [0x110B, 0x1166, 0x11C2], NFKC: [0xC5EB], NFKD: [0x110B, 0x1166, 0x11C2] },
+{ source: [0xC5EC], NFC: [0xC5EC], NFD: [0x110B, 0x1167], NFKC: [0xC5EC], NFKD: [0x110B, 0x1167] },
+{ source: [0xC5ED], NFC: [0xC5ED], NFD: [0x110B, 0x1167, 0x11A8], NFKC: [0xC5ED], NFKD: [0x110B, 0x1167, 0x11A8] },
+{ source: [0xC5EE], NFC: [0xC5EE], NFD: [0x110B, 0x1167, 0x11A9], NFKC: [0xC5EE], NFKD: [0x110B, 0x1167, 0x11A9] },
+{ source: [0xC5EF], NFC: [0xC5EF], NFD: [0x110B, 0x1167, 0x11AA], NFKC: [0xC5EF], NFKD: [0x110B, 0x1167, 0x11AA] },
+{ source: [0xC5F0], NFC: [0xC5F0], NFD: [0x110B, 0x1167, 0x11AB], NFKC: [0xC5F0], NFKD: [0x110B, 0x1167, 0x11AB] },
+{ source: [0xC5F1], NFC: [0xC5F1], NFD: [0x110B, 0x1167, 0x11AC], NFKC: [0xC5F1], NFKD: [0x110B, 0x1167, 0x11AC] },
+{ source: [0xC5F2], NFC: [0xC5F2], NFD: [0x110B, 0x1167, 0x11AD], NFKC: [0xC5F2], NFKD: [0x110B, 0x1167, 0x11AD] },
+{ source: [0xC5F3], NFC: [0xC5F3], NFD: [0x110B, 0x1167, 0x11AE], NFKC: [0xC5F3], NFKD: [0x110B, 0x1167, 0x11AE] },
+{ source: [0xC5F4], NFC: [0xC5F4], NFD: [0x110B, 0x1167, 0x11AF], NFKC: [0xC5F4], NFKD: [0x110B, 0x1167, 0x11AF] },
+{ source: [0xC5F5], NFC: [0xC5F5], NFD: [0x110B, 0x1167, 0x11B0], NFKC: [0xC5F5], NFKD: [0x110B, 0x1167, 0x11B0] },
+{ source: [0xC5F6], NFC: [0xC5F6], NFD: [0x110B, 0x1167, 0x11B1], NFKC: [0xC5F6], NFKD: [0x110B, 0x1167, 0x11B1] },
+{ source: [0xC5F7], NFC: [0xC5F7], NFD: [0x110B, 0x1167, 0x11B2], NFKC: [0xC5F7], NFKD: [0x110B, 0x1167, 0x11B2] },
+{ source: [0xC5F8], NFC: [0xC5F8], NFD: [0x110B, 0x1167, 0x11B3], NFKC: [0xC5F8], NFKD: [0x110B, 0x1167, 0x11B3] },
+{ source: [0xC5F9], NFC: [0xC5F9], NFD: [0x110B, 0x1167, 0x11B4], NFKC: [0xC5F9], NFKD: [0x110B, 0x1167, 0x11B4] },
+{ source: [0xC5FA], NFC: [0xC5FA], NFD: [0x110B, 0x1167, 0x11B5], NFKC: [0xC5FA], NFKD: [0x110B, 0x1167, 0x11B5] },
+{ source: [0xC5FB], NFC: [0xC5FB], NFD: [0x110B, 0x1167, 0x11B6], NFKC: [0xC5FB], NFKD: [0x110B, 0x1167, 0x11B6] },
+{ source: [0xC5FC], NFC: [0xC5FC], NFD: [0x110B, 0x1167, 0x11B7], NFKC: [0xC5FC], NFKD: [0x110B, 0x1167, 0x11B7] },
+{ source: [0xC5FD], NFC: [0xC5FD], NFD: [0x110B, 0x1167, 0x11B8], NFKC: [0xC5FD], NFKD: [0x110B, 0x1167, 0x11B8] },
+{ source: [0xC5FE], NFC: [0xC5FE], NFD: [0x110B, 0x1167, 0x11B9], NFKC: [0xC5FE], NFKD: [0x110B, 0x1167, 0x11B9] },
+{ source: [0xC5FF], NFC: [0xC5FF], NFD: [0x110B, 0x1167, 0x11BA], NFKC: [0xC5FF], NFKD: [0x110B, 0x1167, 0x11BA] },
+{ source: [0xC600], NFC: [0xC600], NFD: [0x110B, 0x1167, 0x11BB], NFKC: [0xC600], NFKD: [0x110B, 0x1167, 0x11BB] },
+{ source: [0xC601], NFC: [0xC601], NFD: [0x110B, 0x1167, 0x11BC], NFKC: [0xC601], NFKD: [0x110B, 0x1167, 0x11BC] },
+{ source: [0xC602], NFC: [0xC602], NFD: [0x110B, 0x1167, 0x11BD], NFKC: [0xC602], NFKD: [0x110B, 0x1167, 0x11BD] },
+{ source: [0xC603], NFC: [0xC603], NFD: [0x110B, 0x1167, 0x11BE], NFKC: [0xC603], NFKD: [0x110B, 0x1167, 0x11BE] },
+{ source: [0xC604], NFC: [0xC604], NFD: [0x110B, 0x1167, 0x11BF], NFKC: [0xC604], NFKD: [0x110B, 0x1167, 0x11BF] },
+{ source: [0xC605], NFC: [0xC605], NFD: [0x110B, 0x1167, 0x11C0], NFKC: [0xC605], NFKD: [0x110B, 0x1167, 0x11C0] },
+{ source: [0xC606], NFC: [0xC606], NFD: [0x110B, 0x1167, 0x11C1], NFKC: [0xC606], NFKD: [0x110B, 0x1167, 0x11C1] },
+{ source: [0xC607], NFC: [0xC607], NFD: [0x110B, 0x1167, 0x11C2], NFKC: [0xC607], NFKD: [0x110B, 0x1167, 0x11C2] },
+{ source: [0xC608], NFC: [0xC608], NFD: [0x110B, 0x1168], NFKC: [0xC608], NFKD: [0x110B, 0x1168] },
+{ source: [0xC609], NFC: [0xC609], NFD: [0x110B, 0x1168, 0x11A8], NFKC: [0xC609], NFKD: [0x110B, 0x1168, 0x11A8] },
+{ source: [0xC60A], NFC: [0xC60A], NFD: [0x110B, 0x1168, 0x11A9], NFKC: [0xC60A], NFKD: [0x110B, 0x1168, 0x11A9] },
+{ source: [0xC60B], NFC: [0xC60B], NFD: [0x110B, 0x1168, 0x11AA], NFKC: [0xC60B], NFKD: [0x110B, 0x1168, 0x11AA] },
+{ source: [0xC60C], NFC: [0xC60C], NFD: [0x110B, 0x1168, 0x11AB], NFKC: [0xC60C], NFKD: [0x110B, 0x1168, 0x11AB] },
+{ source: [0xC60D], NFC: [0xC60D], NFD: [0x110B, 0x1168, 0x11AC], NFKC: [0xC60D], NFKD: [0x110B, 0x1168, 0x11AC] },
+{ source: [0xC60E], NFC: [0xC60E], NFD: [0x110B, 0x1168, 0x11AD], NFKC: [0xC60E], NFKD: [0x110B, 0x1168, 0x11AD] },
+{ source: [0xC60F], NFC: [0xC60F], NFD: [0x110B, 0x1168, 0x11AE], NFKC: [0xC60F], NFKD: [0x110B, 0x1168, 0x11AE] },
+{ source: [0xC610], NFC: [0xC610], NFD: [0x110B, 0x1168, 0x11AF], NFKC: [0xC610], NFKD: [0x110B, 0x1168, 0x11AF] },
+{ source: [0xC611], NFC: [0xC611], NFD: [0x110B, 0x1168, 0x11B0], NFKC: [0xC611], NFKD: [0x110B, 0x1168, 0x11B0] },
+{ source: [0xC612], NFC: [0xC612], NFD: [0x110B, 0x1168, 0x11B1], NFKC: [0xC612], NFKD: [0x110B, 0x1168, 0x11B1] },
+{ source: [0xC613], NFC: [0xC613], NFD: [0x110B, 0x1168, 0x11B2], NFKC: [0xC613], NFKD: [0x110B, 0x1168, 0x11B2] },
+{ source: [0xC614], NFC: [0xC614], NFD: [0x110B, 0x1168, 0x11B3], NFKC: [0xC614], NFKD: [0x110B, 0x1168, 0x11B3] },
+{ source: [0xC615], NFC: [0xC615], NFD: [0x110B, 0x1168, 0x11B4], NFKC: [0xC615], NFKD: [0x110B, 0x1168, 0x11B4] },
+{ source: [0xC616], NFC: [0xC616], NFD: [0x110B, 0x1168, 0x11B5], NFKC: [0xC616], NFKD: [0x110B, 0x1168, 0x11B5] },
+{ source: [0xC617], NFC: [0xC617], NFD: [0x110B, 0x1168, 0x11B6], NFKC: [0xC617], NFKD: [0x110B, 0x1168, 0x11B6] },
+{ source: [0xC618], NFC: [0xC618], NFD: [0x110B, 0x1168, 0x11B7], NFKC: [0xC618], NFKD: [0x110B, 0x1168, 0x11B7] },
+{ source: [0xC619], NFC: [0xC619], NFD: [0x110B, 0x1168, 0x11B8], NFKC: [0xC619], NFKD: [0x110B, 0x1168, 0x11B8] },
+{ source: [0xC61A], NFC: [0xC61A], NFD: [0x110B, 0x1168, 0x11B9], NFKC: [0xC61A], NFKD: [0x110B, 0x1168, 0x11B9] },
+{ source: [0xC61B], NFC: [0xC61B], NFD: [0x110B, 0x1168, 0x11BA], NFKC: [0xC61B], NFKD: [0x110B, 0x1168, 0x11BA] },
+{ source: [0xC61C], NFC: [0xC61C], NFD: [0x110B, 0x1168, 0x11BB], NFKC: [0xC61C], NFKD: [0x110B, 0x1168, 0x11BB] },
+{ source: [0xC61D], NFC: [0xC61D], NFD: [0x110B, 0x1168, 0x11BC], NFKC: [0xC61D], NFKD: [0x110B, 0x1168, 0x11BC] },
+{ source: [0xC61E], NFC: [0xC61E], NFD: [0x110B, 0x1168, 0x11BD], NFKC: [0xC61E], NFKD: [0x110B, 0x1168, 0x11BD] },
+{ source: [0xC61F], NFC: [0xC61F], NFD: [0x110B, 0x1168, 0x11BE], NFKC: [0xC61F], NFKD: [0x110B, 0x1168, 0x11BE] },
+{ source: [0xC620], NFC: [0xC620], NFD: [0x110B, 0x1168, 0x11BF], NFKC: [0xC620], NFKD: [0x110B, 0x1168, 0x11BF] },
+{ source: [0xC621], NFC: [0xC621], NFD: [0x110B, 0x1168, 0x11C0], NFKC: [0xC621], NFKD: [0x110B, 0x1168, 0x11C0] },
+{ source: [0xC622], NFC: [0xC622], NFD: [0x110B, 0x1168, 0x11C1], NFKC: [0xC622], NFKD: [0x110B, 0x1168, 0x11C1] },
+{ source: [0xC623], NFC: [0xC623], NFD: [0x110B, 0x1168, 0x11C2], NFKC: [0xC623], NFKD: [0x110B, 0x1168, 0x11C2] },
+{ source: [0xC624], NFC: [0xC624], NFD: [0x110B, 0x1169], NFKC: [0xC624], NFKD: [0x110B, 0x1169] },
+{ source: [0xC625], NFC: [0xC625], NFD: [0x110B, 0x1169, 0x11A8], NFKC: [0xC625], NFKD: [0x110B, 0x1169, 0x11A8] },
+{ source: [0xC626], NFC: [0xC626], NFD: [0x110B, 0x1169, 0x11A9], NFKC: [0xC626], NFKD: [0x110B, 0x1169, 0x11A9] },
+{ source: [0xC627], NFC: [0xC627], NFD: [0x110B, 0x1169, 0x11AA], NFKC: [0xC627], NFKD: [0x110B, 0x1169, 0x11AA] },
+{ source: [0xC628], NFC: [0xC628], NFD: [0x110B, 0x1169, 0x11AB], NFKC: [0xC628], NFKD: [0x110B, 0x1169, 0x11AB] },
+{ source: [0xC629], NFC: [0xC629], NFD: [0x110B, 0x1169, 0x11AC], NFKC: [0xC629], NFKD: [0x110B, 0x1169, 0x11AC] },
+{ source: [0xC62A], NFC: [0xC62A], NFD: [0x110B, 0x1169, 0x11AD], NFKC: [0xC62A], NFKD: [0x110B, 0x1169, 0x11AD] },
+{ source: [0xC62B], NFC: [0xC62B], NFD: [0x110B, 0x1169, 0x11AE], NFKC: [0xC62B], NFKD: [0x110B, 0x1169, 0x11AE] },
+{ source: [0xC62C], NFC: [0xC62C], NFD: [0x110B, 0x1169, 0x11AF], NFKC: [0xC62C], NFKD: [0x110B, 0x1169, 0x11AF] },
+{ source: [0xC62D], NFC: [0xC62D], NFD: [0x110B, 0x1169, 0x11B0], NFKC: [0xC62D], NFKD: [0x110B, 0x1169, 0x11B0] },
+{ source: [0xC62E], NFC: [0xC62E], NFD: [0x110B, 0x1169, 0x11B1], NFKC: [0xC62E], NFKD: [0x110B, 0x1169, 0x11B1] },
+{ source: [0xC62F], NFC: [0xC62F], NFD: [0x110B, 0x1169, 0x11B2], NFKC: [0xC62F], NFKD: [0x110B, 0x1169, 0x11B2] },
+{ source: [0xC630], NFC: [0xC630], NFD: [0x110B, 0x1169, 0x11B3], NFKC: [0xC630], NFKD: [0x110B, 0x1169, 0x11B3] },
+{ source: [0xC631], NFC: [0xC631], NFD: [0x110B, 0x1169, 0x11B4], NFKC: [0xC631], NFKD: [0x110B, 0x1169, 0x11B4] },
+{ source: [0xC632], NFC: [0xC632], NFD: [0x110B, 0x1169, 0x11B5], NFKC: [0xC632], NFKD: [0x110B, 0x1169, 0x11B5] },
+{ source: [0xC633], NFC: [0xC633], NFD: [0x110B, 0x1169, 0x11B6], NFKC: [0xC633], NFKD: [0x110B, 0x1169, 0x11B6] },
+{ source: [0xC634], NFC: [0xC634], NFD: [0x110B, 0x1169, 0x11B7], NFKC: [0xC634], NFKD: [0x110B, 0x1169, 0x11B7] },
+{ source: [0xC635], NFC: [0xC635], NFD: [0x110B, 0x1169, 0x11B8], NFKC: [0xC635], NFKD: [0x110B, 0x1169, 0x11B8] },
+{ source: [0xC636], NFC: [0xC636], NFD: [0x110B, 0x1169, 0x11B9], NFKC: [0xC636], NFKD: [0x110B, 0x1169, 0x11B9] },
+{ source: [0xC637], NFC: [0xC637], NFD: [0x110B, 0x1169, 0x11BA], NFKC: [0xC637], NFKD: [0x110B, 0x1169, 0x11BA] },
+{ source: [0xC638], NFC: [0xC638], NFD: [0x110B, 0x1169, 0x11BB], NFKC: [0xC638], NFKD: [0x110B, 0x1169, 0x11BB] },
+{ source: [0xC639], NFC: [0xC639], NFD: [0x110B, 0x1169, 0x11BC], NFKC: [0xC639], NFKD: [0x110B, 0x1169, 0x11BC] },
+{ source: [0xC63A], NFC: [0xC63A], NFD: [0x110B, 0x1169, 0x11BD], NFKC: [0xC63A], NFKD: [0x110B, 0x1169, 0x11BD] },
+{ source: [0xC63B], NFC: [0xC63B], NFD: [0x110B, 0x1169, 0x11BE], NFKC: [0xC63B], NFKD: [0x110B, 0x1169, 0x11BE] },
+{ source: [0xC63C], NFC: [0xC63C], NFD: [0x110B, 0x1169, 0x11BF], NFKC: [0xC63C], NFKD: [0x110B, 0x1169, 0x11BF] },
+{ source: [0xC63D], NFC: [0xC63D], NFD: [0x110B, 0x1169, 0x11C0], NFKC: [0xC63D], NFKD: [0x110B, 0x1169, 0x11C0] },
+{ source: [0xC63E], NFC: [0xC63E], NFD: [0x110B, 0x1169, 0x11C1], NFKC: [0xC63E], NFKD: [0x110B, 0x1169, 0x11C1] },
+{ source: [0xC63F], NFC: [0xC63F], NFD: [0x110B, 0x1169, 0x11C2], NFKC: [0xC63F], NFKD: [0x110B, 0x1169, 0x11C2] },
+{ source: [0xC640], NFC: [0xC640], NFD: [0x110B, 0x116A], NFKC: [0xC640], NFKD: [0x110B, 0x116A] },
+{ source: [0xC641], NFC: [0xC641], NFD: [0x110B, 0x116A, 0x11A8], NFKC: [0xC641], NFKD: [0x110B, 0x116A, 0x11A8] },
+{ source: [0xC642], NFC: [0xC642], NFD: [0x110B, 0x116A, 0x11A9], NFKC: [0xC642], NFKD: [0x110B, 0x116A, 0x11A9] },
+{ source: [0xC643], NFC: [0xC643], NFD: [0x110B, 0x116A, 0x11AA], NFKC: [0xC643], NFKD: [0x110B, 0x116A, 0x11AA] },
+{ source: [0xC644], NFC: [0xC644], NFD: [0x110B, 0x116A, 0x11AB], NFKC: [0xC644], NFKD: [0x110B, 0x116A, 0x11AB] },
+{ source: [0xC645], NFC: [0xC645], NFD: [0x110B, 0x116A, 0x11AC], NFKC: [0xC645], NFKD: [0x110B, 0x116A, 0x11AC] },
+{ source: [0xC646], NFC: [0xC646], NFD: [0x110B, 0x116A, 0x11AD], NFKC: [0xC646], NFKD: [0x110B, 0x116A, 0x11AD] },
+{ source: [0xC647], NFC: [0xC647], NFD: [0x110B, 0x116A, 0x11AE], NFKC: [0xC647], NFKD: [0x110B, 0x116A, 0x11AE] },
+{ source: [0xC648], NFC: [0xC648], NFD: [0x110B, 0x116A, 0x11AF], NFKC: [0xC648], NFKD: [0x110B, 0x116A, 0x11AF] },
+{ source: [0xC649], NFC: [0xC649], NFD: [0x110B, 0x116A, 0x11B0], NFKC: [0xC649], NFKD: [0x110B, 0x116A, 0x11B0] },
+{ source: [0xC64A], NFC: [0xC64A], NFD: [0x110B, 0x116A, 0x11B1], NFKC: [0xC64A], NFKD: [0x110B, 0x116A, 0x11B1] },
+{ source: [0xC64B], NFC: [0xC64B], NFD: [0x110B, 0x116A, 0x11B2], NFKC: [0xC64B], NFKD: [0x110B, 0x116A, 0x11B2] },
+{ source: [0xC64C], NFC: [0xC64C], NFD: [0x110B, 0x116A, 0x11B3], NFKC: [0xC64C], NFKD: [0x110B, 0x116A, 0x11B3] },
+{ source: [0xC64D], NFC: [0xC64D], NFD: [0x110B, 0x116A, 0x11B4], NFKC: [0xC64D], NFKD: [0x110B, 0x116A, 0x11B4] },
+{ source: [0xC64E], NFC: [0xC64E], NFD: [0x110B, 0x116A, 0x11B5], NFKC: [0xC64E], NFKD: [0x110B, 0x116A, 0x11B5] },
+{ source: [0xC64F], NFC: [0xC64F], NFD: [0x110B, 0x116A, 0x11B6], NFKC: [0xC64F], NFKD: [0x110B, 0x116A, 0x11B6] },
+{ source: [0xC650], NFC: [0xC650], NFD: [0x110B, 0x116A, 0x11B7], NFKC: [0xC650], NFKD: [0x110B, 0x116A, 0x11B7] },
+{ source: [0xC651], NFC: [0xC651], NFD: [0x110B, 0x116A, 0x11B8], NFKC: [0xC651], NFKD: [0x110B, 0x116A, 0x11B8] },
+{ source: [0xC652], NFC: [0xC652], NFD: [0x110B, 0x116A, 0x11B9], NFKC: [0xC652], NFKD: [0x110B, 0x116A, 0x11B9] },
+{ source: [0xC653], NFC: [0xC653], NFD: [0x110B, 0x116A, 0x11BA], NFKC: [0xC653], NFKD: [0x110B, 0x116A, 0x11BA] },
+{ source: [0xC654], NFC: [0xC654], NFD: [0x110B, 0x116A, 0x11BB], NFKC: [0xC654], NFKD: [0x110B, 0x116A, 0x11BB] },
+{ source: [0xC655], NFC: [0xC655], NFD: [0x110B, 0x116A, 0x11BC], NFKC: [0xC655], NFKD: [0x110B, 0x116A, 0x11BC] },
+{ source: [0xC656], NFC: [0xC656], NFD: [0x110B, 0x116A, 0x11BD], NFKC: [0xC656], NFKD: [0x110B, 0x116A, 0x11BD] },
+{ source: [0xC657], NFC: [0xC657], NFD: [0x110B, 0x116A, 0x11BE], NFKC: [0xC657], NFKD: [0x110B, 0x116A, 0x11BE] },
+{ source: [0xC658], NFC: [0xC658], NFD: [0x110B, 0x116A, 0x11BF], NFKC: [0xC658], NFKD: [0x110B, 0x116A, 0x11BF] },
+{ source: [0xC659], NFC: [0xC659], NFD: [0x110B, 0x116A, 0x11C0], NFKC: [0xC659], NFKD: [0x110B, 0x116A, 0x11C0] },
+{ source: [0xC65A], NFC: [0xC65A], NFD: [0x110B, 0x116A, 0x11C1], NFKC: [0xC65A], NFKD: [0x110B, 0x116A, 0x11C1] },
+{ source: [0xC65B], NFC: [0xC65B], NFD: [0x110B, 0x116A, 0x11C2], NFKC: [0xC65B], NFKD: [0x110B, 0x116A, 0x11C2] },
+{ source: [0xC65C], NFC: [0xC65C], NFD: [0x110B, 0x116B], NFKC: [0xC65C], NFKD: [0x110B, 0x116B] },
+{ source: [0xC65D], NFC: [0xC65D], NFD: [0x110B, 0x116B, 0x11A8], NFKC: [0xC65D], NFKD: [0x110B, 0x116B, 0x11A8] },
+{ source: [0xC65E], NFC: [0xC65E], NFD: [0x110B, 0x116B, 0x11A9], NFKC: [0xC65E], NFKD: [0x110B, 0x116B, 0x11A9] },
+{ source: [0xC65F], NFC: [0xC65F], NFD: [0x110B, 0x116B, 0x11AA], NFKC: [0xC65F], NFKD: [0x110B, 0x116B, 0x11AA] },
+{ source: [0xC660], NFC: [0xC660], NFD: [0x110B, 0x116B, 0x11AB], NFKC: [0xC660], NFKD: [0x110B, 0x116B, 0x11AB] },
+{ source: [0xC661], NFC: [0xC661], NFD: [0x110B, 0x116B, 0x11AC], NFKC: [0xC661], NFKD: [0x110B, 0x116B, 0x11AC] },
+{ source: [0xC662], NFC: [0xC662], NFD: [0x110B, 0x116B, 0x11AD], NFKC: [0xC662], NFKD: [0x110B, 0x116B, 0x11AD] },
+{ source: [0xC663], NFC: [0xC663], NFD: [0x110B, 0x116B, 0x11AE], NFKC: [0xC663], NFKD: [0x110B, 0x116B, 0x11AE] },
+{ source: [0xC664], NFC: [0xC664], NFD: [0x110B, 0x116B, 0x11AF], NFKC: [0xC664], NFKD: [0x110B, 0x116B, 0x11AF] },
+{ source: [0xC665], NFC: [0xC665], NFD: [0x110B, 0x116B, 0x11B0], NFKC: [0xC665], NFKD: [0x110B, 0x116B, 0x11B0] },
+{ source: [0xC666], NFC: [0xC666], NFD: [0x110B, 0x116B, 0x11B1], NFKC: [0xC666], NFKD: [0x110B, 0x116B, 0x11B1] },
+{ source: [0xC667], NFC: [0xC667], NFD: [0x110B, 0x116B, 0x11B2], NFKC: [0xC667], NFKD: [0x110B, 0x116B, 0x11B2] },
+{ source: [0xC668], NFC: [0xC668], NFD: [0x110B, 0x116B, 0x11B3], NFKC: [0xC668], NFKD: [0x110B, 0x116B, 0x11B3] },
+{ source: [0xC669], NFC: [0xC669], NFD: [0x110B, 0x116B, 0x11B4], NFKC: [0xC669], NFKD: [0x110B, 0x116B, 0x11B4] },
+{ source: [0xC66A], NFC: [0xC66A], NFD: [0x110B, 0x116B, 0x11B5], NFKC: [0xC66A], NFKD: [0x110B, 0x116B, 0x11B5] },
+{ source: [0xC66B], NFC: [0xC66B], NFD: [0x110B, 0x116B, 0x11B6], NFKC: [0xC66B], NFKD: [0x110B, 0x116B, 0x11B6] },
+{ source: [0xC66C], NFC: [0xC66C], NFD: [0x110B, 0x116B, 0x11B7], NFKC: [0xC66C], NFKD: [0x110B, 0x116B, 0x11B7] },
+{ source: [0xC66D], NFC: [0xC66D], NFD: [0x110B, 0x116B, 0x11B8], NFKC: [0xC66D], NFKD: [0x110B, 0x116B, 0x11B8] },
+{ source: [0xC66E], NFC: [0xC66E], NFD: [0x110B, 0x116B, 0x11B9], NFKC: [0xC66E], NFKD: [0x110B, 0x116B, 0x11B9] },
+{ source: [0xC66F], NFC: [0xC66F], NFD: [0x110B, 0x116B, 0x11BA], NFKC: [0xC66F], NFKD: [0x110B, 0x116B, 0x11BA] },
+{ source: [0xC670], NFC: [0xC670], NFD: [0x110B, 0x116B, 0x11BB], NFKC: [0xC670], NFKD: [0x110B, 0x116B, 0x11BB] },
+{ source: [0xC671], NFC: [0xC671], NFD: [0x110B, 0x116B, 0x11BC], NFKC: [0xC671], NFKD: [0x110B, 0x116B, 0x11BC] },
+{ source: [0xC672], NFC: [0xC672], NFD: [0x110B, 0x116B, 0x11BD], NFKC: [0xC672], NFKD: [0x110B, 0x116B, 0x11BD] },
+{ source: [0xC673], NFC: [0xC673], NFD: [0x110B, 0x116B, 0x11BE], NFKC: [0xC673], NFKD: [0x110B, 0x116B, 0x11BE] },
+{ source: [0xC674], NFC: [0xC674], NFD: [0x110B, 0x116B, 0x11BF], NFKC: [0xC674], NFKD: [0x110B, 0x116B, 0x11BF] },
+{ source: [0xC675], NFC: [0xC675], NFD: [0x110B, 0x116B, 0x11C0], NFKC: [0xC675], NFKD: [0x110B, 0x116B, 0x11C0] },
+{ source: [0xC676], NFC: [0xC676], NFD: [0x110B, 0x116B, 0x11C1], NFKC: [0xC676], NFKD: [0x110B, 0x116B, 0x11C1] },
+{ source: [0xC677], NFC: [0xC677], NFD: [0x110B, 0x116B, 0x11C2], NFKC: [0xC677], NFKD: [0x110B, 0x116B, 0x11C2] },
+{ source: [0xC678], NFC: [0xC678], NFD: [0x110B, 0x116C], NFKC: [0xC678], NFKD: [0x110B, 0x116C] },
+{ source: [0xC679], NFC: [0xC679], NFD: [0x110B, 0x116C, 0x11A8], NFKC: [0xC679], NFKD: [0x110B, 0x116C, 0x11A8] },
+{ source: [0xC67A], NFC: [0xC67A], NFD: [0x110B, 0x116C, 0x11A9], NFKC: [0xC67A], NFKD: [0x110B, 0x116C, 0x11A9] },
+{ source: [0xC67B], NFC: [0xC67B], NFD: [0x110B, 0x116C, 0x11AA], NFKC: [0xC67B], NFKD: [0x110B, 0x116C, 0x11AA] },
+{ source: [0xC67C], NFC: [0xC67C], NFD: [0x110B, 0x116C, 0x11AB], NFKC: [0xC67C], NFKD: [0x110B, 0x116C, 0x11AB] },
+{ source: [0xC67D], NFC: [0xC67D], NFD: [0x110B, 0x116C, 0x11AC], NFKC: [0xC67D], NFKD: [0x110B, 0x116C, 0x11AC] },
+{ source: [0xC67E], NFC: [0xC67E], NFD: [0x110B, 0x116C, 0x11AD], NFKC: [0xC67E], NFKD: [0x110B, 0x116C, 0x11AD] },
+{ source: [0xC67F], NFC: [0xC67F], NFD: [0x110B, 0x116C, 0x11AE], NFKC: [0xC67F], NFKD: [0x110B, 0x116C, 0x11AE] },
+{ source: [0xC680], NFC: [0xC680], NFD: [0x110B, 0x116C, 0x11AF], NFKC: [0xC680], NFKD: [0x110B, 0x116C, 0x11AF] },
+{ source: [0xC681], NFC: [0xC681], NFD: [0x110B, 0x116C, 0x11B0], NFKC: [0xC681], NFKD: [0x110B, 0x116C, 0x11B0] },
+{ source: [0xC682], NFC: [0xC682], NFD: [0x110B, 0x116C, 0x11B1], NFKC: [0xC682], NFKD: [0x110B, 0x116C, 0x11B1] },
+{ source: [0xC683], NFC: [0xC683], NFD: [0x110B, 0x116C, 0x11B2], NFKC: [0xC683], NFKD: [0x110B, 0x116C, 0x11B2] },
+{ source: [0xC684], NFC: [0xC684], NFD: [0x110B, 0x116C, 0x11B3], NFKC: [0xC684], NFKD: [0x110B, 0x116C, 0x11B3] },
+{ source: [0xC685], NFC: [0xC685], NFD: [0x110B, 0x116C, 0x11B4], NFKC: [0xC685], NFKD: [0x110B, 0x116C, 0x11B4] },
+{ source: [0xC686], NFC: [0xC686], NFD: [0x110B, 0x116C, 0x11B5], NFKC: [0xC686], NFKD: [0x110B, 0x116C, 0x11B5] },
+{ source: [0xC687], NFC: [0xC687], NFD: [0x110B, 0x116C, 0x11B6], NFKC: [0xC687], NFKD: [0x110B, 0x116C, 0x11B6] },
+{ source: [0xC688], NFC: [0xC688], NFD: [0x110B, 0x116C, 0x11B7], NFKC: [0xC688], NFKD: [0x110B, 0x116C, 0x11B7] },
+{ source: [0xC689], NFC: [0xC689], NFD: [0x110B, 0x116C, 0x11B8], NFKC: [0xC689], NFKD: [0x110B, 0x116C, 0x11B8] },
+{ source: [0xC68A], NFC: [0xC68A], NFD: [0x110B, 0x116C, 0x11B9], NFKC: [0xC68A], NFKD: [0x110B, 0x116C, 0x11B9] },
+{ source: [0xC68B], NFC: [0xC68B], NFD: [0x110B, 0x116C, 0x11BA], NFKC: [0xC68B], NFKD: [0x110B, 0x116C, 0x11BA] },
+{ source: [0xC68C], NFC: [0xC68C], NFD: [0x110B, 0x116C, 0x11BB], NFKC: [0xC68C], NFKD: [0x110B, 0x116C, 0x11BB] },
+{ source: [0xC68D], NFC: [0xC68D], NFD: [0x110B, 0x116C, 0x11BC], NFKC: [0xC68D], NFKD: [0x110B, 0x116C, 0x11BC] },
+{ source: [0xC68E], NFC: [0xC68E], NFD: [0x110B, 0x116C, 0x11BD], NFKC: [0xC68E], NFKD: [0x110B, 0x116C, 0x11BD] },
+{ source: [0xC68F], NFC: [0xC68F], NFD: [0x110B, 0x116C, 0x11BE], NFKC: [0xC68F], NFKD: [0x110B, 0x116C, 0x11BE] },
+{ source: [0xC690], NFC: [0xC690], NFD: [0x110B, 0x116C, 0x11BF], NFKC: [0xC690], NFKD: [0x110B, 0x116C, 0x11BF] },
+{ source: [0xC691], NFC: [0xC691], NFD: [0x110B, 0x116C, 0x11C0], NFKC: [0xC691], NFKD: [0x110B, 0x116C, 0x11C0] },
+{ source: [0xC692], NFC: [0xC692], NFD: [0x110B, 0x116C, 0x11C1], NFKC: [0xC692], NFKD: [0x110B, 0x116C, 0x11C1] },
+{ source: [0xC693], NFC: [0xC693], NFD: [0x110B, 0x116C, 0x11C2], NFKC: [0xC693], NFKD: [0x110B, 0x116C, 0x11C2] },
+{ source: [0xC694], NFC: [0xC694], NFD: [0x110B, 0x116D], NFKC: [0xC694], NFKD: [0x110B, 0x116D] },
+{ source: [0xC695], NFC: [0xC695], NFD: [0x110B, 0x116D, 0x11A8], NFKC: [0xC695], NFKD: [0x110B, 0x116D, 0x11A8] },
+{ source: [0xC696], NFC: [0xC696], NFD: [0x110B, 0x116D, 0x11A9], NFKC: [0xC696], NFKD: [0x110B, 0x116D, 0x11A9] },
+{ source: [0xC697], NFC: [0xC697], NFD: [0x110B, 0x116D, 0x11AA], NFKC: [0xC697], NFKD: [0x110B, 0x116D, 0x11AA] },
+{ source: [0xC698], NFC: [0xC698], NFD: [0x110B, 0x116D, 0x11AB], NFKC: [0xC698], NFKD: [0x110B, 0x116D, 0x11AB] },
+{ source: [0xC699], NFC: [0xC699], NFD: [0x110B, 0x116D, 0x11AC], NFKC: [0xC699], NFKD: [0x110B, 0x116D, 0x11AC] },
+{ source: [0xC69A], NFC: [0xC69A], NFD: [0x110B, 0x116D, 0x11AD], NFKC: [0xC69A], NFKD: [0x110B, 0x116D, 0x11AD] },
+{ source: [0xC69B], NFC: [0xC69B], NFD: [0x110B, 0x116D, 0x11AE], NFKC: [0xC69B], NFKD: [0x110B, 0x116D, 0x11AE] },
+{ source: [0xC69C], NFC: [0xC69C], NFD: [0x110B, 0x116D, 0x11AF], NFKC: [0xC69C], NFKD: [0x110B, 0x116D, 0x11AF] },
+{ source: [0xC69D], NFC: [0xC69D], NFD: [0x110B, 0x116D, 0x11B0], NFKC: [0xC69D], NFKD: [0x110B, 0x116D, 0x11B0] },
+{ source: [0xC69E], NFC: [0xC69E], NFD: [0x110B, 0x116D, 0x11B1], NFKC: [0xC69E], NFKD: [0x110B, 0x116D, 0x11B1] },
+{ source: [0xC69F], NFC: [0xC69F], NFD: [0x110B, 0x116D, 0x11B2], NFKC: [0xC69F], NFKD: [0x110B, 0x116D, 0x11B2] },
+{ source: [0xC6A0], NFC: [0xC6A0], NFD: [0x110B, 0x116D, 0x11B3], NFKC: [0xC6A0], NFKD: [0x110B, 0x116D, 0x11B3] },
+{ source: [0xC6A1], NFC: [0xC6A1], NFD: [0x110B, 0x116D, 0x11B4], NFKC: [0xC6A1], NFKD: [0x110B, 0x116D, 0x11B4] },
+{ source: [0xC6A2], NFC: [0xC6A2], NFD: [0x110B, 0x116D, 0x11B5], NFKC: [0xC6A2], NFKD: [0x110B, 0x116D, 0x11B5] },
+{ source: [0xC6A3], NFC: [0xC6A3], NFD: [0x110B, 0x116D, 0x11B6], NFKC: [0xC6A3], NFKD: [0x110B, 0x116D, 0x11B6] },
+{ source: [0xC6A4], NFC: [0xC6A4], NFD: [0x110B, 0x116D, 0x11B7], NFKC: [0xC6A4], NFKD: [0x110B, 0x116D, 0x11B7] },
+{ source: [0xC6A5], NFC: [0xC6A5], NFD: [0x110B, 0x116D, 0x11B8], NFKC: [0xC6A5], NFKD: [0x110B, 0x116D, 0x11B8] },
+{ source: [0xC6A6], NFC: [0xC6A6], NFD: [0x110B, 0x116D, 0x11B9], NFKC: [0xC6A6], NFKD: [0x110B, 0x116D, 0x11B9] },
+{ source: [0xC6A7], NFC: [0xC6A7], NFD: [0x110B, 0x116D, 0x11BA], NFKC: [0xC6A7], NFKD: [0x110B, 0x116D, 0x11BA] },
+{ source: [0xC6A8], NFC: [0xC6A8], NFD: [0x110B, 0x116D, 0x11BB], NFKC: [0xC6A8], NFKD: [0x110B, 0x116D, 0x11BB] },
+{ source: [0xC6A9], NFC: [0xC6A9], NFD: [0x110B, 0x116D, 0x11BC], NFKC: [0xC6A9], NFKD: [0x110B, 0x116D, 0x11BC] },
+{ source: [0xC6AA], NFC: [0xC6AA], NFD: [0x110B, 0x116D, 0x11BD], NFKC: [0xC6AA], NFKD: [0x110B, 0x116D, 0x11BD] },
+{ source: [0xC6AB], NFC: [0xC6AB], NFD: [0x110B, 0x116D, 0x11BE], NFKC: [0xC6AB], NFKD: [0x110B, 0x116D, 0x11BE] },
+{ source: [0xC6AC], NFC: [0xC6AC], NFD: [0x110B, 0x116D, 0x11BF], NFKC: [0xC6AC], NFKD: [0x110B, 0x116D, 0x11BF] },
+{ source: [0xC6AD], NFC: [0xC6AD], NFD: [0x110B, 0x116D, 0x11C0], NFKC: [0xC6AD], NFKD: [0x110B, 0x116D, 0x11C0] },
+{ source: [0xC6AE], NFC: [0xC6AE], NFD: [0x110B, 0x116D, 0x11C1], NFKC: [0xC6AE], NFKD: [0x110B, 0x116D, 0x11C1] },
+{ source: [0xC6AF], NFC: [0xC6AF], NFD: [0x110B, 0x116D, 0x11C2], NFKC: [0xC6AF], NFKD: [0x110B, 0x116D, 0x11C2] },
+{ source: [0xC6B0], NFC: [0xC6B0], NFD: [0x110B, 0x116E], NFKC: [0xC6B0], NFKD: [0x110B, 0x116E] },
+{ source: [0xC6B1], NFC: [0xC6B1], NFD: [0x110B, 0x116E, 0x11A8], NFKC: [0xC6B1], NFKD: [0x110B, 0x116E, 0x11A8] },
+{ source: [0xC6B2], NFC: [0xC6B2], NFD: [0x110B, 0x116E, 0x11A9], NFKC: [0xC6B2], NFKD: [0x110B, 0x116E, 0x11A9] },
+{ source: [0xC6B3], NFC: [0xC6B3], NFD: [0x110B, 0x116E, 0x11AA], NFKC: [0xC6B3], NFKD: [0x110B, 0x116E, 0x11AA] },
+{ source: [0xC6B4], NFC: [0xC6B4], NFD: [0x110B, 0x116E, 0x11AB], NFKC: [0xC6B4], NFKD: [0x110B, 0x116E, 0x11AB] },
+{ source: [0xC6B5], NFC: [0xC6B5], NFD: [0x110B, 0x116E, 0x11AC], NFKC: [0xC6B5], NFKD: [0x110B, 0x116E, 0x11AC] },
+{ source: [0xC6B6], NFC: [0xC6B6], NFD: [0x110B, 0x116E, 0x11AD], NFKC: [0xC6B6], NFKD: [0x110B, 0x116E, 0x11AD] },
+{ source: [0xC6B7], NFC: [0xC6B7], NFD: [0x110B, 0x116E, 0x11AE], NFKC: [0xC6B7], NFKD: [0x110B, 0x116E, 0x11AE] },
+{ source: [0xC6B8], NFC: [0xC6B8], NFD: [0x110B, 0x116E, 0x11AF], NFKC: [0xC6B8], NFKD: [0x110B, 0x116E, 0x11AF] },
+{ source: [0xC6B9], NFC: [0xC6B9], NFD: [0x110B, 0x116E, 0x11B0], NFKC: [0xC6B9], NFKD: [0x110B, 0x116E, 0x11B0] },
+{ source: [0xC6BA], NFC: [0xC6BA], NFD: [0x110B, 0x116E, 0x11B1], NFKC: [0xC6BA], NFKD: [0x110B, 0x116E, 0x11B1] },
+{ source: [0xC6BB], NFC: [0xC6BB], NFD: [0x110B, 0x116E, 0x11B2], NFKC: [0xC6BB], NFKD: [0x110B, 0x116E, 0x11B2] },
+{ source: [0xC6BC], NFC: [0xC6BC], NFD: [0x110B, 0x116E, 0x11B3], NFKC: [0xC6BC], NFKD: [0x110B, 0x116E, 0x11B3] },
+{ source: [0xC6BD], NFC: [0xC6BD], NFD: [0x110B, 0x116E, 0x11B4], NFKC: [0xC6BD], NFKD: [0x110B, 0x116E, 0x11B4] },
+{ source: [0xC6BE], NFC: [0xC6BE], NFD: [0x110B, 0x116E, 0x11B5], NFKC: [0xC6BE], NFKD: [0x110B, 0x116E, 0x11B5] },
+{ source: [0xC6BF], NFC: [0xC6BF], NFD: [0x110B, 0x116E, 0x11B6], NFKC: [0xC6BF], NFKD: [0x110B, 0x116E, 0x11B6] },
+{ source: [0xC6C0], NFC: [0xC6C0], NFD: [0x110B, 0x116E, 0x11B7], NFKC: [0xC6C0], NFKD: [0x110B, 0x116E, 0x11B7] },
+{ source: [0xC6C1], NFC: [0xC6C1], NFD: [0x110B, 0x116E, 0x11B8], NFKC: [0xC6C1], NFKD: [0x110B, 0x116E, 0x11B8] },
+{ source: [0xC6C2], NFC: [0xC6C2], NFD: [0x110B, 0x116E, 0x11B9], NFKC: [0xC6C2], NFKD: [0x110B, 0x116E, 0x11B9] },
+{ source: [0xC6C3], NFC: [0xC6C3], NFD: [0x110B, 0x116E, 0x11BA], NFKC: [0xC6C3], NFKD: [0x110B, 0x116E, 0x11BA] },
+{ source: [0xC6C4], NFC: [0xC6C4], NFD: [0x110B, 0x116E, 0x11BB], NFKC: [0xC6C4], NFKD: [0x110B, 0x116E, 0x11BB] },
+{ source: [0xC6C5], NFC: [0xC6C5], NFD: [0x110B, 0x116E, 0x11BC], NFKC: [0xC6C5], NFKD: [0x110B, 0x116E, 0x11BC] },
+{ source: [0xC6C6], NFC: [0xC6C6], NFD: [0x110B, 0x116E, 0x11BD], NFKC: [0xC6C6], NFKD: [0x110B, 0x116E, 0x11BD] },
+{ source: [0xC6C7], NFC: [0xC6C7], NFD: [0x110B, 0x116E, 0x11BE], NFKC: [0xC6C7], NFKD: [0x110B, 0x116E, 0x11BE] },
+{ source: [0xC6C8], NFC: [0xC6C8], NFD: [0x110B, 0x116E, 0x11BF], NFKC: [0xC6C8], NFKD: [0x110B, 0x116E, 0x11BF] },
+{ source: [0xC6C9], NFC: [0xC6C9], NFD: [0x110B, 0x116E, 0x11C0], NFKC: [0xC6C9], NFKD: [0x110B, 0x116E, 0x11C0] },
+{ source: [0xC6CA], NFC: [0xC6CA], NFD: [0x110B, 0x116E, 0x11C1], NFKC: [0xC6CA], NFKD: [0x110B, 0x116E, 0x11C1] },
+{ source: [0xC6CB], NFC: [0xC6CB], NFD: [0x110B, 0x116E, 0x11C2], NFKC: [0xC6CB], NFKD: [0x110B, 0x116E, 0x11C2] },
+{ source: [0xC6CC], NFC: [0xC6CC], NFD: [0x110B, 0x116F], NFKC: [0xC6CC], NFKD: [0x110B, 0x116F] },
+{ source: [0xC6CD], NFC: [0xC6CD], NFD: [0x110B, 0x116F, 0x11A8], NFKC: [0xC6CD], NFKD: [0x110B, 0x116F, 0x11A8] },
+{ source: [0xC6CE], NFC: [0xC6CE], NFD: [0x110B, 0x116F, 0x11A9], NFKC: [0xC6CE], NFKD: [0x110B, 0x116F, 0x11A9] },
+{ source: [0xC6CF], NFC: [0xC6CF], NFD: [0x110B, 0x116F, 0x11AA], NFKC: [0xC6CF], NFKD: [0x110B, 0x116F, 0x11AA] },
+{ source: [0xC6D0], NFC: [0xC6D0], NFD: [0x110B, 0x116F, 0x11AB], NFKC: [0xC6D0], NFKD: [0x110B, 0x116F, 0x11AB] },
+{ source: [0xC6D1], NFC: [0xC6D1], NFD: [0x110B, 0x116F, 0x11AC], NFKC: [0xC6D1], NFKD: [0x110B, 0x116F, 0x11AC] },
+{ source: [0xC6D2], NFC: [0xC6D2], NFD: [0x110B, 0x116F, 0x11AD], NFKC: [0xC6D2], NFKD: [0x110B, 0x116F, 0x11AD] },
+{ source: [0xC6D3], NFC: [0xC6D3], NFD: [0x110B, 0x116F, 0x11AE], NFKC: [0xC6D3], NFKD: [0x110B, 0x116F, 0x11AE] },
+{ source: [0xC6D4], NFC: [0xC6D4], NFD: [0x110B, 0x116F, 0x11AF], NFKC: [0xC6D4], NFKD: [0x110B, 0x116F, 0x11AF] },
+{ source: [0xC6D5], NFC: [0xC6D5], NFD: [0x110B, 0x116F, 0x11B0], NFKC: [0xC6D5], NFKD: [0x110B, 0x116F, 0x11B0] },
+{ source: [0xC6D6], NFC: [0xC6D6], NFD: [0x110B, 0x116F, 0x11B1], NFKC: [0xC6D6], NFKD: [0x110B, 0x116F, 0x11B1] },
+{ source: [0xC6D7], NFC: [0xC6D7], NFD: [0x110B, 0x116F, 0x11B2], NFKC: [0xC6D7], NFKD: [0x110B, 0x116F, 0x11B2] },
+{ source: [0xC6D8], NFC: [0xC6D8], NFD: [0x110B, 0x116F, 0x11B3], NFKC: [0xC6D8], NFKD: [0x110B, 0x116F, 0x11B3] },
+{ source: [0xC6D9], NFC: [0xC6D9], NFD: [0x110B, 0x116F, 0x11B4], NFKC: [0xC6D9], NFKD: [0x110B, 0x116F, 0x11B4] },
+{ source: [0xC6DA], NFC: [0xC6DA], NFD: [0x110B, 0x116F, 0x11B5], NFKC: [0xC6DA], NFKD: [0x110B, 0x116F, 0x11B5] },
+{ source: [0xC6DB], NFC: [0xC6DB], NFD: [0x110B, 0x116F, 0x11B6], NFKC: [0xC6DB], NFKD: [0x110B, 0x116F, 0x11B6] },
+{ source: [0xC6DC], NFC: [0xC6DC], NFD: [0x110B, 0x116F, 0x11B7], NFKC: [0xC6DC], NFKD: [0x110B, 0x116F, 0x11B7] },
+{ source: [0xC6DD], NFC: [0xC6DD], NFD: [0x110B, 0x116F, 0x11B8], NFKC: [0xC6DD], NFKD: [0x110B, 0x116F, 0x11B8] },
+{ source: [0xC6DE], NFC: [0xC6DE], NFD: [0x110B, 0x116F, 0x11B9], NFKC: [0xC6DE], NFKD: [0x110B, 0x116F, 0x11B9] },
+{ source: [0xC6DF], NFC: [0xC6DF], NFD: [0x110B, 0x116F, 0x11BA], NFKC: [0xC6DF], NFKD: [0x110B, 0x116F, 0x11BA] },
+{ source: [0xC6E0], NFC: [0xC6E0], NFD: [0x110B, 0x116F, 0x11BB], NFKC: [0xC6E0], NFKD: [0x110B, 0x116F, 0x11BB] },
+{ source: [0xC6E1], NFC: [0xC6E1], NFD: [0x110B, 0x116F, 0x11BC], NFKC: [0xC6E1], NFKD: [0x110B, 0x116F, 0x11BC] },
+{ source: [0xC6E2], NFC: [0xC6E2], NFD: [0x110B, 0x116F, 0x11BD], NFKC: [0xC6E2], NFKD: [0x110B, 0x116F, 0x11BD] },
+{ source: [0xC6E3], NFC: [0xC6E3], NFD: [0x110B, 0x116F, 0x11BE], NFKC: [0xC6E3], NFKD: [0x110B, 0x116F, 0x11BE] },
+{ source: [0xC6E4], NFC: [0xC6E4], NFD: [0x110B, 0x116F, 0x11BF], NFKC: [0xC6E4], NFKD: [0x110B, 0x116F, 0x11BF] },
+{ source: [0xC6E5], NFC: [0xC6E5], NFD: [0x110B, 0x116F, 0x11C0], NFKC: [0xC6E5], NFKD: [0x110B, 0x116F, 0x11C0] },
+{ source: [0xC6E6], NFC: [0xC6E6], NFD: [0x110B, 0x116F, 0x11C1], NFKC: [0xC6E6], NFKD: [0x110B, 0x116F, 0x11C1] },
+{ source: [0xC6E7], NFC: [0xC6E7], NFD: [0x110B, 0x116F, 0x11C2], NFKC: [0xC6E7], NFKD: [0x110B, 0x116F, 0x11C2] },
+{ source: [0xC6E8], NFC: [0xC6E8], NFD: [0x110B, 0x1170], NFKC: [0xC6E8], NFKD: [0x110B, 0x1170] },
+{ source: [0xC6E9], NFC: [0xC6E9], NFD: [0x110B, 0x1170, 0x11A8], NFKC: [0xC6E9], NFKD: [0x110B, 0x1170, 0x11A8] },
+{ source: [0xC6EA], NFC: [0xC6EA], NFD: [0x110B, 0x1170, 0x11A9], NFKC: [0xC6EA], NFKD: [0x110B, 0x1170, 0x11A9] },
+{ source: [0xC6EB], NFC: [0xC6EB], NFD: [0x110B, 0x1170, 0x11AA], NFKC: [0xC6EB], NFKD: [0x110B, 0x1170, 0x11AA] },
+{ source: [0xC6EC], NFC: [0xC6EC], NFD: [0x110B, 0x1170, 0x11AB], NFKC: [0xC6EC], NFKD: [0x110B, 0x1170, 0x11AB] },
+{ source: [0xC6ED], NFC: [0xC6ED], NFD: [0x110B, 0x1170, 0x11AC], NFKC: [0xC6ED], NFKD: [0x110B, 0x1170, 0x11AC] },
+{ source: [0xC6EE], NFC: [0xC6EE], NFD: [0x110B, 0x1170, 0x11AD], NFKC: [0xC6EE], NFKD: [0x110B, 0x1170, 0x11AD] },
+{ source: [0xC6EF], NFC: [0xC6EF], NFD: [0x110B, 0x1170, 0x11AE], NFKC: [0xC6EF], NFKD: [0x110B, 0x1170, 0x11AE] },
+{ source: [0xC6F0], NFC: [0xC6F0], NFD: [0x110B, 0x1170, 0x11AF], NFKC: [0xC6F0], NFKD: [0x110B, 0x1170, 0x11AF] },
+{ source: [0xC6F1], NFC: [0xC6F1], NFD: [0x110B, 0x1170, 0x11B0], NFKC: [0xC6F1], NFKD: [0x110B, 0x1170, 0x11B0] },
+{ source: [0xC6F2], NFC: [0xC6F2], NFD: [0x110B, 0x1170, 0x11B1], NFKC: [0xC6F2], NFKD: [0x110B, 0x1170, 0x11B1] },
+{ source: [0xC6F3], NFC: [0xC6F3], NFD: [0x110B, 0x1170, 0x11B2], NFKC: [0xC6F3], NFKD: [0x110B, 0x1170, 0x11B2] },
+{ source: [0xC6F4], NFC: [0xC6F4], NFD: [0x110B, 0x1170, 0x11B3], NFKC: [0xC6F4], NFKD: [0x110B, 0x1170, 0x11B3] },
+{ source: [0xC6F5], NFC: [0xC6F5], NFD: [0x110B, 0x1170, 0x11B4], NFKC: [0xC6F5], NFKD: [0x110B, 0x1170, 0x11B4] },
+{ source: [0xC6F6], NFC: [0xC6F6], NFD: [0x110B, 0x1170, 0x11B5], NFKC: [0xC6F6], NFKD: [0x110B, 0x1170, 0x11B5] },
+{ source: [0xC6F7], NFC: [0xC6F7], NFD: [0x110B, 0x1170, 0x11B6], NFKC: [0xC6F7], NFKD: [0x110B, 0x1170, 0x11B6] },
+{ source: [0xC6F8], NFC: [0xC6F8], NFD: [0x110B, 0x1170, 0x11B7], NFKC: [0xC6F8], NFKD: [0x110B, 0x1170, 0x11B7] },
+{ source: [0xC6F9], NFC: [0xC6F9], NFD: [0x110B, 0x1170, 0x11B8], NFKC: [0xC6F9], NFKD: [0x110B, 0x1170, 0x11B8] },
+{ source: [0xC6FA], NFC: [0xC6FA], NFD: [0x110B, 0x1170, 0x11B9], NFKC: [0xC6FA], NFKD: [0x110B, 0x1170, 0x11B9] },
+{ source: [0xC6FB], NFC: [0xC6FB], NFD: [0x110B, 0x1170, 0x11BA], NFKC: [0xC6FB], NFKD: [0x110B, 0x1170, 0x11BA] },
+{ source: [0xC6FC], NFC: [0xC6FC], NFD: [0x110B, 0x1170, 0x11BB], NFKC: [0xC6FC], NFKD: [0x110B, 0x1170, 0x11BB] },
+{ source: [0xC6FD], NFC: [0xC6FD], NFD: [0x110B, 0x1170, 0x11BC], NFKC: [0xC6FD], NFKD: [0x110B, 0x1170, 0x11BC] },
+{ source: [0xC6FE], NFC: [0xC6FE], NFD: [0x110B, 0x1170, 0x11BD], NFKC: [0xC6FE], NFKD: [0x110B, 0x1170, 0x11BD] },
+{ source: [0xC6FF], NFC: [0xC6FF], NFD: [0x110B, 0x1170, 0x11BE], NFKC: [0xC6FF], NFKD: [0x110B, 0x1170, 0x11BE] },
+{ source: [0xC700], NFC: [0xC700], NFD: [0x110B, 0x1170, 0x11BF], NFKC: [0xC700], NFKD: [0x110B, 0x1170, 0x11BF] },
+{ source: [0xC701], NFC: [0xC701], NFD: [0x110B, 0x1170, 0x11C0], NFKC: [0xC701], NFKD: [0x110B, 0x1170, 0x11C0] },
+{ source: [0xC702], NFC: [0xC702], NFD: [0x110B, 0x1170, 0x11C1], NFKC: [0xC702], NFKD: [0x110B, 0x1170, 0x11C1] },
+{ source: [0xC703], NFC: [0xC703], NFD: [0x110B, 0x1170, 0x11C2], NFKC: [0xC703], NFKD: [0x110B, 0x1170, 0x11C2] },
+{ source: [0xC704], NFC: [0xC704], NFD: [0x110B, 0x1171], NFKC: [0xC704], NFKD: [0x110B, 0x1171] },
+{ source: [0xC705], NFC: [0xC705], NFD: [0x110B, 0x1171, 0x11A8], NFKC: [0xC705], NFKD: [0x110B, 0x1171, 0x11A8] },
+{ source: [0xC706], NFC: [0xC706], NFD: [0x110B, 0x1171, 0x11A9], NFKC: [0xC706], NFKD: [0x110B, 0x1171, 0x11A9] },
+{ source: [0xC707], NFC: [0xC707], NFD: [0x110B, 0x1171, 0x11AA], NFKC: [0xC707], NFKD: [0x110B, 0x1171, 0x11AA] },
+{ source: [0xC708], NFC: [0xC708], NFD: [0x110B, 0x1171, 0x11AB], NFKC: [0xC708], NFKD: [0x110B, 0x1171, 0x11AB] },
+{ source: [0xC709], NFC: [0xC709], NFD: [0x110B, 0x1171, 0x11AC], NFKC: [0xC709], NFKD: [0x110B, 0x1171, 0x11AC] },
+{ source: [0xC70A], NFC: [0xC70A], NFD: [0x110B, 0x1171, 0x11AD], NFKC: [0xC70A], NFKD: [0x110B, 0x1171, 0x11AD] },
+{ source: [0xC70B], NFC: [0xC70B], NFD: [0x110B, 0x1171, 0x11AE], NFKC: [0xC70B], NFKD: [0x110B, 0x1171, 0x11AE] },
+{ source: [0xC70C], NFC: [0xC70C], NFD: [0x110B, 0x1171, 0x11AF], NFKC: [0xC70C], NFKD: [0x110B, 0x1171, 0x11AF] },
+{ source: [0xC70D], NFC: [0xC70D], NFD: [0x110B, 0x1171, 0x11B0], NFKC: [0xC70D], NFKD: [0x110B, 0x1171, 0x11B0] },
+{ source: [0xC70E], NFC: [0xC70E], NFD: [0x110B, 0x1171, 0x11B1], NFKC: [0xC70E], NFKD: [0x110B, 0x1171, 0x11B1] },
+{ source: [0xC70F], NFC: [0xC70F], NFD: [0x110B, 0x1171, 0x11B2], NFKC: [0xC70F], NFKD: [0x110B, 0x1171, 0x11B2] },
+{ source: [0xC710], NFC: [0xC710], NFD: [0x110B, 0x1171, 0x11B3], NFKC: [0xC710], NFKD: [0x110B, 0x1171, 0x11B3] },
+{ source: [0xC711], NFC: [0xC711], NFD: [0x110B, 0x1171, 0x11B4], NFKC: [0xC711], NFKD: [0x110B, 0x1171, 0x11B4] },
+{ source: [0xC712], NFC: [0xC712], NFD: [0x110B, 0x1171, 0x11B5], NFKC: [0xC712], NFKD: [0x110B, 0x1171, 0x11B5] },
+{ source: [0xC713], NFC: [0xC713], NFD: [0x110B, 0x1171, 0x11B6], NFKC: [0xC713], NFKD: [0x110B, 0x1171, 0x11B6] },
+{ source: [0xC714], NFC: [0xC714], NFD: [0x110B, 0x1171, 0x11B7], NFKC: [0xC714], NFKD: [0x110B, 0x1171, 0x11B7] },
+{ source: [0xC715], NFC: [0xC715], NFD: [0x110B, 0x1171, 0x11B8], NFKC: [0xC715], NFKD: [0x110B, 0x1171, 0x11B8] },
+{ source: [0xC716], NFC: [0xC716], NFD: [0x110B, 0x1171, 0x11B9], NFKC: [0xC716], NFKD: [0x110B, 0x1171, 0x11B9] },
+{ source: [0xC717], NFC: [0xC717], NFD: [0x110B, 0x1171, 0x11BA], NFKC: [0xC717], NFKD: [0x110B, 0x1171, 0x11BA] },
+{ source: [0xC718], NFC: [0xC718], NFD: [0x110B, 0x1171, 0x11BB], NFKC: [0xC718], NFKD: [0x110B, 0x1171, 0x11BB] },
+{ source: [0xC719], NFC: [0xC719], NFD: [0x110B, 0x1171, 0x11BC], NFKC: [0xC719], NFKD: [0x110B, 0x1171, 0x11BC] },
+{ source: [0xC71A], NFC: [0xC71A], NFD: [0x110B, 0x1171, 0x11BD], NFKC: [0xC71A], NFKD: [0x110B, 0x1171, 0x11BD] },
+{ source: [0xC71B], NFC: [0xC71B], NFD: [0x110B, 0x1171, 0x11BE], NFKC: [0xC71B], NFKD: [0x110B, 0x1171, 0x11BE] },
+{ source: [0xC71C], NFC: [0xC71C], NFD: [0x110B, 0x1171, 0x11BF], NFKC: [0xC71C], NFKD: [0x110B, 0x1171, 0x11BF] },
+{ source: [0xC71D], NFC: [0xC71D], NFD: [0x110B, 0x1171, 0x11C0], NFKC: [0xC71D], NFKD: [0x110B, 0x1171, 0x11C0] },
+{ source: [0xC71E], NFC: [0xC71E], NFD: [0x110B, 0x1171, 0x11C1], NFKC: [0xC71E], NFKD: [0x110B, 0x1171, 0x11C1] },
+{ source: [0xC71F], NFC: [0xC71F], NFD: [0x110B, 0x1171, 0x11C2], NFKC: [0xC71F], NFKD: [0x110B, 0x1171, 0x11C2] },
+{ source: [0xC720], NFC: [0xC720], NFD: [0x110B, 0x1172], NFKC: [0xC720], NFKD: [0x110B, 0x1172] },
+{ source: [0xC721], NFC: [0xC721], NFD: [0x110B, 0x1172, 0x11A8], NFKC: [0xC721], NFKD: [0x110B, 0x1172, 0x11A8] },
+{ source: [0xC722], NFC: [0xC722], NFD: [0x110B, 0x1172, 0x11A9], NFKC: [0xC722], NFKD: [0x110B, 0x1172, 0x11A9] },
+{ source: [0xC723], NFC: [0xC723], NFD: [0x110B, 0x1172, 0x11AA], NFKC: [0xC723], NFKD: [0x110B, 0x1172, 0x11AA] },
+{ source: [0xC724], NFC: [0xC724], NFD: [0x110B, 0x1172, 0x11AB], NFKC: [0xC724], NFKD: [0x110B, 0x1172, 0x11AB] },
+{ source: [0xC725], NFC: [0xC725], NFD: [0x110B, 0x1172, 0x11AC], NFKC: [0xC725], NFKD: [0x110B, 0x1172, 0x11AC] },
+{ source: [0xC726], NFC: [0xC726], NFD: [0x110B, 0x1172, 0x11AD], NFKC: [0xC726], NFKD: [0x110B, 0x1172, 0x11AD] },
+{ source: [0xC727], NFC: [0xC727], NFD: [0x110B, 0x1172, 0x11AE], NFKC: [0xC727], NFKD: [0x110B, 0x1172, 0x11AE] },
+{ source: [0xC728], NFC: [0xC728], NFD: [0x110B, 0x1172, 0x11AF], NFKC: [0xC728], NFKD: [0x110B, 0x1172, 0x11AF] },
+{ source: [0xC729], NFC: [0xC729], NFD: [0x110B, 0x1172, 0x11B0], NFKC: [0xC729], NFKD: [0x110B, 0x1172, 0x11B0] },
+{ source: [0xC72A], NFC: [0xC72A], NFD: [0x110B, 0x1172, 0x11B1], NFKC: [0xC72A], NFKD: [0x110B, 0x1172, 0x11B1] },
+{ source: [0xC72B], NFC: [0xC72B], NFD: [0x110B, 0x1172, 0x11B2], NFKC: [0xC72B], NFKD: [0x110B, 0x1172, 0x11B2] },
+{ source: [0xC72C], NFC: [0xC72C], NFD: [0x110B, 0x1172, 0x11B3], NFKC: [0xC72C], NFKD: [0x110B, 0x1172, 0x11B3] },
+{ source: [0xC72D], NFC: [0xC72D], NFD: [0x110B, 0x1172, 0x11B4], NFKC: [0xC72D], NFKD: [0x110B, 0x1172, 0x11B4] },
+{ source: [0xC72E], NFC: [0xC72E], NFD: [0x110B, 0x1172, 0x11B5], NFKC: [0xC72E], NFKD: [0x110B, 0x1172, 0x11B5] },
+{ source: [0xC72F], NFC: [0xC72F], NFD: [0x110B, 0x1172, 0x11B6], NFKC: [0xC72F], NFKD: [0x110B, 0x1172, 0x11B6] },
+{ source: [0xC730], NFC: [0xC730], NFD: [0x110B, 0x1172, 0x11B7], NFKC: [0xC730], NFKD: [0x110B, 0x1172, 0x11B7] },
+{ source: [0xC731], NFC: [0xC731], NFD: [0x110B, 0x1172, 0x11B8], NFKC: [0xC731], NFKD: [0x110B, 0x1172, 0x11B8] },
+{ source: [0xC732], NFC: [0xC732], NFD: [0x110B, 0x1172, 0x11B9], NFKC: [0xC732], NFKD: [0x110B, 0x1172, 0x11B9] },
+{ source: [0xC733], NFC: [0xC733], NFD: [0x110B, 0x1172, 0x11BA], NFKC: [0xC733], NFKD: [0x110B, 0x1172, 0x11BA] },
+{ source: [0xC734], NFC: [0xC734], NFD: [0x110B, 0x1172, 0x11BB], NFKC: [0xC734], NFKD: [0x110B, 0x1172, 0x11BB] },
+{ source: [0xC735], NFC: [0xC735], NFD: [0x110B, 0x1172, 0x11BC], NFKC: [0xC735], NFKD: [0x110B, 0x1172, 0x11BC] },
+{ source: [0xC736], NFC: [0xC736], NFD: [0x110B, 0x1172, 0x11BD], NFKC: [0xC736], NFKD: [0x110B, 0x1172, 0x11BD] },
+{ source: [0xC737], NFC: [0xC737], NFD: [0x110B, 0x1172, 0x11BE], NFKC: [0xC737], NFKD: [0x110B, 0x1172, 0x11BE] },
+{ source: [0xC738], NFC: [0xC738], NFD: [0x110B, 0x1172, 0x11BF], NFKC: [0xC738], NFKD: [0x110B, 0x1172, 0x11BF] },
+{ source: [0xC739], NFC: [0xC739], NFD: [0x110B, 0x1172, 0x11C0], NFKC: [0xC739], NFKD: [0x110B, 0x1172, 0x11C0] },
+{ source: [0xC73A], NFC: [0xC73A], NFD: [0x110B, 0x1172, 0x11C1], NFKC: [0xC73A], NFKD: [0x110B, 0x1172, 0x11C1] },
+{ source: [0xC73B], NFC: [0xC73B], NFD: [0x110B, 0x1172, 0x11C2], NFKC: [0xC73B], NFKD: [0x110B, 0x1172, 0x11C2] },
+{ source: [0xC73C], NFC: [0xC73C], NFD: [0x110B, 0x1173], NFKC: [0xC73C], NFKD: [0x110B, 0x1173] },
+{ source: [0xC73D], NFC: [0xC73D], NFD: [0x110B, 0x1173, 0x11A8], NFKC: [0xC73D], NFKD: [0x110B, 0x1173, 0x11A8] },
+{ source: [0xC73E], NFC: [0xC73E], NFD: [0x110B, 0x1173, 0x11A9], NFKC: [0xC73E], NFKD: [0x110B, 0x1173, 0x11A9] },
+{ source: [0xC73F], NFC: [0xC73F], NFD: [0x110B, 0x1173, 0x11AA], NFKC: [0xC73F], NFKD: [0x110B, 0x1173, 0x11AA] },
+{ source: [0xC740], NFC: [0xC740], NFD: [0x110B, 0x1173, 0x11AB], NFKC: [0xC740], NFKD: [0x110B, 0x1173, 0x11AB] },
+{ source: [0xC741], NFC: [0xC741], NFD: [0x110B, 0x1173, 0x11AC], NFKC: [0xC741], NFKD: [0x110B, 0x1173, 0x11AC] },
+{ source: [0xC742], NFC: [0xC742], NFD: [0x110B, 0x1173, 0x11AD], NFKC: [0xC742], NFKD: [0x110B, 0x1173, 0x11AD] },
+{ source: [0xC743], NFC: [0xC743], NFD: [0x110B, 0x1173, 0x11AE], NFKC: [0xC743], NFKD: [0x110B, 0x1173, 0x11AE] },
+{ source: [0xC744], NFC: [0xC744], NFD: [0x110B, 0x1173, 0x11AF], NFKC: [0xC744], NFKD: [0x110B, 0x1173, 0x11AF] },
+{ source: [0xC745], NFC: [0xC745], NFD: [0x110B, 0x1173, 0x11B0], NFKC: [0xC745], NFKD: [0x110B, 0x1173, 0x11B0] },
+{ source: [0xC746], NFC: [0xC746], NFD: [0x110B, 0x1173, 0x11B1], NFKC: [0xC746], NFKD: [0x110B, 0x1173, 0x11B1] },
+{ source: [0xC747], NFC: [0xC747], NFD: [0x110B, 0x1173, 0x11B2], NFKC: [0xC747], NFKD: [0x110B, 0x1173, 0x11B2] },
+{ source: [0xC748], NFC: [0xC748], NFD: [0x110B, 0x1173, 0x11B3], NFKC: [0xC748], NFKD: [0x110B, 0x1173, 0x11B3] },
+{ source: [0xC749], NFC: [0xC749], NFD: [0x110B, 0x1173, 0x11B4], NFKC: [0xC749], NFKD: [0x110B, 0x1173, 0x11B4] },
+{ source: [0xC74A], NFC: [0xC74A], NFD: [0x110B, 0x1173, 0x11B5], NFKC: [0xC74A], NFKD: [0x110B, 0x1173, 0x11B5] },
+{ source: [0xC74B], NFC: [0xC74B], NFD: [0x110B, 0x1173, 0x11B6], NFKC: [0xC74B], NFKD: [0x110B, 0x1173, 0x11B6] },
+{ source: [0xC74C], NFC: [0xC74C], NFD: [0x110B, 0x1173, 0x11B7], NFKC: [0xC74C], NFKD: [0x110B, 0x1173, 0x11B7] },
+{ source: [0xC74D], NFC: [0xC74D], NFD: [0x110B, 0x1173, 0x11B8], NFKC: [0xC74D], NFKD: [0x110B, 0x1173, 0x11B8] },
+{ source: [0xC74E], NFC: [0xC74E], NFD: [0x110B, 0x1173, 0x11B9], NFKC: [0xC74E], NFKD: [0x110B, 0x1173, 0x11B9] },
+{ source: [0xC74F], NFC: [0xC74F], NFD: [0x110B, 0x1173, 0x11BA], NFKC: [0xC74F], NFKD: [0x110B, 0x1173, 0x11BA] },
+{ source: [0xC750], NFC: [0xC750], NFD: [0x110B, 0x1173, 0x11BB], NFKC: [0xC750], NFKD: [0x110B, 0x1173, 0x11BB] },
+{ source: [0xC751], NFC: [0xC751], NFD: [0x110B, 0x1173, 0x11BC], NFKC: [0xC751], NFKD: [0x110B, 0x1173, 0x11BC] },
+{ source: [0xC752], NFC: [0xC752], NFD: [0x110B, 0x1173, 0x11BD], NFKC: [0xC752], NFKD: [0x110B, 0x1173, 0x11BD] },
+{ source: [0xC753], NFC: [0xC753], NFD: [0x110B, 0x1173, 0x11BE], NFKC: [0xC753], NFKD: [0x110B, 0x1173, 0x11BE] },
+{ source: [0xC754], NFC: [0xC754], NFD: [0x110B, 0x1173, 0x11BF], NFKC: [0xC754], NFKD: [0x110B, 0x1173, 0x11BF] },
+{ source: [0xC755], NFC: [0xC755], NFD: [0x110B, 0x1173, 0x11C0], NFKC: [0xC755], NFKD: [0x110B, 0x1173, 0x11C0] },
+{ source: [0xC756], NFC: [0xC756], NFD: [0x110B, 0x1173, 0x11C1], NFKC: [0xC756], NFKD: [0x110B, 0x1173, 0x11C1] },
+{ source: [0xC757], NFC: [0xC757], NFD: [0x110B, 0x1173, 0x11C2], NFKC: [0xC757], NFKD: [0x110B, 0x1173, 0x11C2] },
+{ source: [0xC758], NFC: [0xC758], NFD: [0x110B, 0x1174], NFKC: [0xC758], NFKD: [0x110B, 0x1174] },
+{ source: [0xC759], NFC: [0xC759], NFD: [0x110B, 0x1174, 0x11A8], NFKC: [0xC759], NFKD: [0x110B, 0x1174, 0x11A8] },
+{ source: [0xC75A], NFC: [0xC75A], NFD: [0x110B, 0x1174, 0x11A9], NFKC: [0xC75A], NFKD: [0x110B, 0x1174, 0x11A9] },
+{ source: [0xC75B], NFC: [0xC75B], NFD: [0x110B, 0x1174, 0x11AA], NFKC: [0xC75B], NFKD: [0x110B, 0x1174, 0x11AA] },
+{ source: [0xC75C], NFC: [0xC75C], NFD: [0x110B, 0x1174, 0x11AB], NFKC: [0xC75C], NFKD: [0x110B, 0x1174, 0x11AB] },
+{ source: [0xC75D], NFC: [0xC75D], NFD: [0x110B, 0x1174, 0x11AC], NFKC: [0xC75D], NFKD: [0x110B, 0x1174, 0x11AC] },
+{ source: [0xC75E], NFC: [0xC75E], NFD: [0x110B, 0x1174, 0x11AD], NFKC: [0xC75E], NFKD: [0x110B, 0x1174, 0x11AD] },
+{ source: [0xC75F], NFC: [0xC75F], NFD: [0x110B, 0x1174, 0x11AE], NFKC: [0xC75F], NFKD: [0x110B, 0x1174, 0x11AE] },
+{ source: [0xC760], NFC: [0xC760], NFD: [0x110B, 0x1174, 0x11AF], NFKC: [0xC760], NFKD: [0x110B, 0x1174, 0x11AF] },
+{ source: [0xC761], NFC: [0xC761], NFD: [0x110B, 0x1174, 0x11B0], NFKC: [0xC761], NFKD: [0x110B, 0x1174, 0x11B0] },
+{ source: [0xC762], NFC: [0xC762], NFD: [0x110B, 0x1174, 0x11B1], NFKC: [0xC762], NFKD: [0x110B, 0x1174, 0x11B1] },
+{ source: [0xC763], NFC: [0xC763], NFD: [0x110B, 0x1174, 0x11B2], NFKC: [0xC763], NFKD: [0x110B, 0x1174, 0x11B2] },
+{ source: [0xC764], NFC: [0xC764], NFD: [0x110B, 0x1174, 0x11B3], NFKC: [0xC764], NFKD: [0x110B, 0x1174, 0x11B3] },
+{ source: [0xC765], NFC: [0xC765], NFD: [0x110B, 0x1174, 0x11B4], NFKC: [0xC765], NFKD: [0x110B, 0x1174, 0x11B4] },
+{ source: [0xC766], NFC: [0xC766], NFD: [0x110B, 0x1174, 0x11B5], NFKC: [0xC766], NFKD: [0x110B, 0x1174, 0x11B5] },
+{ source: [0xC767], NFC: [0xC767], NFD: [0x110B, 0x1174, 0x11B6], NFKC: [0xC767], NFKD: [0x110B, 0x1174, 0x11B6] },
+{ source: [0xC768], NFC: [0xC768], NFD: [0x110B, 0x1174, 0x11B7], NFKC: [0xC768], NFKD: [0x110B, 0x1174, 0x11B7] },
+{ source: [0xC769], NFC: [0xC769], NFD: [0x110B, 0x1174, 0x11B8], NFKC: [0xC769], NFKD: [0x110B, 0x1174, 0x11B8] },
+{ source: [0xC76A], NFC: [0xC76A], NFD: [0x110B, 0x1174, 0x11B9], NFKC: [0xC76A], NFKD: [0x110B, 0x1174, 0x11B9] },
+{ source: [0xC76B], NFC: [0xC76B], NFD: [0x110B, 0x1174, 0x11BA], NFKC: [0xC76B], NFKD: [0x110B, 0x1174, 0x11BA] },
+{ source: [0xC76C], NFC: [0xC76C], NFD: [0x110B, 0x1174, 0x11BB], NFKC: [0xC76C], NFKD: [0x110B, 0x1174, 0x11BB] },
+{ source: [0xC76D], NFC: [0xC76D], NFD: [0x110B, 0x1174, 0x11BC], NFKC: [0xC76D], NFKD: [0x110B, 0x1174, 0x11BC] },
+{ source: [0xC76E], NFC: [0xC76E], NFD: [0x110B, 0x1174, 0x11BD], NFKC: [0xC76E], NFKD: [0x110B, 0x1174, 0x11BD] },
+{ source: [0xC76F], NFC: [0xC76F], NFD: [0x110B, 0x1174, 0x11BE], NFKC: [0xC76F], NFKD: [0x110B, 0x1174, 0x11BE] },
+{ source: [0xC770], NFC: [0xC770], NFD: [0x110B, 0x1174, 0x11BF], NFKC: [0xC770], NFKD: [0x110B, 0x1174, 0x11BF] },
+{ source: [0xC771], NFC: [0xC771], NFD: [0x110B, 0x1174, 0x11C0], NFKC: [0xC771], NFKD: [0x110B, 0x1174, 0x11C0] },
+{ source: [0xC772], NFC: [0xC772], NFD: [0x110B, 0x1174, 0x11C1], NFKC: [0xC772], NFKD: [0x110B, 0x1174, 0x11C1] },
+{ source: [0xC773], NFC: [0xC773], NFD: [0x110B, 0x1174, 0x11C2], NFKC: [0xC773], NFKD: [0x110B, 0x1174, 0x11C2] },
+{ source: [0xC774], NFC: [0xC774], NFD: [0x110B, 0x1175], NFKC: [0xC774], NFKD: [0x110B, 0x1175] },
+{ source: [0xC775], NFC: [0xC775], NFD: [0x110B, 0x1175, 0x11A8], NFKC: [0xC775], NFKD: [0x110B, 0x1175, 0x11A8] },
+{ source: [0xC776], NFC: [0xC776], NFD: [0x110B, 0x1175, 0x11A9], NFKC: [0xC776], NFKD: [0x110B, 0x1175, 0x11A9] },
+{ source: [0xC777], NFC: [0xC777], NFD: [0x110B, 0x1175, 0x11AA], NFKC: [0xC777], NFKD: [0x110B, 0x1175, 0x11AA] },
+{ source: [0xC778], NFC: [0xC778], NFD: [0x110B, 0x1175, 0x11AB], NFKC: [0xC778], NFKD: [0x110B, 0x1175, 0x11AB] },
+{ source: [0xC779], NFC: [0xC779], NFD: [0x110B, 0x1175, 0x11AC], NFKC: [0xC779], NFKD: [0x110B, 0x1175, 0x11AC] },
+{ source: [0xC77A], NFC: [0xC77A], NFD: [0x110B, 0x1175, 0x11AD], NFKC: [0xC77A], NFKD: [0x110B, 0x1175, 0x11AD] },
+{ source: [0xC77B], NFC: [0xC77B], NFD: [0x110B, 0x1175, 0x11AE], NFKC: [0xC77B], NFKD: [0x110B, 0x1175, 0x11AE] },
+{ source: [0xC77C], NFC: [0xC77C], NFD: [0x110B, 0x1175, 0x11AF], NFKC: [0xC77C], NFKD: [0x110B, 0x1175, 0x11AF] },
+{ source: [0xC77D], NFC: [0xC77D], NFD: [0x110B, 0x1175, 0x11B0], NFKC: [0xC77D], NFKD: [0x110B, 0x1175, 0x11B0] },
+{ source: [0xC77E], NFC: [0xC77E], NFD: [0x110B, 0x1175, 0x11B1], NFKC: [0xC77E], NFKD: [0x110B, 0x1175, 0x11B1] },
+{ source: [0xC77F], NFC: [0xC77F], NFD: [0x110B, 0x1175, 0x11B2], NFKC: [0xC77F], NFKD: [0x110B, 0x1175, 0x11B2] },
+{ source: [0xC780], NFC: [0xC780], NFD: [0x110B, 0x1175, 0x11B3], NFKC: [0xC780], NFKD: [0x110B, 0x1175, 0x11B3] },
+{ source: [0xC781], NFC: [0xC781], NFD: [0x110B, 0x1175, 0x11B4], NFKC: [0xC781], NFKD: [0x110B, 0x1175, 0x11B4] },
+{ source: [0xC782], NFC: [0xC782], NFD: [0x110B, 0x1175, 0x11B5], NFKC: [0xC782], NFKD: [0x110B, 0x1175, 0x11B5] },
+{ source: [0xC783], NFC: [0xC783], NFD: [0x110B, 0x1175, 0x11B6], NFKC: [0xC783], NFKD: [0x110B, 0x1175, 0x11B6] },
+{ source: [0xC784], NFC: [0xC784], NFD: [0x110B, 0x1175, 0x11B7], NFKC: [0xC784], NFKD: [0x110B, 0x1175, 0x11B7] },
+{ source: [0xC785], NFC: [0xC785], NFD: [0x110B, 0x1175, 0x11B8], NFKC: [0xC785], NFKD: [0x110B, 0x1175, 0x11B8] },
+{ source: [0xC786], NFC: [0xC786], NFD: [0x110B, 0x1175, 0x11B9], NFKC: [0xC786], NFKD: [0x110B, 0x1175, 0x11B9] },
+{ source: [0xC787], NFC: [0xC787], NFD: [0x110B, 0x1175, 0x11BA], NFKC: [0xC787], NFKD: [0x110B, 0x1175, 0x11BA] },
+{ source: [0xC788], NFC: [0xC788], NFD: [0x110B, 0x1175, 0x11BB], NFKC: [0xC788], NFKD: [0x110B, 0x1175, 0x11BB] },
+{ source: [0xC789], NFC: [0xC789], NFD: [0x110B, 0x1175, 0x11BC], NFKC: [0xC789], NFKD: [0x110B, 0x1175, 0x11BC] },
+{ source: [0xC78A], NFC: [0xC78A], NFD: [0x110B, 0x1175, 0x11BD], NFKC: [0xC78A], NFKD: [0x110B, 0x1175, 0x11BD] },
+{ source: [0xC78B], NFC: [0xC78B], NFD: [0x110B, 0x1175, 0x11BE], NFKC: [0xC78B], NFKD: [0x110B, 0x1175, 0x11BE] },
+{ source: [0xC78C], NFC: [0xC78C], NFD: [0x110B, 0x1175, 0x11BF], NFKC: [0xC78C], NFKD: [0x110B, 0x1175, 0x11BF] },
+{ source: [0xC78D], NFC: [0xC78D], NFD: [0x110B, 0x1175, 0x11C0], NFKC: [0xC78D], NFKD: [0x110B, 0x1175, 0x11C0] },
+{ source: [0xC78E], NFC: [0xC78E], NFD: [0x110B, 0x1175, 0x11C1], NFKC: [0xC78E], NFKD: [0x110B, 0x1175, 0x11C1] },
+{ source: [0xC78F], NFC: [0xC78F], NFD: [0x110B, 0x1175, 0x11C2], NFKC: [0xC78F], NFKD: [0x110B, 0x1175, 0x11C2] },
+{ source: [0xC790], NFC: [0xC790], NFD: [0x110C, 0x1161], NFKC: [0xC790], NFKD: [0x110C, 0x1161] },
+{ source: [0xC791], NFC: [0xC791], NFD: [0x110C, 0x1161, 0x11A8], NFKC: [0xC791], NFKD: [0x110C, 0x1161, 0x11A8] },
+{ source: [0xC792], NFC: [0xC792], NFD: [0x110C, 0x1161, 0x11A9], NFKC: [0xC792], NFKD: [0x110C, 0x1161, 0x11A9] },
+{ source: [0xC793], NFC: [0xC793], NFD: [0x110C, 0x1161, 0x11AA], NFKC: [0xC793], NFKD: [0x110C, 0x1161, 0x11AA] },
+{ source: [0xC794], NFC: [0xC794], NFD: [0x110C, 0x1161, 0x11AB], NFKC: [0xC794], NFKD: [0x110C, 0x1161, 0x11AB] },
+{ source: [0xC795], NFC: [0xC795], NFD: [0x110C, 0x1161, 0x11AC], NFKC: [0xC795], NFKD: [0x110C, 0x1161, 0x11AC] },
+{ source: [0xC796], NFC: [0xC796], NFD: [0x110C, 0x1161, 0x11AD], NFKC: [0xC796], NFKD: [0x110C, 0x1161, 0x11AD] },
+{ source: [0xC797], NFC: [0xC797], NFD: [0x110C, 0x1161, 0x11AE], NFKC: [0xC797], NFKD: [0x110C, 0x1161, 0x11AE] },
+{ source: [0xC798], NFC: [0xC798], NFD: [0x110C, 0x1161, 0x11AF], NFKC: [0xC798], NFKD: [0x110C, 0x1161, 0x11AF] },
+{ source: [0xC799], NFC: [0xC799], NFD: [0x110C, 0x1161, 0x11B0], NFKC: [0xC799], NFKD: [0x110C, 0x1161, 0x11B0] },
+{ source: [0xC79A], NFC: [0xC79A], NFD: [0x110C, 0x1161, 0x11B1], NFKC: [0xC79A], NFKD: [0x110C, 0x1161, 0x11B1] },
+{ source: [0xC79B], NFC: [0xC79B], NFD: [0x110C, 0x1161, 0x11B2], NFKC: [0xC79B], NFKD: [0x110C, 0x1161, 0x11B2] },
+{ source: [0xC79C], NFC: [0xC79C], NFD: [0x110C, 0x1161, 0x11B3], NFKC: [0xC79C], NFKD: [0x110C, 0x1161, 0x11B3] },
+{ source: [0xC79D], NFC: [0xC79D], NFD: [0x110C, 0x1161, 0x11B4], NFKC: [0xC79D], NFKD: [0x110C, 0x1161, 0x11B4] },
+{ source: [0xC79E], NFC: [0xC79E], NFD: [0x110C, 0x1161, 0x11B5], NFKC: [0xC79E], NFKD: [0x110C, 0x1161, 0x11B5] },
+{ source: [0xC79F], NFC: [0xC79F], NFD: [0x110C, 0x1161, 0x11B6], NFKC: [0xC79F], NFKD: [0x110C, 0x1161, 0x11B6] },
+{ source: [0xC7A0], NFC: [0xC7A0], NFD: [0x110C, 0x1161, 0x11B7], NFKC: [0xC7A0], NFKD: [0x110C, 0x1161, 0x11B7] },
+{ source: [0xC7A1], NFC: [0xC7A1], NFD: [0x110C, 0x1161, 0x11B8], NFKC: [0xC7A1], NFKD: [0x110C, 0x1161, 0x11B8] },
+{ source: [0xC7A2], NFC: [0xC7A2], NFD: [0x110C, 0x1161, 0x11B9], NFKC: [0xC7A2], NFKD: [0x110C, 0x1161, 0x11B9] },
+{ source: [0xC7A3], NFC: [0xC7A3], NFD: [0x110C, 0x1161, 0x11BA], NFKC: [0xC7A3], NFKD: [0x110C, 0x1161, 0x11BA] },
+{ source: [0xC7A4], NFC: [0xC7A4], NFD: [0x110C, 0x1161, 0x11BB], NFKC: [0xC7A4], NFKD: [0x110C, 0x1161, 0x11BB] },
+{ source: [0xC7A5], NFC: [0xC7A5], NFD: [0x110C, 0x1161, 0x11BC], NFKC: [0xC7A5], NFKD: [0x110C, 0x1161, 0x11BC] },
+{ source: [0xC7A6], NFC: [0xC7A6], NFD: [0x110C, 0x1161, 0x11BD], NFKC: [0xC7A6], NFKD: [0x110C, 0x1161, 0x11BD] },
+{ source: [0xC7A7], NFC: [0xC7A7], NFD: [0x110C, 0x1161, 0x11BE], NFKC: [0xC7A7], NFKD: [0x110C, 0x1161, 0x11BE] },
+{ source: [0xC7A8], NFC: [0xC7A8], NFD: [0x110C, 0x1161, 0x11BF], NFKC: [0xC7A8], NFKD: [0x110C, 0x1161, 0x11BF] },
+{ source: [0xC7A9], NFC: [0xC7A9], NFD: [0x110C, 0x1161, 0x11C0], NFKC: [0xC7A9], NFKD: [0x110C, 0x1161, 0x11C0] },
+{ source: [0xC7AA], NFC: [0xC7AA], NFD: [0x110C, 0x1161, 0x11C1], NFKC: [0xC7AA], NFKD: [0x110C, 0x1161, 0x11C1] },
+{ source: [0xC7AB], NFC: [0xC7AB], NFD: [0x110C, 0x1161, 0x11C2], NFKC: [0xC7AB], NFKD: [0x110C, 0x1161, 0x11C2] },
+{ source: [0xC7AC], NFC: [0xC7AC], NFD: [0x110C, 0x1162], NFKC: [0xC7AC], NFKD: [0x110C, 0x1162] },
+{ source: [0xC7AD], NFC: [0xC7AD], NFD: [0x110C, 0x1162, 0x11A8], NFKC: [0xC7AD], NFKD: [0x110C, 0x1162, 0x11A8] },
+{ source: [0xC7AE], NFC: [0xC7AE], NFD: [0x110C, 0x1162, 0x11A9], NFKC: [0xC7AE], NFKD: [0x110C, 0x1162, 0x11A9] },
+{ source: [0xC7AF], NFC: [0xC7AF], NFD: [0x110C, 0x1162, 0x11AA], NFKC: [0xC7AF], NFKD: [0x110C, 0x1162, 0x11AA] },
+{ source: [0xC7B0], NFC: [0xC7B0], NFD: [0x110C, 0x1162, 0x11AB], NFKC: [0xC7B0], NFKD: [0x110C, 0x1162, 0x11AB] },
+{ source: [0xC7B1], NFC: [0xC7B1], NFD: [0x110C, 0x1162, 0x11AC], NFKC: [0xC7B1], NFKD: [0x110C, 0x1162, 0x11AC] },
+{ source: [0xC7B2], NFC: [0xC7B2], NFD: [0x110C, 0x1162, 0x11AD], NFKC: [0xC7B2], NFKD: [0x110C, 0x1162, 0x11AD] },
+{ source: [0xC7B3], NFC: [0xC7B3], NFD: [0x110C, 0x1162, 0x11AE], NFKC: [0xC7B3], NFKD: [0x110C, 0x1162, 0x11AE] },
+{ source: [0xC7B4], NFC: [0xC7B4], NFD: [0x110C, 0x1162, 0x11AF], NFKC: [0xC7B4], NFKD: [0x110C, 0x1162, 0x11AF] },
+{ source: [0xC7B5], NFC: [0xC7B5], NFD: [0x110C, 0x1162, 0x11B0], NFKC: [0xC7B5], NFKD: [0x110C, 0x1162, 0x11B0] },
+{ source: [0xC7B6], NFC: [0xC7B6], NFD: [0x110C, 0x1162, 0x11B1], NFKC: [0xC7B6], NFKD: [0x110C, 0x1162, 0x11B1] },
+{ source: [0xC7B7], NFC: [0xC7B7], NFD: [0x110C, 0x1162, 0x11B2], NFKC: [0xC7B7], NFKD: [0x110C, 0x1162, 0x11B2] },
+{ source: [0xC7B8], NFC: [0xC7B8], NFD: [0x110C, 0x1162, 0x11B3], NFKC: [0xC7B8], NFKD: [0x110C, 0x1162, 0x11B3] },
+{ source: [0xC7B9], NFC: [0xC7B9], NFD: [0x110C, 0x1162, 0x11B4], NFKC: [0xC7B9], NFKD: [0x110C, 0x1162, 0x11B4] },
+{ source: [0xC7BA], NFC: [0xC7BA], NFD: [0x110C, 0x1162, 0x11B5], NFKC: [0xC7BA], NFKD: [0x110C, 0x1162, 0x11B5] },
+{ source: [0xC7BB], NFC: [0xC7BB], NFD: [0x110C, 0x1162, 0x11B6], NFKC: [0xC7BB], NFKD: [0x110C, 0x1162, 0x11B6] },
+{ source: [0xC7BC], NFC: [0xC7BC], NFD: [0x110C, 0x1162, 0x11B7], NFKC: [0xC7BC], NFKD: [0x110C, 0x1162, 0x11B7] },
+{ source: [0xC7BD], NFC: [0xC7BD], NFD: [0x110C, 0x1162, 0x11B8], NFKC: [0xC7BD], NFKD: [0x110C, 0x1162, 0x11B8] },
+{ source: [0xC7BE], NFC: [0xC7BE], NFD: [0x110C, 0x1162, 0x11B9], NFKC: [0xC7BE], NFKD: [0x110C, 0x1162, 0x11B9] },
+{ source: [0xC7BF], NFC: [0xC7BF], NFD: [0x110C, 0x1162, 0x11BA], NFKC: [0xC7BF], NFKD: [0x110C, 0x1162, 0x11BA] },
+{ source: [0xC7C0], NFC: [0xC7C0], NFD: [0x110C, 0x1162, 0x11BB], NFKC: [0xC7C0], NFKD: [0x110C, 0x1162, 0x11BB] },
+{ source: [0xC7C1], NFC: [0xC7C1], NFD: [0x110C, 0x1162, 0x11BC], NFKC: [0xC7C1], NFKD: [0x110C, 0x1162, 0x11BC] },
+{ source: [0xC7C2], NFC: [0xC7C2], NFD: [0x110C, 0x1162, 0x11BD], NFKC: [0xC7C2], NFKD: [0x110C, 0x1162, 0x11BD] },
+{ source: [0xC7C3], NFC: [0xC7C3], NFD: [0x110C, 0x1162, 0x11BE], NFKC: [0xC7C3], NFKD: [0x110C, 0x1162, 0x11BE] },
+{ source: [0xC7C4], NFC: [0xC7C4], NFD: [0x110C, 0x1162, 0x11BF], NFKC: [0xC7C4], NFKD: [0x110C, 0x1162, 0x11BF] },
+{ source: [0xC7C5], NFC: [0xC7C5], NFD: [0x110C, 0x1162, 0x11C0], NFKC: [0xC7C5], NFKD: [0x110C, 0x1162, 0x11C0] },
+{ source: [0xC7C6], NFC: [0xC7C6], NFD: [0x110C, 0x1162, 0x11C1], NFKC: [0xC7C6], NFKD: [0x110C, 0x1162, 0x11C1] },
+{ source: [0xC7C7], NFC: [0xC7C7], NFD: [0x110C, 0x1162, 0x11C2], NFKC: [0xC7C7], NFKD: [0x110C, 0x1162, 0x11C2] },
+{ source: [0xC7C8], NFC: [0xC7C8], NFD: [0x110C, 0x1163], NFKC: [0xC7C8], NFKD: [0x110C, 0x1163] },
+{ source: [0xC7C9], NFC: [0xC7C9], NFD: [0x110C, 0x1163, 0x11A8], NFKC: [0xC7C9], NFKD: [0x110C, 0x1163, 0x11A8] },
+{ source: [0xC7CA], NFC: [0xC7CA], NFD: [0x110C, 0x1163, 0x11A9], NFKC: [0xC7CA], NFKD: [0x110C, 0x1163, 0x11A9] },
+{ source: [0xC7CB], NFC: [0xC7CB], NFD: [0x110C, 0x1163, 0x11AA], NFKC: [0xC7CB], NFKD: [0x110C, 0x1163, 0x11AA] },
+{ source: [0xC7CC], NFC: [0xC7CC], NFD: [0x110C, 0x1163, 0x11AB], NFKC: [0xC7CC], NFKD: [0x110C, 0x1163, 0x11AB] },
+{ source: [0xC7CD], NFC: [0xC7CD], NFD: [0x110C, 0x1163, 0x11AC], NFKC: [0xC7CD], NFKD: [0x110C, 0x1163, 0x11AC] },
+{ source: [0xC7CE], NFC: [0xC7CE], NFD: [0x110C, 0x1163, 0x11AD], NFKC: [0xC7CE], NFKD: [0x110C, 0x1163, 0x11AD] },
+{ source: [0xC7CF], NFC: [0xC7CF], NFD: [0x110C, 0x1163, 0x11AE], NFKC: [0xC7CF], NFKD: [0x110C, 0x1163, 0x11AE] },
+{ source: [0xC7D0], NFC: [0xC7D0], NFD: [0x110C, 0x1163, 0x11AF], NFKC: [0xC7D0], NFKD: [0x110C, 0x1163, 0x11AF] },
+{ source: [0xC7D1], NFC: [0xC7D1], NFD: [0x110C, 0x1163, 0x11B0], NFKC: [0xC7D1], NFKD: [0x110C, 0x1163, 0x11B0] },
+{ source: [0xC7D2], NFC: [0xC7D2], NFD: [0x110C, 0x1163, 0x11B1], NFKC: [0xC7D2], NFKD: [0x110C, 0x1163, 0x11B1] },
+{ source: [0xC7D3], NFC: [0xC7D3], NFD: [0x110C, 0x1163, 0x11B2], NFKC: [0xC7D3], NFKD: [0x110C, 0x1163, 0x11B2] },
+{ source: [0xC7D4], NFC: [0xC7D4], NFD: [0x110C, 0x1163, 0x11B3], NFKC: [0xC7D4], NFKD: [0x110C, 0x1163, 0x11B3] },
+{ source: [0xC7D5], NFC: [0xC7D5], NFD: [0x110C, 0x1163, 0x11B4], NFKC: [0xC7D5], NFKD: [0x110C, 0x1163, 0x11B4] },
+{ source: [0xC7D6], NFC: [0xC7D6], NFD: [0x110C, 0x1163, 0x11B5], NFKC: [0xC7D6], NFKD: [0x110C, 0x1163, 0x11B5] },
+{ source: [0xC7D7], NFC: [0xC7D7], NFD: [0x110C, 0x1163, 0x11B6], NFKC: [0xC7D7], NFKD: [0x110C, 0x1163, 0x11B6] },
+{ source: [0xC7D8], NFC: [0xC7D8], NFD: [0x110C, 0x1163, 0x11B7], NFKC: [0xC7D8], NFKD: [0x110C, 0x1163, 0x11B7] },
+{ source: [0xC7D9], NFC: [0xC7D9], NFD: [0x110C, 0x1163, 0x11B8], NFKC: [0xC7D9], NFKD: [0x110C, 0x1163, 0x11B8] },
+{ source: [0xC7DA], NFC: [0xC7DA], NFD: [0x110C, 0x1163, 0x11B9], NFKC: [0xC7DA], NFKD: [0x110C, 0x1163, 0x11B9] },
+{ source: [0xC7DB], NFC: [0xC7DB], NFD: [0x110C, 0x1163, 0x11BA], NFKC: [0xC7DB], NFKD: [0x110C, 0x1163, 0x11BA] },
+{ source: [0xC7DC], NFC: [0xC7DC], NFD: [0x110C, 0x1163, 0x11BB], NFKC: [0xC7DC], NFKD: [0x110C, 0x1163, 0x11BB] },
+{ source: [0xC7DD], NFC: [0xC7DD], NFD: [0x110C, 0x1163, 0x11BC], NFKC: [0xC7DD], NFKD: [0x110C, 0x1163, 0x11BC] },
+{ source: [0xC7DE], NFC: [0xC7DE], NFD: [0x110C, 0x1163, 0x11BD], NFKC: [0xC7DE], NFKD: [0x110C, 0x1163, 0x11BD] },
+{ source: [0xC7DF], NFC: [0xC7DF], NFD: [0x110C, 0x1163, 0x11BE], NFKC: [0xC7DF], NFKD: [0x110C, 0x1163, 0x11BE] },
+{ source: [0xC7E0], NFC: [0xC7E0], NFD: [0x110C, 0x1163, 0x11BF], NFKC: [0xC7E0], NFKD: [0x110C, 0x1163, 0x11BF] },
+{ source: [0xC7E1], NFC: [0xC7E1], NFD: [0x110C, 0x1163, 0x11C0], NFKC: [0xC7E1], NFKD: [0x110C, 0x1163, 0x11C0] },
+{ source: [0xC7E2], NFC: [0xC7E2], NFD: [0x110C, 0x1163, 0x11C1], NFKC: [0xC7E2], NFKD: [0x110C, 0x1163, 0x11C1] },
+{ source: [0xC7E3], NFC: [0xC7E3], NFD: [0x110C, 0x1163, 0x11C2], NFKC: [0xC7E3], NFKD: [0x110C, 0x1163, 0x11C2] },
+{ source: [0xC7E4], NFC: [0xC7E4], NFD: [0x110C, 0x1164], NFKC: [0xC7E4], NFKD: [0x110C, 0x1164] },
+{ source: [0xC7E5], NFC: [0xC7E5], NFD: [0x110C, 0x1164, 0x11A8], NFKC: [0xC7E5], NFKD: [0x110C, 0x1164, 0x11A8] },
+{ source: [0xC7E6], NFC: [0xC7E6], NFD: [0x110C, 0x1164, 0x11A9], NFKC: [0xC7E6], NFKD: [0x110C, 0x1164, 0x11A9] },
+{ source: [0xC7E7], NFC: [0xC7E7], NFD: [0x110C, 0x1164, 0x11AA], NFKC: [0xC7E7], NFKD: [0x110C, 0x1164, 0x11AA] },
+{ source: [0xC7E8], NFC: [0xC7E8], NFD: [0x110C, 0x1164, 0x11AB], NFKC: [0xC7E8], NFKD: [0x110C, 0x1164, 0x11AB] },
+{ source: [0xC7E9], NFC: [0xC7E9], NFD: [0x110C, 0x1164, 0x11AC], NFKC: [0xC7E9], NFKD: [0x110C, 0x1164, 0x11AC] },
+{ source: [0xC7EA], NFC: [0xC7EA], NFD: [0x110C, 0x1164, 0x11AD], NFKC: [0xC7EA], NFKD: [0x110C, 0x1164, 0x11AD] },
+{ source: [0xC7EB], NFC: [0xC7EB], NFD: [0x110C, 0x1164, 0x11AE], NFKC: [0xC7EB], NFKD: [0x110C, 0x1164, 0x11AE] },
+{ source: [0xC7EC], NFC: [0xC7EC], NFD: [0x110C, 0x1164, 0x11AF], NFKC: [0xC7EC], NFKD: [0x110C, 0x1164, 0x11AF] },
+{ source: [0xC7ED], NFC: [0xC7ED], NFD: [0x110C, 0x1164, 0x11B0], NFKC: [0xC7ED], NFKD: [0x110C, 0x1164, 0x11B0] },
+{ source: [0xC7EE], NFC: [0xC7EE], NFD: [0x110C, 0x1164, 0x11B1], NFKC: [0xC7EE], NFKD: [0x110C, 0x1164, 0x11B1] },
+{ source: [0xC7EF], NFC: [0xC7EF], NFD: [0x110C, 0x1164, 0x11B2], NFKC: [0xC7EF], NFKD: [0x110C, 0x1164, 0x11B2] },
+{ source: [0xC7F0], NFC: [0xC7F0], NFD: [0x110C, 0x1164, 0x11B3], NFKC: [0xC7F0], NFKD: [0x110C, 0x1164, 0x11B3] },
+{ source: [0xC7F1], NFC: [0xC7F1], NFD: [0x110C, 0x1164, 0x11B4], NFKC: [0xC7F1], NFKD: [0x110C, 0x1164, 0x11B4] },
+{ source: [0xC7F2], NFC: [0xC7F2], NFD: [0x110C, 0x1164, 0x11B5], NFKC: [0xC7F2], NFKD: [0x110C, 0x1164, 0x11B5] },
+{ source: [0xC7F3], NFC: [0xC7F3], NFD: [0x110C, 0x1164, 0x11B6], NFKC: [0xC7F3], NFKD: [0x110C, 0x1164, 0x11B6] },
+{ source: [0xC7F4], NFC: [0xC7F4], NFD: [0x110C, 0x1164, 0x11B7], NFKC: [0xC7F4], NFKD: [0x110C, 0x1164, 0x11B7] },
+{ source: [0xC7F5], NFC: [0xC7F5], NFD: [0x110C, 0x1164, 0x11B8], NFKC: [0xC7F5], NFKD: [0x110C, 0x1164, 0x11B8] },
+{ source: [0xC7F6], NFC: [0xC7F6], NFD: [0x110C, 0x1164, 0x11B9], NFKC: [0xC7F6], NFKD: [0x110C, 0x1164, 0x11B9] },
+{ source: [0xC7F7], NFC: [0xC7F7], NFD: [0x110C, 0x1164, 0x11BA], NFKC: [0xC7F7], NFKD: [0x110C, 0x1164, 0x11BA] },
+{ source: [0xC7F8], NFC: [0xC7F8], NFD: [0x110C, 0x1164, 0x11BB], NFKC: [0xC7F8], NFKD: [0x110C, 0x1164, 0x11BB] },
+{ source: [0xC7F9], NFC: [0xC7F9], NFD: [0x110C, 0x1164, 0x11BC], NFKC: [0xC7F9], NFKD: [0x110C, 0x1164, 0x11BC] },
+{ source: [0xC7FA], NFC: [0xC7FA], NFD: [0x110C, 0x1164, 0x11BD], NFKC: [0xC7FA], NFKD: [0x110C, 0x1164, 0x11BD] },
+{ source: [0xC7FB], NFC: [0xC7FB], NFD: [0x110C, 0x1164, 0x11BE], NFKC: [0xC7FB], NFKD: [0x110C, 0x1164, 0x11BE] },
+{ source: [0xC7FC], NFC: [0xC7FC], NFD: [0x110C, 0x1164, 0x11BF], NFKC: [0xC7FC], NFKD: [0x110C, 0x1164, 0x11BF] },
+{ source: [0xC7FD], NFC: [0xC7FD], NFD: [0x110C, 0x1164, 0x11C0], NFKC: [0xC7FD], NFKD: [0x110C, 0x1164, 0x11C0] },
+{ source: [0xC7FE], NFC: [0xC7FE], NFD: [0x110C, 0x1164, 0x11C1], NFKC: [0xC7FE], NFKD: [0x110C, 0x1164, 0x11C1] },
+{ source: [0xC7FF], NFC: [0xC7FF], NFD: [0x110C, 0x1164, 0x11C2], NFKC: [0xC7FF], NFKD: [0x110C, 0x1164, 0x11C2] },
+{ source: [0xC800], NFC: [0xC800], NFD: [0x110C, 0x1165], NFKC: [0xC800], NFKD: [0x110C, 0x1165] },
+{ source: [0xC801], NFC: [0xC801], NFD: [0x110C, 0x1165, 0x11A8], NFKC: [0xC801], NFKD: [0x110C, 0x1165, 0x11A8] },
+{ source: [0xC802], NFC: [0xC802], NFD: [0x110C, 0x1165, 0x11A9], NFKC: [0xC802], NFKD: [0x110C, 0x1165, 0x11A9] },
+{ source: [0xC803], NFC: [0xC803], NFD: [0x110C, 0x1165, 0x11AA], NFKC: [0xC803], NFKD: [0x110C, 0x1165, 0x11AA] },
+{ source: [0xC804], NFC: [0xC804], NFD: [0x110C, 0x1165, 0x11AB], NFKC: [0xC804], NFKD: [0x110C, 0x1165, 0x11AB] },
+{ source: [0xC805], NFC: [0xC805], NFD: [0x110C, 0x1165, 0x11AC], NFKC: [0xC805], NFKD: [0x110C, 0x1165, 0x11AC] },
+{ source: [0xC806], NFC: [0xC806], NFD: [0x110C, 0x1165, 0x11AD], NFKC: [0xC806], NFKD: [0x110C, 0x1165, 0x11AD] },
+{ source: [0xC807], NFC: [0xC807], NFD: [0x110C, 0x1165, 0x11AE], NFKC: [0xC807], NFKD: [0x110C, 0x1165, 0x11AE] },
+{ source: [0xC808], NFC: [0xC808], NFD: [0x110C, 0x1165, 0x11AF], NFKC: [0xC808], NFKD: [0x110C, 0x1165, 0x11AF] },
+{ source: [0xC809], NFC: [0xC809], NFD: [0x110C, 0x1165, 0x11B0], NFKC: [0xC809], NFKD: [0x110C, 0x1165, 0x11B0] },
+{ source: [0xC80A], NFC: [0xC80A], NFD: [0x110C, 0x1165, 0x11B1], NFKC: [0xC80A], NFKD: [0x110C, 0x1165, 0x11B1] },
+{ source: [0xC80B], NFC: [0xC80B], NFD: [0x110C, 0x1165, 0x11B2], NFKC: [0xC80B], NFKD: [0x110C, 0x1165, 0x11B2] },
+{ source: [0xC80C], NFC: [0xC80C], NFD: [0x110C, 0x1165, 0x11B3], NFKC: [0xC80C], NFKD: [0x110C, 0x1165, 0x11B3] },
+{ source: [0xC80D], NFC: [0xC80D], NFD: [0x110C, 0x1165, 0x11B4], NFKC: [0xC80D], NFKD: [0x110C, 0x1165, 0x11B4] },
+{ source: [0xC80E], NFC: [0xC80E], NFD: [0x110C, 0x1165, 0x11B5], NFKC: [0xC80E], NFKD: [0x110C, 0x1165, 0x11B5] },
+{ source: [0xC80F], NFC: [0xC80F], NFD: [0x110C, 0x1165, 0x11B6], NFKC: [0xC80F], NFKD: [0x110C, 0x1165, 0x11B6] },
+{ source: [0xC810], NFC: [0xC810], NFD: [0x110C, 0x1165, 0x11B7], NFKC: [0xC810], NFKD: [0x110C, 0x1165, 0x11B7] },
+{ source: [0xC811], NFC: [0xC811], NFD: [0x110C, 0x1165, 0x11B8], NFKC: [0xC811], NFKD: [0x110C, 0x1165, 0x11B8] },
+{ source: [0xC812], NFC: [0xC812], NFD: [0x110C, 0x1165, 0x11B9], NFKC: [0xC812], NFKD: [0x110C, 0x1165, 0x11B9] },
+{ source: [0xC813], NFC: [0xC813], NFD: [0x110C, 0x1165, 0x11BA], NFKC: [0xC813], NFKD: [0x110C, 0x1165, 0x11BA] },
+{ source: [0xC814], NFC: [0xC814], NFD: [0x110C, 0x1165, 0x11BB], NFKC: [0xC814], NFKD: [0x110C, 0x1165, 0x11BB] },
+{ source: [0xC815], NFC: [0xC815], NFD: [0x110C, 0x1165, 0x11BC], NFKC: [0xC815], NFKD: [0x110C, 0x1165, 0x11BC] },
+{ source: [0xC816], NFC: [0xC816], NFD: [0x110C, 0x1165, 0x11BD], NFKC: [0xC816], NFKD: [0x110C, 0x1165, 0x11BD] },
+{ source: [0xC817], NFC: [0xC817], NFD: [0x110C, 0x1165, 0x11BE], NFKC: [0xC817], NFKD: [0x110C, 0x1165, 0x11BE] },
+{ source: [0xC818], NFC: [0xC818], NFD: [0x110C, 0x1165, 0x11BF], NFKC: [0xC818], NFKD: [0x110C, 0x1165, 0x11BF] },
+{ source: [0xC819], NFC: [0xC819], NFD: [0x110C, 0x1165, 0x11C0], NFKC: [0xC819], NFKD: [0x110C, 0x1165, 0x11C0] },
+{ source: [0xC81A], NFC: [0xC81A], NFD: [0x110C, 0x1165, 0x11C1], NFKC: [0xC81A], NFKD: [0x110C, 0x1165, 0x11C1] },
+{ source: [0xC81B], NFC: [0xC81B], NFD: [0x110C, 0x1165, 0x11C2], NFKC: [0xC81B], NFKD: [0x110C, 0x1165, 0x11C2] },
+{ source: [0xC81C], NFC: [0xC81C], NFD: [0x110C, 0x1166], NFKC: [0xC81C], NFKD: [0x110C, 0x1166] },
+{ source: [0xC81D], NFC: [0xC81D], NFD: [0x110C, 0x1166, 0x11A8], NFKC: [0xC81D], NFKD: [0x110C, 0x1166, 0x11A8] },
+{ source: [0xC81E], NFC: [0xC81E], NFD: [0x110C, 0x1166, 0x11A9], NFKC: [0xC81E], NFKD: [0x110C, 0x1166, 0x11A9] },
+{ source: [0xC81F], NFC: [0xC81F], NFD: [0x110C, 0x1166, 0x11AA], NFKC: [0xC81F], NFKD: [0x110C, 0x1166, 0x11AA] },
+{ source: [0xC820], NFC: [0xC820], NFD: [0x110C, 0x1166, 0x11AB], NFKC: [0xC820], NFKD: [0x110C, 0x1166, 0x11AB] },
+{ source: [0xC821], NFC: [0xC821], NFD: [0x110C, 0x1166, 0x11AC], NFKC: [0xC821], NFKD: [0x110C, 0x1166, 0x11AC] },
+{ source: [0xC822], NFC: [0xC822], NFD: [0x110C, 0x1166, 0x11AD], NFKC: [0xC822], NFKD: [0x110C, 0x1166, 0x11AD] },
+{ source: [0xC823], NFC: [0xC823], NFD: [0x110C, 0x1166, 0x11AE], NFKC: [0xC823], NFKD: [0x110C, 0x1166, 0x11AE] },
+{ source: [0xC824], NFC: [0xC824], NFD: [0x110C, 0x1166, 0x11AF], NFKC: [0xC824], NFKD: [0x110C, 0x1166, 0x11AF] },
+{ source: [0xC825], NFC: [0xC825], NFD: [0x110C, 0x1166, 0x11B0], NFKC: [0xC825], NFKD: [0x110C, 0x1166, 0x11B0] },
+{ source: [0xC826], NFC: [0xC826], NFD: [0x110C, 0x1166, 0x11B1], NFKC: [0xC826], NFKD: [0x110C, 0x1166, 0x11B1] },
+{ source: [0xC827], NFC: [0xC827], NFD: [0x110C, 0x1166, 0x11B2], NFKC: [0xC827], NFKD: [0x110C, 0x1166, 0x11B2] },
+{ source: [0xC828], NFC: [0xC828], NFD: [0x110C, 0x1166, 0x11B3], NFKC: [0xC828], NFKD: [0x110C, 0x1166, 0x11B3] },
+{ source: [0xC829], NFC: [0xC829], NFD: [0x110C, 0x1166, 0x11B4], NFKC: [0xC829], NFKD: [0x110C, 0x1166, 0x11B4] },
+{ source: [0xC82A], NFC: [0xC82A], NFD: [0x110C, 0x1166, 0x11B5], NFKC: [0xC82A], NFKD: [0x110C, 0x1166, 0x11B5] },
+{ source: [0xC82B], NFC: [0xC82B], NFD: [0x110C, 0x1166, 0x11B6], NFKC: [0xC82B], NFKD: [0x110C, 0x1166, 0x11B6] },
+{ source: [0xC82C], NFC: [0xC82C], NFD: [0x110C, 0x1166, 0x11B7], NFKC: [0xC82C], NFKD: [0x110C, 0x1166, 0x11B7] },
+{ source: [0xC82D], NFC: [0xC82D], NFD: [0x110C, 0x1166, 0x11B8], NFKC: [0xC82D], NFKD: [0x110C, 0x1166, 0x11B8] },
+{ source: [0xC82E], NFC: [0xC82E], NFD: [0x110C, 0x1166, 0x11B9], NFKC: [0xC82E], NFKD: [0x110C, 0x1166, 0x11B9] },
+{ source: [0xC82F], NFC: [0xC82F], NFD: [0x110C, 0x1166, 0x11BA], NFKC: [0xC82F], NFKD: [0x110C, 0x1166, 0x11BA] },
+{ source: [0xC830], NFC: [0xC830], NFD: [0x110C, 0x1166, 0x11BB], NFKC: [0xC830], NFKD: [0x110C, 0x1166, 0x11BB] },
+{ source: [0xC831], NFC: [0xC831], NFD: [0x110C, 0x1166, 0x11BC], NFKC: [0xC831], NFKD: [0x110C, 0x1166, 0x11BC] },
+{ source: [0xC832], NFC: [0xC832], NFD: [0x110C, 0x1166, 0x11BD], NFKC: [0xC832], NFKD: [0x110C, 0x1166, 0x11BD] },
+{ source: [0xC833], NFC: [0xC833], NFD: [0x110C, 0x1166, 0x11BE], NFKC: [0xC833], NFKD: [0x110C, 0x1166, 0x11BE] },
+{ source: [0xC834], NFC: [0xC834], NFD: [0x110C, 0x1166, 0x11BF], NFKC: [0xC834], NFKD: [0x110C, 0x1166, 0x11BF] },
+{ source: [0xC835], NFC: [0xC835], NFD: [0x110C, 0x1166, 0x11C0], NFKC: [0xC835], NFKD: [0x110C, 0x1166, 0x11C0] },
+{ source: [0xC836], NFC: [0xC836], NFD: [0x110C, 0x1166, 0x11C1], NFKC: [0xC836], NFKD: [0x110C, 0x1166, 0x11C1] },
+{ source: [0xC837], NFC: [0xC837], NFD: [0x110C, 0x1166, 0x11C2], NFKC: [0xC837], NFKD: [0x110C, 0x1166, 0x11C2] },
+{ source: [0xC838], NFC: [0xC838], NFD: [0x110C, 0x1167], NFKC: [0xC838], NFKD: [0x110C, 0x1167] },
+{ source: [0xC839], NFC: [0xC839], NFD: [0x110C, 0x1167, 0x11A8], NFKC: [0xC839], NFKD: [0x110C, 0x1167, 0x11A8] },
+{ source: [0xC83A], NFC: [0xC83A], NFD: [0x110C, 0x1167, 0x11A9], NFKC: [0xC83A], NFKD: [0x110C, 0x1167, 0x11A9] },
+{ source: [0xC83B], NFC: [0xC83B], NFD: [0x110C, 0x1167, 0x11AA], NFKC: [0xC83B], NFKD: [0x110C, 0x1167, 0x11AA] },
+{ source: [0xC83C], NFC: [0xC83C], NFD: [0x110C, 0x1167, 0x11AB], NFKC: [0xC83C], NFKD: [0x110C, 0x1167, 0x11AB] },
+{ source: [0xC83D], NFC: [0xC83D], NFD: [0x110C, 0x1167, 0x11AC], NFKC: [0xC83D], NFKD: [0x110C, 0x1167, 0x11AC] },
+{ source: [0xC83E], NFC: [0xC83E], NFD: [0x110C, 0x1167, 0x11AD], NFKC: [0xC83E], NFKD: [0x110C, 0x1167, 0x11AD] },
+{ source: [0xC83F], NFC: [0xC83F], NFD: [0x110C, 0x1167, 0x11AE], NFKC: [0xC83F], NFKD: [0x110C, 0x1167, 0x11AE] },
+{ source: [0xC840], NFC: [0xC840], NFD: [0x110C, 0x1167, 0x11AF], NFKC: [0xC840], NFKD: [0x110C, 0x1167, 0x11AF] },
+{ source: [0xC841], NFC: [0xC841], NFD: [0x110C, 0x1167, 0x11B0], NFKC: [0xC841], NFKD: [0x110C, 0x1167, 0x11B0] },
+{ source: [0xC842], NFC: [0xC842], NFD: [0x110C, 0x1167, 0x11B1], NFKC: [0xC842], NFKD: [0x110C, 0x1167, 0x11B1] },
+{ source: [0xC843], NFC: [0xC843], NFD: [0x110C, 0x1167, 0x11B2], NFKC: [0xC843], NFKD: [0x110C, 0x1167, 0x11B2] },
+{ source: [0xC844], NFC: [0xC844], NFD: [0x110C, 0x1167, 0x11B3], NFKC: [0xC844], NFKD: [0x110C, 0x1167, 0x11B3] },
+{ source: [0xC845], NFC: [0xC845], NFD: [0x110C, 0x1167, 0x11B4], NFKC: [0xC845], NFKD: [0x110C, 0x1167, 0x11B4] },
+{ source: [0xC846], NFC: [0xC846], NFD: [0x110C, 0x1167, 0x11B5], NFKC: [0xC846], NFKD: [0x110C, 0x1167, 0x11B5] },
+{ source: [0xC847], NFC: [0xC847], NFD: [0x110C, 0x1167, 0x11B6], NFKC: [0xC847], NFKD: [0x110C, 0x1167, 0x11B6] },
+{ source: [0xC848], NFC: [0xC848], NFD: [0x110C, 0x1167, 0x11B7], NFKC: [0xC848], NFKD: [0x110C, 0x1167, 0x11B7] },
+{ source: [0xC849], NFC: [0xC849], NFD: [0x110C, 0x1167, 0x11B8], NFKC: [0xC849], NFKD: [0x110C, 0x1167, 0x11B8] },
+{ source: [0xC84A], NFC: [0xC84A], NFD: [0x110C, 0x1167, 0x11B9], NFKC: [0xC84A], NFKD: [0x110C, 0x1167, 0x11B9] },
+{ source: [0xC84B], NFC: [0xC84B], NFD: [0x110C, 0x1167, 0x11BA], NFKC: [0xC84B], NFKD: [0x110C, 0x1167, 0x11BA] },
+{ source: [0xC84C], NFC: [0xC84C], NFD: [0x110C, 0x1167, 0x11BB], NFKC: [0xC84C], NFKD: [0x110C, 0x1167, 0x11BB] },
+{ source: [0xC84D], NFC: [0xC84D], NFD: [0x110C, 0x1167, 0x11BC], NFKC: [0xC84D], NFKD: [0x110C, 0x1167, 0x11BC] },
+{ source: [0xC84E], NFC: [0xC84E], NFD: [0x110C, 0x1167, 0x11BD], NFKC: [0xC84E], NFKD: [0x110C, 0x1167, 0x11BD] },
+{ source: [0xC84F], NFC: [0xC84F], NFD: [0x110C, 0x1167, 0x11BE], NFKC: [0xC84F], NFKD: [0x110C, 0x1167, 0x11BE] },
+{ source: [0xC850], NFC: [0xC850], NFD: [0x110C, 0x1167, 0x11BF], NFKC: [0xC850], NFKD: [0x110C, 0x1167, 0x11BF] },
+{ source: [0xC851], NFC: [0xC851], NFD: [0x110C, 0x1167, 0x11C0], NFKC: [0xC851], NFKD: [0x110C, 0x1167, 0x11C0] },
+{ source: [0xC852], NFC: [0xC852], NFD: [0x110C, 0x1167, 0x11C1], NFKC: [0xC852], NFKD: [0x110C, 0x1167, 0x11C1] },
+{ source: [0xC853], NFC: [0xC853], NFD: [0x110C, 0x1167, 0x11C2], NFKC: [0xC853], NFKD: [0x110C, 0x1167, 0x11C2] },
+{ source: [0xC854], NFC: [0xC854], NFD: [0x110C, 0x1168], NFKC: [0xC854], NFKD: [0x110C, 0x1168] },
+{ source: [0xC855], NFC: [0xC855], NFD: [0x110C, 0x1168, 0x11A8], NFKC: [0xC855], NFKD: [0x110C, 0x1168, 0x11A8] },
+{ source: [0xC856], NFC: [0xC856], NFD: [0x110C, 0x1168, 0x11A9], NFKC: [0xC856], NFKD: [0x110C, 0x1168, 0x11A9] },
+{ source: [0xC857], NFC: [0xC857], NFD: [0x110C, 0x1168, 0x11AA], NFKC: [0xC857], NFKD: [0x110C, 0x1168, 0x11AA] },
+{ source: [0xC858], NFC: [0xC858], NFD: [0x110C, 0x1168, 0x11AB], NFKC: [0xC858], NFKD: [0x110C, 0x1168, 0x11AB] },
+{ source: [0xC859], NFC: [0xC859], NFD: [0x110C, 0x1168, 0x11AC], NFKC: [0xC859], NFKD: [0x110C, 0x1168, 0x11AC] },
+{ source: [0xC85A], NFC: [0xC85A], NFD: [0x110C, 0x1168, 0x11AD], NFKC: [0xC85A], NFKD: [0x110C, 0x1168, 0x11AD] },
+{ source: [0xC85B], NFC: [0xC85B], NFD: [0x110C, 0x1168, 0x11AE], NFKC: [0xC85B], NFKD: [0x110C, 0x1168, 0x11AE] },
+{ source: [0xC85C], NFC: [0xC85C], NFD: [0x110C, 0x1168, 0x11AF], NFKC: [0xC85C], NFKD: [0x110C, 0x1168, 0x11AF] },
+{ source: [0xC85D], NFC: [0xC85D], NFD: [0x110C, 0x1168, 0x11B0], NFKC: [0xC85D], NFKD: [0x110C, 0x1168, 0x11B0] },
+{ source: [0xC85E], NFC: [0xC85E], NFD: [0x110C, 0x1168, 0x11B1], NFKC: [0xC85E], NFKD: [0x110C, 0x1168, 0x11B1] },
+{ source: [0xC85F], NFC: [0xC85F], NFD: [0x110C, 0x1168, 0x11B2], NFKC: [0xC85F], NFKD: [0x110C, 0x1168, 0x11B2] },
+{ source: [0xC860], NFC: [0xC860], NFD: [0x110C, 0x1168, 0x11B3], NFKC: [0xC860], NFKD: [0x110C, 0x1168, 0x11B3] },
+{ source: [0xC861], NFC: [0xC861], NFD: [0x110C, 0x1168, 0x11B4], NFKC: [0xC861], NFKD: [0x110C, 0x1168, 0x11B4] },
+{ source: [0xC862], NFC: [0xC862], NFD: [0x110C, 0x1168, 0x11B5], NFKC: [0xC862], NFKD: [0x110C, 0x1168, 0x11B5] },
+{ source: [0xC863], NFC: [0xC863], NFD: [0x110C, 0x1168, 0x11B6], NFKC: [0xC863], NFKD: [0x110C, 0x1168, 0x11B6] },
+{ source: [0xC864], NFC: [0xC864], NFD: [0x110C, 0x1168, 0x11B7], NFKC: [0xC864], NFKD: [0x110C, 0x1168, 0x11B7] },
+{ source: [0xC865], NFC: [0xC865], NFD: [0x110C, 0x1168, 0x11B8], NFKC: [0xC865], NFKD: [0x110C, 0x1168, 0x11B8] },
+{ source: [0xC866], NFC: [0xC866], NFD: [0x110C, 0x1168, 0x11B9], NFKC: [0xC866], NFKD: [0x110C, 0x1168, 0x11B9] },
+{ source: [0xC867], NFC: [0xC867], NFD: [0x110C, 0x1168, 0x11BA], NFKC: [0xC867], NFKD: [0x110C, 0x1168, 0x11BA] },
+{ source: [0xC868], NFC: [0xC868], NFD: [0x110C, 0x1168, 0x11BB], NFKC: [0xC868], NFKD: [0x110C, 0x1168, 0x11BB] },
+{ source: [0xC869], NFC: [0xC869], NFD: [0x110C, 0x1168, 0x11BC], NFKC: [0xC869], NFKD: [0x110C, 0x1168, 0x11BC] },
+{ source: [0xC86A], NFC: [0xC86A], NFD: [0x110C, 0x1168, 0x11BD], NFKC: [0xC86A], NFKD: [0x110C, 0x1168, 0x11BD] },
+{ source: [0xC86B], NFC: [0xC86B], NFD: [0x110C, 0x1168, 0x11BE], NFKC: [0xC86B], NFKD: [0x110C, 0x1168, 0x11BE] },
+{ source: [0xC86C], NFC: [0xC86C], NFD: [0x110C, 0x1168, 0x11BF], NFKC: [0xC86C], NFKD: [0x110C, 0x1168, 0x11BF] },
+{ source: [0xC86D], NFC: [0xC86D], NFD: [0x110C, 0x1168, 0x11C0], NFKC: [0xC86D], NFKD: [0x110C, 0x1168, 0x11C0] },
+{ source: [0xC86E], NFC: [0xC86E], NFD: [0x110C, 0x1168, 0x11C1], NFKC: [0xC86E], NFKD: [0x110C, 0x1168, 0x11C1] },
+{ source: [0xC86F], NFC: [0xC86F], NFD: [0x110C, 0x1168, 0x11C2], NFKC: [0xC86F], NFKD: [0x110C, 0x1168, 0x11C2] },
+{ source: [0xC870], NFC: [0xC870], NFD: [0x110C, 0x1169], NFKC: [0xC870], NFKD: [0x110C, 0x1169] },
+{ source: [0xC871], NFC: [0xC871], NFD: [0x110C, 0x1169, 0x11A8], NFKC: [0xC871], NFKD: [0x110C, 0x1169, 0x11A8] },
+{ source: [0xC872], NFC: [0xC872], NFD: [0x110C, 0x1169, 0x11A9], NFKC: [0xC872], NFKD: [0x110C, 0x1169, 0x11A9] },
+{ source: [0xC873], NFC: [0xC873], NFD: [0x110C, 0x1169, 0x11AA], NFKC: [0xC873], NFKD: [0x110C, 0x1169, 0x11AA] },
+{ source: [0xC874], NFC: [0xC874], NFD: [0x110C, 0x1169, 0x11AB], NFKC: [0xC874], NFKD: [0x110C, 0x1169, 0x11AB] },
+{ source: [0xC875], NFC: [0xC875], NFD: [0x110C, 0x1169, 0x11AC], NFKC: [0xC875], NFKD: [0x110C, 0x1169, 0x11AC] },
+{ source: [0xC876], NFC: [0xC876], NFD: [0x110C, 0x1169, 0x11AD], NFKC: [0xC876], NFKD: [0x110C, 0x1169, 0x11AD] },
+{ source: [0xC877], NFC: [0xC877], NFD: [0x110C, 0x1169, 0x11AE], NFKC: [0xC877], NFKD: [0x110C, 0x1169, 0x11AE] },
+{ source: [0xC878], NFC: [0xC878], NFD: [0x110C, 0x1169, 0x11AF], NFKC: [0xC878], NFKD: [0x110C, 0x1169, 0x11AF] },
+{ source: [0xC879], NFC: [0xC879], NFD: [0x110C, 0x1169, 0x11B0], NFKC: [0xC879], NFKD: [0x110C, 0x1169, 0x11B0] },
+{ source: [0xC87A], NFC: [0xC87A], NFD: [0x110C, 0x1169, 0x11B1], NFKC: [0xC87A], NFKD: [0x110C, 0x1169, 0x11B1] },
+{ source: [0xC87B], NFC: [0xC87B], NFD: [0x110C, 0x1169, 0x11B2], NFKC: [0xC87B], NFKD: [0x110C, 0x1169, 0x11B2] },
+{ source: [0xC87C], NFC: [0xC87C], NFD: [0x110C, 0x1169, 0x11B3], NFKC: [0xC87C], NFKD: [0x110C, 0x1169, 0x11B3] },
+{ source: [0xC87D], NFC: [0xC87D], NFD: [0x110C, 0x1169, 0x11B4], NFKC: [0xC87D], NFKD: [0x110C, 0x1169, 0x11B4] },
+{ source: [0xC87E], NFC: [0xC87E], NFD: [0x110C, 0x1169, 0x11B5], NFKC: [0xC87E], NFKD: [0x110C, 0x1169, 0x11B5] },
+{ source: [0xC87F], NFC: [0xC87F], NFD: [0x110C, 0x1169, 0x11B6], NFKC: [0xC87F], NFKD: [0x110C, 0x1169, 0x11B6] },
+{ source: [0xC880], NFC: [0xC880], NFD: [0x110C, 0x1169, 0x11B7], NFKC: [0xC880], NFKD: [0x110C, 0x1169, 0x11B7] },
+{ source: [0xC881], NFC: [0xC881], NFD: [0x110C, 0x1169, 0x11B8], NFKC: [0xC881], NFKD: [0x110C, 0x1169, 0x11B8] },
+{ source: [0xC882], NFC: [0xC882], NFD: [0x110C, 0x1169, 0x11B9], NFKC: [0xC882], NFKD: [0x110C, 0x1169, 0x11B9] },
+{ source: [0xC883], NFC: [0xC883], NFD: [0x110C, 0x1169, 0x11BA], NFKC: [0xC883], NFKD: [0x110C, 0x1169, 0x11BA] },
+{ source: [0xC884], NFC: [0xC884], NFD: [0x110C, 0x1169, 0x11BB], NFKC: [0xC884], NFKD: [0x110C, 0x1169, 0x11BB] },
+{ source: [0xC885], NFC: [0xC885], NFD: [0x110C, 0x1169, 0x11BC], NFKC: [0xC885], NFKD: [0x110C, 0x1169, 0x11BC] },
+{ source: [0xC886], NFC: [0xC886], NFD: [0x110C, 0x1169, 0x11BD], NFKC: [0xC886], NFKD: [0x110C, 0x1169, 0x11BD] },
+{ source: [0xC887], NFC: [0xC887], NFD: [0x110C, 0x1169, 0x11BE], NFKC: [0xC887], NFKD: [0x110C, 0x1169, 0x11BE] },
+{ source: [0xC888], NFC: [0xC888], NFD: [0x110C, 0x1169, 0x11BF], NFKC: [0xC888], NFKD: [0x110C, 0x1169, 0x11BF] },
+{ source: [0xC889], NFC: [0xC889], NFD: [0x110C, 0x1169, 0x11C0], NFKC: [0xC889], NFKD: [0x110C, 0x1169, 0x11C0] },
+{ source: [0xC88A], NFC: [0xC88A], NFD: [0x110C, 0x1169, 0x11C1], NFKC: [0xC88A], NFKD: [0x110C, 0x1169, 0x11C1] },
+{ source: [0xC88B], NFC: [0xC88B], NFD: [0x110C, 0x1169, 0x11C2], NFKC: [0xC88B], NFKD: [0x110C, 0x1169, 0x11C2] },
+{ source: [0xC88C], NFC: [0xC88C], NFD: [0x110C, 0x116A], NFKC: [0xC88C], NFKD: [0x110C, 0x116A] },
+{ source: [0xC88D], NFC: [0xC88D], NFD: [0x110C, 0x116A, 0x11A8], NFKC: [0xC88D], NFKD: [0x110C, 0x116A, 0x11A8] },
+{ source: [0xC88E], NFC: [0xC88E], NFD: [0x110C, 0x116A, 0x11A9], NFKC: [0xC88E], NFKD: [0x110C, 0x116A, 0x11A9] },
+{ source: [0xC88F], NFC: [0xC88F], NFD: [0x110C, 0x116A, 0x11AA], NFKC: [0xC88F], NFKD: [0x110C, 0x116A, 0x11AA] },
+{ source: [0xC890], NFC: [0xC890], NFD: [0x110C, 0x116A, 0x11AB], NFKC: [0xC890], NFKD: [0x110C, 0x116A, 0x11AB] },
+{ source: [0xC891], NFC: [0xC891], NFD: [0x110C, 0x116A, 0x11AC], NFKC: [0xC891], NFKD: [0x110C, 0x116A, 0x11AC] },
+{ source: [0xC892], NFC: [0xC892], NFD: [0x110C, 0x116A, 0x11AD], NFKC: [0xC892], NFKD: [0x110C, 0x116A, 0x11AD] },
+{ source: [0xC893], NFC: [0xC893], NFD: [0x110C, 0x116A, 0x11AE], NFKC: [0xC893], NFKD: [0x110C, 0x116A, 0x11AE] },
+{ source: [0xC894], NFC: [0xC894], NFD: [0x110C, 0x116A, 0x11AF], NFKC: [0xC894], NFKD: [0x110C, 0x116A, 0x11AF] },
+{ source: [0xC895], NFC: [0xC895], NFD: [0x110C, 0x116A, 0x11B0], NFKC: [0xC895], NFKD: [0x110C, 0x116A, 0x11B0] },
+{ source: [0xC896], NFC: [0xC896], NFD: [0x110C, 0x116A, 0x11B1], NFKC: [0xC896], NFKD: [0x110C, 0x116A, 0x11B1] },
+{ source: [0xC897], NFC: [0xC897], NFD: [0x110C, 0x116A, 0x11B2], NFKC: [0xC897], NFKD: [0x110C, 0x116A, 0x11B2] },
+{ source: [0xC898], NFC: [0xC898], NFD: [0x110C, 0x116A, 0x11B3], NFKC: [0xC898], NFKD: [0x110C, 0x116A, 0x11B3] },
+{ source: [0xC899], NFC: [0xC899], NFD: [0x110C, 0x116A, 0x11B4], NFKC: [0xC899], NFKD: [0x110C, 0x116A, 0x11B4] },
+{ source: [0xC89A], NFC: [0xC89A], NFD: [0x110C, 0x116A, 0x11B5], NFKC: [0xC89A], NFKD: [0x110C, 0x116A, 0x11B5] },
+{ source: [0xC89B], NFC: [0xC89B], NFD: [0x110C, 0x116A, 0x11B6], NFKC: [0xC89B], NFKD: [0x110C, 0x116A, 0x11B6] },
+{ source: [0xC89C], NFC: [0xC89C], NFD: [0x110C, 0x116A, 0x11B7], NFKC: [0xC89C], NFKD: [0x110C, 0x116A, 0x11B7] },
+{ source: [0xC89D], NFC: [0xC89D], NFD: [0x110C, 0x116A, 0x11B8], NFKC: [0xC89D], NFKD: [0x110C, 0x116A, 0x11B8] },
+{ source: [0xC89E], NFC: [0xC89E], NFD: [0x110C, 0x116A, 0x11B9], NFKC: [0xC89E], NFKD: [0x110C, 0x116A, 0x11B9] },
+{ source: [0xC89F], NFC: [0xC89F], NFD: [0x110C, 0x116A, 0x11BA], NFKC: [0xC89F], NFKD: [0x110C, 0x116A, 0x11BA] },
+{ source: [0xC8A0], NFC: [0xC8A0], NFD: [0x110C, 0x116A, 0x11BB], NFKC: [0xC8A0], NFKD: [0x110C, 0x116A, 0x11BB] },
+{ source: [0xC8A1], NFC: [0xC8A1], NFD: [0x110C, 0x116A, 0x11BC], NFKC: [0xC8A1], NFKD: [0x110C, 0x116A, 0x11BC] },
+{ source: [0xC8A2], NFC: [0xC8A2], NFD: [0x110C, 0x116A, 0x11BD], NFKC: [0xC8A2], NFKD: [0x110C, 0x116A, 0x11BD] },
+{ source: [0xC8A3], NFC: [0xC8A3], NFD: [0x110C, 0x116A, 0x11BE], NFKC: [0xC8A3], NFKD: [0x110C, 0x116A, 0x11BE] },
+{ source: [0xC8A4], NFC: [0xC8A4], NFD: [0x110C, 0x116A, 0x11BF], NFKC: [0xC8A4], NFKD: [0x110C, 0x116A, 0x11BF] },
+{ source: [0xC8A5], NFC: [0xC8A5], NFD: [0x110C, 0x116A, 0x11C0], NFKC: [0xC8A5], NFKD: [0x110C, 0x116A, 0x11C0] },
+{ source: [0xC8A6], NFC: [0xC8A6], NFD: [0x110C, 0x116A, 0x11C1], NFKC: [0xC8A6], NFKD: [0x110C, 0x116A, 0x11C1] },
+{ source: [0xC8A7], NFC: [0xC8A7], NFD: [0x110C, 0x116A, 0x11C2], NFKC: [0xC8A7], NFKD: [0x110C, 0x116A, 0x11C2] },
+{ source: [0xC8A8], NFC: [0xC8A8], NFD: [0x110C, 0x116B], NFKC: [0xC8A8], NFKD: [0x110C, 0x116B] },
+{ source: [0xC8A9], NFC: [0xC8A9], NFD: [0x110C, 0x116B, 0x11A8], NFKC: [0xC8A9], NFKD: [0x110C, 0x116B, 0x11A8] },
+{ source: [0xC8AA], NFC: [0xC8AA], NFD: [0x110C, 0x116B, 0x11A9], NFKC: [0xC8AA], NFKD: [0x110C, 0x116B, 0x11A9] },
+{ source: [0xC8AB], NFC: [0xC8AB], NFD: [0x110C, 0x116B, 0x11AA], NFKC: [0xC8AB], NFKD: [0x110C, 0x116B, 0x11AA] },
+{ source: [0xC8AC], NFC: [0xC8AC], NFD: [0x110C, 0x116B, 0x11AB], NFKC: [0xC8AC], NFKD: [0x110C, 0x116B, 0x11AB] },
+{ source: [0xC8AD], NFC: [0xC8AD], NFD: [0x110C, 0x116B, 0x11AC], NFKC: [0xC8AD], NFKD: [0x110C, 0x116B, 0x11AC] },
+{ source: [0xC8AE], NFC: [0xC8AE], NFD: [0x110C, 0x116B, 0x11AD], NFKC: [0xC8AE], NFKD: [0x110C, 0x116B, 0x11AD] },
+{ source: [0xC8AF], NFC: [0xC8AF], NFD: [0x110C, 0x116B, 0x11AE], NFKC: [0xC8AF], NFKD: [0x110C, 0x116B, 0x11AE] },
+{ source: [0xC8B0], NFC: [0xC8B0], NFD: [0x110C, 0x116B, 0x11AF], NFKC: [0xC8B0], NFKD: [0x110C, 0x116B, 0x11AF] },
+{ source: [0xC8B1], NFC: [0xC8B1], NFD: [0x110C, 0x116B, 0x11B0], NFKC: [0xC8B1], NFKD: [0x110C, 0x116B, 0x11B0] },
+{ source: [0xC8B2], NFC: [0xC8B2], NFD: [0x110C, 0x116B, 0x11B1], NFKC: [0xC8B2], NFKD: [0x110C, 0x116B, 0x11B1] },
+{ source: [0xC8B3], NFC: [0xC8B3], NFD: [0x110C, 0x116B, 0x11B2], NFKC: [0xC8B3], NFKD: [0x110C, 0x116B, 0x11B2] },
+{ source: [0xC8B4], NFC: [0xC8B4], NFD: [0x110C, 0x116B, 0x11B3], NFKC: [0xC8B4], NFKD: [0x110C, 0x116B, 0x11B3] },
+{ source: [0xC8B5], NFC: [0xC8B5], NFD: [0x110C, 0x116B, 0x11B4], NFKC: [0xC8B5], NFKD: [0x110C, 0x116B, 0x11B4] },
+{ source: [0xC8B6], NFC: [0xC8B6], NFD: [0x110C, 0x116B, 0x11B5], NFKC: [0xC8B6], NFKD: [0x110C, 0x116B, 0x11B5] },
+{ source: [0xC8B7], NFC: [0xC8B7], NFD: [0x110C, 0x116B, 0x11B6], NFKC: [0xC8B7], NFKD: [0x110C, 0x116B, 0x11B6] },
+{ source: [0xC8B8], NFC: [0xC8B8], NFD: [0x110C, 0x116B, 0x11B7], NFKC: [0xC8B8], NFKD: [0x110C, 0x116B, 0x11B7] },
+{ source: [0xC8B9], NFC: [0xC8B9], NFD: [0x110C, 0x116B, 0x11B8], NFKC: [0xC8B9], NFKD: [0x110C, 0x116B, 0x11B8] },
+{ source: [0xC8BA], NFC: [0xC8BA], NFD: [0x110C, 0x116B, 0x11B9], NFKC: [0xC8BA], NFKD: [0x110C, 0x116B, 0x11B9] },
+{ source: [0xC8BB], NFC: [0xC8BB], NFD: [0x110C, 0x116B, 0x11BA], NFKC: [0xC8BB], NFKD: [0x110C, 0x116B, 0x11BA] },
+{ source: [0xC8BC], NFC: [0xC8BC], NFD: [0x110C, 0x116B, 0x11BB], NFKC: [0xC8BC], NFKD: [0x110C, 0x116B, 0x11BB] },
+{ source: [0xC8BD], NFC: [0xC8BD], NFD: [0x110C, 0x116B, 0x11BC], NFKC: [0xC8BD], NFKD: [0x110C, 0x116B, 0x11BC] },
+{ source: [0xC8BE], NFC: [0xC8BE], NFD: [0x110C, 0x116B, 0x11BD], NFKC: [0xC8BE], NFKD: [0x110C, 0x116B, 0x11BD] },
+{ source: [0xC8BF], NFC: [0xC8BF], NFD: [0x110C, 0x116B, 0x11BE], NFKC: [0xC8BF], NFKD: [0x110C, 0x116B, 0x11BE] },
+{ source: [0xC8C0], NFC: [0xC8C0], NFD: [0x110C, 0x116B, 0x11BF], NFKC: [0xC8C0], NFKD: [0x110C, 0x116B, 0x11BF] },
+{ source: [0xC8C1], NFC: [0xC8C1], NFD: [0x110C, 0x116B, 0x11C0], NFKC: [0xC8C1], NFKD: [0x110C, 0x116B, 0x11C0] },
+{ source: [0xC8C2], NFC: [0xC8C2], NFD: [0x110C, 0x116B, 0x11C1], NFKC: [0xC8C2], NFKD: [0x110C, 0x116B, 0x11C1] },
+{ source: [0xC8C3], NFC: [0xC8C3], NFD: [0x110C, 0x116B, 0x11C2], NFKC: [0xC8C3], NFKD: [0x110C, 0x116B, 0x11C2] },
+{ source: [0xC8C4], NFC: [0xC8C4], NFD: [0x110C, 0x116C], NFKC: [0xC8C4], NFKD: [0x110C, 0x116C] },
+{ source: [0xC8C5], NFC: [0xC8C5], NFD: [0x110C, 0x116C, 0x11A8], NFKC: [0xC8C5], NFKD: [0x110C, 0x116C, 0x11A8] },
+{ source: [0xC8C6], NFC: [0xC8C6], NFD: [0x110C, 0x116C, 0x11A9], NFKC: [0xC8C6], NFKD: [0x110C, 0x116C, 0x11A9] },
+{ source: [0xC8C7], NFC: [0xC8C7], NFD: [0x110C, 0x116C, 0x11AA], NFKC: [0xC8C7], NFKD: [0x110C, 0x116C, 0x11AA] },
+{ source: [0xC8C8], NFC: [0xC8C8], NFD: [0x110C, 0x116C, 0x11AB], NFKC: [0xC8C8], NFKD: [0x110C, 0x116C, 0x11AB] },
+{ source: [0xC8C9], NFC: [0xC8C9], NFD: [0x110C, 0x116C, 0x11AC], NFKC: [0xC8C9], NFKD: [0x110C, 0x116C, 0x11AC] },
+{ source: [0xC8CA], NFC: [0xC8CA], NFD: [0x110C, 0x116C, 0x11AD], NFKC: [0xC8CA], NFKD: [0x110C, 0x116C, 0x11AD] },
+{ source: [0xC8CB], NFC: [0xC8CB], NFD: [0x110C, 0x116C, 0x11AE], NFKC: [0xC8CB], NFKD: [0x110C, 0x116C, 0x11AE] },
+{ source: [0xC8CC], NFC: [0xC8CC], NFD: [0x110C, 0x116C, 0x11AF], NFKC: [0xC8CC], NFKD: [0x110C, 0x116C, 0x11AF] },
+{ source: [0xC8CD], NFC: [0xC8CD], NFD: [0x110C, 0x116C, 0x11B0], NFKC: [0xC8CD], NFKD: [0x110C, 0x116C, 0x11B0] },
+{ source: [0xC8CE], NFC: [0xC8CE], NFD: [0x110C, 0x116C, 0x11B1], NFKC: [0xC8CE], NFKD: [0x110C, 0x116C, 0x11B1] },
+{ source: [0xC8CF], NFC: [0xC8CF], NFD: [0x110C, 0x116C, 0x11B2], NFKC: [0xC8CF], NFKD: [0x110C, 0x116C, 0x11B2] },
+{ source: [0xC8D0], NFC: [0xC8D0], NFD: [0x110C, 0x116C, 0x11B3], NFKC: [0xC8D0], NFKD: [0x110C, 0x116C, 0x11B3] },
+{ source: [0xC8D1], NFC: [0xC8D1], NFD: [0x110C, 0x116C, 0x11B4], NFKC: [0xC8D1], NFKD: [0x110C, 0x116C, 0x11B4] },
+{ source: [0xC8D2], NFC: [0xC8D2], NFD: [0x110C, 0x116C, 0x11B5], NFKC: [0xC8D2], NFKD: [0x110C, 0x116C, 0x11B5] },
+{ source: [0xC8D3], NFC: [0xC8D3], NFD: [0x110C, 0x116C, 0x11B6], NFKC: [0xC8D3], NFKD: [0x110C, 0x116C, 0x11B6] },
+{ source: [0xC8D4], NFC: [0xC8D4], NFD: [0x110C, 0x116C, 0x11B7], NFKC: [0xC8D4], NFKD: [0x110C, 0x116C, 0x11B7] },
+{ source: [0xC8D5], NFC: [0xC8D5], NFD: [0x110C, 0x116C, 0x11B8], NFKC: [0xC8D5], NFKD: [0x110C, 0x116C, 0x11B8] },
+{ source: [0xC8D6], NFC: [0xC8D6], NFD: [0x110C, 0x116C, 0x11B9], NFKC: [0xC8D6], NFKD: [0x110C, 0x116C, 0x11B9] },
+{ source: [0xC8D7], NFC: [0xC8D7], NFD: [0x110C, 0x116C, 0x11BA], NFKC: [0xC8D7], NFKD: [0x110C, 0x116C, 0x11BA] },
+{ source: [0xC8D8], NFC: [0xC8D8], NFD: [0x110C, 0x116C, 0x11BB], NFKC: [0xC8D8], NFKD: [0x110C, 0x116C, 0x11BB] },
+{ source: [0xC8D9], NFC: [0xC8D9], NFD: [0x110C, 0x116C, 0x11BC], NFKC: [0xC8D9], NFKD: [0x110C, 0x116C, 0x11BC] },
+{ source: [0xC8DA], NFC: [0xC8DA], NFD: [0x110C, 0x116C, 0x11BD], NFKC: [0xC8DA], NFKD: [0x110C, 0x116C, 0x11BD] },
+{ source: [0xC8DB], NFC: [0xC8DB], NFD: [0x110C, 0x116C, 0x11BE], NFKC: [0xC8DB], NFKD: [0x110C, 0x116C, 0x11BE] },
+{ source: [0xC8DC], NFC: [0xC8DC], NFD: [0x110C, 0x116C, 0x11BF], NFKC: [0xC8DC], NFKD: [0x110C, 0x116C, 0x11BF] },
+{ source: [0xC8DD], NFC: [0xC8DD], NFD: [0x110C, 0x116C, 0x11C0], NFKC: [0xC8DD], NFKD: [0x110C, 0x116C, 0x11C0] },
+{ source: [0xC8DE], NFC: [0xC8DE], NFD: [0x110C, 0x116C, 0x11C1], NFKC: [0xC8DE], NFKD: [0x110C, 0x116C, 0x11C1] },
+{ source: [0xC8DF], NFC: [0xC8DF], NFD: [0x110C, 0x116C, 0x11C2], NFKC: [0xC8DF], NFKD: [0x110C, 0x116C, 0x11C2] },
+{ source: [0xC8E0], NFC: [0xC8E0], NFD: [0x110C, 0x116D], NFKC: [0xC8E0], NFKD: [0x110C, 0x116D] },
+{ source: [0xC8E1], NFC: [0xC8E1], NFD: [0x110C, 0x116D, 0x11A8], NFKC: [0xC8E1], NFKD: [0x110C, 0x116D, 0x11A8] },
+{ source: [0xC8E2], NFC: [0xC8E2], NFD: [0x110C, 0x116D, 0x11A9], NFKC: [0xC8E2], NFKD: [0x110C, 0x116D, 0x11A9] },
+{ source: [0xC8E3], NFC: [0xC8E3], NFD: [0x110C, 0x116D, 0x11AA], NFKC: [0xC8E3], NFKD: [0x110C, 0x116D, 0x11AA] },
+{ source: [0xC8E4], NFC: [0xC8E4], NFD: [0x110C, 0x116D, 0x11AB], NFKC: [0xC8E4], NFKD: [0x110C, 0x116D, 0x11AB] },
+{ source: [0xC8E5], NFC: [0xC8E5], NFD: [0x110C, 0x116D, 0x11AC], NFKC: [0xC8E5], NFKD: [0x110C, 0x116D, 0x11AC] },
+{ source: [0xC8E6], NFC: [0xC8E6], NFD: [0x110C, 0x116D, 0x11AD], NFKC: [0xC8E6], NFKD: [0x110C, 0x116D, 0x11AD] },
+{ source: [0xC8E7], NFC: [0xC8E7], NFD: [0x110C, 0x116D, 0x11AE], NFKC: [0xC8E7], NFKD: [0x110C, 0x116D, 0x11AE] },
+{ source: [0xC8E8], NFC: [0xC8E8], NFD: [0x110C, 0x116D, 0x11AF], NFKC: [0xC8E8], NFKD: [0x110C, 0x116D, 0x11AF] },
+{ source: [0xC8E9], NFC: [0xC8E9], NFD: [0x110C, 0x116D, 0x11B0], NFKC: [0xC8E9], NFKD: [0x110C, 0x116D, 0x11B0] },
+{ source: [0xC8EA], NFC: [0xC8EA], NFD: [0x110C, 0x116D, 0x11B1], NFKC: [0xC8EA], NFKD: [0x110C, 0x116D, 0x11B1] },
+{ source: [0xC8EB], NFC: [0xC8EB], NFD: [0x110C, 0x116D, 0x11B2], NFKC: [0xC8EB], NFKD: [0x110C, 0x116D, 0x11B2] },
+{ source: [0xC8EC], NFC: [0xC8EC], NFD: [0x110C, 0x116D, 0x11B3], NFKC: [0xC8EC], NFKD: [0x110C, 0x116D, 0x11B3] },
+{ source: [0xC8ED], NFC: [0xC8ED], NFD: [0x110C, 0x116D, 0x11B4], NFKC: [0xC8ED], NFKD: [0x110C, 0x116D, 0x11B4] },
+{ source: [0xC8EE], NFC: [0xC8EE], NFD: [0x110C, 0x116D, 0x11B5], NFKC: [0xC8EE], NFKD: [0x110C, 0x116D, 0x11B5] },
+{ source: [0xC8EF], NFC: [0xC8EF], NFD: [0x110C, 0x116D, 0x11B6], NFKC: [0xC8EF], NFKD: [0x110C, 0x116D, 0x11B6] },
+{ source: [0xC8F0], NFC: [0xC8F0], NFD: [0x110C, 0x116D, 0x11B7], NFKC: [0xC8F0], NFKD: [0x110C, 0x116D, 0x11B7] },
+{ source: [0xC8F1], NFC: [0xC8F1], NFD: [0x110C, 0x116D, 0x11B8], NFKC: [0xC8F1], NFKD: [0x110C, 0x116D, 0x11B8] },
+{ source: [0xC8F2], NFC: [0xC8F2], NFD: [0x110C, 0x116D, 0x11B9], NFKC: [0xC8F2], NFKD: [0x110C, 0x116D, 0x11B9] },
+{ source: [0xC8F3], NFC: [0xC8F3], NFD: [0x110C, 0x116D, 0x11BA], NFKC: [0xC8F3], NFKD: [0x110C, 0x116D, 0x11BA] },
+{ source: [0xC8F4], NFC: [0xC8F4], NFD: [0x110C, 0x116D, 0x11BB], NFKC: [0xC8F4], NFKD: [0x110C, 0x116D, 0x11BB] },
+{ source: [0xC8F5], NFC: [0xC8F5], NFD: [0x110C, 0x116D, 0x11BC], NFKC: [0xC8F5], NFKD: [0x110C, 0x116D, 0x11BC] },
+{ source: [0xC8F6], NFC: [0xC8F6], NFD: [0x110C, 0x116D, 0x11BD], NFKC: [0xC8F6], NFKD: [0x110C, 0x116D, 0x11BD] },
+{ source: [0xC8F7], NFC: [0xC8F7], NFD: [0x110C, 0x116D, 0x11BE], NFKC: [0xC8F7], NFKD: [0x110C, 0x116D, 0x11BE] },
+{ source: [0xC8F8], NFC: [0xC8F8], NFD: [0x110C, 0x116D, 0x11BF], NFKC: [0xC8F8], NFKD: [0x110C, 0x116D, 0x11BF] },
+{ source: [0xC8F9], NFC: [0xC8F9], NFD: [0x110C, 0x116D, 0x11C0], NFKC: [0xC8F9], NFKD: [0x110C, 0x116D, 0x11C0] },
+{ source: [0xC8FA], NFC: [0xC8FA], NFD: [0x110C, 0x116D, 0x11C1], NFKC: [0xC8FA], NFKD: [0x110C, 0x116D, 0x11C1] },
+{ source: [0xC8FB], NFC: [0xC8FB], NFD: [0x110C, 0x116D, 0x11C2], NFKC: [0xC8FB], NFKD: [0x110C, 0x116D, 0x11C2] },
+{ source: [0xC8FC], NFC: [0xC8FC], NFD: [0x110C, 0x116E], NFKC: [0xC8FC], NFKD: [0x110C, 0x116E] },
+{ source: [0xC8FD], NFC: [0xC8FD], NFD: [0x110C, 0x116E, 0x11A8], NFKC: [0xC8FD], NFKD: [0x110C, 0x116E, 0x11A8] },
+{ source: [0xC8FE], NFC: [0xC8FE], NFD: [0x110C, 0x116E, 0x11A9], NFKC: [0xC8FE], NFKD: [0x110C, 0x116E, 0x11A9] },
+{ source: [0xC8FF], NFC: [0xC8FF], NFD: [0x110C, 0x116E, 0x11AA], NFKC: [0xC8FF], NFKD: [0x110C, 0x116E, 0x11AA] },
+{ source: [0xC900], NFC: [0xC900], NFD: [0x110C, 0x116E, 0x11AB], NFKC: [0xC900], NFKD: [0x110C, 0x116E, 0x11AB] },
+{ source: [0xC901], NFC: [0xC901], NFD: [0x110C, 0x116E, 0x11AC], NFKC: [0xC901], NFKD: [0x110C, 0x116E, 0x11AC] },
+{ source: [0xC902], NFC: [0xC902], NFD: [0x110C, 0x116E, 0x11AD], NFKC: [0xC902], NFKD: [0x110C, 0x116E, 0x11AD] },
+{ source: [0xC903], NFC: [0xC903], NFD: [0x110C, 0x116E, 0x11AE], NFKC: [0xC903], NFKD: [0x110C, 0x116E, 0x11AE] },
+{ source: [0xC904], NFC: [0xC904], NFD: [0x110C, 0x116E, 0x11AF], NFKC: [0xC904], NFKD: [0x110C, 0x116E, 0x11AF] },
+{ source: [0xC905], NFC: [0xC905], NFD: [0x110C, 0x116E, 0x11B0], NFKC: [0xC905], NFKD: [0x110C, 0x116E, 0x11B0] },
+{ source: [0xC906], NFC: [0xC906], NFD: [0x110C, 0x116E, 0x11B1], NFKC: [0xC906], NFKD: [0x110C, 0x116E, 0x11B1] },
+{ source: [0xC907], NFC: [0xC907], NFD: [0x110C, 0x116E, 0x11B2], NFKC: [0xC907], NFKD: [0x110C, 0x116E, 0x11B2] },
+{ source: [0xC908], NFC: [0xC908], NFD: [0x110C, 0x116E, 0x11B3], NFKC: [0xC908], NFKD: [0x110C, 0x116E, 0x11B3] },
+{ source: [0xC909], NFC: [0xC909], NFD: [0x110C, 0x116E, 0x11B4], NFKC: [0xC909], NFKD: [0x110C, 0x116E, 0x11B4] },
+{ source: [0xC90A], NFC: [0xC90A], NFD: [0x110C, 0x116E, 0x11B5], NFKC: [0xC90A], NFKD: [0x110C, 0x116E, 0x11B5] },
+{ source: [0xC90B], NFC: [0xC90B], NFD: [0x110C, 0x116E, 0x11B6], NFKC: [0xC90B], NFKD: [0x110C, 0x116E, 0x11B6] },
+{ source: [0xC90C], NFC: [0xC90C], NFD: [0x110C, 0x116E, 0x11B7], NFKC: [0xC90C], NFKD: [0x110C, 0x116E, 0x11B7] },
+{ source: [0xC90D], NFC: [0xC90D], NFD: [0x110C, 0x116E, 0x11B8], NFKC: [0xC90D], NFKD: [0x110C, 0x116E, 0x11B8] },
+{ source: [0xC90E], NFC: [0xC90E], NFD: [0x110C, 0x116E, 0x11B9], NFKC: [0xC90E], NFKD: [0x110C, 0x116E, 0x11B9] },
+{ source: [0xC90F], NFC: [0xC90F], NFD: [0x110C, 0x116E, 0x11BA], NFKC: [0xC90F], NFKD: [0x110C, 0x116E, 0x11BA] },
+{ source: [0xC910], NFC: [0xC910], NFD: [0x110C, 0x116E, 0x11BB], NFKC: [0xC910], NFKD: [0x110C, 0x116E, 0x11BB] },
+{ source: [0xC911], NFC: [0xC911], NFD: [0x110C, 0x116E, 0x11BC], NFKC: [0xC911], NFKD: [0x110C, 0x116E, 0x11BC] },
+{ source: [0xC912], NFC: [0xC912], NFD: [0x110C, 0x116E, 0x11BD], NFKC: [0xC912], NFKD: [0x110C, 0x116E, 0x11BD] },
+{ source: [0xC913], NFC: [0xC913], NFD: [0x110C, 0x116E, 0x11BE], NFKC: [0xC913], NFKD: [0x110C, 0x116E, 0x11BE] },
+{ source: [0xC914], NFC: [0xC914], NFD: [0x110C, 0x116E, 0x11BF], NFKC: [0xC914], NFKD: [0x110C, 0x116E, 0x11BF] },
+{ source: [0xC915], NFC: [0xC915], NFD: [0x110C, 0x116E, 0x11C0], NFKC: [0xC915], NFKD: [0x110C, 0x116E, 0x11C0] },
+{ source: [0xC916], NFC: [0xC916], NFD: [0x110C, 0x116E, 0x11C1], NFKC: [0xC916], NFKD: [0x110C, 0x116E, 0x11C1] },
+{ source: [0xC917], NFC: [0xC917], NFD: [0x110C, 0x116E, 0x11C2], NFKC: [0xC917], NFKD: [0x110C, 0x116E, 0x11C2] },
+{ source: [0xC918], NFC: [0xC918], NFD: [0x110C, 0x116F], NFKC: [0xC918], NFKD: [0x110C, 0x116F] },
+{ source: [0xC919], NFC: [0xC919], NFD: [0x110C, 0x116F, 0x11A8], NFKC: [0xC919], NFKD: [0x110C, 0x116F, 0x11A8] },
+{ source: [0xC91A], NFC: [0xC91A], NFD: [0x110C, 0x116F, 0x11A9], NFKC: [0xC91A], NFKD: [0x110C, 0x116F, 0x11A9] },
+{ source: [0xC91B], NFC: [0xC91B], NFD: [0x110C, 0x116F, 0x11AA], NFKC: [0xC91B], NFKD: [0x110C, 0x116F, 0x11AA] },
+{ source: [0xC91C], NFC: [0xC91C], NFD: [0x110C, 0x116F, 0x11AB], NFKC: [0xC91C], NFKD: [0x110C, 0x116F, 0x11AB] },
+{ source: [0xC91D], NFC: [0xC91D], NFD: [0x110C, 0x116F, 0x11AC], NFKC: [0xC91D], NFKD: [0x110C, 0x116F, 0x11AC] },
+{ source: [0xC91E], NFC: [0xC91E], NFD: [0x110C, 0x116F, 0x11AD], NFKC: [0xC91E], NFKD: [0x110C, 0x116F, 0x11AD] },
+{ source: [0xC91F], NFC: [0xC91F], NFD: [0x110C, 0x116F, 0x11AE], NFKC: [0xC91F], NFKD: [0x110C, 0x116F, 0x11AE] },
+{ source: [0xC920], NFC: [0xC920], NFD: [0x110C, 0x116F, 0x11AF], NFKC: [0xC920], NFKD: [0x110C, 0x116F, 0x11AF] },
+{ source: [0xC921], NFC: [0xC921], NFD: [0x110C, 0x116F, 0x11B0], NFKC: [0xC921], NFKD: [0x110C, 0x116F, 0x11B0] },
+{ source: [0xC922], NFC: [0xC922], NFD: [0x110C, 0x116F, 0x11B1], NFKC: [0xC922], NFKD: [0x110C, 0x116F, 0x11B1] },
+{ source: [0xC923], NFC: [0xC923], NFD: [0x110C, 0x116F, 0x11B2], NFKC: [0xC923], NFKD: [0x110C, 0x116F, 0x11B2] },
+{ source: [0xC924], NFC: [0xC924], NFD: [0x110C, 0x116F, 0x11B3], NFKC: [0xC924], NFKD: [0x110C, 0x116F, 0x11B3] },
+{ source: [0xC925], NFC: [0xC925], NFD: [0x110C, 0x116F, 0x11B4], NFKC: [0xC925], NFKD: [0x110C, 0x116F, 0x11B4] },
+{ source: [0xC926], NFC: [0xC926], NFD: [0x110C, 0x116F, 0x11B5], NFKC: [0xC926], NFKD: [0x110C, 0x116F, 0x11B5] },
+{ source: [0xC927], NFC: [0xC927], NFD: [0x110C, 0x116F, 0x11B6], NFKC: [0xC927], NFKD: [0x110C, 0x116F, 0x11B6] },
+{ source: [0xC928], NFC: [0xC928], NFD: [0x110C, 0x116F, 0x11B7], NFKC: [0xC928], NFKD: [0x110C, 0x116F, 0x11B7] },
+{ source: [0xC929], NFC: [0xC929], NFD: [0x110C, 0x116F, 0x11B8], NFKC: [0xC929], NFKD: [0x110C, 0x116F, 0x11B8] },
+{ source: [0xC92A], NFC: [0xC92A], NFD: [0x110C, 0x116F, 0x11B9], NFKC: [0xC92A], NFKD: [0x110C, 0x116F, 0x11B9] },
+{ source: [0xC92B], NFC: [0xC92B], NFD: [0x110C, 0x116F, 0x11BA], NFKC: [0xC92B], NFKD: [0x110C, 0x116F, 0x11BA] },
+{ source: [0xC92C], NFC: [0xC92C], NFD: [0x110C, 0x116F, 0x11BB], NFKC: [0xC92C], NFKD: [0x110C, 0x116F, 0x11BB] },
+{ source: [0xC92D], NFC: [0xC92D], NFD: [0x110C, 0x116F, 0x11BC], NFKC: [0xC92D], NFKD: [0x110C, 0x116F, 0x11BC] },
+{ source: [0xC92E], NFC: [0xC92E], NFD: [0x110C, 0x116F, 0x11BD], NFKC: [0xC92E], NFKD: [0x110C, 0x116F, 0x11BD] },
+{ source: [0xC92F], NFC: [0xC92F], NFD: [0x110C, 0x116F, 0x11BE], NFKC: [0xC92F], NFKD: [0x110C, 0x116F, 0x11BE] },
+{ source: [0xC930], NFC: [0xC930], NFD: [0x110C, 0x116F, 0x11BF], NFKC: [0xC930], NFKD: [0x110C, 0x116F, 0x11BF] },
+{ source: [0xC931], NFC: [0xC931], NFD: [0x110C, 0x116F, 0x11C0], NFKC: [0xC931], NFKD: [0x110C, 0x116F, 0x11C0] },
+{ source: [0xC932], NFC: [0xC932], NFD: [0x110C, 0x116F, 0x11C1], NFKC: [0xC932], NFKD: [0x110C, 0x116F, 0x11C1] },
+{ source: [0xC933], NFC: [0xC933], NFD: [0x110C, 0x116F, 0x11C2], NFKC: [0xC933], NFKD: [0x110C, 0x116F, 0x11C2] },
+{ source: [0xC934], NFC: [0xC934], NFD: [0x110C, 0x1170], NFKC: [0xC934], NFKD: [0x110C, 0x1170] },
+{ source: [0xC935], NFC: [0xC935], NFD: [0x110C, 0x1170, 0x11A8], NFKC: [0xC935], NFKD: [0x110C, 0x1170, 0x11A8] },
+{ source: [0xC936], NFC: [0xC936], NFD: [0x110C, 0x1170, 0x11A9], NFKC: [0xC936], NFKD: [0x110C, 0x1170, 0x11A9] },
+{ source: [0xC937], NFC: [0xC937], NFD: [0x110C, 0x1170, 0x11AA], NFKC: [0xC937], NFKD: [0x110C, 0x1170, 0x11AA] },
+{ source: [0xC938], NFC: [0xC938], NFD: [0x110C, 0x1170, 0x11AB], NFKC: [0xC938], NFKD: [0x110C, 0x1170, 0x11AB] },
+{ source: [0xC939], NFC: [0xC939], NFD: [0x110C, 0x1170, 0x11AC], NFKC: [0xC939], NFKD: [0x110C, 0x1170, 0x11AC] },
+{ source: [0xC93A], NFC: [0xC93A], NFD: [0x110C, 0x1170, 0x11AD], NFKC: [0xC93A], NFKD: [0x110C, 0x1170, 0x11AD] },
+{ source: [0xC93B], NFC: [0xC93B], NFD: [0x110C, 0x1170, 0x11AE], NFKC: [0xC93B], NFKD: [0x110C, 0x1170, 0x11AE] },
+{ source: [0xC93C], NFC: [0xC93C], NFD: [0x110C, 0x1170, 0x11AF], NFKC: [0xC93C], NFKD: [0x110C, 0x1170, 0x11AF] },
+{ source: [0xC93D], NFC: [0xC93D], NFD: [0x110C, 0x1170, 0x11B0], NFKC: [0xC93D], NFKD: [0x110C, 0x1170, 0x11B0] },
+{ source: [0xC93E], NFC: [0xC93E], NFD: [0x110C, 0x1170, 0x11B1], NFKC: [0xC93E], NFKD: [0x110C, 0x1170, 0x11B1] },
+{ source: [0xC93F], NFC: [0xC93F], NFD: [0x110C, 0x1170, 0x11B2], NFKC: [0xC93F], NFKD: [0x110C, 0x1170, 0x11B2] },
+{ source: [0xC940], NFC: [0xC940], NFD: [0x110C, 0x1170, 0x11B3], NFKC: [0xC940], NFKD: [0x110C, 0x1170, 0x11B3] },
+{ source: [0xC941], NFC: [0xC941], NFD: [0x110C, 0x1170, 0x11B4], NFKC: [0xC941], NFKD: [0x110C, 0x1170, 0x11B4] },
+{ source: [0xC942], NFC: [0xC942], NFD: [0x110C, 0x1170, 0x11B5], NFKC: [0xC942], NFKD: [0x110C, 0x1170, 0x11B5] },
+{ source: [0xC943], NFC: [0xC943], NFD: [0x110C, 0x1170, 0x11B6], NFKC: [0xC943], NFKD: [0x110C, 0x1170, 0x11B6] },
+{ source: [0xC944], NFC: [0xC944], NFD: [0x110C, 0x1170, 0x11B7], NFKC: [0xC944], NFKD: [0x110C, 0x1170, 0x11B7] },
+{ source: [0xC945], NFC: [0xC945], NFD: [0x110C, 0x1170, 0x11B8], NFKC: [0xC945], NFKD: [0x110C, 0x1170, 0x11B8] },
+{ source: [0xC946], NFC: [0xC946], NFD: [0x110C, 0x1170, 0x11B9], NFKC: [0xC946], NFKD: [0x110C, 0x1170, 0x11B9] },
+{ source: [0xC947], NFC: [0xC947], NFD: [0x110C, 0x1170, 0x11BA], NFKC: [0xC947], NFKD: [0x110C, 0x1170, 0x11BA] },
+{ source: [0xC948], NFC: [0xC948], NFD: [0x110C, 0x1170, 0x11BB], NFKC: [0xC948], NFKD: [0x110C, 0x1170, 0x11BB] },
+{ source: [0xC949], NFC: [0xC949], NFD: [0x110C, 0x1170, 0x11BC], NFKC: [0xC949], NFKD: [0x110C, 0x1170, 0x11BC] },
+{ source: [0xC94A], NFC: [0xC94A], NFD: [0x110C, 0x1170, 0x11BD], NFKC: [0xC94A], NFKD: [0x110C, 0x1170, 0x11BD] },
+{ source: [0xC94B], NFC: [0xC94B], NFD: [0x110C, 0x1170, 0x11BE], NFKC: [0xC94B], NFKD: [0x110C, 0x1170, 0x11BE] },
+{ source: [0xC94C], NFC: [0xC94C], NFD: [0x110C, 0x1170, 0x11BF], NFKC: [0xC94C], NFKD: [0x110C, 0x1170, 0x11BF] },
+{ source: [0xC94D], NFC: [0xC94D], NFD: [0x110C, 0x1170, 0x11C0], NFKC: [0xC94D], NFKD: [0x110C, 0x1170, 0x11C0] },
+{ source: [0xC94E], NFC: [0xC94E], NFD: [0x110C, 0x1170, 0x11C1], NFKC: [0xC94E], NFKD: [0x110C, 0x1170, 0x11C1] },
+{ source: [0xC94F], NFC: [0xC94F], NFD: [0x110C, 0x1170, 0x11C2], NFKC: [0xC94F], NFKD: [0x110C, 0x1170, 0x11C2] },
+{ source: [0xC950], NFC: [0xC950], NFD: [0x110C, 0x1171], NFKC: [0xC950], NFKD: [0x110C, 0x1171] },
+{ source: [0xC951], NFC: [0xC951], NFD: [0x110C, 0x1171, 0x11A8], NFKC: [0xC951], NFKD: [0x110C, 0x1171, 0x11A8] },
+{ source: [0xC952], NFC: [0xC952], NFD: [0x110C, 0x1171, 0x11A9], NFKC: [0xC952], NFKD: [0x110C, 0x1171, 0x11A9] },
+{ source: [0xC953], NFC: [0xC953], NFD: [0x110C, 0x1171, 0x11AA], NFKC: [0xC953], NFKD: [0x110C, 0x1171, 0x11AA] },
+{ source: [0xC954], NFC: [0xC954], NFD: [0x110C, 0x1171, 0x11AB], NFKC: [0xC954], NFKD: [0x110C, 0x1171, 0x11AB] },
+{ source: [0xC955], NFC: [0xC955], NFD: [0x110C, 0x1171, 0x11AC], NFKC: [0xC955], NFKD: [0x110C, 0x1171, 0x11AC] },
+{ source: [0xC956], NFC: [0xC956], NFD: [0x110C, 0x1171, 0x11AD], NFKC: [0xC956], NFKD: [0x110C, 0x1171, 0x11AD] },
+{ source: [0xC957], NFC: [0xC957], NFD: [0x110C, 0x1171, 0x11AE], NFKC: [0xC957], NFKD: [0x110C, 0x1171, 0x11AE] },
+{ source: [0xC958], NFC: [0xC958], NFD: [0x110C, 0x1171, 0x11AF], NFKC: [0xC958], NFKD: [0x110C, 0x1171, 0x11AF] },
+{ source: [0xC959], NFC: [0xC959], NFD: [0x110C, 0x1171, 0x11B0], NFKC: [0xC959], NFKD: [0x110C, 0x1171, 0x11B0] },
+{ source: [0xC95A], NFC: [0xC95A], NFD: [0x110C, 0x1171, 0x11B1], NFKC: [0xC95A], NFKD: [0x110C, 0x1171, 0x11B1] },
+{ source: [0xC95B], NFC: [0xC95B], NFD: [0x110C, 0x1171, 0x11B2], NFKC: [0xC95B], NFKD: [0x110C, 0x1171, 0x11B2] },
+{ source: [0xC95C], NFC: [0xC95C], NFD: [0x110C, 0x1171, 0x11B3], NFKC: [0xC95C], NFKD: [0x110C, 0x1171, 0x11B3] },
+{ source: [0xC95D], NFC: [0xC95D], NFD: [0x110C, 0x1171, 0x11B4], NFKC: [0xC95D], NFKD: [0x110C, 0x1171, 0x11B4] },
+{ source: [0xC95E], NFC: [0xC95E], NFD: [0x110C, 0x1171, 0x11B5], NFKC: [0xC95E], NFKD: [0x110C, 0x1171, 0x11B5] },
+{ source: [0xC95F], NFC: [0xC95F], NFD: [0x110C, 0x1171, 0x11B6], NFKC: [0xC95F], NFKD: [0x110C, 0x1171, 0x11B6] },
+{ source: [0xC960], NFC: [0xC960], NFD: [0x110C, 0x1171, 0x11B7], NFKC: [0xC960], NFKD: [0x110C, 0x1171, 0x11B7] },
+{ source: [0xC961], NFC: [0xC961], NFD: [0x110C, 0x1171, 0x11B8], NFKC: [0xC961], NFKD: [0x110C, 0x1171, 0x11B8] },
+{ source: [0xC962], NFC: [0xC962], NFD: [0x110C, 0x1171, 0x11B9], NFKC: [0xC962], NFKD: [0x110C, 0x1171, 0x11B9] },
+{ source: [0xC963], NFC: [0xC963], NFD: [0x110C, 0x1171, 0x11BA], NFKC: [0xC963], NFKD: [0x110C, 0x1171, 0x11BA] },
+{ source: [0xC964], NFC: [0xC964], NFD: [0x110C, 0x1171, 0x11BB], NFKC: [0xC964], NFKD: [0x110C, 0x1171, 0x11BB] },
+{ source: [0xC965], NFC: [0xC965], NFD: [0x110C, 0x1171, 0x11BC], NFKC: [0xC965], NFKD: [0x110C, 0x1171, 0x11BC] },
+{ source: [0xC966], NFC: [0xC966], NFD: [0x110C, 0x1171, 0x11BD], NFKC: [0xC966], NFKD: [0x110C, 0x1171, 0x11BD] },
+{ source: [0xC967], NFC: [0xC967], NFD: [0x110C, 0x1171, 0x11BE], NFKC: [0xC967], NFKD: [0x110C, 0x1171, 0x11BE] },
+{ source: [0xC968], NFC: [0xC968], NFD: [0x110C, 0x1171, 0x11BF], NFKC: [0xC968], NFKD: [0x110C, 0x1171, 0x11BF] },
+{ source: [0xC969], NFC: [0xC969], NFD: [0x110C, 0x1171, 0x11C0], NFKC: [0xC969], NFKD: [0x110C, 0x1171, 0x11C0] },
+{ source: [0xC96A], NFC: [0xC96A], NFD: [0x110C, 0x1171, 0x11C1], NFKC: [0xC96A], NFKD: [0x110C, 0x1171, 0x11C1] },
+{ source: [0xC96B], NFC: [0xC96B], NFD: [0x110C, 0x1171, 0x11C2], NFKC: [0xC96B], NFKD: [0x110C, 0x1171, 0x11C2] },
+{ source: [0xC96C], NFC: [0xC96C], NFD: [0x110C, 0x1172], NFKC: [0xC96C], NFKD: [0x110C, 0x1172] },
+{ source: [0xC96D], NFC: [0xC96D], NFD: [0x110C, 0x1172, 0x11A8], NFKC: [0xC96D], NFKD: [0x110C, 0x1172, 0x11A8] },
+{ source: [0xC96E], NFC: [0xC96E], NFD: [0x110C, 0x1172, 0x11A9], NFKC: [0xC96E], NFKD: [0x110C, 0x1172, 0x11A9] },
+{ source: [0xC96F], NFC: [0xC96F], NFD: [0x110C, 0x1172, 0x11AA], NFKC: [0xC96F], NFKD: [0x110C, 0x1172, 0x11AA] },
+{ source: [0xC970], NFC: [0xC970], NFD: [0x110C, 0x1172, 0x11AB], NFKC: [0xC970], NFKD: [0x110C, 0x1172, 0x11AB] },
+{ source: [0xC971], NFC: [0xC971], NFD: [0x110C, 0x1172, 0x11AC], NFKC: [0xC971], NFKD: [0x110C, 0x1172, 0x11AC] },
+{ source: [0xC972], NFC: [0xC972], NFD: [0x110C, 0x1172, 0x11AD], NFKC: [0xC972], NFKD: [0x110C, 0x1172, 0x11AD] },
+{ source: [0xC973], NFC: [0xC973], NFD: [0x110C, 0x1172, 0x11AE], NFKC: [0xC973], NFKD: [0x110C, 0x1172, 0x11AE] },
+{ source: [0xC974], NFC: [0xC974], NFD: [0x110C, 0x1172, 0x11AF], NFKC: [0xC974], NFKD: [0x110C, 0x1172, 0x11AF] },
+{ source: [0xC975], NFC: [0xC975], NFD: [0x110C, 0x1172, 0x11B0], NFKC: [0xC975], NFKD: [0x110C, 0x1172, 0x11B0] },
+{ source: [0xC976], NFC: [0xC976], NFD: [0x110C, 0x1172, 0x11B1], NFKC: [0xC976], NFKD: [0x110C, 0x1172, 0x11B1] },
+{ source: [0xC977], NFC: [0xC977], NFD: [0x110C, 0x1172, 0x11B2], NFKC: [0xC977], NFKD: [0x110C, 0x1172, 0x11B2] },
+{ source: [0xC978], NFC: [0xC978], NFD: [0x110C, 0x1172, 0x11B3], NFKC: [0xC978], NFKD: [0x110C, 0x1172, 0x11B3] },
+{ source: [0xC979], NFC: [0xC979], NFD: [0x110C, 0x1172, 0x11B4], NFKC: [0xC979], NFKD: [0x110C, 0x1172, 0x11B4] },
+{ source: [0xC97A], NFC: [0xC97A], NFD: [0x110C, 0x1172, 0x11B5], NFKC: [0xC97A], NFKD: [0x110C, 0x1172, 0x11B5] },
+{ source: [0xC97B], NFC: [0xC97B], NFD: [0x110C, 0x1172, 0x11B6], NFKC: [0xC97B], NFKD: [0x110C, 0x1172, 0x11B6] },
+{ source: [0xC97C], NFC: [0xC97C], NFD: [0x110C, 0x1172, 0x11B7], NFKC: [0xC97C], NFKD: [0x110C, 0x1172, 0x11B7] },
+{ source: [0xC97D], NFC: [0xC97D], NFD: [0x110C, 0x1172, 0x11B8], NFKC: [0xC97D], NFKD: [0x110C, 0x1172, 0x11B8] },
+{ source: [0xC97E], NFC: [0xC97E], NFD: [0x110C, 0x1172, 0x11B9], NFKC: [0xC97E], NFKD: [0x110C, 0x1172, 0x11B9] },
+{ source: [0xC97F], NFC: [0xC97F], NFD: [0x110C, 0x1172, 0x11BA], NFKC: [0xC97F], NFKD: [0x110C, 0x1172, 0x11BA] },
+{ source: [0xC980], NFC: [0xC980], NFD: [0x110C, 0x1172, 0x11BB], NFKC: [0xC980], NFKD: [0x110C, 0x1172, 0x11BB] },
+{ source: [0xC981], NFC: [0xC981], NFD: [0x110C, 0x1172, 0x11BC], NFKC: [0xC981], NFKD: [0x110C, 0x1172, 0x11BC] },
+{ source: [0xC982], NFC: [0xC982], NFD: [0x110C, 0x1172, 0x11BD], NFKC: [0xC982], NFKD: [0x110C, 0x1172, 0x11BD] },
+{ source: [0xC983], NFC: [0xC983], NFD: [0x110C, 0x1172, 0x11BE], NFKC: [0xC983], NFKD: [0x110C, 0x1172, 0x11BE] },
+{ source: [0xC984], NFC: [0xC984], NFD: [0x110C, 0x1172, 0x11BF], NFKC: [0xC984], NFKD: [0x110C, 0x1172, 0x11BF] },
+{ source: [0xC985], NFC: [0xC985], NFD: [0x110C, 0x1172, 0x11C0], NFKC: [0xC985], NFKD: [0x110C, 0x1172, 0x11C0] },
+{ source: [0xC986], NFC: [0xC986], NFD: [0x110C, 0x1172, 0x11C1], NFKC: [0xC986], NFKD: [0x110C, 0x1172, 0x11C1] },
+{ source: [0xC987], NFC: [0xC987], NFD: [0x110C, 0x1172, 0x11C2], NFKC: [0xC987], NFKD: [0x110C, 0x1172, 0x11C2] },
+{ source: [0xC988], NFC: [0xC988], NFD: [0x110C, 0x1173], NFKC: [0xC988], NFKD: [0x110C, 0x1173] },
+{ source: [0xC989], NFC: [0xC989], NFD: [0x110C, 0x1173, 0x11A8], NFKC: [0xC989], NFKD: [0x110C, 0x1173, 0x11A8] },
+{ source: [0xC98A], NFC: [0xC98A], NFD: [0x110C, 0x1173, 0x11A9], NFKC: [0xC98A], NFKD: [0x110C, 0x1173, 0x11A9] },
+{ source: [0xC98B], NFC: [0xC98B], NFD: [0x110C, 0x1173, 0x11AA], NFKC: [0xC98B], NFKD: [0x110C, 0x1173, 0x11AA] },
+{ source: [0xC98C], NFC: [0xC98C], NFD: [0x110C, 0x1173, 0x11AB], NFKC: [0xC98C], NFKD: [0x110C, 0x1173, 0x11AB] },
+{ source: [0xC98D], NFC: [0xC98D], NFD: [0x110C, 0x1173, 0x11AC], NFKC: [0xC98D], NFKD: [0x110C, 0x1173, 0x11AC] },
+{ source: [0xC98E], NFC: [0xC98E], NFD: [0x110C, 0x1173, 0x11AD], NFKC: [0xC98E], NFKD: [0x110C, 0x1173, 0x11AD] },
+{ source: [0xC98F], NFC: [0xC98F], NFD: [0x110C, 0x1173, 0x11AE], NFKC: [0xC98F], NFKD: [0x110C, 0x1173, 0x11AE] },
+{ source: [0xC990], NFC: [0xC990], NFD: [0x110C, 0x1173, 0x11AF], NFKC: [0xC990], NFKD: [0x110C, 0x1173, 0x11AF] },
+{ source: [0xC991], NFC: [0xC991], NFD: [0x110C, 0x1173, 0x11B0], NFKC: [0xC991], NFKD: [0x110C, 0x1173, 0x11B0] },
+{ source: [0xC992], NFC: [0xC992], NFD: [0x110C, 0x1173, 0x11B1], NFKC: [0xC992], NFKD: [0x110C, 0x1173, 0x11B1] },
+{ source: [0xC993], NFC: [0xC993], NFD: [0x110C, 0x1173, 0x11B2], NFKC: [0xC993], NFKD: [0x110C, 0x1173, 0x11B2] },
+{ source: [0xC994], NFC: [0xC994], NFD: [0x110C, 0x1173, 0x11B3], NFKC: [0xC994], NFKD: [0x110C, 0x1173, 0x11B3] },
+{ source: [0xC995], NFC: [0xC995], NFD: [0x110C, 0x1173, 0x11B4], NFKC: [0xC995], NFKD: [0x110C, 0x1173, 0x11B4] },
+{ source: [0xC996], NFC: [0xC996], NFD: [0x110C, 0x1173, 0x11B5], NFKC: [0xC996], NFKD: [0x110C, 0x1173, 0x11B5] },
+{ source: [0xC997], NFC: [0xC997], NFD: [0x110C, 0x1173, 0x11B6], NFKC: [0xC997], NFKD: [0x110C, 0x1173, 0x11B6] },
+{ source: [0xC998], NFC: [0xC998], NFD: [0x110C, 0x1173, 0x11B7], NFKC: [0xC998], NFKD: [0x110C, 0x1173, 0x11B7] },
+{ source: [0xC999], NFC: [0xC999], NFD: [0x110C, 0x1173, 0x11B8], NFKC: [0xC999], NFKD: [0x110C, 0x1173, 0x11B8] },
+{ source: [0xC99A], NFC: [0xC99A], NFD: [0x110C, 0x1173, 0x11B9], NFKC: [0xC99A], NFKD: [0x110C, 0x1173, 0x11B9] },
+{ source: [0xC99B], NFC: [0xC99B], NFD: [0x110C, 0x1173, 0x11BA], NFKC: [0xC99B], NFKD: [0x110C, 0x1173, 0x11BA] },
+{ source: [0xC99C], NFC: [0xC99C], NFD: [0x110C, 0x1173, 0x11BB], NFKC: [0xC99C], NFKD: [0x110C, 0x1173, 0x11BB] },
+{ source: [0xC99D], NFC: [0xC99D], NFD: [0x110C, 0x1173, 0x11BC], NFKC: [0xC99D], NFKD: [0x110C, 0x1173, 0x11BC] },
+{ source: [0xC99E], NFC: [0xC99E], NFD: [0x110C, 0x1173, 0x11BD], NFKC: [0xC99E], NFKD: [0x110C, 0x1173, 0x11BD] },
+{ source: [0xC99F], NFC: [0xC99F], NFD: [0x110C, 0x1173, 0x11BE], NFKC: [0xC99F], NFKD: [0x110C, 0x1173, 0x11BE] },
+{ source: [0xC9A0], NFC: [0xC9A0], NFD: [0x110C, 0x1173, 0x11BF], NFKC: [0xC9A0], NFKD: [0x110C, 0x1173, 0x11BF] },
+{ source: [0xC9A1], NFC: [0xC9A1], NFD: [0x110C, 0x1173, 0x11C0], NFKC: [0xC9A1], NFKD: [0x110C, 0x1173, 0x11C0] },
+{ source: [0xC9A2], NFC: [0xC9A2], NFD: [0x110C, 0x1173, 0x11C1], NFKC: [0xC9A2], NFKD: [0x110C, 0x1173, 0x11C1] },
+{ source: [0xC9A3], NFC: [0xC9A3], NFD: [0x110C, 0x1173, 0x11C2], NFKC: [0xC9A3], NFKD: [0x110C, 0x1173, 0x11C2] },
+{ source: [0xC9A4], NFC: [0xC9A4], NFD: [0x110C, 0x1174], NFKC: [0xC9A4], NFKD: [0x110C, 0x1174] },
+{ source: [0xC9A5], NFC: [0xC9A5], NFD: [0x110C, 0x1174, 0x11A8], NFKC: [0xC9A5], NFKD: [0x110C, 0x1174, 0x11A8] },
+{ source: [0xC9A6], NFC: [0xC9A6], NFD: [0x110C, 0x1174, 0x11A9], NFKC: [0xC9A6], NFKD: [0x110C, 0x1174, 0x11A9] },
+{ source: [0xC9A7], NFC: [0xC9A7], NFD: [0x110C, 0x1174, 0x11AA], NFKC: [0xC9A7], NFKD: [0x110C, 0x1174, 0x11AA] },
+{ source: [0xC9A8], NFC: [0xC9A8], NFD: [0x110C, 0x1174, 0x11AB], NFKC: [0xC9A8], NFKD: [0x110C, 0x1174, 0x11AB] },
+{ source: [0xC9A9], NFC: [0xC9A9], NFD: [0x110C, 0x1174, 0x11AC], NFKC: [0xC9A9], NFKD: [0x110C, 0x1174, 0x11AC] },
+{ source: [0xC9AA], NFC: [0xC9AA], NFD: [0x110C, 0x1174, 0x11AD], NFKC: [0xC9AA], NFKD: [0x110C, 0x1174, 0x11AD] },
+{ source: [0xC9AB], NFC: [0xC9AB], NFD: [0x110C, 0x1174, 0x11AE], NFKC: [0xC9AB], NFKD: [0x110C, 0x1174, 0x11AE] },
+{ source: [0xC9AC], NFC: [0xC9AC], NFD: [0x110C, 0x1174, 0x11AF], NFKC: [0xC9AC], NFKD: [0x110C, 0x1174, 0x11AF] },
+{ source: [0xC9AD], NFC: [0xC9AD], NFD: [0x110C, 0x1174, 0x11B0], NFKC: [0xC9AD], NFKD: [0x110C, 0x1174, 0x11B0] },
+{ source: [0xC9AE], NFC: [0xC9AE], NFD: [0x110C, 0x1174, 0x11B1], NFKC: [0xC9AE], NFKD: [0x110C, 0x1174, 0x11B1] },
+{ source: [0xC9AF], NFC: [0xC9AF], NFD: [0x110C, 0x1174, 0x11B2], NFKC: [0xC9AF], NFKD: [0x110C, 0x1174, 0x11B2] },
+{ source: [0xC9B0], NFC: [0xC9B0], NFD: [0x110C, 0x1174, 0x11B3], NFKC: [0xC9B0], NFKD: [0x110C, 0x1174, 0x11B3] },
+{ source: [0xC9B1], NFC: [0xC9B1], NFD: [0x110C, 0x1174, 0x11B4], NFKC: [0xC9B1], NFKD: [0x110C, 0x1174, 0x11B4] },
+{ source: [0xC9B2], NFC: [0xC9B2], NFD: [0x110C, 0x1174, 0x11B5], NFKC: [0xC9B2], NFKD: [0x110C, 0x1174, 0x11B5] },
+{ source: [0xC9B3], NFC: [0xC9B3], NFD: [0x110C, 0x1174, 0x11B6], NFKC: [0xC9B3], NFKD: [0x110C, 0x1174, 0x11B6] },
+{ source: [0xC9B4], NFC: [0xC9B4], NFD: [0x110C, 0x1174, 0x11B7], NFKC: [0xC9B4], NFKD: [0x110C, 0x1174, 0x11B7] },
+{ source: [0xC9B5], NFC: [0xC9B5], NFD: [0x110C, 0x1174, 0x11B8], NFKC: [0xC9B5], NFKD: [0x110C, 0x1174, 0x11B8] },
+{ source: [0xC9B6], NFC: [0xC9B6], NFD: [0x110C, 0x1174, 0x11B9], NFKC: [0xC9B6], NFKD: [0x110C, 0x1174, 0x11B9] },
+{ source: [0xC9B7], NFC: [0xC9B7], NFD: [0x110C, 0x1174, 0x11BA], NFKC: [0xC9B7], NFKD: [0x110C, 0x1174, 0x11BA] },
+{ source: [0xC9B8], NFC: [0xC9B8], NFD: [0x110C, 0x1174, 0x11BB], NFKC: [0xC9B8], NFKD: [0x110C, 0x1174, 0x11BB] },
+{ source: [0xC9B9], NFC: [0xC9B9], NFD: [0x110C, 0x1174, 0x11BC], NFKC: [0xC9B9], NFKD: [0x110C, 0x1174, 0x11BC] },
+{ source: [0xC9BA], NFC: [0xC9BA], NFD: [0x110C, 0x1174, 0x11BD], NFKC: [0xC9BA], NFKD: [0x110C, 0x1174, 0x11BD] },
+{ source: [0xC9BB], NFC: [0xC9BB], NFD: [0x110C, 0x1174, 0x11BE], NFKC: [0xC9BB], NFKD: [0x110C, 0x1174, 0x11BE] },
+{ source: [0xC9BC], NFC: [0xC9BC], NFD: [0x110C, 0x1174, 0x11BF], NFKC: [0xC9BC], NFKD: [0x110C, 0x1174, 0x11BF] },
+{ source: [0xC9BD], NFC: [0xC9BD], NFD: [0x110C, 0x1174, 0x11C0], NFKC: [0xC9BD], NFKD: [0x110C, 0x1174, 0x11C0] },
+{ source: [0xC9BE], NFC: [0xC9BE], NFD: [0x110C, 0x1174, 0x11C1], NFKC: [0xC9BE], NFKD: [0x110C, 0x1174, 0x11C1] },
+{ source: [0xC9BF], NFC: [0xC9BF], NFD: [0x110C, 0x1174, 0x11C2], NFKC: [0xC9BF], NFKD: [0x110C, 0x1174, 0x11C2] },
+{ source: [0xC9C0], NFC: [0xC9C0], NFD: [0x110C, 0x1175], NFKC: [0xC9C0], NFKD: [0x110C, 0x1175] },
+{ source: [0xC9C1], NFC: [0xC9C1], NFD: [0x110C, 0x1175, 0x11A8], NFKC: [0xC9C1], NFKD: [0x110C, 0x1175, 0x11A8] },
+{ source: [0xC9C2], NFC: [0xC9C2], NFD: [0x110C, 0x1175, 0x11A9], NFKC: [0xC9C2], NFKD: [0x110C, 0x1175, 0x11A9] },
+{ source: [0xC9C3], NFC: [0xC9C3], NFD: [0x110C, 0x1175, 0x11AA], NFKC: [0xC9C3], NFKD: [0x110C, 0x1175, 0x11AA] },
+{ source: [0xC9C4], NFC: [0xC9C4], NFD: [0x110C, 0x1175, 0x11AB], NFKC: [0xC9C4], NFKD: [0x110C, 0x1175, 0x11AB] },
+{ source: [0xC9C5], NFC: [0xC9C5], NFD: [0x110C, 0x1175, 0x11AC], NFKC: [0xC9C5], NFKD: [0x110C, 0x1175, 0x11AC] },
+{ source: [0xC9C6], NFC: [0xC9C6], NFD: [0x110C, 0x1175, 0x11AD], NFKC: [0xC9C6], NFKD: [0x110C, 0x1175, 0x11AD] },
+{ source: [0xC9C7], NFC: [0xC9C7], NFD: [0x110C, 0x1175, 0x11AE], NFKC: [0xC9C7], NFKD: [0x110C, 0x1175, 0x11AE] },
+{ source: [0xC9C8], NFC: [0xC9C8], NFD: [0x110C, 0x1175, 0x11AF], NFKC: [0xC9C8], NFKD: [0x110C, 0x1175, 0x11AF] },
+{ source: [0xC9C9], NFC: [0xC9C9], NFD: [0x110C, 0x1175, 0x11B0], NFKC: [0xC9C9], NFKD: [0x110C, 0x1175, 0x11B0] },
+{ source: [0xC9CA], NFC: [0xC9CA], NFD: [0x110C, 0x1175, 0x11B1], NFKC: [0xC9CA], NFKD: [0x110C, 0x1175, 0x11B1] },
+{ source: [0xC9CB], NFC: [0xC9CB], NFD: [0x110C, 0x1175, 0x11B2], NFKC: [0xC9CB], NFKD: [0x110C, 0x1175, 0x11B2] },
+{ source: [0xC9CC], NFC: [0xC9CC], NFD: [0x110C, 0x1175, 0x11B3], NFKC: [0xC9CC], NFKD: [0x110C, 0x1175, 0x11B3] },
+{ source: [0xC9CD], NFC: [0xC9CD], NFD: [0x110C, 0x1175, 0x11B4], NFKC: [0xC9CD], NFKD: [0x110C, 0x1175, 0x11B4] },
+{ source: [0xC9CE], NFC: [0xC9CE], NFD: [0x110C, 0x1175, 0x11B5], NFKC: [0xC9CE], NFKD: [0x110C, 0x1175, 0x11B5] },
+{ source: [0xC9CF], NFC: [0xC9CF], NFD: [0x110C, 0x1175, 0x11B6], NFKC: [0xC9CF], NFKD: [0x110C, 0x1175, 0x11B6] },
+{ source: [0xC9D0], NFC: [0xC9D0], NFD: [0x110C, 0x1175, 0x11B7], NFKC: [0xC9D0], NFKD: [0x110C, 0x1175, 0x11B7] },
+{ source: [0xC9D1], NFC: [0xC9D1], NFD: [0x110C, 0x1175, 0x11B8], NFKC: [0xC9D1], NFKD: [0x110C, 0x1175, 0x11B8] },
+{ source: [0xC9D2], NFC: [0xC9D2], NFD: [0x110C, 0x1175, 0x11B9], NFKC: [0xC9D2], NFKD: [0x110C, 0x1175, 0x11B9] },
+{ source: [0xC9D3], NFC: [0xC9D3], NFD: [0x110C, 0x1175, 0x11BA], NFKC: [0xC9D3], NFKD: [0x110C, 0x1175, 0x11BA] },
+{ source: [0xC9D4], NFC: [0xC9D4], NFD: [0x110C, 0x1175, 0x11BB], NFKC: [0xC9D4], NFKD: [0x110C, 0x1175, 0x11BB] },
+{ source: [0xC9D5], NFC: [0xC9D5], NFD: [0x110C, 0x1175, 0x11BC], NFKC: [0xC9D5], NFKD: [0x110C, 0x1175, 0x11BC] },
+{ source: [0xC9D6], NFC: [0xC9D6], NFD: [0x110C, 0x1175, 0x11BD], NFKC: [0xC9D6], NFKD: [0x110C, 0x1175, 0x11BD] },
+{ source: [0xC9D7], NFC: [0xC9D7], NFD: [0x110C, 0x1175, 0x11BE], NFKC: [0xC9D7], NFKD: [0x110C, 0x1175, 0x11BE] },
+{ source: [0xC9D8], NFC: [0xC9D8], NFD: [0x110C, 0x1175, 0x11BF], NFKC: [0xC9D8], NFKD: [0x110C, 0x1175, 0x11BF] },
+{ source: [0xC9D9], NFC: [0xC9D9], NFD: [0x110C, 0x1175, 0x11C0], NFKC: [0xC9D9], NFKD: [0x110C, 0x1175, 0x11C0] },
+{ source: [0xC9DA], NFC: [0xC9DA], NFD: [0x110C, 0x1175, 0x11C1], NFKC: [0xC9DA], NFKD: [0x110C, 0x1175, 0x11C1] },
+{ source: [0xC9DB], NFC: [0xC9DB], NFD: [0x110C, 0x1175, 0x11C2], NFKC: [0xC9DB], NFKD: [0x110C, 0x1175, 0x11C2] },
+{ source: [0xC9DC], NFC: [0xC9DC], NFD: [0x110D, 0x1161], NFKC: [0xC9DC], NFKD: [0x110D, 0x1161] },
+{ source: [0xC9DD], NFC: [0xC9DD], NFD: [0x110D, 0x1161, 0x11A8], NFKC: [0xC9DD], NFKD: [0x110D, 0x1161, 0x11A8] },
+{ source: [0xC9DE], NFC: [0xC9DE], NFD: [0x110D, 0x1161, 0x11A9], NFKC: [0xC9DE], NFKD: [0x110D, 0x1161, 0x11A9] },
+{ source: [0xC9DF], NFC: [0xC9DF], NFD: [0x110D, 0x1161, 0x11AA], NFKC: [0xC9DF], NFKD: [0x110D, 0x1161, 0x11AA] },
+{ source: [0xC9E0], NFC: [0xC9E0], NFD: [0x110D, 0x1161, 0x11AB], NFKC: [0xC9E0], NFKD: [0x110D, 0x1161, 0x11AB] },
+{ source: [0xC9E1], NFC: [0xC9E1], NFD: [0x110D, 0x1161, 0x11AC], NFKC: [0xC9E1], NFKD: [0x110D, 0x1161, 0x11AC] },
+{ source: [0xC9E2], NFC: [0xC9E2], NFD: [0x110D, 0x1161, 0x11AD], NFKC: [0xC9E2], NFKD: [0x110D, 0x1161, 0x11AD] },
+{ source: [0xC9E3], NFC: [0xC9E3], NFD: [0x110D, 0x1161, 0x11AE], NFKC: [0xC9E3], NFKD: [0x110D, 0x1161, 0x11AE] },
+{ source: [0xC9E4], NFC: [0xC9E4], NFD: [0x110D, 0x1161, 0x11AF], NFKC: [0xC9E4], NFKD: [0x110D, 0x1161, 0x11AF] },
+{ source: [0xC9E5], NFC: [0xC9E5], NFD: [0x110D, 0x1161, 0x11B0], NFKC: [0xC9E5], NFKD: [0x110D, 0x1161, 0x11B0] },
+{ source: [0xC9E6], NFC: [0xC9E6], NFD: [0x110D, 0x1161, 0x11B1], NFKC: [0xC9E6], NFKD: [0x110D, 0x1161, 0x11B1] },
+{ source: [0xC9E7], NFC: [0xC9E7], NFD: [0x110D, 0x1161, 0x11B2], NFKC: [0xC9E7], NFKD: [0x110D, 0x1161, 0x11B2] },
+{ source: [0xC9E8], NFC: [0xC9E8], NFD: [0x110D, 0x1161, 0x11B3], NFKC: [0xC9E8], NFKD: [0x110D, 0x1161, 0x11B3] },
+{ source: [0xC9E9], NFC: [0xC9E9], NFD: [0x110D, 0x1161, 0x11B4], NFKC: [0xC9E9], NFKD: [0x110D, 0x1161, 0x11B4] },
+{ source: [0xC9EA], NFC: [0xC9EA], NFD: [0x110D, 0x1161, 0x11B5], NFKC: [0xC9EA], NFKD: [0x110D, 0x1161, 0x11B5] },
+{ source: [0xC9EB], NFC: [0xC9EB], NFD: [0x110D, 0x1161, 0x11B6], NFKC: [0xC9EB], NFKD: [0x110D, 0x1161, 0x11B6] },
+{ source: [0xC9EC], NFC: [0xC9EC], NFD: [0x110D, 0x1161, 0x11B7], NFKC: [0xC9EC], NFKD: [0x110D, 0x1161, 0x11B7] },
+{ source: [0xC9ED], NFC: [0xC9ED], NFD: [0x110D, 0x1161, 0x11B8], NFKC: [0xC9ED], NFKD: [0x110D, 0x1161, 0x11B8] },
+{ source: [0xC9EE], NFC: [0xC9EE], NFD: [0x110D, 0x1161, 0x11B9], NFKC: [0xC9EE], NFKD: [0x110D, 0x1161, 0x11B9] },
+{ source: [0xC9EF], NFC: [0xC9EF], NFD: [0x110D, 0x1161, 0x11BA], NFKC: [0xC9EF], NFKD: [0x110D, 0x1161, 0x11BA] },
+{ source: [0xC9F0], NFC: [0xC9F0], NFD: [0x110D, 0x1161, 0x11BB], NFKC: [0xC9F0], NFKD: [0x110D, 0x1161, 0x11BB] },
+{ source: [0xC9F1], NFC: [0xC9F1], NFD: [0x110D, 0x1161, 0x11BC], NFKC: [0xC9F1], NFKD: [0x110D, 0x1161, 0x11BC] },
+{ source: [0xC9F2], NFC: [0xC9F2], NFD: [0x110D, 0x1161, 0x11BD], NFKC: [0xC9F2], NFKD: [0x110D, 0x1161, 0x11BD] },
+{ source: [0xC9F3], NFC: [0xC9F3], NFD: [0x110D, 0x1161, 0x11BE], NFKC: [0xC9F3], NFKD: [0x110D, 0x1161, 0x11BE] },
+{ source: [0xC9F4], NFC: [0xC9F4], NFD: [0x110D, 0x1161, 0x11BF], NFKC: [0xC9F4], NFKD: [0x110D, 0x1161, 0x11BF] },
+{ source: [0xC9F5], NFC: [0xC9F5], NFD: [0x110D, 0x1161, 0x11C0], NFKC: [0xC9F5], NFKD: [0x110D, 0x1161, 0x11C0] },
+{ source: [0xC9F6], NFC: [0xC9F6], NFD: [0x110D, 0x1161, 0x11C1], NFKC: [0xC9F6], NFKD: [0x110D, 0x1161, 0x11C1] },
+{ source: [0xC9F7], NFC: [0xC9F7], NFD: [0x110D, 0x1161, 0x11C2], NFKC: [0xC9F7], NFKD: [0x110D, 0x1161, 0x11C2] },
+{ source: [0xC9F8], NFC: [0xC9F8], NFD: [0x110D, 0x1162], NFKC: [0xC9F8], NFKD: [0x110D, 0x1162] },
+{ source: [0xC9F9], NFC: [0xC9F9], NFD: [0x110D, 0x1162, 0x11A8], NFKC: [0xC9F9], NFKD: [0x110D, 0x1162, 0x11A8] },
+{ source: [0xC9FA], NFC: [0xC9FA], NFD: [0x110D, 0x1162, 0x11A9], NFKC: [0xC9FA], NFKD: [0x110D, 0x1162, 0x11A9] },
+{ source: [0xC9FB], NFC: [0xC9FB], NFD: [0x110D, 0x1162, 0x11AA], NFKC: [0xC9FB], NFKD: [0x110D, 0x1162, 0x11AA] },
+{ source: [0xC9FC], NFC: [0xC9FC], NFD: [0x110D, 0x1162, 0x11AB], NFKC: [0xC9FC], NFKD: [0x110D, 0x1162, 0x11AB] },
+{ source: [0xC9FD], NFC: [0xC9FD], NFD: [0x110D, 0x1162, 0x11AC], NFKC: [0xC9FD], NFKD: [0x110D, 0x1162, 0x11AC] },
+{ source: [0xC9FE], NFC: [0xC9FE], NFD: [0x110D, 0x1162, 0x11AD], NFKC: [0xC9FE], NFKD: [0x110D, 0x1162, 0x11AD] },
+{ source: [0xC9FF], NFC: [0xC9FF], NFD: [0x110D, 0x1162, 0x11AE], NFKC: [0xC9FF], NFKD: [0x110D, 0x1162, 0x11AE] },
+{ source: [0xCA00], NFC: [0xCA00], NFD: [0x110D, 0x1162, 0x11AF], NFKC: [0xCA00], NFKD: [0x110D, 0x1162, 0x11AF] },
+{ source: [0xCA01], NFC: [0xCA01], NFD: [0x110D, 0x1162, 0x11B0], NFKC: [0xCA01], NFKD: [0x110D, 0x1162, 0x11B0] },
+{ source: [0xCA02], NFC: [0xCA02], NFD: [0x110D, 0x1162, 0x11B1], NFKC: [0xCA02], NFKD: [0x110D, 0x1162, 0x11B1] },
+{ source: [0xCA03], NFC: [0xCA03], NFD: [0x110D, 0x1162, 0x11B2], NFKC: [0xCA03], NFKD: [0x110D, 0x1162, 0x11B2] },
+{ source: [0xCA04], NFC: [0xCA04], NFD: [0x110D, 0x1162, 0x11B3], NFKC: [0xCA04], NFKD: [0x110D, 0x1162, 0x11B3] },
+{ source: [0xCA05], NFC: [0xCA05], NFD: [0x110D, 0x1162, 0x11B4], NFKC: [0xCA05], NFKD: [0x110D, 0x1162, 0x11B4] },
+{ source: [0xCA06], NFC: [0xCA06], NFD: [0x110D, 0x1162, 0x11B5], NFKC: [0xCA06], NFKD: [0x110D, 0x1162, 0x11B5] },
+{ source: [0xCA07], NFC: [0xCA07], NFD: [0x110D, 0x1162, 0x11B6], NFKC: [0xCA07], NFKD: [0x110D, 0x1162, 0x11B6] },
+{ source: [0xCA08], NFC: [0xCA08], NFD: [0x110D, 0x1162, 0x11B7], NFKC: [0xCA08], NFKD: [0x110D, 0x1162, 0x11B7] },
+{ source: [0xCA09], NFC: [0xCA09], NFD: [0x110D, 0x1162, 0x11B8], NFKC: [0xCA09], NFKD: [0x110D, 0x1162, 0x11B8] },
+{ source: [0xCA0A], NFC: [0xCA0A], NFD: [0x110D, 0x1162, 0x11B9], NFKC: [0xCA0A], NFKD: [0x110D, 0x1162, 0x11B9] },
+{ source: [0xCA0B], NFC: [0xCA0B], NFD: [0x110D, 0x1162, 0x11BA], NFKC: [0xCA0B], NFKD: [0x110D, 0x1162, 0x11BA] },
+{ source: [0xCA0C], NFC: [0xCA0C], NFD: [0x110D, 0x1162, 0x11BB], NFKC: [0xCA0C], NFKD: [0x110D, 0x1162, 0x11BB] },
+{ source: [0xCA0D], NFC: [0xCA0D], NFD: [0x110D, 0x1162, 0x11BC], NFKC: [0xCA0D], NFKD: [0x110D, 0x1162, 0x11BC] },
+{ source: [0xCA0E], NFC: [0xCA0E], NFD: [0x110D, 0x1162, 0x11BD], NFKC: [0xCA0E], NFKD: [0x110D, 0x1162, 0x11BD] },
+{ source: [0xCA0F], NFC: [0xCA0F], NFD: [0x110D, 0x1162, 0x11BE], NFKC: [0xCA0F], NFKD: [0x110D, 0x1162, 0x11BE] },
+{ source: [0xCA10], NFC: [0xCA10], NFD: [0x110D, 0x1162, 0x11BF], NFKC: [0xCA10], NFKD: [0x110D, 0x1162, 0x11BF] },
+{ source: [0xCA11], NFC: [0xCA11], NFD: [0x110D, 0x1162, 0x11C0], NFKC: [0xCA11], NFKD: [0x110D, 0x1162, 0x11C0] },
+{ source: [0xCA12], NFC: [0xCA12], NFD: [0x110D, 0x1162, 0x11C1], NFKC: [0xCA12], NFKD: [0x110D, 0x1162, 0x11C1] },
+{ source: [0xCA13], NFC: [0xCA13], NFD: [0x110D, 0x1162, 0x11C2], NFKC: [0xCA13], NFKD: [0x110D, 0x1162, 0x11C2] },
+{ source: [0xCA14], NFC: [0xCA14], NFD: [0x110D, 0x1163], NFKC: [0xCA14], NFKD: [0x110D, 0x1163] },
+{ source: [0xCA15], NFC: [0xCA15], NFD: [0x110D, 0x1163, 0x11A8], NFKC: [0xCA15], NFKD: [0x110D, 0x1163, 0x11A8] },
+{ source: [0xCA16], NFC: [0xCA16], NFD: [0x110D, 0x1163, 0x11A9], NFKC: [0xCA16], NFKD: [0x110D, 0x1163, 0x11A9] },
+{ source: [0xCA17], NFC: [0xCA17], NFD: [0x110D, 0x1163, 0x11AA], NFKC: [0xCA17], NFKD: [0x110D, 0x1163, 0x11AA] },
+{ source: [0xCA18], NFC: [0xCA18], NFD: [0x110D, 0x1163, 0x11AB], NFKC: [0xCA18], NFKD: [0x110D, 0x1163, 0x11AB] },
+{ source: [0xCA19], NFC: [0xCA19], NFD: [0x110D, 0x1163, 0x11AC], NFKC: [0xCA19], NFKD: [0x110D, 0x1163, 0x11AC] },
+{ source: [0xCA1A], NFC: [0xCA1A], NFD: [0x110D, 0x1163, 0x11AD], NFKC: [0xCA1A], NFKD: [0x110D, 0x1163, 0x11AD] },
+{ source: [0xCA1B], NFC: [0xCA1B], NFD: [0x110D, 0x1163, 0x11AE], NFKC: [0xCA1B], NFKD: [0x110D, 0x1163, 0x11AE] },
+{ source: [0xCA1C], NFC: [0xCA1C], NFD: [0x110D, 0x1163, 0x11AF], NFKC: [0xCA1C], NFKD: [0x110D, 0x1163, 0x11AF] },
+{ source: [0xCA1D], NFC: [0xCA1D], NFD: [0x110D, 0x1163, 0x11B0], NFKC: [0xCA1D], NFKD: [0x110D, 0x1163, 0x11B0] },
+{ source: [0xCA1E], NFC: [0xCA1E], NFD: [0x110D, 0x1163, 0x11B1], NFKC: [0xCA1E], NFKD: [0x110D, 0x1163, 0x11B1] },
+{ source: [0xCA1F], NFC: [0xCA1F], NFD: [0x110D, 0x1163, 0x11B2], NFKC: [0xCA1F], NFKD: [0x110D, 0x1163, 0x11B2] },
+{ source: [0xCA20], NFC: [0xCA20], NFD: [0x110D, 0x1163, 0x11B3], NFKC: [0xCA20], NFKD: [0x110D, 0x1163, 0x11B3] },
+{ source: [0xCA21], NFC: [0xCA21], NFD: [0x110D, 0x1163, 0x11B4], NFKC: [0xCA21], NFKD: [0x110D, 0x1163, 0x11B4] },
+{ source: [0xCA22], NFC: [0xCA22], NFD: [0x110D, 0x1163, 0x11B5], NFKC: [0xCA22], NFKD: [0x110D, 0x1163, 0x11B5] },
+{ source: [0xCA23], NFC: [0xCA23], NFD: [0x110D, 0x1163, 0x11B6], NFKC: [0xCA23], NFKD: [0x110D, 0x1163, 0x11B6] },
+{ source: [0xCA24], NFC: [0xCA24], NFD: [0x110D, 0x1163, 0x11B7], NFKC: [0xCA24], NFKD: [0x110D, 0x1163, 0x11B7] },
+{ source: [0xCA25], NFC: [0xCA25], NFD: [0x110D, 0x1163, 0x11B8], NFKC: [0xCA25], NFKD: [0x110D, 0x1163, 0x11B8] },
+{ source: [0xCA26], NFC: [0xCA26], NFD: [0x110D, 0x1163, 0x11B9], NFKC: [0xCA26], NFKD: [0x110D, 0x1163, 0x11B9] },
+{ source: [0xCA27], NFC: [0xCA27], NFD: [0x110D, 0x1163, 0x11BA], NFKC: [0xCA27], NFKD: [0x110D, 0x1163, 0x11BA] },
+{ source: [0xCA28], NFC: [0xCA28], NFD: [0x110D, 0x1163, 0x11BB], NFKC: [0xCA28], NFKD: [0x110D, 0x1163, 0x11BB] },
+{ source: [0xCA29], NFC: [0xCA29], NFD: [0x110D, 0x1163, 0x11BC], NFKC: [0xCA29], NFKD: [0x110D, 0x1163, 0x11BC] },
+{ source: [0xCA2A], NFC: [0xCA2A], NFD: [0x110D, 0x1163, 0x11BD], NFKC: [0xCA2A], NFKD: [0x110D, 0x1163, 0x11BD] },
+{ source: [0xCA2B], NFC: [0xCA2B], NFD: [0x110D, 0x1163, 0x11BE], NFKC: [0xCA2B], NFKD: [0x110D, 0x1163, 0x11BE] },
+{ source: [0xCA2C], NFC: [0xCA2C], NFD: [0x110D, 0x1163, 0x11BF], NFKC: [0xCA2C], NFKD: [0x110D, 0x1163, 0x11BF] },
+{ source: [0xCA2D], NFC: [0xCA2D], NFD: [0x110D, 0x1163, 0x11C0], NFKC: [0xCA2D], NFKD: [0x110D, 0x1163, 0x11C0] },
+{ source: [0xCA2E], NFC: [0xCA2E], NFD: [0x110D, 0x1163, 0x11C1], NFKC: [0xCA2E], NFKD: [0x110D, 0x1163, 0x11C1] },
+{ source: [0xCA2F], NFC: [0xCA2F], NFD: [0x110D, 0x1163, 0x11C2], NFKC: [0xCA2F], NFKD: [0x110D, 0x1163, 0x11C2] },
+{ source: [0xCA30], NFC: [0xCA30], NFD: [0x110D, 0x1164], NFKC: [0xCA30], NFKD: [0x110D, 0x1164] },
+{ source: [0xCA31], NFC: [0xCA31], NFD: [0x110D, 0x1164, 0x11A8], NFKC: [0xCA31], NFKD: [0x110D, 0x1164, 0x11A8] },
+{ source: [0xCA32], NFC: [0xCA32], NFD: [0x110D, 0x1164, 0x11A9], NFKC: [0xCA32], NFKD: [0x110D, 0x1164, 0x11A9] },
+{ source: [0xCA33], NFC: [0xCA33], NFD: [0x110D, 0x1164, 0x11AA], NFKC: [0xCA33], NFKD: [0x110D, 0x1164, 0x11AA] },
+{ source: [0xCA34], NFC: [0xCA34], NFD: [0x110D, 0x1164, 0x11AB], NFKC: [0xCA34], NFKD: [0x110D, 0x1164, 0x11AB] },
+{ source: [0xCA35], NFC: [0xCA35], NFD: [0x110D, 0x1164, 0x11AC], NFKC: [0xCA35], NFKD: [0x110D, 0x1164, 0x11AC] },
+{ source: [0xCA36], NFC: [0xCA36], NFD: [0x110D, 0x1164, 0x11AD], NFKC: [0xCA36], NFKD: [0x110D, 0x1164, 0x11AD] },
+{ source: [0xCA37], NFC: [0xCA37], NFD: [0x110D, 0x1164, 0x11AE], NFKC: [0xCA37], NFKD: [0x110D, 0x1164, 0x11AE] },
+{ source: [0xCA38], NFC: [0xCA38], NFD: [0x110D, 0x1164, 0x11AF], NFKC: [0xCA38], NFKD: [0x110D, 0x1164, 0x11AF] },
+{ source: [0xCA39], NFC: [0xCA39], NFD: [0x110D, 0x1164, 0x11B0], NFKC: [0xCA39], NFKD: [0x110D, 0x1164, 0x11B0] },
+{ source: [0xCA3A], NFC: [0xCA3A], NFD: [0x110D, 0x1164, 0x11B1], NFKC: [0xCA3A], NFKD: [0x110D, 0x1164, 0x11B1] },
+{ source: [0xCA3B], NFC: [0xCA3B], NFD: [0x110D, 0x1164, 0x11B2], NFKC: [0xCA3B], NFKD: [0x110D, 0x1164, 0x11B2] },
+{ source: [0xCA3C], NFC: [0xCA3C], NFD: [0x110D, 0x1164, 0x11B3], NFKC: [0xCA3C], NFKD: [0x110D, 0x1164, 0x11B3] },
+{ source: [0xCA3D], NFC: [0xCA3D], NFD: [0x110D, 0x1164, 0x11B4], NFKC: [0xCA3D], NFKD: [0x110D, 0x1164, 0x11B4] },
+{ source: [0xCA3E], NFC: [0xCA3E], NFD: [0x110D, 0x1164, 0x11B5], NFKC: [0xCA3E], NFKD: [0x110D, 0x1164, 0x11B5] },
+{ source: [0xCA3F], NFC: [0xCA3F], NFD: [0x110D, 0x1164, 0x11B6], NFKC: [0xCA3F], NFKD: [0x110D, 0x1164, 0x11B6] },
+{ source: [0xCA40], NFC: [0xCA40], NFD: [0x110D, 0x1164, 0x11B7], NFKC: [0xCA40], NFKD: [0x110D, 0x1164, 0x11B7] },
+{ source: [0xCA41], NFC: [0xCA41], NFD: [0x110D, 0x1164, 0x11B8], NFKC: [0xCA41], NFKD: [0x110D, 0x1164, 0x11B8] },
+{ source: [0xCA42], NFC: [0xCA42], NFD: [0x110D, 0x1164, 0x11B9], NFKC: [0xCA42], NFKD: [0x110D, 0x1164, 0x11B9] },
+{ source: [0xCA43], NFC: [0xCA43], NFD: [0x110D, 0x1164, 0x11BA], NFKC: [0xCA43], NFKD: [0x110D, 0x1164, 0x11BA] },
+{ source: [0xCA44], NFC: [0xCA44], NFD: [0x110D, 0x1164, 0x11BB], NFKC: [0xCA44], NFKD: [0x110D, 0x1164, 0x11BB] },
+{ source: [0xCA45], NFC: [0xCA45], NFD: [0x110D, 0x1164, 0x11BC], NFKC: [0xCA45], NFKD: [0x110D, 0x1164, 0x11BC] },
+{ source: [0xCA46], NFC: [0xCA46], NFD: [0x110D, 0x1164, 0x11BD], NFKC: [0xCA46], NFKD: [0x110D, 0x1164, 0x11BD] },
+{ source: [0xCA47], NFC: [0xCA47], NFD: [0x110D, 0x1164, 0x11BE], NFKC: [0xCA47], NFKD: [0x110D, 0x1164, 0x11BE] },
+{ source: [0xCA48], NFC: [0xCA48], NFD: [0x110D, 0x1164, 0x11BF], NFKC: [0xCA48], NFKD: [0x110D, 0x1164, 0x11BF] },
+{ source: [0xCA49], NFC: [0xCA49], NFD: [0x110D, 0x1164, 0x11C0], NFKC: [0xCA49], NFKD: [0x110D, 0x1164, 0x11C0] },
+{ source: [0xCA4A], NFC: [0xCA4A], NFD: [0x110D, 0x1164, 0x11C1], NFKC: [0xCA4A], NFKD: [0x110D, 0x1164, 0x11C1] },
+{ source: [0xCA4B], NFC: [0xCA4B], NFD: [0x110D, 0x1164, 0x11C2], NFKC: [0xCA4B], NFKD: [0x110D, 0x1164, 0x11C2] },
+{ source: [0xCA4C], NFC: [0xCA4C], NFD: [0x110D, 0x1165], NFKC: [0xCA4C], NFKD: [0x110D, 0x1165] },
+{ source: [0xCA4D], NFC: [0xCA4D], NFD: [0x110D, 0x1165, 0x11A8], NFKC: [0xCA4D], NFKD: [0x110D, 0x1165, 0x11A8] },
+{ source: [0xCA4E], NFC: [0xCA4E], NFD: [0x110D, 0x1165, 0x11A9], NFKC: [0xCA4E], NFKD: [0x110D, 0x1165, 0x11A9] },
+{ source: [0xCA4F], NFC: [0xCA4F], NFD: [0x110D, 0x1165, 0x11AA], NFKC: [0xCA4F], NFKD: [0x110D, 0x1165, 0x11AA] },
+{ source: [0xCA50], NFC: [0xCA50], NFD: [0x110D, 0x1165, 0x11AB], NFKC: [0xCA50], NFKD: [0x110D, 0x1165, 0x11AB] },
+{ source: [0xCA51], NFC: [0xCA51], NFD: [0x110D, 0x1165, 0x11AC], NFKC: [0xCA51], NFKD: [0x110D, 0x1165, 0x11AC] },
+{ source: [0xCA52], NFC: [0xCA52], NFD: [0x110D, 0x1165, 0x11AD], NFKC: [0xCA52], NFKD: [0x110D, 0x1165, 0x11AD] },
+{ source: [0xCA53], NFC: [0xCA53], NFD: [0x110D, 0x1165, 0x11AE], NFKC: [0xCA53], NFKD: [0x110D, 0x1165, 0x11AE] },
+{ source: [0xCA54], NFC: [0xCA54], NFD: [0x110D, 0x1165, 0x11AF], NFKC: [0xCA54], NFKD: [0x110D, 0x1165, 0x11AF] },
+{ source: [0xCA55], NFC: [0xCA55], NFD: [0x110D, 0x1165, 0x11B0], NFKC: [0xCA55], NFKD: [0x110D, 0x1165, 0x11B0] },
+{ source: [0xCA56], NFC: [0xCA56], NFD: [0x110D, 0x1165, 0x11B1], NFKC: [0xCA56], NFKD: [0x110D, 0x1165, 0x11B1] },
+{ source: [0xCA57], NFC: [0xCA57], NFD: [0x110D, 0x1165, 0x11B2], NFKC: [0xCA57], NFKD: [0x110D, 0x1165, 0x11B2] },
+{ source: [0xCA58], NFC: [0xCA58], NFD: [0x110D, 0x1165, 0x11B3], NFKC: [0xCA58], NFKD: [0x110D, 0x1165, 0x11B3] },
+{ source: [0xCA59], NFC: [0xCA59], NFD: [0x110D, 0x1165, 0x11B4], NFKC: [0xCA59], NFKD: [0x110D, 0x1165, 0x11B4] },
+{ source: [0xCA5A], NFC: [0xCA5A], NFD: [0x110D, 0x1165, 0x11B5], NFKC: [0xCA5A], NFKD: [0x110D, 0x1165, 0x11B5] },
+{ source: [0xCA5B], NFC: [0xCA5B], NFD: [0x110D, 0x1165, 0x11B6], NFKC: [0xCA5B], NFKD: [0x110D, 0x1165, 0x11B6] },
+{ source: [0xCA5C], NFC: [0xCA5C], NFD: [0x110D, 0x1165, 0x11B7], NFKC: [0xCA5C], NFKD: [0x110D, 0x1165, 0x11B7] },
+{ source: [0xCA5D], NFC: [0xCA5D], NFD: [0x110D, 0x1165, 0x11B8], NFKC: [0xCA5D], NFKD: [0x110D, 0x1165, 0x11B8] },
+{ source: [0xCA5E], NFC: [0xCA5E], NFD: [0x110D, 0x1165, 0x11B9], NFKC: [0xCA5E], NFKD: [0x110D, 0x1165, 0x11B9] },
+{ source: [0xCA5F], NFC: [0xCA5F], NFD: [0x110D, 0x1165, 0x11BA], NFKC: [0xCA5F], NFKD: [0x110D, 0x1165, 0x11BA] },
+{ source: [0xCA60], NFC: [0xCA60], NFD: [0x110D, 0x1165, 0x11BB], NFKC: [0xCA60], NFKD: [0x110D, 0x1165, 0x11BB] },
+{ source: [0xCA61], NFC: [0xCA61], NFD: [0x110D, 0x1165, 0x11BC], NFKC: [0xCA61], NFKD: [0x110D, 0x1165, 0x11BC] },
+{ source: [0xCA62], NFC: [0xCA62], NFD: [0x110D, 0x1165, 0x11BD], NFKC: [0xCA62], NFKD: [0x110D, 0x1165, 0x11BD] },
+{ source: [0xCA63], NFC: [0xCA63], NFD: [0x110D, 0x1165, 0x11BE], NFKC: [0xCA63], NFKD: [0x110D, 0x1165, 0x11BE] },
+{ source: [0xCA64], NFC: [0xCA64], NFD: [0x110D, 0x1165, 0x11BF], NFKC: [0xCA64], NFKD: [0x110D, 0x1165, 0x11BF] },
+{ source: [0xCA65], NFC: [0xCA65], NFD: [0x110D, 0x1165, 0x11C0], NFKC: [0xCA65], NFKD: [0x110D, 0x1165, 0x11C0] },
+{ source: [0xCA66], NFC: [0xCA66], NFD: [0x110D, 0x1165, 0x11C1], NFKC: [0xCA66], NFKD: [0x110D, 0x1165, 0x11C1] },
+{ source: [0xCA67], NFC: [0xCA67], NFD: [0x110D, 0x1165, 0x11C2], NFKC: [0xCA67], NFKD: [0x110D, 0x1165, 0x11C2] },
+{ source: [0xCA68], NFC: [0xCA68], NFD: [0x110D, 0x1166], NFKC: [0xCA68], NFKD: [0x110D, 0x1166] },
+{ source: [0xCA69], NFC: [0xCA69], NFD: [0x110D, 0x1166, 0x11A8], NFKC: [0xCA69], NFKD: [0x110D, 0x1166, 0x11A8] },
+{ source: [0xCA6A], NFC: [0xCA6A], NFD: [0x110D, 0x1166, 0x11A9], NFKC: [0xCA6A], NFKD: [0x110D, 0x1166, 0x11A9] },
+{ source: [0xCA6B], NFC: [0xCA6B], NFD: [0x110D, 0x1166, 0x11AA], NFKC: [0xCA6B], NFKD: [0x110D, 0x1166, 0x11AA] },
+{ source: [0xCA6C], NFC: [0xCA6C], NFD: [0x110D, 0x1166, 0x11AB], NFKC: [0xCA6C], NFKD: [0x110D, 0x1166, 0x11AB] },
+{ source: [0xCA6D], NFC: [0xCA6D], NFD: [0x110D, 0x1166, 0x11AC], NFKC: [0xCA6D], NFKD: [0x110D, 0x1166, 0x11AC] },
+{ source: [0xCA6E], NFC: [0xCA6E], NFD: [0x110D, 0x1166, 0x11AD], NFKC: [0xCA6E], NFKD: [0x110D, 0x1166, 0x11AD] },
+{ source: [0xCA6F], NFC: [0xCA6F], NFD: [0x110D, 0x1166, 0x11AE], NFKC: [0xCA6F], NFKD: [0x110D, 0x1166, 0x11AE] },
+{ source: [0xCA70], NFC: [0xCA70], NFD: [0x110D, 0x1166, 0x11AF], NFKC: [0xCA70], NFKD: [0x110D, 0x1166, 0x11AF] },
+{ source: [0xCA71], NFC: [0xCA71], NFD: [0x110D, 0x1166, 0x11B0], NFKC: [0xCA71], NFKD: [0x110D, 0x1166, 0x11B0] },
+{ source: [0xCA72], NFC: [0xCA72], NFD: [0x110D, 0x1166, 0x11B1], NFKC: [0xCA72], NFKD: [0x110D, 0x1166, 0x11B1] },
+{ source: [0xCA73], NFC: [0xCA73], NFD: [0x110D, 0x1166, 0x11B2], NFKC: [0xCA73], NFKD: [0x110D, 0x1166, 0x11B2] },
+{ source: [0xCA74], NFC: [0xCA74], NFD: [0x110D, 0x1166, 0x11B3], NFKC: [0xCA74], NFKD: [0x110D, 0x1166, 0x11B3] },
+{ source: [0xCA75], NFC: [0xCA75], NFD: [0x110D, 0x1166, 0x11B4], NFKC: [0xCA75], NFKD: [0x110D, 0x1166, 0x11B4] },
+{ source: [0xCA76], NFC: [0xCA76], NFD: [0x110D, 0x1166, 0x11B5], NFKC: [0xCA76], NFKD: [0x110D, 0x1166, 0x11B5] },
+{ source: [0xCA77], NFC: [0xCA77], NFD: [0x110D, 0x1166, 0x11B6], NFKC: [0xCA77], NFKD: [0x110D, 0x1166, 0x11B6] },
+{ source: [0xCA78], NFC: [0xCA78], NFD: [0x110D, 0x1166, 0x11B7], NFKC: [0xCA78], NFKD: [0x110D, 0x1166, 0x11B7] },
+{ source: [0xCA79], NFC: [0xCA79], NFD: [0x110D, 0x1166, 0x11B8], NFKC: [0xCA79], NFKD: [0x110D, 0x1166, 0x11B8] },
+{ source: [0xCA7A], NFC: [0xCA7A], NFD: [0x110D, 0x1166, 0x11B9], NFKC: [0xCA7A], NFKD: [0x110D, 0x1166, 0x11B9] },
+{ source: [0xCA7B], NFC: [0xCA7B], NFD: [0x110D, 0x1166, 0x11BA], NFKC: [0xCA7B], NFKD: [0x110D, 0x1166, 0x11BA] },
+{ source: [0xCA7C], NFC: [0xCA7C], NFD: [0x110D, 0x1166, 0x11BB], NFKC: [0xCA7C], NFKD: [0x110D, 0x1166, 0x11BB] },
+{ source: [0xCA7D], NFC: [0xCA7D], NFD: [0x110D, 0x1166, 0x11BC], NFKC: [0xCA7D], NFKD: [0x110D, 0x1166, 0x11BC] },
+{ source: [0xCA7E], NFC: [0xCA7E], NFD: [0x110D, 0x1166, 0x11BD], NFKC: [0xCA7E], NFKD: [0x110D, 0x1166, 0x11BD] },
+{ source: [0xCA7F], NFC: [0xCA7F], NFD: [0x110D, 0x1166, 0x11BE], NFKC: [0xCA7F], NFKD: [0x110D, 0x1166, 0x11BE] },
+{ source: [0xCA80], NFC: [0xCA80], NFD: [0x110D, 0x1166, 0x11BF], NFKC: [0xCA80], NFKD: [0x110D, 0x1166, 0x11BF] },
+{ source: [0xCA81], NFC: [0xCA81], NFD: [0x110D, 0x1166, 0x11C0], NFKC: [0xCA81], NFKD: [0x110D, 0x1166, 0x11C0] },
+{ source: [0xCA82], NFC: [0xCA82], NFD: [0x110D, 0x1166, 0x11C1], NFKC: [0xCA82], NFKD: [0x110D, 0x1166, 0x11C1] },
+{ source: [0xCA83], NFC: [0xCA83], NFD: [0x110D, 0x1166, 0x11C2], NFKC: [0xCA83], NFKD: [0x110D, 0x1166, 0x11C2] },
+{ source: [0xCA84], NFC: [0xCA84], NFD: [0x110D, 0x1167], NFKC: [0xCA84], NFKD: [0x110D, 0x1167] },
+{ source: [0xCA85], NFC: [0xCA85], NFD: [0x110D, 0x1167, 0x11A8], NFKC: [0xCA85], NFKD: [0x110D, 0x1167, 0x11A8] },
+{ source: [0xCA86], NFC: [0xCA86], NFD: [0x110D, 0x1167, 0x11A9], NFKC: [0xCA86], NFKD: [0x110D, 0x1167, 0x11A9] },
+{ source: [0xCA87], NFC: [0xCA87], NFD: [0x110D, 0x1167, 0x11AA], NFKC: [0xCA87], NFKD: [0x110D, 0x1167, 0x11AA] },
+{ source: [0xCA88], NFC: [0xCA88], NFD: [0x110D, 0x1167, 0x11AB], NFKC: [0xCA88], NFKD: [0x110D, 0x1167, 0x11AB] },
+{ source: [0xCA89], NFC: [0xCA89], NFD: [0x110D, 0x1167, 0x11AC], NFKC: [0xCA89], NFKD: [0x110D, 0x1167, 0x11AC] },
+{ source: [0xCA8A], NFC: [0xCA8A], NFD: [0x110D, 0x1167, 0x11AD], NFKC: [0xCA8A], NFKD: [0x110D, 0x1167, 0x11AD] },
+{ source: [0xCA8B], NFC: [0xCA8B], NFD: [0x110D, 0x1167, 0x11AE], NFKC: [0xCA8B], NFKD: [0x110D, 0x1167, 0x11AE] },
+{ source: [0xCA8C], NFC: [0xCA8C], NFD: [0x110D, 0x1167, 0x11AF], NFKC: [0xCA8C], NFKD: [0x110D, 0x1167, 0x11AF] },
+{ source: [0xCA8D], NFC: [0xCA8D], NFD: [0x110D, 0x1167, 0x11B0], NFKC: [0xCA8D], NFKD: [0x110D, 0x1167, 0x11B0] },
+{ source: [0xCA8E], NFC: [0xCA8E], NFD: [0x110D, 0x1167, 0x11B1], NFKC: [0xCA8E], NFKD: [0x110D, 0x1167, 0x11B1] },
+{ source: [0xCA8F], NFC: [0xCA8F], NFD: [0x110D, 0x1167, 0x11B2], NFKC: [0xCA8F], NFKD: [0x110D, 0x1167, 0x11B2] },
+{ source: [0xCA90], NFC: [0xCA90], NFD: [0x110D, 0x1167, 0x11B3], NFKC: [0xCA90], NFKD: [0x110D, 0x1167, 0x11B3] },
+{ source: [0xCA91], NFC: [0xCA91], NFD: [0x110D, 0x1167, 0x11B4], NFKC: [0xCA91], NFKD: [0x110D, 0x1167, 0x11B4] },
+{ source: [0xCA92], NFC: [0xCA92], NFD: [0x110D, 0x1167, 0x11B5], NFKC: [0xCA92], NFKD: [0x110D, 0x1167, 0x11B5] },
+{ source: [0xCA93], NFC: [0xCA93], NFD: [0x110D, 0x1167, 0x11B6], NFKC: [0xCA93], NFKD: [0x110D, 0x1167, 0x11B6] },
+{ source: [0xCA94], NFC: [0xCA94], NFD: [0x110D, 0x1167, 0x11B7], NFKC: [0xCA94], NFKD: [0x110D, 0x1167, 0x11B7] },
+{ source: [0xCA95], NFC: [0xCA95], NFD: [0x110D, 0x1167, 0x11B8], NFKC: [0xCA95], NFKD: [0x110D, 0x1167, 0x11B8] },
+{ source: [0xCA96], NFC: [0xCA96], NFD: [0x110D, 0x1167, 0x11B9], NFKC: [0xCA96], NFKD: [0x110D, 0x1167, 0x11B9] },
+{ source: [0xCA97], NFC: [0xCA97], NFD: [0x110D, 0x1167, 0x11BA], NFKC: [0xCA97], NFKD: [0x110D, 0x1167, 0x11BA] },
+{ source: [0xCA98], NFC: [0xCA98], NFD: [0x110D, 0x1167, 0x11BB], NFKC: [0xCA98], NFKD: [0x110D, 0x1167, 0x11BB] },
+{ source: [0xCA99], NFC: [0xCA99], NFD: [0x110D, 0x1167, 0x11BC], NFKC: [0xCA99], NFKD: [0x110D, 0x1167, 0x11BC] },
+{ source: [0xCA9A], NFC: [0xCA9A], NFD: [0x110D, 0x1167, 0x11BD], NFKC: [0xCA9A], NFKD: [0x110D, 0x1167, 0x11BD] },
+{ source: [0xCA9B], NFC: [0xCA9B], NFD: [0x110D, 0x1167, 0x11BE], NFKC: [0xCA9B], NFKD: [0x110D, 0x1167, 0x11BE] },
+{ source: [0xCA9C], NFC: [0xCA9C], NFD: [0x110D, 0x1167, 0x11BF], NFKC: [0xCA9C], NFKD: [0x110D, 0x1167, 0x11BF] },
+{ source: [0xCA9D], NFC: [0xCA9D], NFD: [0x110D, 0x1167, 0x11C0], NFKC: [0xCA9D], NFKD: [0x110D, 0x1167, 0x11C0] },
+{ source: [0xCA9E], NFC: [0xCA9E], NFD: [0x110D, 0x1167, 0x11C1], NFKC: [0xCA9E], NFKD: [0x110D, 0x1167, 0x11C1] },
+{ source: [0xCA9F], NFC: [0xCA9F], NFD: [0x110D, 0x1167, 0x11C2], NFKC: [0xCA9F], NFKD: [0x110D, 0x1167, 0x11C2] },
+{ source: [0xCAA0], NFC: [0xCAA0], NFD: [0x110D, 0x1168], NFKC: [0xCAA0], NFKD: [0x110D, 0x1168] },
+{ source: [0xCAA1], NFC: [0xCAA1], NFD: [0x110D, 0x1168, 0x11A8], NFKC: [0xCAA1], NFKD: [0x110D, 0x1168, 0x11A8] },
+{ source: [0xCAA2], NFC: [0xCAA2], NFD: [0x110D, 0x1168, 0x11A9], NFKC: [0xCAA2], NFKD: [0x110D, 0x1168, 0x11A9] },
+{ source: [0xCAA3], NFC: [0xCAA3], NFD: [0x110D, 0x1168, 0x11AA], NFKC: [0xCAA3], NFKD: [0x110D, 0x1168, 0x11AA] },
+{ source: [0xCAA4], NFC: [0xCAA4], NFD: [0x110D, 0x1168, 0x11AB], NFKC: [0xCAA4], NFKD: [0x110D, 0x1168, 0x11AB] },
+{ source: [0xCAA5], NFC: [0xCAA5], NFD: [0x110D, 0x1168, 0x11AC], NFKC: [0xCAA5], NFKD: [0x110D, 0x1168, 0x11AC] },
+{ source: [0xCAA6], NFC: [0xCAA6], NFD: [0x110D, 0x1168, 0x11AD], NFKC: [0xCAA6], NFKD: [0x110D, 0x1168, 0x11AD] },
+{ source: [0xCAA7], NFC: [0xCAA7], NFD: [0x110D, 0x1168, 0x11AE], NFKC: [0xCAA7], NFKD: [0x110D, 0x1168, 0x11AE] },
+{ source: [0xCAA8], NFC: [0xCAA8], NFD: [0x110D, 0x1168, 0x11AF], NFKC: [0xCAA8], NFKD: [0x110D, 0x1168, 0x11AF] },
+{ source: [0xCAA9], NFC: [0xCAA9], NFD: [0x110D, 0x1168, 0x11B0], NFKC: [0xCAA9], NFKD: [0x110D, 0x1168, 0x11B0] },
+{ source: [0xCAAA], NFC: [0xCAAA], NFD: [0x110D, 0x1168, 0x11B1], NFKC: [0xCAAA], NFKD: [0x110D, 0x1168, 0x11B1] },
+{ source: [0xCAAB], NFC: [0xCAAB], NFD: [0x110D, 0x1168, 0x11B2], NFKC: [0xCAAB], NFKD: [0x110D, 0x1168, 0x11B2] },
+{ source: [0xCAAC], NFC: [0xCAAC], NFD: [0x110D, 0x1168, 0x11B3], NFKC: [0xCAAC], NFKD: [0x110D, 0x1168, 0x11B3] },
+{ source: [0xCAAD], NFC: [0xCAAD], NFD: [0x110D, 0x1168, 0x11B4], NFKC: [0xCAAD], NFKD: [0x110D, 0x1168, 0x11B4] },
+{ source: [0xCAAE], NFC: [0xCAAE], NFD: [0x110D, 0x1168, 0x11B5], NFKC: [0xCAAE], NFKD: [0x110D, 0x1168, 0x11B5] },
+{ source: [0xCAAF], NFC: [0xCAAF], NFD: [0x110D, 0x1168, 0x11B6], NFKC: [0xCAAF], NFKD: [0x110D, 0x1168, 0x11B6] },
+{ source: [0xCAB0], NFC: [0xCAB0], NFD: [0x110D, 0x1168, 0x11B7], NFKC: [0xCAB0], NFKD: [0x110D, 0x1168, 0x11B7] },
+{ source: [0xCAB1], NFC: [0xCAB1], NFD: [0x110D, 0x1168, 0x11B8], NFKC: [0xCAB1], NFKD: [0x110D, 0x1168, 0x11B8] },
+{ source: [0xCAB2], NFC: [0xCAB2], NFD: [0x110D, 0x1168, 0x11B9], NFKC: [0xCAB2], NFKD: [0x110D, 0x1168, 0x11B9] },
+{ source: [0xCAB3], NFC: [0xCAB3], NFD: [0x110D, 0x1168, 0x11BA], NFKC: [0xCAB3], NFKD: [0x110D, 0x1168, 0x11BA] },
+{ source: [0xCAB4], NFC: [0xCAB4], NFD: [0x110D, 0x1168, 0x11BB], NFKC: [0xCAB4], NFKD: [0x110D, 0x1168, 0x11BB] },
+{ source: [0xCAB5], NFC: [0xCAB5], NFD: [0x110D, 0x1168, 0x11BC], NFKC: [0xCAB5], NFKD: [0x110D, 0x1168, 0x11BC] },
+{ source: [0xCAB6], NFC: [0xCAB6], NFD: [0x110D, 0x1168, 0x11BD], NFKC: [0xCAB6], NFKD: [0x110D, 0x1168, 0x11BD] },
+{ source: [0xCAB7], NFC: [0xCAB7], NFD: [0x110D, 0x1168, 0x11BE], NFKC: [0xCAB7], NFKD: [0x110D, 0x1168, 0x11BE] },
+{ source: [0xCAB8], NFC: [0xCAB8], NFD: [0x110D, 0x1168, 0x11BF], NFKC: [0xCAB8], NFKD: [0x110D, 0x1168, 0x11BF] },
+{ source: [0xCAB9], NFC: [0xCAB9], NFD: [0x110D, 0x1168, 0x11C0], NFKC: [0xCAB9], NFKD: [0x110D, 0x1168, 0x11C0] },
+{ source: [0xCABA], NFC: [0xCABA], NFD: [0x110D, 0x1168, 0x11C1], NFKC: [0xCABA], NFKD: [0x110D, 0x1168, 0x11C1] },
+{ source: [0xCABB], NFC: [0xCABB], NFD: [0x110D, 0x1168, 0x11C2], NFKC: [0xCABB], NFKD: [0x110D, 0x1168, 0x11C2] },
+{ source: [0xCABC], NFC: [0xCABC], NFD: [0x110D, 0x1169], NFKC: [0xCABC], NFKD: [0x110D, 0x1169] },
+{ source: [0xCABD], NFC: [0xCABD], NFD: [0x110D, 0x1169, 0x11A8], NFKC: [0xCABD], NFKD: [0x110D, 0x1169, 0x11A8] },
+{ source: [0xCABE], NFC: [0xCABE], NFD: [0x110D, 0x1169, 0x11A9], NFKC: [0xCABE], NFKD: [0x110D, 0x1169, 0x11A9] },
+{ source: [0xCABF], NFC: [0xCABF], NFD: [0x110D, 0x1169, 0x11AA], NFKC: [0xCABF], NFKD: [0x110D, 0x1169, 0x11AA] },
+{ source: [0xCAC0], NFC: [0xCAC0], NFD: [0x110D, 0x1169, 0x11AB], NFKC: [0xCAC0], NFKD: [0x110D, 0x1169, 0x11AB] },
+{ source: [0xCAC1], NFC: [0xCAC1], NFD: [0x110D, 0x1169, 0x11AC], NFKC: [0xCAC1], NFKD: [0x110D, 0x1169, 0x11AC] },
+{ source: [0xCAC2], NFC: [0xCAC2], NFD: [0x110D, 0x1169, 0x11AD], NFKC: [0xCAC2], NFKD: [0x110D, 0x1169, 0x11AD] },
+{ source: [0xCAC3], NFC: [0xCAC3], NFD: [0x110D, 0x1169, 0x11AE], NFKC: [0xCAC3], NFKD: [0x110D, 0x1169, 0x11AE] },
+{ source: [0xCAC4], NFC: [0xCAC4], NFD: [0x110D, 0x1169, 0x11AF], NFKC: [0xCAC4], NFKD: [0x110D, 0x1169, 0x11AF] },
+{ source: [0xCAC5], NFC: [0xCAC5], NFD: [0x110D, 0x1169, 0x11B0], NFKC: [0xCAC5], NFKD: [0x110D, 0x1169, 0x11B0] },
+{ source: [0xCAC6], NFC: [0xCAC6], NFD: [0x110D, 0x1169, 0x11B1], NFKC: [0xCAC6], NFKD: [0x110D, 0x1169, 0x11B1] },
+{ source: [0xCAC7], NFC: [0xCAC7], NFD: [0x110D, 0x1169, 0x11B2], NFKC: [0xCAC7], NFKD: [0x110D, 0x1169, 0x11B2] },
+{ source: [0xCAC8], NFC: [0xCAC8], NFD: [0x110D, 0x1169, 0x11B3], NFKC: [0xCAC8], NFKD: [0x110D, 0x1169, 0x11B3] },
+{ source: [0xCAC9], NFC: [0xCAC9], NFD: [0x110D, 0x1169, 0x11B4], NFKC: [0xCAC9], NFKD: [0x110D, 0x1169, 0x11B4] },
+{ source: [0xCACA], NFC: [0xCACA], NFD: [0x110D, 0x1169, 0x11B5], NFKC: [0xCACA], NFKD: [0x110D, 0x1169, 0x11B5] },
+{ source: [0xCACB], NFC: [0xCACB], NFD: [0x110D, 0x1169, 0x11B6], NFKC: [0xCACB], NFKD: [0x110D, 0x1169, 0x11B6] },
+{ source: [0xCACC], NFC: [0xCACC], NFD: [0x110D, 0x1169, 0x11B7], NFKC: [0xCACC], NFKD: [0x110D, 0x1169, 0x11B7] },
+{ source: [0xCACD], NFC: [0xCACD], NFD: [0x110D, 0x1169, 0x11B8], NFKC: [0xCACD], NFKD: [0x110D, 0x1169, 0x11B8] },
+{ source: [0xCACE], NFC: [0xCACE], NFD: [0x110D, 0x1169, 0x11B9], NFKC: [0xCACE], NFKD: [0x110D, 0x1169, 0x11B9] },
+{ source: [0xCACF], NFC: [0xCACF], NFD: [0x110D, 0x1169, 0x11BA], NFKC: [0xCACF], NFKD: [0x110D, 0x1169, 0x11BA] },
+{ source: [0xCAD0], NFC: [0xCAD0], NFD: [0x110D, 0x1169, 0x11BB], NFKC: [0xCAD0], NFKD: [0x110D, 0x1169, 0x11BB] },
+{ source: [0xCAD1], NFC: [0xCAD1], NFD: [0x110D, 0x1169, 0x11BC], NFKC: [0xCAD1], NFKD: [0x110D, 0x1169, 0x11BC] },
+{ source: [0xCAD2], NFC: [0xCAD2], NFD: [0x110D, 0x1169, 0x11BD], NFKC: [0xCAD2], NFKD: [0x110D, 0x1169, 0x11BD] },
+{ source: [0xCAD3], NFC: [0xCAD3], NFD: [0x110D, 0x1169, 0x11BE], NFKC: [0xCAD3], NFKD: [0x110D, 0x1169, 0x11BE] },
+{ source: [0xCAD4], NFC: [0xCAD4], NFD: [0x110D, 0x1169, 0x11BF], NFKC: [0xCAD4], NFKD: [0x110D, 0x1169, 0x11BF] },
+{ source: [0xCAD5], NFC: [0xCAD5], NFD: [0x110D, 0x1169, 0x11C0], NFKC: [0xCAD5], NFKD: [0x110D, 0x1169, 0x11C0] },
+{ source: [0xCAD6], NFC: [0xCAD6], NFD: [0x110D, 0x1169, 0x11C1], NFKC: [0xCAD6], NFKD: [0x110D, 0x1169, 0x11C1] },
+{ source: [0xCAD7], NFC: [0xCAD7], NFD: [0x110D, 0x1169, 0x11C2], NFKC: [0xCAD7], NFKD: [0x110D, 0x1169, 0x11C2] },
+{ source: [0xCAD8], NFC: [0xCAD8], NFD: [0x110D, 0x116A], NFKC: [0xCAD8], NFKD: [0x110D, 0x116A] },
+{ source: [0xCAD9], NFC: [0xCAD9], NFD: [0x110D, 0x116A, 0x11A8], NFKC: [0xCAD9], NFKD: [0x110D, 0x116A, 0x11A8] },
+{ source: [0xCADA], NFC: [0xCADA], NFD: [0x110D, 0x116A, 0x11A9], NFKC: [0xCADA], NFKD: [0x110D, 0x116A, 0x11A9] },
+{ source: [0xCADB], NFC: [0xCADB], NFD: [0x110D, 0x116A, 0x11AA], NFKC: [0xCADB], NFKD: [0x110D, 0x116A, 0x11AA] },
+{ source: [0xCADC], NFC: [0xCADC], NFD: [0x110D, 0x116A, 0x11AB], NFKC: [0xCADC], NFKD: [0x110D, 0x116A, 0x11AB] },
+{ source: [0xCADD], NFC: [0xCADD], NFD: [0x110D, 0x116A, 0x11AC], NFKC: [0xCADD], NFKD: [0x110D, 0x116A, 0x11AC] },
+{ source: [0xCADE], NFC: [0xCADE], NFD: [0x110D, 0x116A, 0x11AD], NFKC: [0xCADE], NFKD: [0x110D, 0x116A, 0x11AD] },
+{ source: [0xCADF], NFC: [0xCADF], NFD: [0x110D, 0x116A, 0x11AE], NFKC: [0xCADF], NFKD: [0x110D, 0x116A, 0x11AE] },
+{ source: [0xCAE0], NFC: [0xCAE0], NFD: [0x110D, 0x116A, 0x11AF], NFKC: [0xCAE0], NFKD: [0x110D, 0x116A, 0x11AF] },
+{ source: [0xCAE1], NFC: [0xCAE1], NFD: [0x110D, 0x116A, 0x11B0], NFKC: [0xCAE1], NFKD: [0x110D, 0x116A, 0x11B0] },
+{ source: [0xCAE2], NFC: [0xCAE2], NFD: [0x110D, 0x116A, 0x11B1], NFKC: [0xCAE2], NFKD: [0x110D, 0x116A, 0x11B1] },
+{ source: [0xCAE3], NFC: [0xCAE3], NFD: [0x110D, 0x116A, 0x11B2], NFKC: [0xCAE3], NFKD: [0x110D, 0x116A, 0x11B2] },
+{ source: [0xCAE4], NFC: [0xCAE4], NFD: [0x110D, 0x116A, 0x11B3], NFKC: [0xCAE4], NFKD: [0x110D, 0x116A, 0x11B3] },
+{ source: [0xCAE5], NFC: [0xCAE5], NFD: [0x110D, 0x116A, 0x11B4], NFKC: [0xCAE5], NFKD: [0x110D, 0x116A, 0x11B4] },
+{ source: [0xCAE6], NFC: [0xCAE6], NFD: [0x110D, 0x116A, 0x11B5], NFKC: [0xCAE6], NFKD: [0x110D, 0x116A, 0x11B5] },
+{ source: [0xCAE7], NFC: [0xCAE7], NFD: [0x110D, 0x116A, 0x11B6], NFKC: [0xCAE7], NFKD: [0x110D, 0x116A, 0x11B6] },
+{ source: [0xCAE8], NFC: [0xCAE8], NFD: [0x110D, 0x116A, 0x11B7], NFKC: [0xCAE8], NFKD: [0x110D, 0x116A, 0x11B7] },
+{ source: [0xCAE9], NFC: [0xCAE9], NFD: [0x110D, 0x116A, 0x11B8], NFKC: [0xCAE9], NFKD: [0x110D, 0x116A, 0x11B8] },
+{ source: [0xCAEA], NFC: [0xCAEA], NFD: [0x110D, 0x116A, 0x11B9], NFKC: [0xCAEA], NFKD: [0x110D, 0x116A, 0x11B9] },
+{ source: [0xCAEB], NFC: [0xCAEB], NFD: [0x110D, 0x116A, 0x11BA], NFKC: [0xCAEB], NFKD: [0x110D, 0x116A, 0x11BA] },
+{ source: [0xCAEC], NFC: [0xCAEC], NFD: [0x110D, 0x116A, 0x11BB], NFKC: [0xCAEC], NFKD: [0x110D, 0x116A, 0x11BB] },
+{ source: [0xCAED], NFC: [0xCAED], NFD: [0x110D, 0x116A, 0x11BC], NFKC: [0xCAED], NFKD: [0x110D, 0x116A, 0x11BC] },
+{ source: [0xCAEE], NFC: [0xCAEE], NFD: [0x110D, 0x116A, 0x11BD], NFKC: [0xCAEE], NFKD: [0x110D, 0x116A, 0x11BD] },
+{ source: [0xCAEF], NFC: [0xCAEF], NFD: [0x110D, 0x116A, 0x11BE], NFKC: [0xCAEF], NFKD: [0x110D, 0x116A, 0x11BE] },
+{ source: [0xCAF0], NFC: [0xCAF0], NFD: [0x110D, 0x116A, 0x11BF], NFKC: [0xCAF0], NFKD: [0x110D, 0x116A, 0x11BF] },
+{ source: [0xCAF1], NFC: [0xCAF1], NFD: [0x110D, 0x116A, 0x11C0], NFKC: [0xCAF1], NFKD: [0x110D, 0x116A, 0x11C0] },
+{ source: [0xCAF2], NFC: [0xCAF2], NFD: [0x110D, 0x116A, 0x11C1], NFKC: [0xCAF2], NFKD: [0x110D, 0x116A, 0x11C1] },
+{ source: [0xCAF3], NFC: [0xCAF3], NFD: [0x110D, 0x116A, 0x11C2], NFKC: [0xCAF3], NFKD: [0x110D, 0x116A, 0x11C2] },
+{ source: [0xCAF4], NFC: [0xCAF4], NFD: [0x110D, 0x116B], NFKC: [0xCAF4], NFKD: [0x110D, 0x116B] },
+{ source: [0xCAF5], NFC: [0xCAF5], NFD: [0x110D, 0x116B, 0x11A8], NFKC: [0xCAF5], NFKD: [0x110D, 0x116B, 0x11A8] },
+{ source: [0xCAF6], NFC: [0xCAF6], NFD: [0x110D, 0x116B, 0x11A9], NFKC: [0xCAF6], NFKD: [0x110D, 0x116B, 0x11A9] },
+{ source: [0xCAF7], NFC: [0xCAF7], NFD: [0x110D, 0x116B, 0x11AA], NFKC: [0xCAF7], NFKD: [0x110D, 0x116B, 0x11AA] },
+{ source: [0xCAF8], NFC: [0xCAF8], NFD: [0x110D, 0x116B, 0x11AB], NFKC: [0xCAF8], NFKD: [0x110D, 0x116B, 0x11AB] },
+{ source: [0xCAF9], NFC: [0xCAF9], NFD: [0x110D, 0x116B, 0x11AC], NFKC: [0xCAF9], NFKD: [0x110D, 0x116B, 0x11AC] },
+{ source: [0xCAFA], NFC: [0xCAFA], NFD: [0x110D, 0x116B, 0x11AD], NFKC: [0xCAFA], NFKD: [0x110D, 0x116B, 0x11AD] },
+{ source: [0xCAFB], NFC: [0xCAFB], NFD: [0x110D, 0x116B, 0x11AE], NFKC: [0xCAFB], NFKD: [0x110D, 0x116B, 0x11AE] },
+{ source: [0xCAFC], NFC: [0xCAFC], NFD: [0x110D, 0x116B, 0x11AF], NFKC: [0xCAFC], NFKD: [0x110D, 0x116B, 0x11AF] },
+{ source: [0xCAFD], NFC: [0xCAFD], NFD: [0x110D, 0x116B, 0x11B0], NFKC: [0xCAFD], NFKD: [0x110D, 0x116B, 0x11B0] },
+{ source: [0xCAFE], NFC: [0xCAFE], NFD: [0x110D, 0x116B, 0x11B1], NFKC: [0xCAFE], NFKD: [0x110D, 0x116B, 0x11B1] },
+{ source: [0xCAFF], NFC: [0xCAFF], NFD: [0x110D, 0x116B, 0x11B2], NFKC: [0xCAFF], NFKD: [0x110D, 0x116B, 0x11B2] },
+{ source: [0xCB00], NFC: [0xCB00], NFD: [0x110D, 0x116B, 0x11B3], NFKC: [0xCB00], NFKD: [0x110D, 0x116B, 0x11B3] },
+{ source: [0xCB01], NFC: [0xCB01], NFD: [0x110D, 0x116B, 0x11B4], NFKC: [0xCB01], NFKD: [0x110D, 0x116B, 0x11B4] },
+{ source: [0xCB02], NFC: [0xCB02], NFD: [0x110D, 0x116B, 0x11B5], NFKC: [0xCB02], NFKD: [0x110D, 0x116B, 0x11B5] },
+{ source: [0xCB03], NFC: [0xCB03], NFD: [0x110D, 0x116B, 0x11B6], NFKC: [0xCB03], NFKD: [0x110D, 0x116B, 0x11B6] },
+{ source: [0xCB04], NFC: [0xCB04], NFD: [0x110D, 0x116B, 0x11B7], NFKC: [0xCB04], NFKD: [0x110D, 0x116B, 0x11B7] },
+{ source: [0xCB05], NFC: [0xCB05], NFD: [0x110D, 0x116B, 0x11B8], NFKC: [0xCB05], NFKD: [0x110D, 0x116B, 0x11B8] },
+{ source: [0xCB06], NFC: [0xCB06], NFD: [0x110D, 0x116B, 0x11B9], NFKC: [0xCB06], NFKD: [0x110D, 0x116B, 0x11B9] },
+{ source: [0xCB07], NFC: [0xCB07], NFD: [0x110D, 0x116B, 0x11BA], NFKC: [0xCB07], NFKD: [0x110D, 0x116B, 0x11BA] },
+{ source: [0xCB08], NFC: [0xCB08], NFD: [0x110D, 0x116B, 0x11BB], NFKC: [0xCB08], NFKD: [0x110D, 0x116B, 0x11BB] },
+{ source: [0xCB09], NFC: [0xCB09], NFD: [0x110D, 0x116B, 0x11BC], NFKC: [0xCB09], NFKD: [0x110D, 0x116B, 0x11BC] },
+{ source: [0xCB0A], NFC: [0xCB0A], NFD: [0x110D, 0x116B, 0x11BD], NFKC: [0xCB0A], NFKD: [0x110D, 0x116B, 0x11BD] },
+{ source: [0xCB0B], NFC: [0xCB0B], NFD: [0x110D, 0x116B, 0x11BE], NFKC: [0xCB0B], NFKD: [0x110D, 0x116B, 0x11BE] },
+{ source: [0xCB0C], NFC: [0xCB0C], NFD: [0x110D, 0x116B, 0x11BF], NFKC: [0xCB0C], NFKD: [0x110D, 0x116B, 0x11BF] },
+{ source: [0xCB0D], NFC: [0xCB0D], NFD: [0x110D, 0x116B, 0x11C0], NFKC: [0xCB0D], NFKD: [0x110D, 0x116B, 0x11C0] },
+{ source: [0xCB0E], NFC: [0xCB0E], NFD: [0x110D, 0x116B, 0x11C1], NFKC: [0xCB0E], NFKD: [0x110D, 0x116B, 0x11C1] },
+{ source: [0xCB0F], NFC: [0xCB0F], NFD: [0x110D, 0x116B, 0x11C2], NFKC: [0xCB0F], NFKD: [0x110D, 0x116B, 0x11C2] },
+{ source: [0xCB10], NFC: [0xCB10], NFD: [0x110D, 0x116C], NFKC: [0xCB10], NFKD: [0x110D, 0x116C] },
+{ source: [0xCB11], NFC: [0xCB11], NFD: [0x110D, 0x116C, 0x11A8], NFKC: [0xCB11], NFKD: [0x110D, 0x116C, 0x11A8] },
+{ source: [0xCB12], NFC: [0xCB12], NFD: [0x110D, 0x116C, 0x11A9], NFKC: [0xCB12], NFKD: [0x110D, 0x116C, 0x11A9] },
+{ source: [0xCB13], NFC: [0xCB13], NFD: [0x110D, 0x116C, 0x11AA], NFKC: [0xCB13], NFKD: [0x110D, 0x116C, 0x11AA] },
+{ source: [0xCB14], NFC: [0xCB14], NFD: [0x110D, 0x116C, 0x11AB], NFKC: [0xCB14], NFKD: [0x110D, 0x116C, 0x11AB] },
+{ source: [0xCB15], NFC: [0xCB15], NFD: [0x110D, 0x116C, 0x11AC], NFKC: [0xCB15], NFKD: [0x110D, 0x116C, 0x11AC] },
+{ source: [0xCB16], NFC: [0xCB16], NFD: [0x110D, 0x116C, 0x11AD], NFKC: [0xCB16], NFKD: [0x110D, 0x116C, 0x11AD] },
+{ source: [0xCB17], NFC: [0xCB17], NFD: [0x110D, 0x116C, 0x11AE], NFKC: [0xCB17], NFKD: [0x110D, 0x116C, 0x11AE] },
+{ source: [0xCB18], NFC: [0xCB18], NFD: [0x110D, 0x116C, 0x11AF], NFKC: [0xCB18], NFKD: [0x110D, 0x116C, 0x11AF] },
+{ source: [0xCB19], NFC: [0xCB19], NFD: [0x110D, 0x116C, 0x11B0], NFKC: [0xCB19], NFKD: [0x110D, 0x116C, 0x11B0] },
+{ source: [0xCB1A], NFC: [0xCB1A], NFD: [0x110D, 0x116C, 0x11B1], NFKC: [0xCB1A], NFKD: [0x110D, 0x116C, 0x11B1] },
+{ source: [0xCB1B], NFC: [0xCB1B], NFD: [0x110D, 0x116C, 0x11B2], NFKC: [0xCB1B], NFKD: [0x110D, 0x116C, 0x11B2] },
+{ source: [0xCB1C], NFC: [0xCB1C], NFD: [0x110D, 0x116C, 0x11B3], NFKC: [0xCB1C], NFKD: [0x110D, 0x116C, 0x11B3] },
+{ source: [0xCB1D], NFC: [0xCB1D], NFD: [0x110D, 0x116C, 0x11B4], NFKC: [0xCB1D], NFKD: [0x110D, 0x116C, 0x11B4] },
+{ source: [0xCB1E], NFC: [0xCB1E], NFD: [0x110D, 0x116C, 0x11B5], NFKC: [0xCB1E], NFKD: [0x110D, 0x116C, 0x11B5] },
+{ source: [0xCB1F], NFC: [0xCB1F], NFD: [0x110D, 0x116C, 0x11B6], NFKC: [0xCB1F], NFKD: [0x110D, 0x116C, 0x11B6] },
+{ source: [0xCB20], NFC: [0xCB20], NFD: [0x110D, 0x116C, 0x11B7], NFKC: [0xCB20], NFKD: [0x110D, 0x116C, 0x11B7] },
+{ source: [0xCB21], NFC: [0xCB21], NFD: [0x110D, 0x116C, 0x11B8], NFKC: [0xCB21], NFKD: [0x110D, 0x116C, 0x11B8] },
+{ source: [0xCB22], NFC: [0xCB22], NFD: [0x110D, 0x116C, 0x11B9], NFKC: [0xCB22], NFKD: [0x110D, 0x116C, 0x11B9] },
+{ source: [0xCB23], NFC: [0xCB23], NFD: [0x110D, 0x116C, 0x11BA], NFKC: [0xCB23], NFKD: [0x110D, 0x116C, 0x11BA] },
+{ source: [0xCB24], NFC: [0xCB24], NFD: [0x110D, 0x116C, 0x11BB], NFKC: [0xCB24], NFKD: [0x110D, 0x116C, 0x11BB] },
+{ source: [0xCB25], NFC: [0xCB25], NFD: [0x110D, 0x116C, 0x11BC], NFKC: [0xCB25], NFKD: [0x110D, 0x116C, 0x11BC] },
+{ source: [0xCB26], NFC: [0xCB26], NFD: [0x110D, 0x116C, 0x11BD], NFKC: [0xCB26], NFKD: [0x110D, 0x116C, 0x11BD] },
+{ source: [0xCB27], NFC: [0xCB27], NFD: [0x110D, 0x116C, 0x11BE], NFKC: [0xCB27], NFKD: [0x110D, 0x116C, 0x11BE] },
+{ source: [0xCB28], NFC: [0xCB28], NFD: [0x110D, 0x116C, 0x11BF], NFKC: [0xCB28], NFKD: [0x110D, 0x116C, 0x11BF] },
+{ source: [0xCB29], NFC: [0xCB29], NFD: [0x110D, 0x116C, 0x11C0], NFKC: [0xCB29], NFKD: [0x110D, 0x116C, 0x11C0] },
+{ source: [0xCB2A], NFC: [0xCB2A], NFD: [0x110D, 0x116C, 0x11C1], NFKC: [0xCB2A], NFKD: [0x110D, 0x116C, 0x11C1] },
+{ source: [0xCB2B], NFC: [0xCB2B], NFD: [0x110D, 0x116C, 0x11C2], NFKC: [0xCB2B], NFKD: [0x110D, 0x116C, 0x11C2] },
+{ source: [0xCB2C], NFC: [0xCB2C], NFD: [0x110D, 0x116D], NFKC: [0xCB2C], NFKD: [0x110D, 0x116D] },
+{ source: [0xCB2D], NFC: [0xCB2D], NFD: [0x110D, 0x116D, 0x11A8], NFKC: [0xCB2D], NFKD: [0x110D, 0x116D, 0x11A8] },
+{ source: [0xCB2E], NFC: [0xCB2E], NFD: [0x110D, 0x116D, 0x11A9], NFKC: [0xCB2E], NFKD: [0x110D, 0x116D, 0x11A9] },
+{ source: [0xCB2F], NFC: [0xCB2F], NFD: [0x110D, 0x116D, 0x11AA], NFKC: [0xCB2F], NFKD: [0x110D, 0x116D, 0x11AA] },
+{ source: [0xCB30], NFC: [0xCB30], NFD: [0x110D, 0x116D, 0x11AB], NFKC: [0xCB30], NFKD: [0x110D, 0x116D, 0x11AB] },
+{ source: [0xCB31], NFC: [0xCB31], NFD: [0x110D, 0x116D, 0x11AC], NFKC: [0xCB31], NFKD: [0x110D, 0x116D, 0x11AC] },
+{ source: [0xCB32], NFC: [0xCB32], NFD: [0x110D, 0x116D, 0x11AD], NFKC: [0xCB32], NFKD: [0x110D, 0x116D, 0x11AD] },
+{ source: [0xCB33], NFC: [0xCB33], NFD: [0x110D, 0x116D, 0x11AE], NFKC: [0xCB33], NFKD: [0x110D, 0x116D, 0x11AE] },
+{ source: [0xCB34], NFC: [0xCB34], NFD: [0x110D, 0x116D, 0x11AF], NFKC: [0xCB34], NFKD: [0x110D, 0x116D, 0x11AF] },
+{ source: [0xCB35], NFC: [0xCB35], NFD: [0x110D, 0x116D, 0x11B0], NFKC: [0xCB35], NFKD: [0x110D, 0x116D, 0x11B0] },
+{ source: [0xCB36], NFC: [0xCB36], NFD: [0x110D, 0x116D, 0x11B1], NFKC: [0xCB36], NFKD: [0x110D, 0x116D, 0x11B1] },
+{ source: [0xCB37], NFC: [0xCB37], NFD: [0x110D, 0x116D, 0x11B2], NFKC: [0xCB37], NFKD: [0x110D, 0x116D, 0x11B2] },
+{ source: [0xCB38], NFC: [0xCB38], NFD: [0x110D, 0x116D, 0x11B3], NFKC: [0xCB38], NFKD: [0x110D, 0x116D, 0x11B3] },
+{ source: [0xCB39], NFC: [0xCB39], NFD: [0x110D, 0x116D, 0x11B4], NFKC: [0xCB39], NFKD: [0x110D, 0x116D, 0x11B4] },
+{ source: [0xCB3A], NFC: [0xCB3A], NFD: [0x110D, 0x116D, 0x11B5], NFKC: [0xCB3A], NFKD: [0x110D, 0x116D, 0x11B5] },
+{ source: [0xCB3B], NFC: [0xCB3B], NFD: [0x110D, 0x116D, 0x11B6], NFKC: [0xCB3B], NFKD: [0x110D, 0x116D, 0x11B6] },
+{ source: [0xCB3C], NFC: [0xCB3C], NFD: [0x110D, 0x116D, 0x11B7], NFKC: [0xCB3C], NFKD: [0x110D, 0x116D, 0x11B7] },
+{ source: [0xCB3D], NFC: [0xCB3D], NFD: [0x110D, 0x116D, 0x11B8], NFKC: [0xCB3D], NFKD: [0x110D, 0x116D, 0x11B8] },
+{ source: [0xCB3E], NFC: [0xCB3E], NFD: [0x110D, 0x116D, 0x11B9], NFKC: [0xCB3E], NFKD: [0x110D, 0x116D, 0x11B9] },
+{ source: [0xCB3F], NFC: [0xCB3F], NFD: [0x110D, 0x116D, 0x11BA], NFKC: [0xCB3F], NFKD: [0x110D, 0x116D, 0x11BA] },
+{ source: [0xCB40], NFC: [0xCB40], NFD: [0x110D, 0x116D, 0x11BB], NFKC: [0xCB40], NFKD: [0x110D, 0x116D, 0x11BB] },
+{ source: [0xCB41], NFC: [0xCB41], NFD: [0x110D, 0x116D, 0x11BC], NFKC: [0xCB41], NFKD: [0x110D, 0x116D, 0x11BC] },
+{ source: [0xCB42], NFC: [0xCB42], NFD: [0x110D, 0x116D, 0x11BD], NFKC: [0xCB42], NFKD: [0x110D, 0x116D, 0x11BD] },
+{ source: [0xCB43], NFC: [0xCB43], NFD: [0x110D, 0x116D, 0x11BE], NFKC: [0xCB43], NFKD: [0x110D, 0x116D, 0x11BE] },
+{ source: [0xCB44], NFC: [0xCB44], NFD: [0x110D, 0x116D, 0x11BF], NFKC: [0xCB44], NFKD: [0x110D, 0x116D, 0x11BF] },
+{ source: [0xCB45], NFC: [0xCB45], NFD: [0x110D, 0x116D, 0x11C0], NFKC: [0xCB45], NFKD: [0x110D, 0x116D, 0x11C0] },
+{ source: [0xCB46], NFC: [0xCB46], NFD: [0x110D, 0x116D, 0x11C1], NFKC: [0xCB46], NFKD: [0x110D, 0x116D, 0x11C1] },
+{ source: [0xCB47], NFC: [0xCB47], NFD: [0x110D, 0x116D, 0x11C2], NFKC: [0xCB47], NFKD: [0x110D, 0x116D, 0x11C2] },
+{ source: [0xCB48], NFC: [0xCB48], NFD: [0x110D, 0x116E], NFKC: [0xCB48], NFKD: [0x110D, 0x116E] },
+{ source: [0xCB49], NFC: [0xCB49], NFD: [0x110D, 0x116E, 0x11A8], NFKC: [0xCB49], NFKD: [0x110D, 0x116E, 0x11A8] },
+{ source: [0xCB4A], NFC: [0xCB4A], NFD: [0x110D, 0x116E, 0x11A9], NFKC: [0xCB4A], NFKD: [0x110D, 0x116E, 0x11A9] },
+{ source: [0xCB4B], NFC: [0xCB4B], NFD: [0x110D, 0x116E, 0x11AA], NFKC: [0xCB4B], NFKD: [0x110D, 0x116E, 0x11AA] },
+{ source: [0xCB4C], NFC: [0xCB4C], NFD: [0x110D, 0x116E, 0x11AB], NFKC: [0xCB4C], NFKD: [0x110D, 0x116E, 0x11AB] },
+{ source: [0xCB4D], NFC: [0xCB4D], NFD: [0x110D, 0x116E, 0x11AC], NFKC: [0xCB4D], NFKD: [0x110D, 0x116E, 0x11AC] },
+{ source: [0xCB4E], NFC: [0xCB4E], NFD: [0x110D, 0x116E, 0x11AD], NFKC: [0xCB4E], NFKD: [0x110D, 0x116E, 0x11AD] },
+{ source: [0xCB4F], NFC: [0xCB4F], NFD: [0x110D, 0x116E, 0x11AE], NFKC: [0xCB4F], NFKD: [0x110D, 0x116E, 0x11AE] },
+{ source: [0xCB50], NFC: [0xCB50], NFD: [0x110D, 0x116E, 0x11AF], NFKC: [0xCB50], NFKD: [0x110D, 0x116E, 0x11AF] },
+{ source: [0xCB51], NFC: [0xCB51], NFD: [0x110D, 0x116E, 0x11B0], NFKC: [0xCB51], NFKD: [0x110D, 0x116E, 0x11B0] },
+{ source: [0xCB52], NFC: [0xCB52], NFD: [0x110D, 0x116E, 0x11B1], NFKC: [0xCB52], NFKD: [0x110D, 0x116E, 0x11B1] },
+{ source: [0xCB53], NFC: [0xCB53], NFD: [0x110D, 0x116E, 0x11B2], NFKC: [0xCB53], NFKD: [0x110D, 0x116E, 0x11B2] },
+{ source: [0xCB54], NFC: [0xCB54], NFD: [0x110D, 0x116E, 0x11B3], NFKC: [0xCB54], NFKD: [0x110D, 0x116E, 0x11B3] },
+{ source: [0xCB55], NFC: [0xCB55], NFD: [0x110D, 0x116E, 0x11B4], NFKC: [0xCB55], NFKD: [0x110D, 0x116E, 0x11B4] },
+{ source: [0xCB56], NFC: [0xCB56], NFD: [0x110D, 0x116E, 0x11B5], NFKC: [0xCB56], NFKD: [0x110D, 0x116E, 0x11B5] },
+{ source: [0xCB57], NFC: [0xCB57], NFD: [0x110D, 0x116E, 0x11B6], NFKC: [0xCB57], NFKD: [0x110D, 0x116E, 0x11B6] },
+{ source: [0xCB58], NFC: [0xCB58], NFD: [0x110D, 0x116E, 0x11B7], NFKC: [0xCB58], NFKD: [0x110D, 0x116E, 0x11B7] },
+{ source: [0xCB59], NFC: [0xCB59], NFD: [0x110D, 0x116E, 0x11B8], NFKC: [0xCB59], NFKD: [0x110D, 0x116E, 0x11B8] },
+{ source: [0xCB5A], NFC: [0xCB5A], NFD: [0x110D, 0x116E, 0x11B9], NFKC: [0xCB5A], NFKD: [0x110D, 0x116E, 0x11B9] },
+{ source: [0xCB5B], NFC: [0xCB5B], NFD: [0x110D, 0x116E, 0x11BA], NFKC: [0xCB5B], NFKD: [0x110D, 0x116E, 0x11BA] },
+{ source: [0xCB5C], NFC: [0xCB5C], NFD: [0x110D, 0x116E, 0x11BB], NFKC: [0xCB5C], NFKD: [0x110D, 0x116E, 0x11BB] },
+{ source: [0xCB5D], NFC: [0xCB5D], NFD: [0x110D, 0x116E, 0x11BC], NFKC: [0xCB5D], NFKD: [0x110D, 0x116E, 0x11BC] },
+{ source: [0xCB5E], NFC: [0xCB5E], NFD: [0x110D, 0x116E, 0x11BD], NFKC: [0xCB5E], NFKD: [0x110D, 0x116E, 0x11BD] },
+{ source: [0xCB5F], NFC: [0xCB5F], NFD: [0x110D, 0x116E, 0x11BE], NFKC: [0xCB5F], NFKD: [0x110D, 0x116E, 0x11BE] },
+{ source: [0xCB60], NFC: [0xCB60], NFD: [0x110D, 0x116E, 0x11BF], NFKC: [0xCB60], NFKD: [0x110D, 0x116E, 0x11BF] },
+{ source: [0xCB61], NFC: [0xCB61], NFD: [0x110D, 0x116E, 0x11C0], NFKC: [0xCB61], NFKD: [0x110D, 0x116E, 0x11C0] },
+{ source: [0xCB62], NFC: [0xCB62], NFD: [0x110D, 0x116E, 0x11C1], NFKC: [0xCB62], NFKD: [0x110D, 0x116E, 0x11C1] },
+{ source: [0xCB63], NFC: [0xCB63], NFD: [0x110D, 0x116E, 0x11C2], NFKC: [0xCB63], NFKD: [0x110D, 0x116E, 0x11C2] },
+{ source: [0xCB64], NFC: [0xCB64], NFD: [0x110D, 0x116F], NFKC: [0xCB64], NFKD: [0x110D, 0x116F] },
+{ source: [0xCB65], NFC: [0xCB65], NFD: [0x110D, 0x116F, 0x11A8], NFKC: [0xCB65], NFKD: [0x110D, 0x116F, 0x11A8] },
+{ source: [0xCB66], NFC: [0xCB66], NFD: [0x110D, 0x116F, 0x11A9], NFKC: [0xCB66], NFKD: [0x110D, 0x116F, 0x11A9] },
+{ source: [0xCB67], NFC: [0xCB67], NFD: [0x110D, 0x116F, 0x11AA], NFKC: [0xCB67], NFKD: [0x110D, 0x116F, 0x11AA] },
+{ source: [0xCB68], NFC: [0xCB68], NFD: [0x110D, 0x116F, 0x11AB], NFKC: [0xCB68], NFKD: [0x110D, 0x116F, 0x11AB] },
+{ source: [0xCB69], NFC: [0xCB69], NFD: [0x110D, 0x116F, 0x11AC], NFKC: [0xCB69], NFKD: [0x110D, 0x116F, 0x11AC] },
+{ source: [0xCB6A], NFC: [0xCB6A], NFD: [0x110D, 0x116F, 0x11AD], NFKC: [0xCB6A], NFKD: [0x110D, 0x116F, 0x11AD] },
+{ source: [0xCB6B], NFC: [0xCB6B], NFD: [0x110D, 0x116F, 0x11AE], NFKC: [0xCB6B], NFKD: [0x110D, 0x116F, 0x11AE] },
+{ source: [0xCB6C], NFC: [0xCB6C], NFD: [0x110D, 0x116F, 0x11AF], NFKC: [0xCB6C], NFKD: [0x110D, 0x116F, 0x11AF] },
+{ source: [0xCB6D], NFC: [0xCB6D], NFD: [0x110D, 0x116F, 0x11B0], NFKC: [0xCB6D], NFKD: [0x110D, 0x116F, 0x11B0] },
+{ source: [0xCB6E], NFC: [0xCB6E], NFD: [0x110D, 0x116F, 0x11B1], NFKC: [0xCB6E], NFKD: [0x110D, 0x116F, 0x11B1] },
+{ source: [0xCB6F], NFC: [0xCB6F], NFD: [0x110D, 0x116F, 0x11B2], NFKC: [0xCB6F], NFKD: [0x110D, 0x116F, 0x11B2] },
+{ source: [0xCB70], NFC: [0xCB70], NFD: [0x110D, 0x116F, 0x11B3], NFKC: [0xCB70], NFKD: [0x110D, 0x116F, 0x11B3] },
+{ source: [0xCB71], NFC: [0xCB71], NFD: [0x110D, 0x116F, 0x11B4], NFKC: [0xCB71], NFKD: [0x110D, 0x116F, 0x11B4] },
+{ source: [0xCB72], NFC: [0xCB72], NFD: [0x110D, 0x116F, 0x11B5], NFKC: [0xCB72], NFKD: [0x110D, 0x116F, 0x11B5] },
+{ source: [0xCB73], NFC: [0xCB73], NFD: [0x110D, 0x116F, 0x11B6], NFKC: [0xCB73], NFKD: [0x110D, 0x116F, 0x11B6] },
+{ source: [0xCB74], NFC: [0xCB74], NFD: [0x110D, 0x116F, 0x11B7], NFKC: [0xCB74], NFKD: [0x110D, 0x116F, 0x11B7] },
+{ source: [0xCB75], NFC: [0xCB75], NFD: [0x110D, 0x116F, 0x11B8], NFKC: [0xCB75], NFKD: [0x110D, 0x116F, 0x11B8] },
+{ source: [0xCB76], NFC: [0xCB76], NFD: [0x110D, 0x116F, 0x11B9], NFKC: [0xCB76], NFKD: [0x110D, 0x116F, 0x11B9] },
+{ source: [0xCB77], NFC: [0xCB77], NFD: [0x110D, 0x116F, 0x11BA], NFKC: [0xCB77], NFKD: [0x110D, 0x116F, 0x11BA] },
+{ source: [0xCB78], NFC: [0xCB78], NFD: [0x110D, 0x116F, 0x11BB], NFKC: [0xCB78], NFKD: [0x110D, 0x116F, 0x11BB] },
+{ source: [0xCB79], NFC: [0xCB79], NFD: [0x110D, 0x116F, 0x11BC], NFKC: [0xCB79], NFKD: [0x110D, 0x116F, 0x11BC] },
+{ source: [0xCB7A], NFC: [0xCB7A], NFD: [0x110D, 0x116F, 0x11BD], NFKC: [0xCB7A], NFKD: [0x110D, 0x116F, 0x11BD] },
+{ source: [0xCB7B], NFC: [0xCB7B], NFD: [0x110D, 0x116F, 0x11BE], NFKC: [0xCB7B], NFKD: [0x110D, 0x116F, 0x11BE] },
+{ source: [0xCB7C], NFC: [0xCB7C], NFD: [0x110D, 0x116F, 0x11BF], NFKC: [0xCB7C], NFKD: [0x110D, 0x116F, 0x11BF] },
+{ source: [0xCB7D], NFC: [0xCB7D], NFD: [0x110D, 0x116F, 0x11C0], NFKC: [0xCB7D], NFKD: [0x110D, 0x116F, 0x11C0] },
+{ source: [0xCB7E], NFC: [0xCB7E], NFD: [0x110D, 0x116F, 0x11C1], NFKC: [0xCB7E], NFKD: [0x110D, 0x116F, 0x11C1] },
+{ source: [0xCB7F], NFC: [0xCB7F], NFD: [0x110D, 0x116F, 0x11C2], NFKC: [0xCB7F], NFKD: [0x110D, 0x116F, 0x11C2] },
+{ source: [0xCB80], NFC: [0xCB80], NFD: [0x110D, 0x1170], NFKC: [0xCB80], NFKD: [0x110D, 0x1170] },
+{ source: [0xCB81], NFC: [0xCB81], NFD: [0x110D, 0x1170, 0x11A8], NFKC: [0xCB81], NFKD: [0x110D, 0x1170, 0x11A8] },
+{ source: [0xCB82], NFC: [0xCB82], NFD: [0x110D, 0x1170, 0x11A9], NFKC: [0xCB82], NFKD: [0x110D, 0x1170, 0x11A9] },
+{ source: [0xCB83], NFC: [0xCB83], NFD: [0x110D, 0x1170, 0x11AA], NFKC: [0xCB83], NFKD: [0x110D, 0x1170, 0x11AA] },
+{ source: [0xCB84], NFC: [0xCB84], NFD: [0x110D, 0x1170, 0x11AB], NFKC: [0xCB84], NFKD: [0x110D, 0x1170, 0x11AB] },
+{ source: [0xCB85], NFC: [0xCB85], NFD: [0x110D, 0x1170, 0x11AC], NFKC: [0xCB85], NFKD: [0x110D, 0x1170, 0x11AC] },
+{ source: [0xCB86], NFC: [0xCB86], NFD: [0x110D, 0x1170, 0x11AD], NFKC: [0xCB86], NFKD: [0x110D, 0x1170, 0x11AD] },
+{ source: [0xCB87], NFC: [0xCB87], NFD: [0x110D, 0x1170, 0x11AE], NFKC: [0xCB87], NFKD: [0x110D, 0x1170, 0x11AE] },
+{ source: [0xCB88], NFC: [0xCB88], NFD: [0x110D, 0x1170, 0x11AF], NFKC: [0xCB88], NFKD: [0x110D, 0x1170, 0x11AF] },
+{ source: [0xCB89], NFC: [0xCB89], NFD: [0x110D, 0x1170, 0x11B0], NFKC: [0xCB89], NFKD: [0x110D, 0x1170, 0x11B0] },
+{ source: [0xCB8A], NFC: [0xCB8A], NFD: [0x110D, 0x1170, 0x11B1], NFKC: [0xCB8A], NFKD: [0x110D, 0x1170, 0x11B1] },
+{ source: [0xCB8B], NFC: [0xCB8B], NFD: [0x110D, 0x1170, 0x11B2], NFKC: [0xCB8B], NFKD: [0x110D, 0x1170, 0x11B2] },
+{ source: [0xCB8C], NFC: [0xCB8C], NFD: [0x110D, 0x1170, 0x11B3], NFKC: [0xCB8C], NFKD: [0x110D, 0x1170, 0x11B3] },
+{ source: [0xCB8D], NFC: [0xCB8D], NFD: [0x110D, 0x1170, 0x11B4], NFKC: [0xCB8D], NFKD: [0x110D, 0x1170, 0x11B4] },
+{ source: [0xCB8E], NFC: [0xCB8E], NFD: [0x110D, 0x1170, 0x11B5], NFKC: [0xCB8E], NFKD: [0x110D, 0x1170, 0x11B5] },
+{ source: [0xCB8F], NFC: [0xCB8F], NFD: [0x110D, 0x1170, 0x11B6], NFKC: [0xCB8F], NFKD: [0x110D, 0x1170, 0x11B6] },
+{ source: [0xCB90], NFC: [0xCB90], NFD: [0x110D, 0x1170, 0x11B7], NFKC: [0xCB90], NFKD: [0x110D, 0x1170, 0x11B7] },
+{ source: [0xCB91], NFC: [0xCB91], NFD: [0x110D, 0x1170, 0x11B8], NFKC: [0xCB91], NFKD: [0x110D, 0x1170, 0x11B8] },
+{ source: [0xCB92], NFC: [0xCB92], NFD: [0x110D, 0x1170, 0x11B9], NFKC: [0xCB92], NFKD: [0x110D, 0x1170, 0x11B9] },
+{ source: [0xCB93], NFC: [0xCB93], NFD: [0x110D, 0x1170, 0x11BA], NFKC: [0xCB93], NFKD: [0x110D, 0x1170, 0x11BA] },
+{ source: [0xCB94], NFC: [0xCB94], NFD: [0x110D, 0x1170, 0x11BB], NFKC: [0xCB94], NFKD: [0x110D, 0x1170, 0x11BB] },
+{ source: [0xCB95], NFC: [0xCB95], NFD: [0x110D, 0x1170, 0x11BC], NFKC: [0xCB95], NFKD: [0x110D, 0x1170, 0x11BC] },
+{ source: [0xCB96], NFC: [0xCB96], NFD: [0x110D, 0x1170, 0x11BD], NFKC: [0xCB96], NFKD: [0x110D, 0x1170, 0x11BD] },
+{ source: [0xCB97], NFC: [0xCB97], NFD: [0x110D, 0x1170, 0x11BE], NFKC: [0xCB97], NFKD: [0x110D, 0x1170, 0x11BE] },
+{ source: [0xCB98], NFC: [0xCB98], NFD: [0x110D, 0x1170, 0x11BF], NFKC: [0xCB98], NFKD: [0x110D, 0x1170, 0x11BF] },
+{ source: [0xCB99], NFC: [0xCB99], NFD: [0x110D, 0x1170, 0x11C0], NFKC: [0xCB99], NFKD: [0x110D, 0x1170, 0x11C0] },
+{ source: [0xCB9A], NFC: [0xCB9A], NFD: [0x110D, 0x1170, 0x11C1], NFKC: [0xCB9A], NFKD: [0x110D, 0x1170, 0x11C1] },
+{ source: [0xCB9B], NFC: [0xCB9B], NFD: [0x110D, 0x1170, 0x11C2], NFKC: [0xCB9B], NFKD: [0x110D, 0x1170, 0x11C2] },
+{ source: [0xCB9C], NFC: [0xCB9C], NFD: [0x110D, 0x1171], NFKC: [0xCB9C], NFKD: [0x110D, 0x1171] },
+{ source: [0xCB9D], NFC: [0xCB9D], NFD: [0x110D, 0x1171, 0x11A8], NFKC: [0xCB9D], NFKD: [0x110D, 0x1171, 0x11A8] },
+{ source: [0xCB9E], NFC: [0xCB9E], NFD: [0x110D, 0x1171, 0x11A9], NFKC: [0xCB9E], NFKD: [0x110D, 0x1171, 0x11A9] },
+{ source: [0xCB9F], NFC: [0xCB9F], NFD: [0x110D, 0x1171, 0x11AA], NFKC: [0xCB9F], NFKD: [0x110D, 0x1171, 0x11AA] },
+{ source: [0xCBA0], NFC: [0xCBA0], NFD: [0x110D, 0x1171, 0x11AB], NFKC: [0xCBA0], NFKD: [0x110D, 0x1171, 0x11AB] },
+{ source: [0xCBA1], NFC: [0xCBA1], NFD: [0x110D, 0x1171, 0x11AC], NFKC: [0xCBA1], NFKD: [0x110D, 0x1171, 0x11AC] },
+{ source: [0xCBA2], NFC: [0xCBA2], NFD: [0x110D, 0x1171, 0x11AD], NFKC: [0xCBA2], NFKD: [0x110D, 0x1171, 0x11AD] },
+{ source: [0xCBA3], NFC: [0xCBA3], NFD: [0x110D, 0x1171, 0x11AE], NFKC: [0xCBA3], NFKD: [0x110D, 0x1171, 0x11AE] },
+{ source: [0xCBA4], NFC: [0xCBA4], NFD: [0x110D, 0x1171, 0x11AF], NFKC: [0xCBA4], NFKD: [0x110D, 0x1171, 0x11AF] },
+{ source: [0xCBA5], NFC: [0xCBA5], NFD: [0x110D, 0x1171, 0x11B0], NFKC: [0xCBA5], NFKD: [0x110D, 0x1171, 0x11B0] },
+{ source: [0xCBA6], NFC: [0xCBA6], NFD: [0x110D, 0x1171, 0x11B1], NFKC: [0xCBA6], NFKD: [0x110D, 0x1171, 0x11B1] },
+{ source: [0xCBA7], NFC: [0xCBA7], NFD: [0x110D, 0x1171, 0x11B2], NFKC: [0xCBA7], NFKD: [0x110D, 0x1171, 0x11B2] },
+{ source: [0xCBA8], NFC: [0xCBA8], NFD: [0x110D, 0x1171, 0x11B3], NFKC: [0xCBA8], NFKD: [0x110D, 0x1171, 0x11B3] },
+{ source: [0xCBA9], NFC: [0xCBA9], NFD: [0x110D, 0x1171, 0x11B4], NFKC: [0xCBA9], NFKD: [0x110D, 0x1171, 0x11B4] },
+{ source: [0xCBAA], NFC: [0xCBAA], NFD: [0x110D, 0x1171, 0x11B5], NFKC: [0xCBAA], NFKD: [0x110D, 0x1171, 0x11B5] },
+{ source: [0xCBAB], NFC: [0xCBAB], NFD: [0x110D, 0x1171, 0x11B6], NFKC: [0xCBAB], NFKD: [0x110D, 0x1171, 0x11B6] },
+{ source: [0xCBAC], NFC: [0xCBAC], NFD: [0x110D, 0x1171, 0x11B7], NFKC: [0xCBAC], NFKD: [0x110D, 0x1171, 0x11B7] },
+{ source: [0xCBAD], NFC: [0xCBAD], NFD: [0x110D, 0x1171, 0x11B8], NFKC: [0xCBAD], NFKD: [0x110D, 0x1171, 0x11B8] },
+{ source: [0xCBAE], NFC: [0xCBAE], NFD: [0x110D, 0x1171, 0x11B9], NFKC: [0xCBAE], NFKD: [0x110D, 0x1171, 0x11B9] },
+{ source: [0xCBAF], NFC: [0xCBAF], NFD: [0x110D, 0x1171, 0x11BA], NFKC: [0xCBAF], NFKD: [0x110D, 0x1171, 0x11BA] },
+{ source: [0xCBB0], NFC: [0xCBB0], NFD: [0x110D, 0x1171, 0x11BB], NFKC: [0xCBB0], NFKD: [0x110D, 0x1171, 0x11BB] },
+{ source: [0xCBB1], NFC: [0xCBB1], NFD: [0x110D, 0x1171, 0x11BC], NFKC: [0xCBB1], NFKD: [0x110D, 0x1171, 0x11BC] },
+{ source: [0xCBB2], NFC: [0xCBB2], NFD: [0x110D, 0x1171, 0x11BD], NFKC: [0xCBB2], NFKD: [0x110D, 0x1171, 0x11BD] },
+{ source: [0xCBB3], NFC: [0xCBB3], NFD: [0x110D, 0x1171, 0x11BE], NFKC: [0xCBB3], NFKD: [0x110D, 0x1171, 0x11BE] },
+{ source: [0xCBB4], NFC: [0xCBB4], NFD: [0x110D, 0x1171, 0x11BF], NFKC: [0xCBB4], NFKD: [0x110D, 0x1171, 0x11BF] },
+{ source: [0xCBB5], NFC: [0xCBB5], NFD: [0x110D, 0x1171, 0x11C0], NFKC: [0xCBB5], NFKD: [0x110D, 0x1171, 0x11C0] },
+{ source: [0xCBB6], NFC: [0xCBB6], NFD: [0x110D, 0x1171, 0x11C1], NFKC: [0xCBB6], NFKD: [0x110D, 0x1171, 0x11C1] },
+{ source: [0xCBB7], NFC: [0xCBB7], NFD: [0x110D, 0x1171, 0x11C2], NFKC: [0xCBB7], NFKD: [0x110D, 0x1171, 0x11C2] },
+{ source: [0xCBB8], NFC: [0xCBB8], NFD: [0x110D, 0x1172], NFKC: [0xCBB8], NFKD: [0x110D, 0x1172] },
+{ source: [0xCBB9], NFC: [0xCBB9], NFD: [0x110D, 0x1172, 0x11A8], NFKC: [0xCBB9], NFKD: [0x110D, 0x1172, 0x11A8] },
+{ source: [0xCBBA], NFC: [0xCBBA], NFD: [0x110D, 0x1172, 0x11A9], NFKC: [0xCBBA], NFKD: [0x110D, 0x1172, 0x11A9] },
+{ source: [0xCBBB], NFC: [0xCBBB], NFD: [0x110D, 0x1172, 0x11AA], NFKC: [0xCBBB], NFKD: [0x110D, 0x1172, 0x11AA] },
+{ source: [0xCBBC], NFC: [0xCBBC], NFD: [0x110D, 0x1172, 0x11AB], NFKC: [0xCBBC], NFKD: [0x110D, 0x1172, 0x11AB] },
+{ source: [0xCBBD], NFC: [0xCBBD], NFD: [0x110D, 0x1172, 0x11AC], NFKC: [0xCBBD], NFKD: [0x110D, 0x1172, 0x11AC] },
+{ source: [0xCBBE], NFC: [0xCBBE], NFD: [0x110D, 0x1172, 0x11AD], NFKC: [0xCBBE], NFKD: [0x110D, 0x1172, 0x11AD] },
+{ source: [0xCBBF], NFC: [0xCBBF], NFD: [0x110D, 0x1172, 0x11AE], NFKC: [0xCBBF], NFKD: [0x110D, 0x1172, 0x11AE] },
+{ source: [0xCBC0], NFC: [0xCBC0], NFD: [0x110D, 0x1172, 0x11AF], NFKC: [0xCBC0], NFKD: [0x110D, 0x1172, 0x11AF] },
+{ source: [0xCBC1], NFC: [0xCBC1], NFD: [0x110D, 0x1172, 0x11B0], NFKC: [0xCBC1], NFKD: [0x110D, 0x1172, 0x11B0] },
+{ source: [0xCBC2], NFC: [0xCBC2], NFD: [0x110D, 0x1172, 0x11B1], NFKC: [0xCBC2], NFKD: [0x110D, 0x1172, 0x11B1] },
+{ source: [0xCBC3], NFC: [0xCBC3], NFD: [0x110D, 0x1172, 0x11B2], NFKC: [0xCBC3], NFKD: [0x110D, 0x1172, 0x11B2] },
+{ source: [0xCBC4], NFC: [0xCBC4], NFD: [0x110D, 0x1172, 0x11B3], NFKC: [0xCBC4], NFKD: [0x110D, 0x1172, 0x11B3] },
+{ source: [0xCBC5], NFC: [0xCBC5], NFD: [0x110D, 0x1172, 0x11B4], NFKC: [0xCBC5], NFKD: [0x110D, 0x1172, 0x11B4] },
+{ source: [0xCBC6], NFC: [0xCBC6], NFD: [0x110D, 0x1172, 0x11B5], NFKC: [0xCBC6], NFKD: [0x110D, 0x1172, 0x11B5] },
+{ source: [0xCBC7], NFC: [0xCBC7], NFD: [0x110D, 0x1172, 0x11B6], NFKC: [0xCBC7], NFKD: [0x110D, 0x1172, 0x11B6] },
+{ source: [0xCBC8], NFC: [0xCBC8], NFD: [0x110D, 0x1172, 0x11B7], NFKC: [0xCBC8], NFKD: [0x110D, 0x1172, 0x11B7] },
+{ source: [0xCBC9], NFC: [0xCBC9], NFD: [0x110D, 0x1172, 0x11B8], NFKC: [0xCBC9], NFKD: [0x110D, 0x1172, 0x11B8] },
+{ source: [0xCBCA], NFC: [0xCBCA], NFD: [0x110D, 0x1172, 0x11B9], NFKC: [0xCBCA], NFKD: [0x110D, 0x1172, 0x11B9] },
+{ source: [0xCBCB], NFC: [0xCBCB], NFD: [0x110D, 0x1172, 0x11BA], NFKC: [0xCBCB], NFKD: [0x110D, 0x1172, 0x11BA] },
+{ source: [0xCBCC], NFC: [0xCBCC], NFD: [0x110D, 0x1172, 0x11BB], NFKC: [0xCBCC], NFKD: [0x110D, 0x1172, 0x11BB] },
+{ source: [0xCBCD], NFC: [0xCBCD], NFD: [0x110D, 0x1172, 0x11BC], NFKC: [0xCBCD], NFKD: [0x110D, 0x1172, 0x11BC] },
+{ source: [0xCBCE], NFC: [0xCBCE], NFD: [0x110D, 0x1172, 0x11BD], NFKC: [0xCBCE], NFKD: [0x110D, 0x1172, 0x11BD] },
+{ source: [0xCBCF], NFC: [0xCBCF], NFD: [0x110D, 0x1172, 0x11BE], NFKC: [0xCBCF], NFKD: [0x110D, 0x1172, 0x11BE] },
+{ source: [0xCBD0], NFC: [0xCBD0], NFD: [0x110D, 0x1172, 0x11BF], NFKC: [0xCBD0], NFKD: [0x110D, 0x1172, 0x11BF] },
+{ source: [0xCBD1], NFC: [0xCBD1], NFD: [0x110D, 0x1172, 0x11C0], NFKC: [0xCBD1], NFKD: [0x110D, 0x1172, 0x11C0] },
+{ source: [0xCBD2], NFC: [0xCBD2], NFD: [0x110D, 0x1172, 0x11C1], NFKC: [0xCBD2], NFKD: [0x110D, 0x1172, 0x11C1] },
+{ source: [0xCBD3], NFC: [0xCBD3], NFD: [0x110D, 0x1172, 0x11C2], NFKC: [0xCBD3], NFKD: [0x110D, 0x1172, 0x11C2] },
+{ source: [0xCBD4], NFC: [0xCBD4], NFD: [0x110D, 0x1173], NFKC: [0xCBD4], NFKD: [0x110D, 0x1173] },
+{ source: [0xCBD5], NFC: [0xCBD5], NFD: [0x110D, 0x1173, 0x11A8], NFKC: [0xCBD5], NFKD: [0x110D, 0x1173, 0x11A8] },
+{ source: [0xCBD6], NFC: [0xCBD6], NFD: [0x110D, 0x1173, 0x11A9], NFKC: [0xCBD6], NFKD: [0x110D, 0x1173, 0x11A9] },
+{ source: [0xCBD7], NFC: [0xCBD7], NFD: [0x110D, 0x1173, 0x11AA], NFKC: [0xCBD7], NFKD: [0x110D, 0x1173, 0x11AA] },
+{ source: [0xCBD8], NFC: [0xCBD8], NFD: [0x110D, 0x1173, 0x11AB], NFKC: [0xCBD8], NFKD: [0x110D, 0x1173, 0x11AB] },
+{ source: [0xCBD9], NFC: [0xCBD9], NFD: [0x110D, 0x1173, 0x11AC], NFKC: [0xCBD9], NFKD: [0x110D, 0x1173, 0x11AC] },
+{ source: [0xCBDA], NFC: [0xCBDA], NFD: [0x110D, 0x1173, 0x11AD], NFKC: [0xCBDA], NFKD: [0x110D, 0x1173, 0x11AD] },
+{ source: [0xCBDB], NFC: [0xCBDB], NFD: [0x110D, 0x1173, 0x11AE], NFKC: [0xCBDB], NFKD: [0x110D, 0x1173, 0x11AE] },
+{ source: [0xCBDC], NFC: [0xCBDC], NFD: [0x110D, 0x1173, 0x11AF], NFKC: [0xCBDC], NFKD: [0x110D, 0x1173, 0x11AF] },
+{ source: [0xCBDD], NFC: [0xCBDD], NFD: [0x110D, 0x1173, 0x11B0], NFKC: [0xCBDD], NFKD: [0x110D, 0x1173, 0x11B0] },
+{ source: [0xCBDE], NFC: [0xCBDE], NFD: [0x110D, 0x1173, 0x11B1], NFKC: [0xCBDE], NFKD: [0x110D, 0x1173, 0x11B1] },
+{ source: [0xCBDF], NFC: [0xCBDF], NFD: [0x110D, 0x1173, 0x11B2], NFKC: [0xCBDF], NFKD: [0x110D, 0x1173, 0x11B2] },
+{ source: [0xCBE0], NFC: [0xCBE0], NFD: [0x110D, 0x1173, 0x11B3], NFKC: [0xCBE0], NFKD: [0x110D, 0x1173, 0x11B3] },
+{ source: [0xCBE1], NFC: [0xCBE1], NFD: [0x110D, 0x1173, 0x11B4], NFKC: [0xCBE1], NFKD: [0x110D, 0x1173, 0x11B4] },
+{ source: [0xCBE2], NFC: [0xCBE2], NFD: [0x110D, 0x1173, 0x11B5], NFKC: [0xCBE2], NFKD: [0x110D, 0x1173, 0x11B5] },
+{ source: [0xCBE3], NFC: [0xCBE3], NFD: [0x110D, 0x1173, 0x11B6], NFKC: [0xCBE3], NFKD: [0x110D, 0x1173, 0x11B6] },
+{ source: [0xCBE4], NFC: [0xCBE4], NFD: [0x110D, 0x1173, 0x11B7], NFKC: [0xCBE4], NFKD: [0x110D, 0x1173, 0x11B7] },
+{ source: [0xCBE5], NFC: [0xCBE5], NFD: [0x110D, 0x1173, 0x11B8], NFKC: [0xCBE5], NFKD: [0x110D, 0x1173, 0x11B8] },
+{ source: [0xCBE6], NFC: [0xCBE6], NFD: [0x110D, 0x1173, 0x11B9], NFKC: [0xCBE6], NFKD: [0x110D, 0x1173, 0x11B9] },
+{ source: [0xCBE7], NFC: [0xCBE7], NFD: [0x110D, 0x1173, 0x11BA], NFKC: [0xCBE7], NFKD: [0x110D, 0x1173, 0x11BA] },
+{ source: [0xCBE8], NFC: [0xCBE8], NFD: [0x110D, 0x1173, 0x11BB], NFKC: [0xCBE8], NFKD: [0x110D, 0x1173, 0x11BB] },
+{ source: [0xCBE9], NFC: [0xCBE9], NFD: [0x110D, 0x1173, 0x11BC], NFKC: [0xCBE9], NFKD: [0x110D, 0x1173, 0x11BC] },
+{ source: [0xCBEA], NFC: [0xCBEA], NFD: [0x110D, 0x1173, 0x11BD], NFKC: [0xCBEA], NFKD: [0x110D, 0x1173, 0x11BD] },
+{ source: [0xCBEB], NFC: [0xCBEB], NFD: [0x110D, 0x1173, 0x11BE], NFKC: [0xCBEB], NFKD: [0x110D, 0x1173, 0x11BE] },
+{ source: [0xCBEC], NFC: [0xCBEC], NFD: [0x110D, 0x1173, 0x11BF], NFKC: [0xCBEC], NFKD: [0x110D, 0x1173, 0x11BF] },
+{ source: [0xCBED], NFC: [0xCBED], NFD: [0x110D, 0x1173, 0x11C0], NFKC: [0xCBED], NFKD: [0x110D, 0x1173, 0x11C0] },
+{ source: [0xCBEE], NFC: [0xCBEE], NFD: [0x110D, 0x1173, 0x11C1], NFKC: [0xCBEE], NFKD: [0x110D, 0x1173, 0x11C1] },
+{ source: [0xCBEF], NFC: [0xCBEF], NFD: [0x110D, 0x1173, 0x11C2], NFKC: [0xCBEF], NFKD: [0x110D, 0x1173, 0x11C2] },
+{ source: [0xCBF0], NFC: [0xCBF0], NFD: [0x110D, 0x1174], NFKC: [0xCBF0], NFKD: [0x110D, 0x1174] },
+{ source: [0xCBF1], NFC: [0xCBF1], NFD: [0x110D, 0x1174, 0x11A8], NFKC: [0xCBF1], NFKD: [0x110D, 0x1174, 0x11A8] },
+{ source: [0xCBF2], NFC: [0xCBF2], NFD: [0x110D, 0x1174, 0x11A9], NFKC: [0xCBF2], NFKD: [0x110D, 0x1174, 0x11A9] },
+{ source: [0xCBF3], NFC: [0xCBF3], NFD: [0x110D, 0x1174, 0x11AA], NFKC: [0xCBF3], NFKD: [0x110D, 0x1174, 0x11AA] },
+{ source: [0xCBF4], NFC: [0xCBF4], NFD: [0x110D, 0x1174, 0x11AB], NFKC: [0xCBF4], NFKD: [0x110D, 0x1174, 0x11AB] },
+{ source: [0xCBF5], NFC: [0xCBF5], NFD: [0x110D, 0x1174, 0x11AC], NFKC: [0xCBF5], NFKD: [0x110D, 0x1174, 0x11AC] },
+{ source: [0xCBF6], NFC: [0xCBF6], NFD: [0x110D, 0x1174, 0x11AD], NFKC: [0xCBF6], NFKD: [0x110D, 0x1174, 0x11AD] },
+{ source: [0xCBF7], NFC: [0xCBF7], NFD: [0x110D, 0x1174, 0x11AE], NFKC: [0xCBF7], NFKD: [0x110D, 0x1174, 0x11AE] },
+{ source: [0xCBF8], NFC: [0xCBF8], NFD: [0x110D, 0x1174, 0x11AF], NFKC: [0xCBF8], NFKD: [0x110D, 0x1174, 0x11AF] },
+{ source: [0xCBF9], NFC: [0xCBF9], NFD: [0x110D, 0x1174, 0x11B0], NFKC: [0xCBF9], NFKD: [0x110D, 0x1174, 0x11B0] },
+{ source: [0xCBFA], NFC: [0xCBFA], NFD: [0x110D, 0x1174, 0x11B1], NFKC: [0xCBFA], NFKD: [0x110D, 0x1174, 0x11B1] },
+{ source: [0xCBFB], NFC: [0xCBFB], NFD: [0x110D, 0x1174, 0x11B2], NFKC: [0xCBFB], NFKD: [0x110D, 0x1174, 0x11B2] },
+{ source: [0xCBFC], NFC: [0xCBFC], NFD: [0x110D, 0x1174, 0x11B3], NFKC: [0xCBFC], NFKD: [0x110D, 0x1174, 0x11B3] },
+{ source: [0xCBFD], NFC: [0xCBFD], NFD: [0x110D, 0x1174, 0x11B4], NFKC: [0xCBFD], NFKD: [0x110D, 0x1174, 0x11B4] },
+{ source: [0xCBFE], NFC: [0xCBFE], NFD: [0x110D, 0x1174, 0x11B5], NFKC: [0xCBFE], NFKD: [0x110D, 0x1174, 0x11B5] },
+{ source: [0xCBFF], NFC: [0xCBFF], NFD: [0x110D, 0x1174, 0x11B6], NFKC: [0xCBFF], NFKD: [0x110D, 0x1174, 0x11B6] },
+{ source: [0xCC00], NFC: [0xCC00], NFD: [0x110D, 0x1174, 0x11B7], NFKC: [0xCC00], NFKD: [0x110D, 0x1174, 0x11B7] },
+{ source: [0xCC01], NFC: [0xCC01], NFD: [0x110D, 0x1174, 0x11B8], NFKC: [0xCC01], NFKD: [0x110D, 0x1174, 0x11B8] },
+{ source: [0xCC02], NFC: [0xCC02], NFD: [0x110D, 0x1174, 0x11B9], NFKC: [0xCC02], NFKD: [0x110D, 0x1174, 0x11B9] },
+{ source: [0xCC03], NFC: [0xCC03], NFD: [0x110D, 0x1174, 0x11BA], NFKC: [0xCC03], NFKD: [0x110D, 0x1174, 0x11BA] },
+{ source: [0xCC04], NFC: [0xCC04], NFD: [0x110D, 0x1174, 0x11BB], NFKC: [0xCC04], NFKD: [0x110D, 0x1174, 0x11BB] },
+{ source: [0xCC05], NFC: [0xCC05], NFD: [0x110D, 0x1174, 0x11BC], NFKC: [0xCC05], NFKD: [0x110D, 0x1174, 0x11BC] },
+{ source: [0xCC06], NFC: [0xCC06], NFD: [0x110D, 0x1174, 0x11BD], NFKC: [0xCC06], NFKD: [0x110D, 0x1174, 0x11BD] },
+{ source: [0xCC07], NFC: [0xCC07], NFD: [0x110D, 0x1174, 0x11BE], NFKC: [0xCC07], NFKD: [0x110D, 0x1174, 0x11BE] },
+{ source: [0xCC08], NFC: [0xCC08], NFD: [0x110D, 0x1174, 0x11BF], NFKC: [0xCC08], NFKD: [0x110D, 0x1174, 0x11BF] },
+{ source: [0xCC09], NFC: [0xCC09], NFD: [0x110D, 0x1174, 0x11C0], NFKC: [0xCC09], NFKD: [0x110D, 0x1174, 0x11C0] },
+{ source: [0xCC0A], NFC: [0xCC0A], NFD: [0x110D, 0x1174, 0x11C1], NFKC: [0xCC0A], NFKD: [0x110D, 0x1174, 0x11C1] },
+{ source: [0xCC0B], NFC: [0xCC0B], NFD: [0x110D, 0x1174, 0x11C2], NFKC: [0xCC0B], NFKD: [0x110D, 0x1174, 0x11C2] },
+{ source: [0xCC0C], NFC: [0xCC0C], NFD: [0x110D, 0x1175], NFKC: [0xCC0C], NFKD: [0x110D, 0x1175] },
+{ source: [0xCC0D], NFC: [0xCC0D], NFD: [0x110D, 0x1175, 0x11A8], NFKC: [0xCC0D], NFKD: [0x110D, 0x1175, 0x11A8] },
+{ source: [0xCC0E], NFC: [0xCC0E], NFD: [0x110D, 0x1175, 0x11A9], NFKC: [0xCC0E], NFKD: [0x110D, 0x1175, 0x11A9] },
+{ source: [0xCC0F], NFC: [0xCC0F], NFD: [0x110D, 0x1175, 0x11AA], NFKC: [0xCC0F], NFKD: [0x110D, 0x1175, 0x11AA] },
+{ source: [0xCC10], NFC: [0xCC10], NFD: [0x110D, 0x1175, 0x11AB], NFKC: [0xCC10], NFKD: [0x110D, 0x1175, 0x11AB] },
+{ source: [0xCC11], NFC: [0xCC11], NFD: [0x110D, 0x1175, 0x11AC], NFKC: [0xCC11], NFKD: [0x110D, 0x1175, 0x11AC] },
+{ source: [0xCC12], NFC: [0xCC12], NFD: [0x110D, 0x1175, 0x11AD], NFKC: [0xCC12], NFKD: [0x110D, 0x1175, 0x11AD] },
+{ source: [0xCC13], NFC: [0xCC13], NFD: [0x110D, 0x1175, 0x11AE], NFKC: [0xCC13], NFKD: [0x110D, 0x1175, 0x11AE] },
+{ source: [0xCC14], NFC: [0xCC14], NFD: [0x110D, 0x1175, 0x11AF], NFKC: [0xCC14], NFKD: [0x110D, 0x1175, 0x11AF] },
+{ source: [0xCC15], NFC: [0xCC15], NFD: [0x110D, 0x1175, 0x11B0], NFKC: [0xCC15], NFKD: [0x110D, 0x1175, 0x11B0] },
+{ source: [0xCC16], NFC: [0xCC16], NFD: [0x110D, 0x1175, 0x11B1], NFKC: [0xCC16], NFKD: [0x110D, 0x1175, 0x11B1] },
+{ source: [0xCC17], NFC: [0xCC17], NFD: [0x110D, 0x1175, 0x11B2], NFKC: [0xCC17], NFKD: [0x110D, 0x1175, 0x11B2] },
+{ source: [0xCC18], NFC: [0xCC18], NFD: [0x110D, 0x1175, 0x11B3], NFKC: [0xCC18], NFKD: [0x110D, 0x1175, 0x11B3] },
+{ source: [0xCC19], NFC: [0xCC19], NFD: [0x110D, 0x1175, 0x11B4], NFKC: [0xCC19], NFKD: [0x110D, 0x1175, 0x11B4] },
+{ source: [0xCC1A], NFC: [0xCC1A], NFD: [0x110D, 0x1175, 0x11B5], NFKC: [0xCC1A], NFKD: [0x110D, 0x1175, 0x11B5] },
+{ source: [0xCC1B], NFC: [0xCC1B], NFD: [0x110D, 0x1175, 0x11B6], NFKC: [0xCC1B], NFKD: [0x110D, 0x1175, 0x11B6] },
+{ source: [0xCC1C], NFC: [0xCC1C], NFD: [0x110D, 0x1175, 0x11B7], NFKC: [0xCC1C], NFKD: [0x110D, 0x1175, 0x11B7] },
+{ source: [0xCC1D], NFC: [0xCC1D], NFD: [0x110D, 0x1175, 0x11B8], NFKC: [0xCC1D], NFKD: [0x110D, 0x1175, 0x11B8] },
+{ source: [0xCC1E], NFC: [0xCC1E], NFD: [0x110D, 0x1175, 0x11B9], NFKC: [0xCC1E], NFKD: [0x110D, 0x1175, 0x11B9] },
+{ source: [0xCC1F], NFC: [0xCC1F], NFD: [0x110D, 0x1175, 0x11BA], NFKC: [0xCC1F], NFKD: [0x110D, 0x1175, 0x11BA] },
+{ source: [0xCC20], NFC: [0xCC20], NFD: [0x110D, 0x1175, 0x11BB], NFKC: [0xCC20], NFKD: [0x110D, 0x1175, 0x11BB] },
+{ source: [0xCC21], NFC: [0xCC21], NFD: [0x110D, 0x1175, 0x11BC], NFKC: [0xCC21], NFKD: [0x110D, 0x1175, 0x11BC] },
+{ source: [0xCC22], NFC: [0xCC22], NFD: [0x110D, 0x1175, 0x11BD], NFKC: [0xCC22], NFKD: [0x110D, 0x1175, 0x11BD] },
+{ source: [0xCC23], NFC: [0xCC23], NFD: [0x110D, 0x1175, 0x11BE], NFKC: [0xCC23], NFKD: [0x110D, 0x1175, 0x11BE] },
+{ source: [0xCC24], NFC: [0xCC24], NFD: [0x110D, 0x1175, 0x11BF], NFKC: [0xCC24], NFKD: [0x110D, 0x1175, 0x11BF] },
+{ source: [0xCC25], NFC: [0xCC25], NFD: [0x110D, 0x1175, 0x11C0], NFKC: [0xCC25], NFKD: [0x110D, 0x1175, 0x11C0] },
+{ source: [0xCC26], NFC: [0xCC26], NFD: [0x110D, 0x1175, 0x11C1], NFKC: [0xCC26], NFKD: [0x110D, 0x1175, 0x11C1] },
+{ source: [0xCC27], NFC: [0xCC27], NFD: [0x110D, 0x1175, 0x11C2], NFKC: [0xCC27], NFKD: [0x110D, 0x1175, 0x11C2] },
+{ source: [0xCC28], NFC: [0xCC28], NFD: [0x110E, 0x1161], NFKC: [0xCC28], NFKD: [0x110E, 0x1161] },
+{ source: [0xCC29], NFC: [0xCC29], NFD: [0x110E, 0x1161, 0x11A8], NFKC: [0xCC29], NFKD: [0x110E, 0x1161, 0x11A8] },
+{ source: [0xCC2A], NFC: [0xCC2A], NFD: [0x110E, 0x1161, 0x11A9], NFKC: [0xCC2A], NFKD: [0x110E, 0x1161, 0x11A9] },
+{ source: [0xCC2B], NFC: [0xCC2B], NFD: [0x110E, 0x1161, 0x11AA], NFKC: [0xCC2B], NFKD: [0x110E, 0x1161, 0x11AA] },
+{ source: [0xCC2C], NFC: [0xCC2C], NFD: [0x110E, 0x1161, 0x11AB], NFKC: [0xCC2C], NFKD: [0x110E, 0x1161, 0x11AB] },
+{ source: [0xCC2D], NFC: [0xCC2D], NFD: [0x110E, 0x1161, 0x11AC], NFKC: [0xCC2D], NFKD: [0x110E, 0x1161, 0x11AC] },
+{ source: [0xCC2E], NFC: [0xCC2E], NFD: [0x110E, 0x1161, 0x11AD], NFKC: [0xCC2E], NFKD: [0x110E, 0x1161, 0x11AD] },
+{ source: [0xCC2F], NFC: [0xCC2F], NFD: [0x110E, 0x1161, 0x11AE], NFKC: [0xCC2F], NFKD: [0x110E, 0x1161, 0x11AE] },
+{ source: [0xCC30], NFC: [0xCC30], NFD: [0x110E, 0x1161, 0x11AF], NFKC: [0xCC30], NFKD: [0x110E, 0x1161, 0x11AF] },
+{ source: [0xCC31], NFC: [0xCC31], NFD: [0x110E, 0x1161, 0x11B0], NFKC: [0xCC31], NFKD: [0x110E, 0x1161, 0x11B0] },
+{ source: [0xCC32], NFC: [0xCC32], NFD: [0x110E, 0x1161, 0x11B1], NFKC: [0xCC32], NFKD: [0x110E, 0x1161, 0x11B1] },
+{ source: [0xCC33], NFC: [0xCC33], NFD: [0x110E, 0x1161, 0x11B2], NFKC: [0xCC33], NFKD: [0x110E, 0x1161, 0x11B2] },
+{ source: [0xCC34], NFC: [0xCC34], NFD: [0x110E, 0x1161, 0x11B3], NFKC: [0xCC34], NFKD: [0x110E, 0x1161, 0x11B3] },
+{ source: [0xCC35], NFC: [0xCC35], NFD: [0x110E, 0x1161, 0x11B4], NFKC: [0xCC35], NFKD: [0x110E, 0x1161, 0x11B4] },
+{ source: [0xCC36], NFC: [0xCC36], NFD: [0x110E, 0x1161, 0x11B5], NFKC: [0xCC36], NFKD: [0x110E, 0x1161, 0x11B5] },
+{ source: [0xCC37], NFC: [0xCC37], NFD: [0x110E, 0x1161, 0x11B6], NFKC: [0xCC37], NFKD: [0x110E, 0x1161, 0x11B6] },
+{ source: [0xCC38], NFC: [0xCC38], NFD: [0x110E, 0x1161, 0x11B7], NFKC: [0xCC38], NFKD: [0x110E, 0x1161, 0x11B7] },
+{ source: [0xCC39], NFC: [0xCC39], NFD: [0x110E, 0x1161, 0x11B8], NFKC: [0xCC39], NFKD: [0x110E, 0x1161, 0x11B8] },
+{ source: [0xCC3A], NFC: [0xCC3A], NFD: [0x110E, 0x1161, 0x11B9], NFKC: [0xCC3A], NFKD: [0x110E, 0x1161, 0x11B9] },
+{ source: [0xCC3B], NFC: [0xCC3B], NFD: [0x110E, 0x1161, 0x11BA], NFKC: [0xCC3B], NFKD: [0x110E, 0x1161, 0x11BA] },
+{ source: [0xCC3C], NFC: [0xCC3C], NFD: [0x110E, 0x1161, 0x11BB], NFKC: [0xCC3C], NFKD: [0x110E, 0x1161, 0x11BB] },
+{ source: [0xCC3D], NFC: [0xCC3D], NFD: [0x110E, 0x1161, 0x11BC], NFKC: [0xCC3D], NFKD: [0x110E, 0x1161, 0x11BC] },
+{ source: [0xCC3E], NFC: [0xCC3E], NFD: [0x110E, 0x1161, 0x11BD], NFKC: [0xCC3E], NFKD: [0x110E, 0x1161, 0x11BD] },
+{ source: [0xCC3F], NFC: [0xCC3F], NFD: [0x110E, 0x1161, 0x11BE], NFKC: [0xCC3F], NFKD: [0x110E, 0x1161, 0x11BE] },
+{ source: [0xCC40], NFC: [0xCC40], NFD: [0x110E, 0x1161, 0x11BF], NFKC: [0xCC40], NFKD: [0x110E, 0x1161, 0x11BF] },
+{ source: [0xCC41], NFC: [0xCC41], NFD: [0x110E, 0x1161, 0x11C0], NFKC: [0xCC41], NFKD: [0x110E, 0x1161, 0x11C0] },
+{ source: [0xCC42], NFC: [0xCC42], NFD: [0x110E, 0x1161, 0x11C1], NFKC: [0xCC42], NFKD: [0x110E, 0x1161, 0x11C1] },
+{ source: [0xCC43], NFC: [0xCC43], NFD: [0x110E, 0x1161, 0x11C2], NFKC: [0xCC43], NFKD: [0x110E, 0x1161, 0x11C2] },
+{ source: [0xCC44], NFC: [0xCC44], NFD: [0x110E, 0x1162], NFKC: [0xCC44], NFKD: [0x110E, 0x1162] },
+{ source: [0xCC45], NFC: [0xCC45], NFD: [0x110E, 0x1162, 0x11A8], NFKC: [0xCC45], NFKD: [0x110E, 0x1162, 0x11A8] },
+{ source: [0xCC46], NFC: [0xCC46], NFD: [0x110E, 0x1162, 0x11A9], NFKC: [0xCC46], NFKD: [0x110E, 0x1162, 0x11A9] },
+{ source: [0xCC47], NFC: [0xCC47], NFD: [0x110E, 0x1162, 0x11AA], NFKC: [0xCC47], NFKD: [0x110E, 0x1162, 0x11AA] },
+{ source: [0xCC48], NFC: [0xCC48], NFD: [0x110E, 0x1162, 0x11AB], NFKC: [0xCC48], NFKD: [0x110E, 0x1162, 0x11AB] },
+{ source: [0xCC49], NFC: [0xCC49], NFD: [0x110E, 0x1162, 0x11AC], NFKC: [0xCC49], NFKD: [0x110E, 0x1162, 0x11AC] },
+{ source: [0xCC4A], NFC: [0xCC4A], NFD: [0x110E, 0x1162, 0x11AD], NFKC: [0xCC4A], NFKD: [0x110E, 0x1162, 0x11AD] },
+{ source: [0xCC4B], NFC: [0xCC4B], NFD: [0x110E, 0x1162, 0x11AE], NFKC: [0xCC4B], NFKD: [0x110E, 0x1162, 0x11AE] },
+{ source: [0xCC4C], NFC: [0xCC4C], NFD: [0x110E, 0x1162, 0x11AF], NFKC: [0xCC4C], NFKD: [0x110E, 0x1162, 0x11AF] },
+{ source: [0xCC4D], NFC: [0xCC4D], NFD: [0x110E, 0x1162, 0x11B0], NFKC: [0xCC4D], NFKD: [0x110E, 0x1162, 0x11B0] },
+{ source: [0xCC4E], NFC: [0xCC4E], NFD: [0x110E, 0x1162, 0x11B1], NFKC: [0xCC4E], NFKD: [0x110E, 0x1162, 0x11B1] },
+{ source: [0xCC4F], NFC: [0xCC4F], NFD: [0x110E, 0x1162, 0x11B2], NFKC: [0xCC4F], NFKD: [0x110E, 0x1162, 0x11B2] },
+{ source: [0xCC50], NFC: [0xCC50], NFD: [0x110E, 0x1162, 0x11B3], NFKC: [0xCC50], NFKD: [0x110E, 0x1162, 0x11B3] },
+{ source: [0xCC51], NFC: [0xCC51], NFD: [0x110E, 0x1162, 0x11B4], NFKC: [0xCC51], NFKD: [0x110E, 0x1162, 0x11B4] },
+{ source: [0xCC52], NFC: [0xCC52], NFD: [0x110E, 0x1162, 0x11B5], NFKC: [0xCC52], NFKD: [0x110E, 0x1162, 0x11B5] },
+{ source: [0xCC53], NFC: [0xCC53], NFD: [0x110E, 0x1162, 0x11B6], NFKC: [0xCC53], NFKD: [0x110E, 0x1162, 0x11B6] },
+{ source: [0xCC54], NFC: [0xCC54], NFD: [0x110E, 0x1162, 0x11B7], NFKC: [0xCC54], NFKD: [0x110E, 0x1162, 0x11B7] },
+{ source: [0xCC55], NFC: [0xCC55], NFD: [0x110E, 0x1162, 0x11B8], NFKC: [0xCC55], NFKD: [0x110E, 0x1162, 0x11B8] },
+{ source: [0xCC56], NFC: [0xCC56], NFD: [0x110E, 0x1162, 0x11B9], NFKC: [0xCC56], NFKD: [0x110E, 0x1162, 0x11B9] },
+{ source: [0xCC57], NFC: [0xCC57], NFD: [0x110E, 0x1162, 0x11BA], NFKC: [0xCC57], NFKD: [0x110E, 0x1162, 0x11BA] },
+{ source: [0xCC58], NFC: [0xCC58], NFD: [0x110E, 0x1162, 0x11BB], NFKC: [0xCC58], NFKD: [0x110E, 0x1162, 0x11BB] },
+{ source: [0xCC59], NFC: [0xCC59], NFD: [0x110E, 0x1162, 0x11BC], NFKC: [0xCC59], NFKD: [0x110E, 0x1162, 0x11BC] },
+{ source: [0xCC5A], NFC: [0xCC5A], NFD: [0x110E, 0x1162, 0x11BD], NFKC: [0xCC5A], NFKD: [0x110E, 0x1162, 0x11BD] },
+{ source: [0xCC5B], NFC: [0xCC5B], NFD: [0x110E, 0x1162, 0x11BE], NFKC: [0xCC5B], NFKD: [0x110E, 0x1162, 0x11BE] },
+{ source: [0xCC5C], NFC: [0xCC5C], NFD: [0x110E, 0x1162, 0x11BF], NFKC: [0xCC5C], NFKD: [0x110E, 0x1162, 0x11BF] },
+{ source: [0xCC5D], NFC: [0xCC5D], NFD: [0x110E, 0x1162, 0x11C0], NFKC: [0xCC5D], NFKD: [0x110E, 0x1162, 0x11C0] },
+{ source: [0xCC5E], NFC: [0xCC5E], NFD: [0x110E, 0x1162, 0x11C1], NFKC: [0xCC5E], NFKD: [0x110E, 0x1162, 0x11C1] },
+{ source: [0xCC5F], NFC: [0xCC5F], NFD: [0x110E, 0x1162, 0x11C2], NFKC: [0xCC5F], NFKD: [0x110E, 0x1162, 0x11C2] },
+{ source: [0xCC60], NFC: [0xCC60], NFD: [0x110E, 0x1163], NFKC: [0xCC60], NFKD: [0x110E, 0x1163] },
+{ source: [0xCC61], NFC: [0xCC61], NFD: [0x110E, 0x1163, 0x11A8], NFKC: [0xCC61], NFKD: [0x110E, 0x1163, 0x11A8] },
+{ source: [0xCC62], NFC: [0xCC62], NFD: [0x110E, 0x1163, 0x11A9], NFKC: [0xCC62], NFKD: [0x110E, 0x1163, 0x11A9] },
+{ source: [0xCC63], NFC: [0xCC63], NFD: [0x110E, 0x1163, 0x11AA], NFKC: [0xCC63], NFKD: [0x110E, 0x1163, 0x11AA] },
+{ source: [0xCC64], NFC: [0xCC64], NFD: [0x110E, 0x1163, 0x11AB], NFKC: [0xCC64], NFKD: [0x110E, 0x1163, 0x11AB] },
+{ source: [0xCC65], NFC: [0xCC65], NFD: [0x110E, 0x1163, 0x11AC], NFKC: [0xCC65], NFKD: [0x110E, 0x1163, 0x11AC] },
+{ source: [0xCC66], NFC: [0xCC66], NFD: [0x110E, 0x1163, 0x11AD], NFKC: [0xCC66], NFKD: [0x110E, 0x1163, 0x11AD] },
+{ source: [0xCC67], NFC: [0xCC67], NFD: [0x110E, 0x1163, 0x11AE], NFKC: [0xCC67], NFKD: [0x110E, 0x1163, 0x11AE] },
+{ source: [0xCC68], NFC: [0xCC68], NFD: [0x110E, 0x1163, 0x11AF], NFKC: [0xCC68], NFKD: [0x110E, 0x1163, 0x11AF] },
+{ source: [0xCC69], NFC: [0xCC69], NFD: [0x110E, 0x1163, 0x11B0], NFKC: [0xCC69], NFKD: [0x110E, 0x1163, 0x11B0] },
+{ source: [0xCC6A], NFC: [0xCC6A], NFD: [0x110E, 0x1163, 0x11B1], NFKC: [0xCC6A], NFKD: [0x110E, 0x1163, 0x11B1] },
+{ source: [0xCC6B], NFC: [0xCC6B], NFD: [0x110E, 0x1163, 0x11B2], NFKC: [0xCC6B], NFKD: [0x110E, 0x1163, 0x11B2] },
+{ source: [0xCC6C], NFC: [0xCC6C], NFD: [0x110E, 0x1163, 0x11B3], NFKC: [0xCC6C], NFKD: [0x110E, 0x1163, 0x11B3] },
+{ source: [0xCC6D], NFC: [0xCC6D], NFD: [0x110E, 0x1163, 0x11B4], NFKC: [0xCC6D], NFKD: [0x110E, 0x1163, 0x11B4] },
+{ source: [0xCC6E], NFC: [0xCC6E], NFD: [0x110E, 0x1163, 0x11B5], NFKC: [0xCC6E], NFKD: [0x110E, 0x1163, 0x11B5] },
+{ source: [0xCC6F], NFC: [0xCC6F], NFD: [0x110E, 0x1163, 0x11B6], NFKC: [0xCC6F], NFKD: [0x110E, 0x1163, 0x11B6] },
+{ source: [0xCC70], NFC: [0xCC70], NFD: [0x110E, 0x1163, 0x11B7], NFKC: [0xCC70], NFKD: [0x110E, 0x1163, 0x11B7] },
+{ source: [0xCC71], NFC: [0xCC71], NFD: [0x110E, 0x1163, 0x11B8], NFKC: [0xCC71], NFKD: [0x110E, 0x1163, 0x11B8] },
+{ source: [0xCC72], NFC: [0xCC72], NFD: [0x110E, 0x1163, 0x11B9], NFKC: [0xCC72], NFKD: [0x110E, 0x1163, 0x11B9] },
+{ source: [0xCC73], NFC: [0xCC73], NFD: [0x110E, 0x1163, 0x11BA], NFKC: [0xCC73], NFKD: [0x110E, 0x1163, 0x11BA] },
+{ source: [0xCC74], NFC: [0xCC74], NFD: [0x110E, 0x1163, 0x11BB], NFKC: [0xCC74], NFKD: [0x110E, 0x1163, 0x11BB] },
+{ source: [0xCC75], NFC: [0xCC75], NFD: [0x110E, 0x1163, 0x11BC], NFKC: [0xCC75], NFKD: [0x110E, 0x1163, 0x11BC] },
+{ source: [0xCC76], NFC: [0xCC76], NFD: [0x110E, 0x1163, 0x11BD], NFKC: [0xCC76], NFKD: [0x110E, 0x1163, 0x11BD] },
+{ source: [0xCC77], NFC: [0xCC77], NFD: [0x110E, 0x1163, 0x11BE], NFKC: [0xCC77], NFKD: [0x110E, 0x1163, 0x11BE] },
+{ source: [0xCC78], NFC: [0xCC78], NFD: [0x110E, 0x1163, 0x11BF], NFKC: [0xCC78], NFKD: [0x110E, 0x1163, 0x11BF] },
+{ source: [0xCC79], NFC: [0xCC79], NFD: [0x110E, 0x1163, 0x11C0], NFKC: [0xCC79], NFKD: [0x110E, 0x1163, 0x11C0] },
+{ source: [0xCC7A], NFC: [0xCC7A], NFD: [0x110E, 0x1163, 0x11C1], NFKC: [0xCC7A], NFKD: [0x110E, 0x1163, 0x11C1] },
+{ source: [0xCC7B], NFC: [0xCC7B], NFD: [0x110E, 0x1163, 0x11C2], NFKC: [0xCC7B], NFKD: [0x110E, 0x1163, 0x11C2] },
+{ source: [0xCC7C], NFC: [0xCC7C], NFD: [0x110E, 0x1164], NFKC: [0xCC7C], NFKD: [0x110E, 0x1164] },
+{ source: [0xCC7D], NFC: [0xCC7D], NFD: [0x110E, 0x1164, 0x11A8], NFKC: [0xCC7D], NFKD: [0x110E, 0x1164, 0x11A8] },
+{ source: [0xCC7E], NFC: [0xCC7E], NFD: [0x110E, 0x1164, 0x11A9], NFKC: [0xCC7E], NFKD: [0x110E, 0x1164, 0x11A9] },
+{ source: [0xCC7F], NFC: [0xCC7F], NFD: [0x110E, 0x1164, 0x11AA], NFKC: [0xCC7F], NFKD: [0x110E, 0x1164, 0x11AA] },
+{ source: [0xCC80], NFC: [0xCC80], NFD: [0x110E, 0x1164, 0x11AB], NFKC: [0xCC80], NFKD: [0x110E, 0x1164, 0x11AB] },
+{ source: [0xCC81], NFC: [0xCC81], NFD: [0x110E, 0x1164, 0x11AC], NFKC: [0xCC81], NFKD: [0x110E, 0x1164, 0x11AC] },
+{ source: [0xCC82], NFC: [0xCC82], NFD: [0x110E, 0x1164, 0x11AD], NFKC: [0xCC82], NFKD: [0x110E, 0x1164, 0x11AD] },
+{ source: [0xCC83], NFC: [0xCC83], NFD: [0x110E, 0x1164, 0x11AE], NFKC: [0xCC83], NFKD: [0x110E, 0x1164, 0x11AE] },
+{ source: [0xCC84], NFC: [0xCC84], NFD: [0x110E, 0x1164, 0x11AF], NFKC: [0xCC84], NFKD: [0x110E, 0x1164, 0x11AF] },
+{ source: [0xCC85], NFC: [0xCC85], NFD: [0x110E, 0x1164, 0x11B0], NFKC: [0xCC85], NFKD: [0x110E, 0x1164, 0x11B0] },
+{ source: [0xCC86], NFC: [0xCC86], NFD: [0x110E, 0x1164, 0x11B1], NFKC: [0xCC86], NFKD: [0x110E, 0x1164, 0x11B1] },
+{ source: [0xCC87], NFC: [0xCC87], NFD: [0x110E, 0x1164, 0x11B2], NFKC: [0xCC87], NFKD: [0x110E, 0x1164, 0x11B2] },
+{ source: [0xCC88], NFC: [0xCC88], NFD: [0x110E, 0x1164, 0x11B3], NFKC: [0xCC88], NFKD: [0x110E, 0x1164, 0x11B3] },
+{ source: [0xCC89], NFC: [0xCC89], NFD: [0x110E, 0x1164, 0x11B4], NFKC: [0xCC89], NFKD: [0x110E, 0x1164, 0x11B4] },
+{ source: [0xCC8A], NFC: [0xCC8A], NFD: [0x110E, 0x1164, 0x11B5], NFKC: [0xCC8A], NFKD: [0x110E, 0x1164, 0x11B5] },
+{ source: [0xCC8B], NFC: [0xCC8B], NFD: [0x110E, 0x1164, 0x11B6], NFKC: [0xCC8B], NFKD: [0x110E, 0x1164, 0x11B6] },
+{ source: [0xCC8C], NFC: [0xCC8C], NFD: [0x110E, 0x1164, 0x11B7], NFKC: [0xCC8C], NFKD: [0x110E, 0x1164, 0x11B7] },
+{ source: [0xCC8D], NFC: [0xCC8D], NFD: [0x110E, 0x1164, 0x11B8], NFKC: [0xCC8D], NFKD: [0x110E, 0x1164, 0x11B8] },
+{ source: [0xCC8E], NFC: [0xCC8E], NFD: [0x110E, 0x1164, 0x11B9], NFKC: [0xCC8E], NFKD: [0x110E, 0x1164, 0x11B9] },
+{ source: [0xCC8F], NFC: [0xCC8F], NFD: [0x110E, 0x1164, 0x11BA], NFKC: [0xCC8F], NFKD: [0x110E, 0x1164, 0x11BA] },
+{ source: [0xCC90], NFC: [0xCC90], NFD: [0x110E, 0x1164, 0x11BB], NFKC: [0xCC90], NFKD: [0x110E, 0x1164, 0x11BB] },
+{ source: [0xCC91], NFC: [0xCC91], NFD: [0x110E, 0x1164, 0x11BC], NFKC: [0xCC91], NFKD: [0x110E, 0x1164, 0x11BC] },
+{ source: [0xCC92], NFC: [0xCC92], NFD: [0x110E, 0x1164, 0x11BD], NFKC: [0xCC92], NFKD: [0x110E, 0x1164, 0x11BD] },
+{ source: [0xCC93], NFC: [0xCC93], NFD: [0x110E, 0x1164, 0x11BE], NFKC: [0xCC93], NFKD: [0x110E, 0x1164, 0x11BE] },
+{ source: [0xCC94], NFC: [0xCC94], NFD: [0x110E, 0x1164, 0x11BF], NFKC: [0xCC94], NFKD: [0x110E, 0x1164, 0x11BF] },
+{ source: [0xCC95], NFC: [0xCC95], NFD: [0x110E, 0x1164, 0x11C0], NFKC: [0xCC95], NFKD: [0x110E, 0x1164, 0x11C0] },
+{ source: [0xCC96], NFC: [0xCC96], NFD: [0x110E, 0x1164, 0x11C1], NFKC: [0xCC96], NFKD: [0x110E, 0x1164, 0x11C1] },
+{ source: [0xCC97], NFC: [0xCC97], NFD: [0x110E, 0x1164, 0x11C2], NFKC: [0xCC97], NFKD: [0x110E, 0x1164, 0x11C2] },
+{ source: [0xCC98], NFC: [0xCC98], NFD: [0x110E, 0x1165], NFKC: [0xCC98], NFKD: [0x110E, 0x1165] },
+{ source: [0xCC99], NFC: [0xCC99], NFD: [0x110E, 0x1165, 0x11A8], NFKC: [0xCC99], NFKD: [0x110E, 0x1165, 0x11A8] },
+{ source: [0xCC9A], NFC: [0xCC9A], NFD: [0x110E, 0x1165, 0x11A9], NFKC: [0xCC9A], NFKD: [0x110E, 0x1165, 0x11A9] },
+{ source: [0xCC9B], NFC: [0xCC9B], NFD: [0x110E, 0x1165, 0x11AA], NFKC: [0xCC9B], NFKD: [0x110E, 0x1165, 0x11AA] },
+{ source: [0xCC9C], NFC: [0xCC9C], NFD: [0x110E, 0x1165, 0x11AB], NFKC: [0xCC9C], NFKD: [0x110E, 0x1165, 0x11AB] },
+{ source: [0xCC9D], NFC: [0xCC9D], NFD: [0x110E, 0x1165, 0x11AC], NFKC: [0xCC9D], NFKD: [0x110E, 0x1165, 0x11AC] },
+{ source: [0xCC9E], NFC: [0xCC9E], NFD: [0x110E, 0x1165, 0x11AD], NFKC: [0xCC9E], NFKD: [0x110E, 0x1165, 0x11AD] },
+{ source: [0xCC9F], NFC: [0xCC9F], NFD: [0x110E, 0x1165, 0x11AE], NFKC: [0xCC9F], NFKD: [0x110E, 0x1165, 0x11AE] },
+{ source: [0xCCA0], NFC: [0xCCA0], NFD: [0x110E, 0x1165, 0x11AF], NFKC: [0xCCA0], NFKD: [0x110E, 0x1165, 0x11AF] },
+{ source: [0xCCA1], NFC: [0xCCA1], NFD: [0x110E, 0x1165, 0x11B0], NFKC: [0xCCA1], NFKD: [0x110E, 0x1165, 0x11B0] },
+{ source: [0xCCA2], NFC: [0xCCA2], NFD: [0x110E, 0x1165, 0x11B1], NFKC: [0xCCA2], NFKD: [0x110E, 0x1165, 0x11B1] },
+{ source: [0xCCA3], NFC: [0xCCA3], NFD: [0x110E, 0x1165, 0x11B2], NFKC: [0xCCA3], NFKD: [0x110E, 0x1165, 0x11B2] },
+{ source: [0xCCA4], NFC: [0xCCA4], NFD: [0x110E, 0x1165, 0x11B3], NFKC: [0xCCA4], NFKD: [0x110E, 0x1165, 0x11B3] },
+{ source: [0xCCA5], NFC: [0xCCA5], NFD: [0x110E, 0x1165, 0x11B4], NFKC: [0xCCA5], NFKD: [0x110E, 0x1165, 0x11B4] },
+{ source: [0xCCA6], NFC: [0xCCA6], NFD: [0x110E, 0x1165, 0x11B5], NFKC: [0xCCA6], NFKD: [0x110E, 0x1165, 0x11B5] },
+{ source: [0xCCA7], NFC: [0xCCA7], NFD: [0x110E, 0x1165, 0x11B6], NFKC: [0xCCA7], NFKD: [0x110E, 0x1165, 0x11B6] },
+{ source: [0xCCA8], NFC: [0xCCA8], NFD: [0x110E, 0x1165, 0x11B7], NFKC: [0xCCA8], NFKD: [0x110E, 0x1165, 0x11B7] },
+{ source: [0xCCA9], NFC: [0xCCA9], NFD: [0x110E, 0x1165, 0x11B8], NFKC: [0xCCA9], NFKD: [0x110E, 0x1165, 0x11B8] },
+{ source: [0xCCAA], NFC: [0xCCAA], NFD: [0x110E, 0x1165, 0x11B9], NFKC: [0xCCAA], NFKD: [0x110E, 0x1165, 0x11B9] },
+{ source: [0xCCAB], NFC: [0xCCAB], NFD: [0x110E, 0x1165, 0x11BA], NFKC: [0xCCAB], NFKD: [0x110E, 0x1165, 0x11BA] },
+{ source: [0xCCAC], NFC: [0xCCAC], NFD: [0x110E, 0x1165, 0x11BB], NFKC: [0xCCAC], NFKD: [0x110E, 0x1165, 0x11BB] },
+{ source: [0xCCAD], NFC: [0xCCAD], NFD: [0x110E, 0x1165, 0x11BC], NFKC: [0xCCAD], NFKD: [0x110E, 0x1165, 0x11BC] },
+{ source: [0xCCAE], NFC: [0xCCAE], NFD: [0x110E, 0x1165, 0x11BD], NFKC: [0xCCAE], NFKD: [0x110E, 0x1165, 0x11BD] },
+{ source: [0xCCAF], NFC: [0xCCAF], NFD: [0x110E, 0x1165, 0x11BE], NFKC: [0xCCAF], NFKD: [0x110E, 0x1165, 0x11BE] },
+{ source: [0xCCB0], NFC: [0xCCB0], NFD: [0x110E, 0x1165, 0x11BF], NFKC: [0xCCB0], NFKD: [0x110E, 0x1165, 0x11BF] },
+{ source: [0xCCB1], NFC: [0xCCB1], NFD: [0x110E, 0x1165, 0x11C0], NFKC: [0xCCB1], NFKD: [0x110E, 0x1165, 0x11C0] },
+{ source: [0xCCB2], NFC: [0xCCB2], NFD: [0x110E, 0x1165, 0x11C1], NFKC: [0xCCB2], NFKD: [0x110E, 0x1165, 0x11C1] },
+{ source: [0xCCB3], NFC: [0xCCB3], NFD: [0x110E, 0x1165, 0x11C2], NFKC: [0xCCB3], NFKD: [0x110E, 0x1165, 0x11C2] },
+{ source: [0xCCB4], NFC: [0xCCB4], NFD: [0x110E, 0x1166], NFKC: [0xCCB4], NFKD: [0x110E, 0x1166] },
+{ source: [0xCCB5], NFC: [0xCCB5], NFD: [0x110E, 0x1166, 0x11A8], NFKC: [0xCCB5], NFKD: [0x110E, 0x1166, 0x11A8] },
+{ source: [0xCCB6], NFC: [0xCCB6], NFD: [0x110E, 0x1166, 0x11A9], NFKC: [0xCCB6], NFKD: [0x110E, 0x1166, 0x11A9] },
+{ source: [0xCCB7], NFC: [0xCCB7], NFD: [0x110E, 0x1166, 0x11AA], NFKC: [0xCCB7], NFKD: [0x110E, 0x1166, 0x11AA] },
+{ source: [0xCCB8], NFC: [0xCCB8], NFD: [0x110E, 0x1166, 0x11AB], NFKC: [0xCCB8], NFKD: [0x110E, 0x1166, 0x11AB] },
+{ source: [0xCCB9], NFC: [0xCCB9], NFD: [0x110E, 0x1166, 0x11AC], NFKC: [0xCCB9], NFKD: [0x110E, 0x1166, 0x11AC] },
+{ source: [0xCCBA], NFC: [0xCCBA], NFD: [0x110E, 0x1166, 0x11AD], NFKC: [0xCCBA], NFKD: [0x110E, 0x1166, 0x11AD] },
+{ source: [0xCCBB], NFC: [0xCCBB], NFD: [0x110E, 0x1166, 0x11AE], NFKC: [0xCCBB], NFKD: [0x110E, 0x1166, 0x11AE] },
+{ source: [0xCCBC], NFC: [0xCCBC], NFD: [0x110E, 0x1166, 0x11AF], NFKC: [0xCCBC], NFKD: [0x110E, 0x1166, 0x11AF] },
+{ source: [0xCCBD], NFC: [0xCCBD], NFD: [0x110E, 0x1166, 0x11B0], NFKC: [0xCCBD], NFKD: [0x110E, 0x1166, 0x11B0] },
+{ source: [0xCCBE], NFC: [0xCCBE], NFD: [0x110E, 0x1166, 0x11B1], NFKC: [0xCCBE], NFKD: [0x110E, 0x1166, 0x11B1] },
+{ source: [0xCCBF], NFC: [0xCCBF], NFD: [0x110E, 0x1166, 0x11B2], NFKC: [0xCCBF], NFKD: [0x110E, 0x1166, 0x11B2] },
+{ source: [0xCCC0], NFC: [0xCCC0], NFD: [0x110E, 0x1166, 0x11B3], NFKC: [0xCCC0], NFKD: [0x110E, 0x1166, 0x11B3] },
+{ source: [0xCCC1], NFC: [0xCCC1], NFD: [0x110E, 0x1166, 0x11B4], NFKC: [0xCCC1], NFKD: [0x110E, 0x1166, 0x11B4] },
+{ source: [0xCCC2], NFC: [0xCCC2], NFD: [0x110E, 0x1166, 0x11B5], NFKC: [0xCCC2], NFKD: [0x110E, 0x1166, 0x11B5] },
+{ source: [0xCCC3], NFC: [0xCCC3], NFD: [0x110E, 0x1166, 0x11B6], NFKC: [0xCCC3], NFKD: [0x110E, 0x1166, 0x11B6] },
+{ source: [0xCCC4], NFC: [0xCCC4], NFD: [0x110E, 0x1166, 0x11B7], NFKC: [0xCCC4], NFKD: [0x110E, 0x1166, 0x11B7] },
+{ source: [0xCCC5], NFC: [0xCCC5], NFD: [0x110E, 0x1166, 0x11B8], NFKC: [0xCCC5], NFKD: [0x110E, 0x1166, 0x11B8] },
+{ source: [0xCCC6], NFC: [0xCCC6], NFD: [0x110E, 0x1166, 0x11B9], NFKC: [0xCCC6], NFKD: [0x110E, 0x1166, 0x11B9] },
+{ source: [0xCCC7], NFC: [0xCCC7], NFD: [0x110E, 0x1166, 0x11BA], NFKC: [0xCCC7], NFKD: [0x110E, 0x1166, 0x11BA] },
+{ source: [0xCCC8], NFC: [0xCCC8], NFD: [0x110E, 0x1166, 0x11BB], NFKC: [0xCCC8], NFKD: [0x110E, 0x1166, 0x11BB] },
+{ source: [0xCCC9], NFC: [0xCCC9], NFD: [0x110E, 0x1166, 0x11BC], NFKC: [0xCCC9], NFKD: [0x110E, 0x1166, 0x11BC] },
+{ source: [0xCCCA], NFC: [0xCCCA], NFD: [0x110E, 0x1166, 0x11BD], NFKC: [0xCCCA], NFKD: [0x110E, 0x1166, 0x11BD] },
+{ source: [0xCCCB], NFC: [0xCCCB], NFD: [0x110E, 0x1166, 0x11BE], NFKC: [0xCCCB], NFKD: [0x110E, 0x1166, 0x11BE] },
+{ source: [0xCCCC], NFC: [0xCCCC], NFD: [0x110E, 0x1166, 0x11BF], NFKC: [0xCCCC], NFKD: [0x110E, 0x1166, 0x11BF] },
+{ source: [0xCCCD], NFC: [0xCCCD], NFD: [0x110E, 0x1166, 0x11C0], NFKC: [0xCCCD], NFKD: [0x110E, 0x1166, 0x11C0] },
+{ source: [0xCCCE], NFC: [0xCCCE], NFD: [0x110E, 0x1166, 0x11C1], NFKC: [0xCCCE], NFKD: [0x110E, 0x1166, 0x11C1] },
+{ source: [0xCCCF], NFC: [0xCCCF], NFD: [0x110E, 0x1166, 0x11C2], NFKC: [0xCCCF], NFKD: [0x110E, 0x1166, 0x11C2] },
+{ source: [0xCCD0], NFC: [0xCCD0], NFD: [0x110E, 0x1167], NFKC: [0xCCD0], NFKD: [0x110E, 0x1167] },
+{ source: [0xCCD1], NFC: [0xCCD1], NFD: [0x110E, 0x1167, 0x11A8], NFKC: [0xCCD1], NFKD: [0x110E, 0x1167, 0x11A8] },
+{ source: [0xCCD2], NFC: [0xCCD2], NFD: [0x110E, 0x1167, 0x11A9], NFKC: [0xCCD2], NFKD: [0x110E, 0x1167, 0x11A9] },
+{ source: [0xCCD3], NFC: [0xCCD3], NFD: [0x110E, 0x1167, 0x11AA], NFKC: [0xCCD3], NFKD: [0x110E, 0x1167, 0x11AA] },
+{ source: [0xCCD4], NFC: [0xCCD4], NFD: [0x110E, 0x1167, 0x11AB], NFKC: [0xCCD4], NFKD: [0x110E, 0x1167, 0x11AB] },
+{ source: [0xCCD5], NFC: [0xCCD5], NFD: [0x110E, 0x1167, 0x11AC], NFKC: [0xCCD5], NFKD: [0x110E, 0x1167, 0x11AC] },
+{ source: [0xCCD6], NFC: [0xCCD6], NFD: [0x110E, 0x1167, 0x11AD], NFKC: [0xCCD6], NFKD: [0x110E, 0x1167, 0x11AD] },
+{ source: [0xCCD7], NFC: [0xCCD7], NFD: [0x110E, 0x1167, 0x11AE], NFKC: [0xCCD7], NFKD: [0x110E, 0x1167, 0x11AE] },
+{ source: [0xCCD8], NFC: [0xCCD8], NFD: [0x110E, 0x1167, 0x11AF], NFKC: [0xCCD8], NFKD: [0x110E, 0x1167, 0x11AF] },
+{ source: [0xCCD9], NFC: [0xCCD9], NFD: [0x110E, 0x1167, 0x11B0], NFKC: [0xCCD9], NFKD: [0x110E, 0x1167, 0x11B0] },
+{ source: [0xCCDA], NFC: [0xCCDA], NFD: [0x110E, 0x1167, 0x11B1], NFKC: [0xCCDA], NFKD: [0x110E, 0x1167, 0x11B1] },
+{ source: [0xCCDB], NFC: [0xCCDB], NFD: [0x110E, 0x1167, 0x11B2], NFKC: [0xCCDB], NFKD: [0x110E, 0x1167, 0x11B2] },
+{ source: [0xCCDC], NFC: [0xCCDC], NFD: [0x110E, 0x1167, 0x11B3], NFKC: [0xCCDC], NFKD: [0x110E, 0x1167, 0x11B3] },
+{ source: [0xCCDD], NFC: [0xCCDD], NFD: [0x110E, 0x1167, 0x11B4], NFKC: [0xCCDD], NFKD: [0x110E, 0x1167, 0x11B4] },
+{ source: [0xCCDE], NFC: [0xCCDE], NFD: [0x110E, 0x1167, 0x11B5], NFKC: [0xCCDE], NFKD: [0x110E, 0x1167, 0x11B5] },
+{ source: [0xCCDF], NFC: [0xCCDF], NFD: [0x110E, 0x1167, 0x11B6], NFKC: [0xCCDF], NFKD: [0x110E, 0x1167, 0x11B6] },
+{ source: [0xCCE0], NFC: [0xCCE0], NFD: [0x110E, 0x1167, 0x11B7], NFKC: [0xCCE0], NFKD: [0x110E, 0x1167, 0x11B7] },
+{ source: [0xCCE1], NFC: [0xCCE1], NFD: [0x110E, 0x1167, 0x11B8], NFKC: [0xCCE1], NFKD: [0x110E, 0x1167, 0x11B8] },
+{ source: [0xCCE2], NFC: [0xCCE2], NFD: [0x110E, 0x1167, 0x11B9], NFKC: [0xCCE2], NFKD: [0x110E, 0x1167, 0x11B9] },
+{ source: [0xCCE3], NFC: [0xCCE3], NFD: [0x110E, 0x1167, 0x11BA], NFKC: [0xCCE3], NFKD: [0x110E, 0x1167, 0x11BA] },
+{ source: [0xCCE4], NFC: [0xCCE4], NFD: [0x110E, 0x1167, 0x11BB], NFKC: [0xCCE4], NFKD: [0x110E, 0x1167, 0x11BB] },
+{ source: [0xCCE5], NFC: [0xCCE5], NFD: [0x110E, 0x1167, 0x11BC], NFKC: [0xCCE5], NFKD: [0x110E, 0x1167, 0x11BC] },
+{ source: [0xCCE6], NFC: [0xCCE6], NFD: [0x110E, 0x1167, 0x11BD], NFKC: [0xCCE6], NFKD: [0x110E, 0x1167, 0x11BD] },
+{ source: [0xCCE7], NFC: [0xCCE7], NFD: [0x110E, 0x1167, 0x11BE], NFKC: [0xCCE7], NFKD: [0x110E, 0x1167, 0x11BE] },
+{ source: [0xCCE8], NFC: [0xCCE8], NFD: [0x110E, 0x1167, 0x11BF], NFKC: [0xCCE8], NFKD: [0x110E, 0x1167, 0x11BF] },
+{ source: [0xCCE9], NFC: [0xCCE9], NFD: [0x110E, 0x1167, 0x11C0], NFKC: [0xCCE9], NFKD: [0x110E, 0x1167, 0x11C0] },
+{ source: [0xCCEA], NFC: [0xCCEA], NFD: [0x110E, 0x1167, 0x11C1], NFKC: [0xCCEA], NFKD: [0x110E, 0x1167, 0x11C1] },
+{ source: [0xCCEB], NFC: [0xCCEB], NFD: [0x110E, 0x1167, 0x11C2], NFKC: [0xCCEB], NFKD: [0x110E, 0x1167, 0x11C2] },
+{ source: [0xCCEC], NFC: [0xCCEC], NFD: [0x110E, 0x1168], NFKC: [0xCCEC], NFKD: [0x110E, 0x1168] },
+{ source: [0xCCED], NFC: [0xCCED], NFD: [0x110E, 0x1168, 0x11A8], NFKC: [0xCCED], NFKD: [0x110E, 0x1168, 0x11A8] },
+{ source: [0xCCEE], NFC: [0xCCEE], NFD: [0x110E, 0x1168, 0x11A9], NFKC: [0xCCEE], NFKD: [0x110E, 0x1168, 0x11A9] },
+{ source: [0xCCEF], NFC: [0xCCEF], NFD: [0x110E, 0x1168, 0x11AA], NFKC: [0xCCEF], NFKD: [0x110E, 0x1168, 0x11AA] },
+{ source: [0xCCF0], NFC: [0xCCF0], NFD: [0x110E, 0x1168, 0x11AB], NFKC: [0xCCF0], NFKD: [0x110E, 0x1168, 0x11AB] },
+{ source: [0xCCF1], NFC: [0xCCF1], NFD: [0x110E, 0x1168, 0x11AC], NFKC: [0xCCF1], NFKD: [0x110E, 0x1168, 0x11AC] },
+{ source: [0xCCF2], NFC: [0xCCF2], NFD: [0x110E, 0x1168, 0x11AD], NFKC: [0xCCF2], NFKD: [0x110E, 0x1168, 0x11AD] },
+{ source: [0xCCF3], NFC: [0xCCF3], NFD: [0x110E, 0x1168, 0x11AE], NFKC: [0xCCF3], NFKD: [0x110E, 0x1168, 0x11AE] },
+{ source: [0xCCF4], NFC: [0xCCF4], NFD: [0x110E, 0x1168, 0x11AF], NFKC: [0xCCF4], NFKD: [0x110E, 0x1168, 0x11AF] },
+{ source: [0xCCF5], NFC: [0xCCF5], NFD: [0x110E, 0x1168, 0x11B0], NFKC: [0xCCF5], NFKD: [0x110E, 0x1168, 0x11B0] },
+{ source: [0xCCF6], NFC: [0xCCF6], NFD: [0x110E, 0x1168, 0x11B1], NFKC: [0xCCF6], NFKD: [0x110E, 0x1168, 0x11B1] },
+{ source: [0xCCF7], NFC: [0xCCF7], NFD: [0x110E, 0x1168, 0x11B2], NFKC: [0xCCF7], NFKD: [0x110E, 0x1168, 0x11B2] },
+{ source: [0xCCF8], NFC: [0xCCF8], NFD: [0x110E, 0x1168, 0x11B3], NFKC: [0xCCF8], NFKD: [0x110E, 0x1168, 0x11B3] },
+{ source: [0xCCF9], NFC: [0xCCF9], NFD: [0x110E, 0x1168, 0x11B4], NFKC: [0xCCF9], NFKD: [0x110E, 0x1168, 0x11B4] },
+{ source: [0xCCFA], NFC: [0xCCFA], NFD: [0x110E, 0x1168, 0x11B5], NFKC: [0xCCFA], NFKD: [0x110E, 0x1168, 0x11B5] },
+{ source: [0xCCFB], NFC: [0xCCFB], NFD: [0x110E, 0x1168, 0x11B6], NFKC: [0xCCFB], NFKD: [0x110E, 0x1168, 0x11B6] },
+{ source: [0xCCFC], NFC: [0xCCFC], NFD: [0x110E, 0x1168, 0x11B7], NFKC: [0xCCFC], NFKD: [0x110E, 0x1168, 0x11B7] },
+{ source: [0xCCFD], NFC: [0xCCFD], NFD: [0x110E, 0x1168, 0x11B8], NFKC: [0xCCFD], NFKD: [0x110E, 0x1168, 0x11B8] },
+{ source: [0xCCFE], NFC: [0xCCFE], NFD: [0x110E, 0x1168, 0x11B9], NFKC: [0xCCFE], NFKD: [0x110E, 0x1168, 0x11B9] },
+{ source: [0xCCFF], NFC: [0xCCFF], NFD: [0x110E, 0x1168, 0x11BA], NFKC: [0xCCFF], NFKD: [0x110E, 0x1168, 0x11BA] },
+{ source: [0xCD00], NFC: [0xCD00], NFD: [0x110E, 0x1168, 0x11BB], NFKC: [0xCD00], NFKD: [0x110E, 0x1168, 0x11BB] },
+{ source: [0xCD01], NFC: [0xCD01], NFD: [0x110E, 0x1168, 0x11BC], NFKC: [0xCD01], NFKD: [0x110E, 0x1168, 0x11BC] },
+{ source: [0xCD02], NFC: [0xCD02], NFD: [0x110E, 0x1168, 0x11BD], NFKC: [0xCD02], NFKD: [0x110E, 0x1168, 0x11BD] },
+{ source: [0xCD03], NFC: [0xCD03], NFD: [0x110E, 0x1168, 0x11BE], NFKC: [0xCD03], NFKD: [0x110E, 0x1168, 0x11BE] },
+{ source: [0xCD04], NFC: [0xCD04], NFD: [0x110E, 0x1168, 0x11BF], NFKC: [0xCD04], NFKD: [0x110E, 0x1168, 0x11BF] },
+{ source: [0xCD05], NFC: [0xCD05], NFD: [0x110E, 0x1168, 0x11C0], NFKC: [0xCD05], NFKD: [0x110E, 0x1168, 0x11C0] },
+{ source: [0xCD06], NFC: [0xCD06], NFD: [0x110E, 0x1168, 0x11C1], NFKC: [0xCD06], NFKD: [0x110E, 0x1168, 0x11C1] },
+{ source: [0xCD07], NFC: [0xCD07], NFD: [0x110E, 0x1168, 0x11C2], NFKC: [0xCD07], NFKD: [0x110E, 0x1168, 0x11C2] },
+{ source: [0xCD08], NFC: [0xCD08], NFD: [0x110E, 0x1169], NFKC: [0xCD08], NFKD: [0x110E, 0x1169] },
+{ source: [0xCD09], NFC: [0xCD09], NFD: [0x110E, 0x1169, 0x11A8], NFKC: [0xCD09], NFKD: [0x110E, 0x1169, 0x11A8] },
+{ source: [0xCD0A], NFC: [0xCD0A], NFD: [0x110E, 0x1169, 0x11A9], NFKC: [0xCD0A], NFKD: [0x110E, 0x1169, 0x11A9] },
+{ source: [0xCD0B], NFC: [0xCD0B], NFD: [0x110E, 0x1169, 0x11AA], NFKC: [0xCD0B], NFKD: [0x110E, 0x1169, 0x11AA] },
+{ source: [0xCD0C], NFC: [0xCD0C], NFD: [0x110E, 0x1169, 0x11AB], NFKC: [0xCD0C], NFKD: [0x110E, 0x1169, 0x11AB] },
+{ source: [0xCD0D], NFC: [0xCD0D], NFD: [0x110E, 0x1169, 0x11AC], NFKC: [0xCD0D], NFKD: [0x110E, 0x1169, 0x11AC] },
+{ source: [0xCD0E], NFC: [0xCD0E], NFD: [0x110E, 0x1169, 0x11AD], NFKC: [0xCD0E], NFKD: [0x110E, 0x1169, 0x11AD] },
+{ source: [0xCD0F], NFC: [0xCD0F], NFD: [0x110E, 0x1169, 0x11AE], NFKC: [0xCD0F], NFKD: [0x110E, 0x1169, 0x11AE] },
+{ source: [0xCD10], NFC: [0xCD10], NFD: [0x110E, 0x1169, 0x11AF], NFKC: [0xCD10], NFKD: [0x110E, 0x1169, 0x11AF] },
+{ source: [0xCD11], NFC: [0xCD11], NFD: [0x110E, 0x1169, 0x11B0], NFKC: [0xCD11], NFKD: [0x110E, 0x1169, 0x11B0] },
+{ source: [0xCD12], NFC: [0xCD12], NFD: [0x110E, 0x1169, 0x11B1], NFKC: [0xCD12], NFKD: [0x110E, 0x1169, 0x11B1] },
+{ source: [0xCD13], NFC: [0xCD13], NFD: [0x110E, 0x1169, 0x11B2], NFKC: [0xCD13], NFKD: [0x110E, 0x1169, 0x11B2] },
+{ source: [0xCD14], NFC: [0xCD14], NFD: [0x110E, 0x1169, 0x11B3], NFKC: [0xCD14], NFKD: [0x110E, 0x1169, 0x11B3] },
+{ source: [0xCD15], NFC: [0xCD15], NFD: [0x110E, 0x1169, 0x11B4], NFKC: [0xCD15], NFKD: [0x110E, 0x1169, 0x11B4] },
+{ source: [0xCD16], NFC: [0xCD16], NFD: [0x110E, 0x1169, 0x11B5], NFKC: [0xCD16], NFKD: [0x110E, 0x1169, 0x11B5] },
+{ source: [0xCD17], NFC: [0xCD17], NFD: [0x110E, 0x1169, 0x11B6], NFKC: [0xCD17], NFKD: [0x110E, 0x1169, 0x11B6] },
+{ source: [0xCD18], NFC: [0xCD18], NFD: [0x110E, 0x1169, 0x11B7], NFKC: [0xCD18], NFKD: [0x110E, 0x1169, 0x11B7] },
+{ source: [0xCD19], NFC: [0xCD19], NFD: [0x110E, 0x1169, 0x11B8], NFKC: [0xCD19], NFKD: [0x110E, 0x1169, 0x11B8] },
+{ source: [0xCD1A], NFC: [0xCD1A], NFD: [0x110E, 0x1169, 0x11B9], NFKC: [0xCD1A], NFKD: [0x110E, 0x1169, 0x11B9] },
+{ source: [0xCD1B], NFC: [0xCD1B], NFD: [0x110E, 0x1169, 0x11BA], NFKC: [0xCD1B], NFKD: [0x110E, 0x1169, 0x11BA] },
+{ source: [0xCD1C], NFC: [0xCD1C], NFD: [0x110E, 0x1169, 0x11BB], NFKC: [0xCD1C], NFKD: [0x110E, 0x1169, 0x11BB] },
+{ source: [0xCD1D], NFC: [0xCD1D], NFD: [0x110E, 0x1169, 0x11BC], NFKC: [0xCD1D], NFKD: [0x110E, 0x1169, 0x11BC] },
+{ source: [0xCD1E], NFC: [0xCD1E], NFD: [0x110E, 0x1169, 0x11BD], NFKC: [0xCD1E], NFKD: [0x110E, 0x1169, 0x11BD] },
+{ source: [0xCD1F], NFC: [0xCD1F], NFD: [0x110E, 0x1169, 0x11BE], NFKC: [0xCD1F], NFKD: [0x110E, 0x1169, 0x11BE] },
+{ source: [0xCD20], NFC: [0xCD20], NFD: [0x110E, 0x1169, 0x11BF], NFKC: [0xCD20], NFKD: [0x110E, 0x1169, 0x11BF] },
+{ source: [0xCD21], NFC: [0xCD21], NFD: [0x110E, 0x1169, 0x11C0], NFKC: [0xCD21], NFKD: [0x110E, 0x1169, 0x11C0] },
+{ source: [0xCD22], NFC: [0xCD22], NFD: [0x110E, 0x1169, 0x11C1], NFKC: [0xCD22], NFKD: [0x110E, 0x1169, 0x11C1] },
+{ source: [0xCD23], NFC: [0xCD23], NFD: [0x110E, 0x1169, 0x11C2], NFKC: [0xCD23], NFKD: [0x110E, 0x1169, 0x11C2] },
+{ source: [0xCD24], NFC: [0xCD24], NFD: [0x110E, 0x116A], NFKC: [0xCD24], NFKD: [0x110E, 0x116A] },
+{ source: [0xCD25], NFC: [0xCD25], NFD: [0x110E, 0x116A, 0x11A8], NFKC: [0xCD25], NFKD: [0x110E, 0x116A, 0x11A8] },
+{ source: [0xCD26], NFC: [0xCD26], NFD: [0x110E, 0x116A, 0x11A9], NFKC: [0xCD26], NFKD: [0x110E, 0x116A, 0x11A9] },
+{ source: [0xCD27], NFC: [0xCD27], NFD: [0x110E, 0x116A, 0x11AA], NFKC: [0xCD27], NFKD: [0x110E, 0x116A, 0x11AA] },
+{ source: [0xCD28], NFC: [0xCD28], NFD: [0x110E, 0x116A, 0x11AB], NFKC: [0xCD28], NFKD: [0x110E, 0x116A, 0x11AB] },
+{ source: [0xCD29], NFC: [0xCD29], NFD: [0x110E, 0x116A, 0x11AC], NFKC: [0xCD29], NFKD: [0x110E, 0x116A, 0x11AC] },
+{ source: [0xCD2A], NFC: [0xCD2A], NFD: [0x110E, 0x116A, 0x11AD], NFKC: [0xCD2A], NFKD: [0x110E, 0x116A, 0x11AD] },
+{ source: [0xCD2B], NFC: [0xCD2B], NFD: [0x110E, 0x116A, 0x11AE], NFKC: [0xCD2B], NFKD: [0x110E, 0x116A, 0x11AE] },
+{ source: [0xCD2C], NFC: [0xCD2C], NFD: [0x110E, 0x116A, 0x11AF], NFKC: [0xCD2C], NFKD: [0x110E, 0x116A, 0x11AF] },
+{ source: [0xCD2D], NFC: [0xCD2D], NFD: [0x110E, 0x116A, 0x11B0], NFKC: [0xCD2D], NFKD: [0x110E, 0x116A, 0x11B0] },
+{ source: [0xCD2E], NFC: [0xCD2E], NFD: [0x110E, 0x116A, 0x11B1], NFKC: [0xCD2E], NFKD: [0x110E, 0x116A, 0x11B1] },
+{ source: [0xCD2F], NFC: [0xCD2F], NFD: [0x110E, 0x116A, 0x11B2], NFKC: [0xCD2F], NFKD: [0x110E, 0x116A, 0x11B2] },
+{ source: [0xCD30], NFC: [0xCD30], NFD: [0x110E, 0x116A, 0x11B3], NFKC: [0xCD30], NFKD: [0x110E, 0x116A, 0x11B3] },
+{ source: [0xCD31], NFC: [0xCD31], NFD: [0x110E, 0x116A, 0x11B4], NFKC: [0xCD31], NFKD: [0x110E, 0x116A, 0x11B4] },
+{ source: [0xCD32], NFC: [0xCD32], NFD: [0x110E, 0x116A, 0x11B5], NFKC: [0xCD32], NFKD: [0x110E, 0x116A, 0x11B5] },
+{ source: [0xCD33], NFC: [0xCD33], NFD: [0x110E, 0x116A, 0x11B6], NFKC: [0xCD33], NFKD: [0x110E, 0x116A, 0x11B6] },
+{ source: [0xCD34], NFC: [0xCD34], NFD: [0x110E, 0x116A, 0x11B7], NFKC: [0xCD34], NFKD: [0x110E, 0x116A, 0x11B7] },
+{ source: [0xCD35], NFC: [0xCD35], NFD: [0x110E, 0x116A, 0x11B8], NFKC: [0xCD35], NFKD: [0x110E, 0x116A, 0x11B8] },
+{ source: [0xCD36], NFC: [0xCD36], NFD: [0x110E, 0x116A, 0x11B9], NFKC: [0xCD36], NFKD: [0x110E, 0x116A, 0x11B9] },
+{ source: [0xCD37], NFC: [0xCD37], NFD: [0x110E, 0x116A, 0x11BA], NFKC: [0xCD37], NFKD: [0x110E, 0x116A, 0x11BA] },
+{ source: [0xCD38], NFC: [0xCD38], NFD: [0x110E, 0x116A, 0x11BB], NFKC: [0xCD38], NFKD: [0x110E, 0x116A, 0x11BB] },
+{ source: [0xCD39], NFC: [0xCD39], NFD: [0x110E, 0x116A, 0x11BC], NFKC: [0xCD39], NFKD: [0x110E, 0x116A, 0x11BC] },
+{ source: [0xCD3A], NFC: [0xCD3A], NFD: [0x110E, 0x116A, 0x11BD], NFKC: [0xCD3A], NFKD: [0x110E, 0x116A, 0x11BD] },
+{ source: [0xCD3B], NFC: [0xCD3B], NFD: [0x110E, 0x116A, 0x11BE], NFKC: [0xCD3B], NFKD: [0x110E, 0x116A, 0x11BE] },
+{ source: [0xCD3C], NFC: [0xCD3C], NFD: [0x110E, 0x116A, 0x11BF], NFKC: [0xCD3C], NFKD: [0x110E, 0x116A, 0x11BF] },
+{ source: [0xCD3D], NFC: [0xCD3D], NFD: [0x110E, 0x116A, 0x11C0], NFKC: [0xCD3D], NFKD: [0x110E, 0x116A, 0x11C0] },
+{ source: [0xCD3E], NFC: [0xCD3E], NFD: [0x110E, 0x116A, 0x11C1], NFKC: [0xCD3E], NFKD: [0x110E, 0x116A, 0x11C1] },
+{ source: [0xCD3F], NFC: [0xCD3F], NFD: [0x110E, 0x116A, 0x11C2], NFKC: [0xCD3F], NFKD: [0x110E, 0x116A, 0x11C2] },
+{ source: [0xCD40], NFC: [0xCD40], NFD: [0x110E, 0x116B], NFKC: [0xCD40], NFKD: [0x110E, 0x116B] },
+{ source: [0xCD41], NFC: [0xCD41], NFD: [0x110E, 0x116B, 0x11A8], NFKC: [0xCD41], NFKD: [0x110E, 0x116B, 0x11A8] },
+{ source: [0xCD42], NFC: [0xCD42], NFD: [0x110E, 0x116B, 0x11A9], NFKC: [0xCD42], NFKD: [0x110E, 0x116B, 0x11A9] },
+{ source: [0xCD43], NFC: [0xCD43], NFD: [0x110E, 0x116B, 0x11AA], NFKC: [0xCD43], NFKD: [0x110E, 0x116B, 0x11AA] },
+{ source: [0xCD44], NFC: [0xCD44], NFD: [0x110E, 0x116B, 0x11AB], NFKC: [0xCD44], NFKD: [0x110E, 0x116B, 0x11AB] },
+{ source: [0xCD45], NFC: [0xCD45], NFD: [0x110E, 0x116B, 0x11AC], NFKC: [0xCD45], NFKD: [0x110E, 0x116B, 0x11AC] },
+{ source: [0xCD46], NFC: [0xCD46], NFD: [0x110E, 0x116B, 0x11AD], NFKC: [0xCD46], NFKD: [0x110E, 0x116B, 0x11AD] },
+{ source: [0xCD47], NFC: [0xCD47], NFD: [0x110E, 0x116B, 0x11AE], NFKC: [0xCD47], NFKD: [0x110E, 0x116B, 0x11AE] },
+{ source: [0xCD48], NFC: [0xCD48], NFD: [0x110E, 0x116B, 0x11AF], NFKC: [0xCD48], NFKD: [0x110E, 0x116B, 0x11AF] },
+{ source: [0xCD49], NFC: [0xCD49], NFD: [0x110E, 0x116B, 0x11B0], NFKC: [0xCD49], NFKD: [0x110E, 0x116B, 0x11B0] },
+{ source: [0xCD4A], NFC: [0xCD4A], NFD: [0x110E, 0x116B, 0x11B1], NFKC: [0xCD4A], NFKD: [0x110E, 0x116B, 0x11B1] },
+{ source: [0xCD4B], NFC: [0xCD4B], NFD: [0x110E, 0x116B, 0x11B2], NFKC: [0xCD4B], NFKD: [0x110E, 0x116B, 0x11B2] },
+{ source: [0xCD4C], NFC: [0xCD4C], NFD: [0x110E, 0x116B, 0x11B3], NFKC: [0xCD4C], NFKD: [0x110E, 0x116B, 0x11B3] },
+{ source: [0xCD4D], NFC: [0xCD4D], NFD: [0x110E, 0x116B, 0x11B4], NFKC: [0xCD4D], NFKD: [0x110E, 0x116B, 0x11B4] },
+{ source: [0xCD4E], NFC: [0xCD4E], NFD: [0x110E, 0x116B, 0x11B5], NFKC: [0xCD4E], NFKD: [0x110E, 0x116B, 0x11B5] },
+{ source: [0xCD4F], NFC: [0xCD4F], NFD: [0x110E, 0x116B, 0x11B6], NFKC: [0xCD4F], NFKD: [0x110E, 0x116B, 0x11B6] },
+{ source: [0xCD50], NFC: [0xCD50], NFD: [0x110E, 0x116B, 0x11B7], NFKC: [0xCD50], NFKD: [0x110E, 0x116B, 0x11B7] },
+{ source: [0xCD51], NFC: [0xCD51], NFD: [0x110E, 0x116B, 0x11B8], NFKC: [0xCD51], NFKD: [0x110E, 0x116B, 0x11B8] },
+{ source: [0xCD52], NFC: [0xCD52], NFD: [0x110E, 0x116B, 0x11B9], NFKC: [0xCD52], NFKD: [0x110E, 0x116B, 0x11B9] },
+{ source: [0xCD53], NFC: [0xCD53], NFD: [0x110E, 0x116B, 0x11BA], NFKC: [0xCD53], NFKD: [0x110E, 0x116B, 0x11BA] },
+{ source: [0xCD54], NFC: [0xCD54], NFD: [0x110E, 0x116B, 0x11BB], NFKC: [0xCD54], NFKD: [0x110E, 0x116B, 0x11BB] },
+{ source: [0xCD55], NFC: [0xCD55], NFD: [0x110E, 0x116B, 0x11BC], NFKC: [0xCD55], NFKD: [0x110E, 0x116B, 0x11BC] },
+{ source: [0xCD56], NFC: [0xCD56], NFD: [0x110E, 0x116B, 0x11BD], NFKC: [0xCD56], NFKD: [0x110E, 0x116B, 0x11BD] },
+{ source: [0xCD57], NFC: [0xCD57], NFD: [0x110E, 0x116B, 0x11BE], NFKC: [0xCD57], NFKD: [0x110E, 0x116B, 0x11BE] },
+{ source: [0xCD58], NFC: [0xCD58], NFD: [0x110E, 0x116B, 0x11BF], NFKC: [0xCD58], NFKD: [0x110E, 0x116B, 0x11BF] },
+{ source: [0xCD59], NFC: [0xCD59], NFD: [0x110E, 0x116B, 0x11C0], NFKC: [0xCD59], NFKD: [0x110E, 0x116B, 0x11C0] },
+{ source: [0xCD5A], NFC: [0xCD5A], NFD: [0x110E, 0x116B, 0x11C1], NFKC: [0xCD5A], NFKD: [0x110E, 0x116B, 0x11C1] },
+{ source: [0xCD5B], NFC: [0xCD5B], NFD: [0x110E, 0x116B, 0x11C2], NFKC: [0xCD5B], NFKD: [0x110E, 0x116B, 0x11C2] },
+{ source: [0xCD5C], NFC: [0xCD5C], NFD: [0x110E, 0x116C], NFKC: [0xCD5C], NFKD: [0x110E, 0x116C] },
+{ source: [0xCD5D], NFC: [0xCD5D], NFD: [0x110E, 0x116C, 0x11A8], NFKC: [0xCD5D], NFKD: [0x110E, 0x116C, 0x11A8] },
+{ source: [0xCD5E], NFC: [0xCD5E], NFD: [0x110E, 0x116C, 0x11A9], NFKC: [0xCD5E], NFKD: [0x110E, 0x116C, 0x11A9] },
+{ source: [0xCD5F], NFC: [0xCD5F], NFD: [0x110E, 0x116C, 0x11AA], NFKC: [0xCD5F], NFKD: [0x110E, 0x116C, 0x11AA] },
+{ source: [0xCD60], NFC: [0xCD60], NFD: [0x110E, 0x116C, 0x11AB], NFKC: [0xCD60], NFKD: [0x110E, 0x116C, 0x11AB] },
+{ source: [0xCD61], NFC: [0xCD61], NFD: [0x110E, 0x116C, 0x11AC], NFKC: [0xCD61], NFKD: [0x110E, 0x116C, 0x11AC] },
+{ source: [0xCD62], NFC: [0xCD62], NFD: [0x110E, 0x116C, 0x11AD], NFKC: [0xCD62], NFKD: [0x110E, 0x116C, 0x11AD] },
+{ source: [0xCD63], NFC: [0xCD63], NFD: [0x110E, 0x116C, 0x11AE], NFKC: [0xCD63], NFKD: [0x110E, 0x116C, 0x11AE] },
+{ source: [0xCD64], NFC: [0xCD64], NFD: [0x110E, 0x116C, 0x11AF], NFKC: [0xCD64], NFKD: [0x110E, 0x116C, 0x11AF] },
+{ source: [0xCD65], NFC: [0xCD65], NFD: [0x110E, 0x116C, 0x11B0], NFKC: [0xCD65], NFKD: [0x110E, 0x116C, 0x11B0] },
+{ source: [0xCD66], NFC: [0xCD66], NFD: [0x110E, 0x116C, 0x11B1], NFKC: [0xCD66], NFKD: [0x110E, 0x116C, 0x11B1] },
+{ source: [0xCD67], NFC: [0xCD67], NFD: [0x110E, 0x116C, 0x11B2], NFKC: [0xCD67], NFKD: [0x110E, 0x116C, 0x11B2] },
+{ source: [0xCD68], NFC: [0xCD68], NFD: [0x110E, 0x116C, 0x11B3], NFKC: [0xCD68], NFKD: [0x110E, 0x116C, 0x11B3] },
+{ source: [0xCD69], NFC: [0xCD69], NFD: [0x110E, 0x116C, 0x11B4], NFKC: [0xCD69], NFKD: [0x110E, 0x116C, 0x11B4] },
+{ source: [0xCD6A], NFC: [0xCD6A], NFD: [0x110E, 0x116C, 0x11B5], NFKC: [0xCD6A], NFKD: [0x110E, 0x116C, 0x11B5] },
+{ source: [0xCD6B], NFC: [0xCD6B], NFD: [0x110E, 0x116C, 0x11B6], NFKC: [0xCD6B], NFKD: [0x110E, 0x116C, 0x11B6] },
+{ source: [0xCD6C], NFC: [0xCD6C], NFD: [0x110E, 0x116C, 0x11B7], NFKC: [0xCD6C], NFKD: [0x110E, 0x116C, 0x11B7] },
+{ source: [0xCD6D], NFC: [0xCD6D], NFD: [0x110E, 0x116C, 0x11B8], NFKC: [0xCD6D], NFKD: [0x110E, 0x116C, 0x11B8] },
+{ source: [0xCD6E], NFC: [0xCD6E], NFD: [0x110E, 0x116C, 0x11B9], NFKC: [0xCD6E], NFKD: [0x110E, 0x116C, 0x11B9] },
+{ source: [0xCD6F], NFC: [0xCD6F], NFD: [0x110E, 0x116C, 0x11BA], NFKC: [0xCD6F], NFKD: [0x110E, 0x116C, 0x11BA] },
+{ source: [0xCD70], NFC: [0xCD70], NFD: [0x110E, 0x116C, 0x11BB], NFKC: [0xCD70], NFKD: [0x110E, 0x116C, 0x11BB] },
+{ source: [0xCD71], NFC: [0xCD71], NFD: [0x110E, 0x116C, 0x11BC], NFKC: [0xCD71], NFKD: [0x110E, 0x116C, 0x11BC] },
+{ source: [0xCD72], NFC: [0xCD72], NFD: [0x110E, 0x116C, 0x11BD], NFKC: [0xCD72], NFKD: [0x110E, 0x116C, 0x11BD] },
+{ source: [0xCD73], NFC: [0xCD73], NFD: [0x110E, 0x116C, 0x11BE], NFKC: [0xCD73], NFKD: [0x110E, 0x116C, 0x11BE] },
+{ source: [0xCD74], NFC: [0xCD74], NFD: [0x110E, 0x116C, 0x11BF], NFKC: [0xCD74], NFKD: [0x110E, 0x116C, 0x11BF] },
+{ source: [0xCD75], NFC: [0xCD75], NFD: [0x110E, 0x116C, 0x11C0], NFKC: [0xCD75], NFKD: [0x110E, 0x116C, 0x11C0] },
+{ source: [0xCD76], NFC: [0xCD76], NFD: [0x110E, 0x116C, 0x11C1], NFKC: [0xCD76], NFKD: [0x110E, 0x116C, 0x11C1] },
+{ source: [0xCD77], NFC: [0xCD77], NFD: [0x110E, 0x116C, 0x11C2], NFKC: [0xCD77], NFKD: [0x110E, 0x116C, 0x11C2] },
+{ source: [0xCD78], NFC: [0xCD78], NFD: [0x110E, 0x116D], NFKC: [0xCD78], NFKD: [0x110E, 0x116D] },
+{ source: [0xCD79], NFC: [0xCD79], NFD: [0x110E, 0x116D, 0x11A8], NFKC: [0xCD79], NFKD: [0x110E, 0x116D, 0x11A8] },
+{ source: [0xCD7A], NFC: [0xCD7A], NFD: [0x110E, 0x116D, 0x11A9], NFKC: [0xCD7A], NFKD: [0x110E, 0x116D, 0x11A9] },
+{ source: [0xCD7B], NFC: [0xCD7B], NFD: [0x110E, 0x116D, 0x11AA], NFKC: [0xCD7B], NFKD: [0x110E, 0x116D, 0x11AA] },
+{ source: [0xCD7C], NFC: [0xCD7C], NFD: [0x110E, 0x116D, 0x11AB], NFKC: [0xCD7C], NFKD: [0x110E, 0x116D, 0x11AB] },
+{ source: [0xCD7D], NFC: [0xCD7D], NFD: [0x110E, 0x116D, 0x11AC], NFKC: [0xCD7D], NFKD: [0x110E, 0x116D, 0x11AC] },
+{ source: [0xCD7E], NFC: [0xCD7E], NFD: [0x110E, 0x116D, 0x11AD], NFKC: [0xCD7E], NFKD: [0x110E, 0x116D, 0x11AD] },
+{ source: [0xCD7F], NFC: [0xCD7F], NFD: [0x110E, 0x116D, 0x11AE], NFKC: [0xCD7F], NFKD: [0x110E, 0x116D, 0x11AE] },
+{ source: [0xCD80], NFC: [0xCD80], NFD: [0x110E, 0x116D, 0x11AF], NFKC: [0xCD80], NFKD: [0x110E, 0x116D, 0x11AF] },
+{ source: [0xCD81], NFC: [0xCD81], NFD: [0x110E, 0x116D, 0x11B0], NFKC: [0xCD81], NFKD: [0x110E, 0x116D, 0x11B0] },
+{ source: [0xCD82], NFC: [0xCD82], NFD: [0x110E, 0x116D, 0x11B1], NFKC: [0xCD82], NFKD: [0x110E, 0x116D, 0x11B1] },
+{ source: [0xCD83], NFC: [0xCD83], NFD: [0x110E, 0x116D, 0x11B2], NFKC: [0xCD83], NFKD: [0x110E, 0x116D, 0x11B2] },
+{ source: [0xCD84], NFC: [0xCD84], NFD: [0x110E, 0x116D, 0x11B3], NFKC: [0xCD84], NFKD: [0x110E, 0x116D, 0x11B3] },
+{ source: [0xCD85], NFC: [0xCD85], NFD: [0x110E, 0x116D, 0x11B4], NFKC: [0xCD85], NFKD: [0x110E, 0x116D, 0x11B4] },
+{ source: [0xCD86], NFC: [0xCD86], NFD: [0x110E, 0x116D, 0x11B5], NFKC: [0xCD86], NFKD: [0x110E, 0x116D, 0x11B5] },
+{ source: [0xCD87], NFC: [0xCD87], NFD: [0x110E, 0x116D, 0x11B6], NFKC: [0xCD87], NFKD: [0x110E, 0x116D, 0x11B6] },
+{ source: [0xCD88], NFC: [0xCD88], NFD: [0x110E, 0x116D, 0x11B7], NFKC: [0xCD88], NFKD: [0x110E, 0x116D, 0x11B7] },
+{ source: [0xCD89], NFC: [0xCD89], NFD: [0x110E, 0x116D, 0x11B8], NFKC: [0xCD89], NFKD: [0x110E, 0x116D, 0x11B8] },
+{ source: [0xCD8A], NFC: [0xCD8A], NFD: [0x110E, 0x116D, 0x11B9], NFKC: [0xCD8A], NFKD: [0x110E, 0x116D, 0x11B9] },
+{ source: [0xCD8B], NFC: [0xCD8B], NFD: [0x110E, 0x116D, 0x11BA], NFKC: [0xCD8B], NFKD: [0x110E, 0x116D, 0x11BA] },
+{ source: [0xCD8C], NFC: [0xCD8C], NFD: [0x110E, 0x116D, 0x11BB], NFKC: [0xCD8C], NFKD: [0x110E, 0x116D, 0x11BB] },
+{ source: [0xCD8D], NFC: [0xCD8D], NFD: [0x110E, 0x116D, 0x11BC], NFKC: [0xCD8D], NFKD: [0x110E, 0x116D, 0x11BC] },
+{ source: [0xCD8E], NFC: [0xCD8E], NFD: [0x110E, 0x116D, 0x11BD], NFKC: [0xCD8E], NFKD: [0x110E, 0x116D, 0x11BD] },
+{ source: [0xCD8F], NFC: [0xCD8F], NFD: [0x110E, 0x116D, 0x11BE], NFKC: [0xCD8F], NFKD: [0x110E, 0x116D, 0x11BE] },
+{ source: [0xCD90], NFC: [0xCD90], NFD: [0x110E, 0x116D, 0x11BF], NFKC: [0xCD90], NFKD: [0x110E, 0x116D, 0x11BF] },
+{ source: [0xCD91], NFC: [0xCD91], NFD: [0x110E, 0x116D, 0x11C0], NFKC: [0xCD91], NFKD: [0x110E, 0x116D, 0x11C0] },
+{ source: [0xCD92], NFC: [0xCD92], NFD: [0x110E, 0x116D, 0x11C1], NFKC: [0xCD92], NFKD: [0x110E, 0x116D, 0x11C1] },
+{ source: [0xCD93], NFC: [0xCD93], NFD: [0x110E, 0x116D, 0x11C2], NFKC: [0xCD93], NFKD: [0x110E, 0x116D, 0x11C2] },
+{ source: [0xCD94], NFC: [0xCD94], NFD: [0x110E, 0x116E], NFKC: [0xCD94], NFKD: [0x110E, 0x116E] },
+{ source: [0xCD95], NFC: [0xCD95], NFD: [0x110E, 0x116E, 0x11A8], NFKC: [0xCD95], NFKD: [0x110E, 0x116E, 0x11A8] },
+{ source: [0xCD96], NFC: [0xCD96], NFD: [0x110E, 0x116E, 0x11A9], NFKC: [0xCD96], NFKD: [0x110E, 0x116E, 0x11A9] },
+{ source: [0xCD97], NFC: [0xCD97], NFD: [0x110E, 0x116E, 0x11AA], NFKC: [0xCD97], NFKD: [0x110E, 0x116E, 0x11AA] },
+{ source: [0xCD98], NFC: [0xCD98], NFD: [0x110E, 0x116E, 0x11AB], NFKC: [0xCD98], NFKD: [0x110E, 0x116E, 0x11AB] },
+{ source: [0xCD99], NFC: [0xCD99], NFD: [0x110E, 0x116E, 0x11AC], NFKC: [0xCD99], NFKD: [0x110E, 0x116E, 0x11AC] },
+{ source: [0xCD9A], NFC: [0xCD9A], NFD: [0x110E, 0x116E, 0x11AD], NFKC: [0xCD9A], NFKD: [0x110E, 0x116E, 0x11AD] },
+{ source: [0xCD9B], NFC: [0xCD9B], NFD: [0x110E, 0x116E, 0x11AE], NFKC: [0xCD9B], NFKD: [0x110E, 0x116E, 0x11AE] },
+{ source: [0xCD9C], NFC: [0xCD9C], NFD: [0x110E, 0x116E, 0x11AF], NFKC: [0xCD9C], NFKD: [0x110E, 0x116E, 0x11AF] },
+{ source: [0xCD9D], NFC: [0xCD9D], NFD: [0x110E, 0x116E, 0x11B0], NFKC: [0xCD9D], NFKD: [0x110E, 0x116E, 0x11B0] },
+{ source: [0xCD9E], NFC: [0xCD9E], NFD: [0x110E, 0x116E, 0x11B1], NFKC: [0xCD9E], NFKD: [0x110E, 0x116E, 0x11B1] },
+{ source: [0xCD9F], NFC: [0xCD9F], NFD: [0x110E, 0x116E, 0x11B2], NFKC: [0xCD9F], NFKD: [0x110E, 0x116E, 0x11B2] },
+{ source: [0xCDA0], NFC: [0xCDA0], NFD: [0x110E, 0x116E, 0x11B3], NFKC: [0xCDA0], NFKD: [0x110E, 0x116E, 0x11B3] },
+{ source: [0xCDA1], NFC: [0xCDA1], NFD: [0x110E, 0x116E, 0x11B4], NFKC: [0xCDA1], NFKD: [0x110E, 0x116E, 0x11B4] },
+{ source: [0xCDA2], NFC: [0xCDA2], NFD: [0x110E, 0x116E, 0x11B5], NFKC: [0xCDA2], NFKD: [0x110E, 0x116E, 0x11B5] },
+{ source: [0xCDA3], NFC: [0xCDA3], NFD: [0x110E, 0x116E, 0x11B6], NFKC: [0xCDA3], NFKD: [0x110E, 0x116E, 0x11B6] },
+{ source: [0xCDA4], NFC: [0xCDA4], NFD: [0x110E, 0x116E, 0x11B7], NFKC: [0xCDA4], NFKD: [0x110E, 0x116E, 0x11B7] },
+{ source: [0xCDA5], NFC: [0xCDA5], NFD: [0x110E, 0x116E, 0x11B8], NFKC: [0xCDA5], NFKD: [0x110E, 0x116E, 0x11B8] },
+{ source: [0xCDA6], NFC: [0xCDA6], NFD: [0x110E, 0x116E, 0x11B9], NFKC: [0xCDA6], NFKD: [0x110E, 0x116E, 0x11B9] },
+{ source: [0xCDA7], NFC: [0xCDA7], NFD: [0x110E, 0x116E, 0x11BA], NFKC: [0xCDA7], NFKD: [0x110E, 0x116E, 0x11BA] },
+{ source: [0xCDA8], NFC: [0xCDA8], NFD: [0x110E, 0x116E, 0x11BB], NFKC: [0xCDA8], NFKD: [0x110E, 0x116E, 0x11BB] },
+{ source: [0xCDA9], NFC: [0xCDA9], NFD: [0x110E, 0x116E, 0x11BC], NFKC: [0xCDA9], NFKD: [0x110E, 0x116E, 0x11BC] },
+{ source: [0xCDAA], NFC: [0xCDAA], NFD: [0x110E, 0x116E, 0x11BD], NFKC: [0xCDAA], NFKD: [0x110E, 0x116E, 0x11BD] },
+{ source: [0xCDAB], NFC: [0xCDAB], NFD: [0x110E, 0x116E, 0x11BE], NFKC: [0xCDAB], NFKD: [0x110E, 0x116E, 0x11BE] },
+{ source: [0xCDAC], NFC: [0xCDAC], NFD: [0x110E, 0x116E, 0x11BF], NFKC: [0xCDAC], NFKD: [0x110E, 0x116E, 0x11BF] },
+{ source: [0xCDAD], NFC: [0xCDAD], NFD: [0x110E, 0x116E, 0x11C0], NFKC: [0xCDAD], NFKD: [0x110E, 0x116E, 0x11C0] },
+{ source: [0xCDAE], NFC: [0xCDAE], NFD: [0x110E, 0x116E, 0x11C1], NFKC: [0xCDAE], NFKD: [0x110E, 0x116E, 0x11C1] },
+{ source: [0xCDAF], NFC: [0xCDAF], NFD: [0x110E, 0x116E, 0x11C2], NFKC: [0xCDAF], NFKD: [0x110E, 0x116E, 0x11C2] },
+{ source: [0xCDB0], NFC: [0xCDB0], NFD: [0x110E, 0x116F], NFKC: [0xCDB0], NFKD: [0x110E, 0x116F] },
+{ source: [0xCDB1], NFC: [0xCDB1], NFD: [0x110E, 0x116F, 0x11A8], NFKC: [0xCDB1], NFKD: [0x110E, 0x116F, 0x11A8] },
+{ source: [0xCDB2], NFC: [0xCDB2], NFD: [0x110E, 0x116F, 0x11A9], NFKC: [0xCDB2], NFKD: [0x110E, 0x116F, 0x11A9] },
+{ source: [0xCDB3], NFC: [0xCDB3], NFD: [0x110E, 0x116F, 0x11AA], NFKC: [0xCDB3], NFKD: [0x110E, 0x116F, 0x11AA] },
+{ source: [0xCDB4], NFC: [0xCDB4], NFD: [0x110E, 0x116F, 0x11AB], NFKC: [0xCDB4], NFKD: [0x110E, 0x116F, 0x11AB] },
+{ source: [0xCDB5], NFC: [0xCDB5], NFD: [0x110E, 0x116F, 0x11AC], NFKC: [0xCDB5], NFKD: [0x110E, 0x116F, 0x11AC] },
+{ source: [0xCDB6], NFC: [0xCDB6], NFD: [0x110E, 0x116F, 0x11AD], NFKC: [0xCDB6], NFKD: [0x110E, 0x116F, 0x11AD] },
+{ source: [0xCDB7], NFC: [0xCDB7], NFD: [0x110E, 0x116F, 0x11AE], NFKC: [0xCDB7], NFKD: [0x110E, 0x116F, 0x11AE] },
+{ source: [0xCDB8], NFC: [0xCDB8], NFD: [0x110E, 0x116F, 0x11AF], NFKC: [0xCDB8], NFKD: [0x110E, 0x116F, 0x11AF] },
+{ source: [0xCDB9], NFC: [0xCDB9], NFD: [0x110E, 0x116F, 0x11B0], NFKC: [0xCDB9], NFKD: [0x110E, 0x116F, 0x11B0] },
+{ source: [0xCDBA], NFC: [0xCDBA], NFD: [0x110E, 0x116F, 0x11B1], NFKC: [0xCDBA], NFKD: [0x110E, 0x116F, 0x11B1] },
+{ source: [0xCDBB], NFC: [0xCDBB], NFD: [0x110E, 0x116F, 0x11B2], NFKC: [0xCDBB], NFKD: [0x110E, 0x116F, 0x11B2] },
+{ source: [0xCDBC], NFC: [0xCDBC], NFD: [0x110E, 0x116F, 0x11B3], NFKC: [0xCDBC], NFKD: [0x110E, 0x116F, 0x11B3] },
+{ source: [0xCDBD], NFC: [0xCDBD], NFD: [0x110E, 0x116F, 0x11B4], NFKC: [0xCDBD], NFKD: [0x110E, 0x116F, 0x11B4] },
+{ source: [0xCDBE], NFC: [0xCDBE], NFD: [0x110E, 0x116F, 0x11B5], NFKC: [0xCDBE], NFKD: [0x110E, 0x116F, 0x11B5] },
+{ source: [0xCDBF], NFC: [0xCDBF], NFD: [0x110E, 0x116F, 0x11B6], NFKC: [0xCDBF], NFKD: [0x110E, 0x116F, 0x11B6] },
+{ source: [0xCDC0], NFC: [0xCDC0], NFD: [0x110E, 0x116F, 0x11B7], NFKC: [0xCDC0], NFKD: [0x110E, 0x116F, 0x11B7] },
+{ source: [0xCDC1], NFC: [0xCDC1], NFD: [0x110E, 0x116F, 0x11B8], NFKC: [0xCDC1], NFKD: [0x110E, 0x116F, 0x11B8] },
+{ source: [0xCDC2], NFC: [0xCDC2], NFD: [0x110E, 0x116F, 0x11B9], NFKC: [0xCDC2], NFKD: [0x110E, 0x116F, 0x11B9] },
+{ source: [0xCDC3], NFC: [0xCDC3], NFD: [0x110E, 0x116F, 0x11BA], NFKC: [0xCDC3], NFKD: [0x110E, 0x116F, 0x11BA] },
+{ source: [0xCDC4], NFC: [0xCDC4], NFD: [0x110E, 0x116F, 0x11BB], NFKC: [0xCDC4], NFKD: [0x110E, 0x116F, 0x11BB] },
+{ source: [0xCDC5], NFC: [0xCDC5], NFD: [0x110E, 0x116F, 0x11BC], NFKC: [0xCDC5], NFKD: [0x110E, 0x116F, 0x11BC] },
+{ source: [0xCDC6], NFC: [0xCDC6], NFD: [0x110E, 0x116F, 0x11BD], NFKC: [0xCDC6], NFKD: [0x110E, 0x116F, 0x11BD] },
+{ source: [0xCDC7], NFC: [0xCDC7], NFD: [0x110E, 0x116F, 0x11BE], NFKC: [0xCDC7], NFKD: [0x110E, 0x116F, 0x11BE] },
+{ source: [0xCDC8], NFC: [0xCDC8], NFD: [0x110E, 0x116F, 0x11BF], NFKC: [0xCDC8], NFKD: [0x110E, 0x116F, 0x11BF] },
+{ source: [0xCDC9], NFC: [0xCDC9], NFD: [0x110E, 0x116F, 0x11C0], NFKC: [0xCDC9], NFKD: [0x110E, 0x116F, 0x11C0] },
+{ source: [0xCDCA], NFC: [0xCDCA], NFD: [0x110E, 0x116F, 0x11C1], NFKC: [0xCDCA], NFKD: [0x110E, 0x116F, 0x11C1] },
+{ source: [0xCDCB], NFC: [0xCDCB], NFD: [0x110E, 0x116F, 0x11C2], NFKC: [0xCDCB], NFKD: [0x110E, 0x116F, 0x11C2] },
+{ source: [0xCDCC], NFC: [0xCDCC], NFD: [0x110E, 0x1170], NFKC: [0xCDCC], NFKD: [0x110E, 0x1170] },
+{ source: [0xCDCD], NFC: [0xCDCD], NFD: [0x110E, 0x1170, 0x11A8], NFKC: [0xCDCD], NFKD: [0x110E, 0x1170, 0x11A8] },
+{ source: [0xCDCE], NFC: [0xCDCE], NFD: [0x110E, 0x1170, 0x11A9], NFKC: [0xCDCE], NFKD: [0x110E, 0x1170, 0x11A9] },
+{ source: [0xCDCF], NFC: [0xCDCF], NFD: [0x110E, 0x1170, 0x11AA], NFKC: [0xCDCF], NFKD: [0x110E, 0x1170, 0x11AA] },
+{ source: [0xCDD0], NFC: [0xCDD0], NFD: [0x110E, 0x1170, 0x11AB], NFKC: [0xCDD0], NFKD: [0x110E, 0x1170, 0x11AB] },
+{ source: [0xCDD1], NFC: [0xCDD1], NFD: [0x110E, 0x1170, 0x11AC], NFKC: [0xCDD1], NFKD: [0x110E, 0x1170, 0x11AC] },
+{ source: [0xCDD2], NFC: [0xCDD2], NFD: [0x110E, 0x1170, 0x11AD], NFKC: [0xCDD2], NFKD: [0x110E, 0x1170, 0x11AD] },
+{ source: [0xCDD3], NFC: [0xCDD3], NFD: [0x110E, 0x1170, 0x11AE], NFKC: [0xCDD3], NFKD: [0x110E, 0x1170, 0x11AE] },
+{ source: [0xCDD4], NFC: [0xCDD4], NFD: [0x110E, 0x1170, 0x11AF], NFKC: [0xCDD4], NFKD: [0x110E, 0x1170, 0x11AF] },
+{ source: [0xCDD5], NFC: [0xCDD5], NFD: [0x110E, 0x1170, 0x11B0], NFKC: [0xCDD5], NFKD: [0x110E, 0x1170, 0x11B0] },
+{ source: [0xCDD6], NFC: [0xCDD6], NFD: [0x110E, 0x1170, 0x11B1], NFKC: [0xCDD6], NFKD: [0x110E, 0x1170, 0x11B1] },
+{ source: [0xCDD7], NFC: [0xCDD7], NFD: [0x110E, 0x1170, 0x11B2], NFKC: [0xCDD7], NFKD: [0x110E, 0x1170, 0x11B2] },
+{ source: [0xCDD8], NFC: [0xCDD8], NFD: [0x110E, 0x1170, 0x11B3], NFKC: [0xCDD8], NFKD: [0x110E, 0x1170, 0x11B3] },
+{ source: [0xCDD9], NFC: [0xCDD9], NFD: [0x110E, 0x1170, 0x11B4], NFKC: [0xCDD9], NFKD: [0x110E, 0x1170, 0x11B4] },
+{ source: [0xCDDA], NFC: [0xCDDA], NFD: [0x110E, 0x1170, 0x11B5], NFKC: [0xCDDA], NFKD: [0x110E, 0x1170, 0x11B5] },
+{ source: [0xCDDB], NFC: [0xCDDB], NFD: [0x110E, 0x1170, 0x11B6], NFKC: [0xCDDB], NFKD: [0x110E, 0x1170, 0x11B6] },
+{ source: [0xCDDC], NFC: [0xCDDC], NFD: [0x110E, 0x1170, 0x11B7], NFKC: [0xCDDC], NFKD: [0x110E, 0x1170, 0x11B7] },
+{ source: [0xCDDD], NFC: [0xCDDD], NFD: [0x110E, 0x1170, 0x11B8], NFKC: [0xCDDD], NFKD: [0x110E, 0x1170, 0x11B8] },
+{ source: [0xCDDE], NFC: [0xCDDE], NFD: [0x110E, 0x1170, 0x11B9], NFKC: [0xCDDE], NFKD: [0x110E, 0x1170, 0x11B9] },
+{ source: [0xCDDF], NFC: [0xCDDF], NFD: [0x110E, 0x1170, 0x11BA], NFKC: [0xCDDF], NFKD: [0x110E, 0x1170, 0x11BA] },
+{ source: [0xCDE0], NFC: [0xCDE0], NFD: [0x110E, 0x1170, 0x11BB], NFKC: [0xCDE0], NFKD: [0x110E, 0x1170, 0x11BB] },
+{ source: [0xCDE1], NFC: [0xCDE1], NFD: [0x110E, 0x1170, 0x11BC], NFKC: [0xCDE1], NFKD: [0x110E, 0x1170, 0x11BC] },
+{ source: [0xCDE2], NFC: [0xCDE2], NFD: [0x110E, 0x1170, 0x11BD], NFKC: [0xCDE2], NFKD: [0x110E, 0x1170, 0x11BD] },
+{ source: [0xCDE3], NFC: [0xCDE3], NFD: [0x110E, 0x1170, 0x11BE], NFKC: [0xCDE3], NFKD: [0x110E, 0x1170, 0x11BE] },
+{ source: [0xCDE4], NFC: [0xCDE4], NFD: [0x110E, 0x1170, 0x11BF], NFKC: [0xCDE4], NFKD: [0x110E, 0x1170, 0x11BF] },
+{ source: [0xCDE5], NFC: [0xCDE5], NFD: [0x110E, 0x1170, 0x11C0], NFKC: [0xCDE5], NFKD: [0x110E, 0x1170, 0x11C0] },
+{ source: [0xCDE6], NFC: [0xCDE6], NFD: [0x110E, 0x1170, 0x11C1], NFKC: [0xCDE6], NFKD: [0x110E, 0x1170, 0x11C1] },
+{ source: [0xCDE7], NFC: [0xCDE7], NFD: [0x110E, 0x1170, 0x11C2], NFKC: [0xCDE7], NFKD: [0x110E, 0x1170, 0x11C2] },
+{ source: [0xCDE8], NFC: [0xCDE8], NFD: [0x110E, 0x1171], NFKC: [0xCDE8], NFKD: [0x110E, 0x1171] },
+{ source: [0xCDE9], NFC: [0xCDE9], NFD: [0x110E, 0x1171, 0x11A8], NFKC: [0xCDE9], NFKD: [0x110E, 0x1171, 0x11A8] },
+{ source: [0xCDEA], NFC: [0xCDEA], NFD: [0x110E, 0x1171, 0x11A9], NFKC: [0xCDEA], NFKD: [0x110E, 0x1171, 0x11A9] },
+{ source: [0xCDEB], NFC: [0xCDEB], NFD: [0x110E, 0x1171, 0x11AA], NFKC: [0xCDEB], NFKD: [0x110E, 0x1171, 0x11AA] },
+{ source: [0xCDEC], NFC: [0xCDEC], NFD: [0x110E, 0x1171, 0x11AB], NFKC: [0xCDEC], NFKD: [0x110E, 0x1171, 0x11AB] },
+{ source: [0xCDED], NFC: [0xCDED], NFD: [0x110E, 0x1171, 0x11AC], NFKC: [0xCDED], NFKD: [0x110E, 0x1171, 0x11AC] },
+{ source: [0xCDEE], NFC: [0xCDEE], NFD: [0x110E, 0x1171, 0x11AD], NFKC: [0xCDEE], NFKD: [0x110E, 0x1171, 0x11AD] },
+{ source: [0xCDEF], NFC: [0xCDEF], NFD: [0x110E, 0x1171, 0x11AE], NFKC: [0xCDEF], NFKD: [0x110E, 0x1171, 0x11AE] },
+{ source: [0xCDF0], NFC: [0xCDF0], NFD: [0x110E, 0x1171, 0x11AF], NFKC: [0xCDF0], NFKD: [0x110E, 0x1171, 0x11AF] },
+{ source: [0xCDF1], NFC: [0xCDF1], NFD: [0x110E, 0x1171, 0x11B0], NFKC: [0xCDF1], NFKD: [0x110E, 0x1171, 0x11B0] },
+{ source: [0xCDF2], NFC: [0xCDF2], NFD: [0x110E, 0x1171, 0x11B1], NFKC: [0xCDF2], NFKD: [0x110E, 0x1171, 0x11B1] },
+{ source: [0xCDF3], NFC: [0xCDF3], NFD: [0x110E, 0x1171, 0x11B2], NFKC: [0xCDF3], NFKD: [0x110E, 0x1171, 0x11B2] },
+{ source: [0xCDF4], NFC: [0xCDF4], NFD: [0x110E, 0x1171, 0x11B3], NFKC: [0xCDF4], NFKD: [0x110E, 0x1171, 0x11B3] },
+{ source: [0xCDF5], NFC: [0xCDF5], NFD: [0x110E, 0x1171, 0x11B4], NFKC: [0xCDF5], NFKD: [0x110E, 0x1171, 0x11B4] },
+{ source: [0xCDF6], NFC: [0xCDF6], NFD: [0x110E, 0x1171, 0x11B5], NFKC: [0xCDF6], NFKD: [0x110E, 0x1171, 0x11B5] },
+{ source: [0xCDF7], NFC: [0xCDF7], NFD: [0x110E, 0x1171, 0x11B6], NFKC: [0xCDF7], NFKD: [0x110E, 0x1171, 0x11B6] },
+{ source: [0xCDF8], NFC: [0xCDF8], NFD: [0x110E, 0x1171, 0x11B7], NFKC: [0xCDF8], NFKD: [0x110E, 0x1171, 0x11B7] },
+{ source: [0xCDF9], NFC: [0xCDF9], NFD: [0x110E, 0x1171, 0x11B8], NFKC: [0xCDF9], NFKD: [0x110E, 0x1171, 0x11B8] },
+{ source: [0xCDFA], NFC: [0xCDFA], NFD: [0x110E, 0x1171, 0x11B9], NFKC: [0xCDFA], NFKD: [0x110E, 0x1171, 0x11B9] },
+{ source: [0xCDFB], NFC: [0xCDFB], NFD: [0x110E, 0x1171, 0x11BA], NFKC: [0xCDFB], NFKD: [0x110E, 0x1171, 0x11BA] },
+{ source: [0xCDFC], NFC: [0xCDFC], NFD: [0x110E, 0x1171, 0x11BB], NFKC: [0xCDFC], NFKD: [0x110E, 0x1171, 0x11BB] },
+{ source: [0xCDFD], NFC: [0xCDFD], NFD: [0x110E, 0x1171, 0x11BC], NFKC: [0xCDFD], NFKD: [0x110E, 0x1171, 0x11BC] },
+{ source: [0xCDFE], NFC: [0xCDFE], NFD: [0x110E, 0x1171, 0x11BD], NFKC: [0xCDFE], NFKD: [0x110E, 0x1171, 0x11BD] },
+{ source: [0xCDFF], NFC: [0xCDFF], NFD: [0x110E, 0x1171, 0x11BE], NFKC: [0xCDFF], NFKD: [0x110E, 0x1171, 0x11BE] },
+{ source: [0xCE00], NFC: [0xCE00], NFD: [0x110E, 0x1171, 0x11BF], NFKC: [0xCE00], NFKD: [0x110E, 0x1171, 0x11BF] },
+{ source: [0xCE01], NFC: [0xCE01], NFD: [0x110E, 0x1171, 0x11C0], NFKC: [0xCE01], NFKD: [0x110E, 0x1171, 0x11C0] },
+{ source: [0xCE02], NFC: [0xCE02], NFD: [0x110E, 0x1171, 0x11C1], NFKC: [0xCE02], NFKD: [0x110E, 0x1171, 0x11C1] },
+{ source: [0xCE03], NFC: [0xCE03], NFD: [0x110E, 0x1171, 0x11C2], NFKC: [0xCE03], NFKD: [0x110E, 0x1171, 0x11C2] },
+{ source: [0xCE04], NFC: [0xCE04], NFD: [0x110E, 0x1172], NFKC: [0xCE04], NFKD: [0x110E, 0x1172] },
+{ source: [0xCE05], NFC: [0xCE05], NFD: [0x110E, 0x1172, 0x11A8], NFKC: [0xCE05], NFKD: [0x110E, 0x1172, 0x11A8] },
+{ source: [0xCE06], NFC: [0xCE06], NFD: [0x110E, 0x1172, 0x11A9], NFKC: [0xCE06], NFKD: [0x110E, 0x1172, 0x11A9] },
+{ source: [0xCE07], NFC: [0xCE07], NFD: [0x110E, 0x1172, 0x11AA], NFKC: [0xCE07], NFKD: [0x110E, 0x1172, 0x11AA] },
+{ source: [0xCE08], NFC: [0xCE08], NFD: [0x110E, 0x1172, 0x11AB], NFKC: [0xCE08], NFKD: [0x110E, 0x1172, 0x11AB] },
+{ source: [0xCE09], NFC: [0xCE09], NFD: [0x110E, 0x1172, 0x11AC], NFKC: [0xCE09], NFKD: [0x110E, 0x1172, 0x11AC] },
+{ source: [0xCE0A], NFC: [0xCE0A], NFD: [0x110E, 0x1172, 0x11AD], NFKC: [0xCE0A], NFKD: [0x110E, 0x1172, 0x11AD] },
+{ source: [0xCE0B], NFC: [0xCE0B], NFD: [0x110E, 0x1172, 0x11AE], NFKC: [0xCE0B], NFKD: [0x110E, 0x1172, 0x11AE] },
+{ source: [0xCE0C], NFC: [0xCE0C], NFD: [0x110E, 0x1172, 0x11AF], NFKC: [0xCE0C], NFKD: [0x110E, 0x1172, 0x11AF] },
+{ source: [0xCE0D], NFC: [0xCE0D], NFD: [0x110E, 0x1172, 0x11B0], NFKC: [0xCE0D], NFKD: [0x110E, 0x1172, 0x11B0] },
+{ source: [0xCE0E], NFC: [0xCE0E], NFD: [0x110E, 0x1172, 0x11B1], NFKC: [0xCE0E], NFKD: [0x110E, 0x1172, 0x11B1] },
+{ source: [0xCE0F], NFC: [0xCE0F], NFD: [0x110E, 0x1172, 0x11B2], NFKC: [0xCE0F], NFKD: [0x110E, 0x1172, 0x11B2] },
+{ source: [0xCE10], NFC: [0xCE10], NFD: [0x110E, 0x1172, 0x11B3], NFKC: [0xCE10], NFKD: [0x110E, 0x1172, 0x11B3] },
+{ source: [0xCE11], NFC: [0xCE11], NFD: [0x110E, 0x1172, 0x11B4], NFKC: [0xCE11], NFKD: [0x110E, 0x1172, 0x11B4] },
+{ source: [0xCE12], NFC: [0xCE12], NFD: [0x110E, 0x1172, 0x11B5], NFKC: [0xCE12], NFKD: [0x110E, 0x1172, 0x11B5] },
+{ source: [0xCE13], NFC: [0xCE13], NFD: [0x110E, 0x1172, 0x11B6], NFKC: [0xCE13], NFKD: [0x110E, 0x1172, 0x11B6] },
+{ source: [0xCE14], NFC: [0xCE14], NFD: [0x110E, 0x1172, 0x11B7], NFKC: [0xCE14], NFKD: [0x110E, 0x1172, 0x11B7] },
+{ source: [0xCE15], NFC: [0xCE15], NFD: [0x110E, 0x1172, 0x11B8], NFKC: [0xCE15], NFKD: [0x110E, 0x1172, 0x11B8] },
+{ source: [0xCE16], NFC: [0xCE16], NFD: [0x110E, 0x1172, 0x11B9], NFKC: [0xCE16], NFKD: [0x110E, 0x1172, 0x11B9] },
+{ source: [0xCE17], NFC: [0xCE17], NFD: [0x110E, 0x1172, 0x11BA], NFKC: [0xCE17], NFKD: [0x110E, 0x1172, 0x11BA] },
+{ source: [0xCE18], NFC: [0xCE18], NFD: [0x110E, 0x1172, 0x11BB], NFKC: [0xCE18], NFKD: [0x110E, 0x1172, 0x11BB] },
+{ source: [0xCE19], NFC: [0xCE19], NFD: [0x110E, 0x1172, 0x11BC], NFKC: [0xCE19], NFKD: [0x110E, 0x1172, 0x11BC] },
+{ source: [0xCE1A], NFC: [0xCE1A], NFD: [0x110E, 0x1172, 0x11BD], NFKC: [0xCE1A], NFKD: [0x110E, 0x1172, 0x11BD] },
+{ source: [0xCE1B], NFC: [0xCE1B], NFD: [0x110E, 0x1172, 0x11BE], NFKC: [0xCE1B], NFKD: [0x110E, 0x1172, 0x11BE] },
+{ source: [0xCE1C], NFC: [0xCE1C], NFD: [0x110E, 0x1172, 0x11BF], NFKC: [0xCE1C], NFKD: [0x110E, 0x1172, 0x11BF] },
+{ source: [0xCE1D], NFC: [0xCE1D], NFD: [0x110E, 0x1172, 0x11C0], NFKC: [0xCE1D], NFKD: [0x110E, 0x1172, 0x11C0] },
+{ source: [0xCE1E], NFC: [0xCE1E], NFD: [0x110E, 0x1172, 0x11C1], NFKC: [0xCE1E], NFKD: [0x110E, 0x1172, 0x11C1] },
+{ source: [0xCE1F], NFC: [0xCE1F], NFD: [0x110E, 0x1172, 0x11C2], NFKC: [0xCE1F], NFKD: [0x110E, 0x1172, 0x11C2] },
+{ source: [0xCE20], NFC: [0xCE20], NFD: [0x110E, 0x1173], NFKC: [0xCE20], NFKD: [0x110E, 0x1173] },
+{ source: [0xCE21], NFC: [0xCE21], NFD: [0x110E, 0x1173, 0x11A8], NFKC: [0xCE21], NFKD: [0x110E, 0x1173, 0x11A8] },
+{ source: [0xCE22], NFC: [0xCE22], NFD: [0x110E, 0x1173, 0x11A9], NFKC: [0xCE22], NFKD: [0x110E, 0x1173, 0x11A9] },
+{ source: [0xCE23], NFC: [0xCE23], NFD: [0x110E, 0x1173, 0x11AA], NFKC: [0xCE23], NFKD: [0x110E, 0x1173, 0x11AA] },
+{ source: [0xCE24], NFC: [0xCE24], NFD: [0x110E, 0x1173, 0x11AB], NFKC: [0xCE24], NFKD: [0x110E, 0x1173, 0x11AB] },
+{ source: [0xCE25], NFC: [0xCE25], NFD: [0x110E, 0x1173, 0x11AC], NFKC: [0xCE25], NFKD: [0x110E, 0x1173, 0x11AC] },
+{ source: [0xCE26], NFC: [0xCE26], NFD: [0x110E, 0x1173, 0x11AD], NFKC: [0xCE26], NFKD: [0x110E, 0x1173, 0x11AD] },
+{ source: [0xCE27], NFC: [0xCE27], NFD: [0x110E, 0x1173, 0x11AE], NFKC: [0xCE27], NFKD: [0x110E, 0x1173, 0x11AE] },
+{ source: [0xCE28], NFC: [0xCE28], NFD: [0x110E, 0x1173, 0x11AF], NFKC: [0xCE28], NFKD: [0x110E, 0x1173, 0x11AF] },
+{ source: [0xCE29], NFC: [0xCE29], NFD: [0x110E, 0x1173, 0x11B0], NFKC: [0xCE29], NFKD: [0x110E, 0x1173, 0x11B0] },
+{ source: [0xCE2A], NFC: [0xCE2A], NFD: [0x110E, 0x1173, 0x11B1], NFKC: [0xCE2A], NFKD: [0x110E, 0x1173, 0x11B1] },
+{ source: [0xCE2B], NFC: [0xCE2B], NFD: [0x110E, 0x1173, 0x11B2], NFKC: [0xCE2B], NFKD: [0x110E, 0x1173, 0x11B2] },
+{ source: [0xCE2C], NFC: [0xCE2C], NFD: [0x110E, 0x1173, 0x11B3], NFKC: [0xCE2C], NFKD: [0x110E, 0x1173, 0x11B3] },
+{ source: [0xCE2D], NFC: [0xCE2D], NFD: [0x110E, 0x1173, 0x11B4], NFKC: [0xCE2D], NFKD: [0x110E, 0x1173, 0x11B4] },
+{ source: [0xCE2E], NFC: [0xCE2E], NFD: [0x110E, 0x1173, 0x11B5], NFKC: [0xCE2E], NFKD: [0x110E, 0x1173, 0x11B5] },
+{ source: [0xCE2F], NFC: [0xCE2F], NFD: [0x110E, 0x1173, 0x11B6], NFKC: [0xCE2F], NFKD: [0x110E, 0x1173, 0x11B6] },
+{ source: [0xCE30], NFC: [0xCE30], NFD: [0x110E, 0x1173, 0x11B7], NFKC: [0xCE30], NFKD: [0x110E, 0x1173, 0x11B7] },
+{ source: [0xCE31], NFC: [0xCE31], NFD: [0x110E, 0x1173, 0x11B8], NFKC: [0xCE31], NFKD: [0x110E, 0x1173, 0x11B8] },
+{ source: [0xCE32], NFC: [0xCE32], NFD: [0x110E, 0x1173, 0x11B9], NFKC: [0xCE32], NFKD: [0x110E, 0x1173, 0x11B9] },
+{ source: [0xCE33], NFC: [0xCE33], NFD: [0x110E, 0x1173, 0x11BA], NFKC: [0xCE33], NFKD: [0x110E, 0x1173, 0x11BA] },
+{ source: [0xCE34], NFC: [0xCE34], NFD: [0x110E, 0x1173, 0x11BB], NFKC: [0xCE34], NFKD: [0x110E, 0x1173, 0x11BB] },
+{ source: [0xCE35], NFC: [0xCE35], NFD: [0x110E, 0x1173, 0x11BC], NFKC: [0xCE35], NFKD: [0x110E, 0x1173, 0x11BC] },
+{ source: [0xCE36], NFC: [0xCE36], NFD: [0x110E, 0x1173, 0x11BD], NFKC: [0xCE36], NFKD: [0x110E, 0x1173, 0x11BD] },
+{ source: [0xCE37], NFC: [0xCE37], NFD: [0x110E, 0x1173, 0x11BE], NFKC: [0xCE37], NFKD: [0x110E, 0x1173, 0x11BE] },
+{ source: [0xCE38], NFC: [0xCE38], NFD: [0x110E, 0x1173, 0x11BF], NFKC: [0xCE38], NFKD: [0x110E, 0x1173, 0x11BF] },
+{ source: [0xCE39], NFC: [0xCE39], NFD: [0x110E, 0x1173, 0x11C0], NFKC: [0xCE39], NFKD: [0x110E, 0x1173, 0x11C0] },
+{ source: [0xCE3A], NFC: [0xCE3A], NFD: [0x110E, 0x1173, 0x11C1], NFKC: [0xCE3A], NFKD: [0x110E, 0x1173, 0x11C1] },
+{ source: [0xCE3B], NFC: [0xCE3B], NFD: [0x110E, 0x1173, 0x11C2], NFKC: [0xCE3B], NFKD: [0x110E, 0x1173, 0x11C2] },
+{ source: [0xCE3C], NFC: [0xCE3C], NFD: [0x110E, 0x1174], NFKC: [0xCE3C], NFKD: [0x110E, 0x1174] },
+{ source: [0xCE3D], NFC: [0xCE3D], NFD: [0x110E, 0x1174, 0x11A8], NFKC: [0xCE3D], NFKD: [0x110E, 0x1174, 0x11A8] },
+{ source: [0xCE3E], NFC: [0xCE3E], NFD: [0x110E, 0x1174, 0x11A9], NFKC: [0xCE3E], NFKD: [0x110E, 0x1174, 0x11A9] },
+{ source: [0xCE3F], NFC: [0xCE3F], NFD: [0x110E, 0x1174, 0x11AA], NFKC: [0xCE3F], NFKD: [0x110E, 0x1174, 0x11AA] },
+{ source: [0xCE40], NFC: [0xCE40], NFD: [0x110E, 0x1174, 0x11AB], NFKC: [0xCE40], NFKD: [0x110E, 0x1174, 0x11AB] },
+{ source: [0xCE41], NFC: [0xCE41], NFD: [0x110E, 0x1174, 0x11AC], NFKC: [0xCE41], NFKD: [0x110E, 0x1174, 0x11AC] },
+{ source: [0xCE42], NFC: [0xCE42], NFD: [0x110E, 0x1174, 0x11AD], NFKC: [0xCE42], NFKD: [0x110E, 0x1174, 0x11AD] },
+{ source: [0xCE43], NFC: [0xCE43], NFD: [0x110E, 0x1174, 0x11AE], NFKC: [0xCE43], NFKD: [0x110E, 0x1174, 0x11AE] },
+{ source: [0xCE44], NFC: [0xCE44], NFD: [0x110E, 0x1174, 0x11AF], NFKC: [0xCE44], NFKD: [0x110E, 0x1174, 0x11AF] },
+{ source: [0xCE45], NFC: [0xCE45], NFD: [0x110E, 0x1174, 0x11B0], NFKC: [0xCE45], NFKD: [0x110E, 0x1174, 0x11B0] },
+{ source: [0xCE46], NFC: [0xCE46], NFD: [0x110E, 0x1174, 0x11B1], NFKC: [0xCE46], NFKD: [0x110E, 0x1174, 0x11B1] },
+{ source: [0xCE47], NFC: [0xCE47], NFD: [0x110E, 0x1174, 0x11B2], NFKC: [0xCE47], NFKD: [0x110E, 0x1174, 0x11B2] },
+{ source: [0xCE48], NFC: [0xCE48], NFD: [0x110E, 0x1174, 0x11B3], NFKC: [0xCE48], NFKD: [0x110E, 0x1174, 0x11B3] },
+{ source: [0xCE49], NFC: [0xCE49], NFD: [0x110E, 0x1174, 0x11B4], NFKC: [0xCE49], NFKD: [0x110E, 0x1174, 0x11B4] },
+{ source: [0xCE4A], NFC: [0xCE4A], NFD: [0x110E, 0x1174, 0x11B5], NFKC: [0xCE4A], NFKD: [0x110E, 0x1174, 0x11B5] },
+{ source: [0xCE4B], NFC: [0xCE4B], NFD: [0x110E, 0x1174, 0x11B6], NFKC: [0xCE4B], NFKD: [0x110E, 0x1174, 0x11B6] },
+{ source: [0xCE4C], NFC: [0xCE4C], NFD: [0x110E, 0x1174, 0x11B7], NFKC: [0xCE4C], NFKD: [0x110E, 0x1174, 0x11B7] },
+{ source: [0xCE4D], NFC: [0xCE4D], NFD: [0x110E, 0x1174, 0x11B8], NFKC: [0xCE4D], NFKD: [0x110E, 0x1174, 0x11B8] },
+{ source: [0xCE4E], NFC: [0xCE4E], NFD: [0x110E, 0x1174, 0x11B9], NFKC: [0xCE4E], NFKD: [0x110E, 0x1174, 0x11B9] },
+{ source: [0xCE4F], NFC: [0xCE4F], NFD: [0x110E, 0x1174, 0x11BA], NFKC: [0xCE4F], NFKD: [0x110E, 0x1174, 0x11BA] },
+{ source: [0xCE50], NFC: [0xCE50], NFD: [0x110E, 0x1174, 0x11BB], NFKC: [0xCE50], NFKD: [0x110E, 0x1174, 0x11BB] },
+{ source: [0xCE51], NFC: [0xCE51], NFD: [0x110E, 0x1174, 0x11BC], NFKC: [0xCE51], NFKD: [0x110E, 0x1174, 0x11BC] },
+{ source: [0xCE52], NFC: [0xCE52], NFD: [0x110E, 0x1174, 0x11BD], NFKC: [0xCE52], NFKD: [0x110E, 0x1174, 0x11BD] },
+{ source: [0xCE53], NFC: [0xCE53], NFD: [0x110E, 0x1174, 0x11BE], NFKC: [0xCE53], NFKD: [0x110E, 0x1174, 0x11BE] },
+{ source: [0xCE54], NFC: [0xCE54], NFD: [0x110E, 0x1174, 0x11BF], NFKC: [0xCE54], NFKD: [0x110E, 0x1174, 0x11BF] },
+{ source: [0xCE55], NFC: [0xCE55], NFD: [0x110E, 0x1174, 0x11C0], NFKC: [0xCE55], NFKD: [0x110E, 0x1174, 0x11C0] },
+{ source: [0xCE56], NFC: [0xCE56], NFD: [0x110E, 0x1174, 0x11C1], NFKC: [0xCE56], NFKD: [0x110E, 0x1174, 0x11C1] },
+{ source: [0xCE57], NFC: [0xCE57], NFD: [0x110E, 0x1174, 0x11C2], NFKC: [0xCE57], NFKD: [0x110E, 0x1174, 0x11C2] },
+{ source: [0xCE58], NFC: [0xCE58], NFD: [0x110E, 0x1175], NFKC: [0xCE58], NFKD: [0x110E, 0x1175] },
+{ source: [0xCE59], NFC: [0xCE59], NFD: [0x110E, 0x1175, 0x11A8], NFKC: [0xCE59], NFKD: [0x110E, 0x1175, 0x11A8] },
+{ source: [0xCE5A], NFC: [0xCE5A], NFD: [0x110E, 0x1175, 0x11A9], NFKC: [0xCE5A], NFKD: [0x110E, 0x1175, 0x11A9] },
+{ source: [0xCE5B], NFC: [0xCE5B], NFD: [0x110E, 0x1175, 0x11AA], NFKC: [0xCE5B], NFKD: [0x110E, 0x1175, 0x11AA] },
+{ source: [0xCE5C], NFC: [0xCE5C], NFD: [0x110E, 0x1175, 0x11AB], NFKC: [0xCE5C], NFKD: [0x110E, 0x1175, 0x11AB] },
+{ source: [0xCE5D], NFC: [0xCE5D], NFD: [0x110E, 0x1175, 0x11AC], NFKC: [0xCE5D], NFKD: [0x110E, 0x1175, 0x11AC] },
+{ source: [0xCE5E], NFC: [0xCE5E], NFD: [0x110E, 0x1175, 0x11AD], NFKC: [0xCE5E], NFKD: [0x110E, 0x1175, 0x11AD] },
+{ source: [0xCE5F], NFC: [0xCE5F], NFD: [0x110E, 0x1175, 0x11AE], NFKC: [0xCE5F], NFKD: [0x110E, 0x1175, 0x11AE] },
+{ source: [0xCE60], NFC: [0xCE60], NFD: [0x110E, 0x1175, 0x11AF], NFKC: [0xCE60], NFKD: [0x110E, 0x1175, 0x11AF] },
+{ source: [0xCE61], NFC: [0xCE61], NFD: [0x110E, 0x1175, 0x11B0], NFKC: [0xCE61], NFKD: [0x110E, 0x1175, 0x11B0] },
+{ source: [0xCE62], NFC: [0xCE62], NFD: [0x110E, 0x1175, 0x11B1], NFKC: [0xCE62], NFKD: [0x110E, 0x1175, 0x11B1] },
+{ source: [0xCE63], NFC: [0xCE63], NFD: [0x110E, 0x1175, 0x11B2], NFKC: [0xCE63], NFKD: [0x110E, 0x1175, 0x11B2] },
+{ source: [0xCE64], NFC: [0xCE64], NFD: [0x110E, 0x1175, 0x11B3], NFKC: [0xCE64], NFKD: [0x110E, 0x1175, 0x11B3] },
+{ source: [0xCE65], NFC: [0xCE65], NFD: [0x110E, 0x1175, 0x11B4], NFKC: [0xCE65], NFKD: [0x110E, 0x1175, 0x11B4] },
+{ source: [0xCE66], NFC: [0xCE66], NFD: [0x110E, 0x1175, 0x11B5], NFKC: [0xCE66], NFKD: [0x110E, 0x1175, 0x11B5] },
+{ source: [0xCE67], NFC: [0xCE67], NFD: [0x110E, 0x1175, 0x11B6], NFKC: [0xCE67], NFKD: [0x110E, 0x1175, 0x11B6] },
+{ source: [0xCE68], NFC: [0xCE68], NFD: [0x110E, 0x1175, 0x11B7], NFKC: [0xCE68], NFKD: [0x110E, 0x1175, 0x11B7] },
+{ source: [0xCE69], NFC: [0xCE69], NFD: [0x110E, 0x1175, 0x11B8], NFKC: [0xCE69], NFKD: [0x110E, 0x1175, 0x11B8] },
+{ source: [0xCE6A], NFC: [0xCE6A], NFD: [0x110E, 0x1175, 0x11B9], NFKC: [0xCE6A], NFKD: [0x110E, 0x1175, 0x11B9] },
+{ source: [0xCE6B], NFC: [0xCE6B], NFD: [0x110E, 0x1175, 0x11BA], NFKC: [0xCE6B], NFKD: [0x110E, 0x1175, 0x11BA] },
+{ source: [0xCE6C], NFC: [0xCE6C], NFD: [0x110E, 0x1175, 0x11BB], NFKC: [0xCE6C], NFKD: [0x110E, 0x1175, 0x11BB] },
+{ source: [0xCE6D], NFC: [0xCE6D], NFD: [0x110E, 0x1175, 0x11BC], NFKC: [0xCE6D], NFKD: [0x110E, 0x1175, 0x11BC] },
+{ source: [0xCE6E], NFC: [0xCE6E], NFD: [0x110E, 0x1175, 0x11BD], NFKC: [0xCE6E], NFKD: [0x110E, 0x1175, 0x11BD] },
+{ source: [0xCE6F], NFC: [0xCE6F], NFD: [0x110E, 0x1175, 0x11BE], NFKC: [0xCE6F], NFKD: [0x110E, 0x1175, 0x11BE] },
+{ source: [0xCE70], NFC: [0xCE70], NFD: [0x110E, 0x1175, 0x11BF], NFKC: [0xCE70], NFKD: [0x110E, 0x1175, 0x11BF] },
+{ source: [0xCE71], NFC: [0xCE71], NFD: [0x110E, 0x1175, 0x11C0], NFKC: [0xCE71], NFKD: [0x110E, 0x1175, 0x11C0] },
+{ source: [0xCE72], NFC: [0xCE72], NFD: [0x110E, 0x1175, 0x11C1], NFKC: [0xCE72], NFKD: [0x110E, 0x1175, 0x11C1] },
+{ source: [0xCE73], NFC: [0xCE73], NFD: [0x110E, 0x1175, 0x11C2], NFKC: [0xCE73], NFKD: [0x110E, 0x1175, 0x11C2] },
+{ source: [0xCE74], NFC: [0xCE74], NFD: [0x110F, 0x1161], NFKC: [0xCE74], NFKD: [0x110F, 0x1161] },
+{ source: [0xCE75], NFC: [0xCE75], NFD: [0x110F, 0x1161, 0x11A8], NFKC: [0xCE75], NFKD: [0x110F, 0x1161, 0x11A8] },
+{ source: [0xCE76], NFC: [0xCE76], NFD: [0x110F, 0x1161, 0x11A9], NFKC: [0xCE76], NFKD: [0x110F, 0x1161, 0x11A9] },
+{ source: [0xCE77], NFC: [0xCE77], NFD: [0x110F, 0x1161, 0x11AA], NFKC: [0xCE77], NFKD: [0x110F, 0x1161, 0x11AA] },
+{ source: [0xCE78], NFC: [0xCE78], NFD: [0x110F, 0x1161, 0x11AB], NFKC: [0xCE78], NFKD: [0x110F, 0x1161, 0x11AB] },
+{ source: [0xCE79], NFC: [0xCE79], NFD: [0x110F, 0x1161, 0x11AC], NFKC: [0xCE79], NFKD: [0x110F, 0x1161, 0x11AC] },
+{ source: [0xCE7A], NFC: [0xCE7A], NFD: [0x110F, 0x1161, 0x11AD], NFKC: [0xCE7A], NFKD: [0x110F, 0x1161, 0x11AD] },
+{ source: [0xCE7B], NFC: [0xCE7B], NFD: [0x110F, 0x1161, 0x11AE], NFKC: [0xCE7B], NFKD: [0x110F, 0x1161, 0x11AE] },
+{ source: [0xCE7C], NFC: [0xCE7C], NFD: [0x110F, 0x1161, 0x11AF], NFKC: [0xCE7C], NFKD: [0x110F, 0x1161, 0x11AF] },
+{ source: [0xCE7D], NFC: [0xCE7D], NFD: [0x110F, 0x1161, 0x11B0], NFKC: [0xCE7D], NFKD: [0x110F, 0x1161, 0x11B0] },
+{ source: [0xCE7E], NFC: [0xCE7E], NFD: [0x110F, 0x1161, 0x11B1], NFKC: [0xCE7E], NFKD: [0x110F, 0x1161, 0x11B1] },
+{ source: [0xCE7F], NFC: [0xCE7F], NFD: [0x110F, 0x1161, 0x11B2], NFKC: [0xCE7F], NFKD: [0x110F, 0x1161, 0x11B2] },
+{ source: [0xCE80], NFC: [0xCE80], NFD: [0x110F, 0x1161, 0x11B3], NFKC: [0xCE80], NFKD: [0x110F, 0x1161, 0x11B3] },
+{ source: [0xCE81], NFC: [0xCE81], NFD: [0x110F, 0x1161, 0x11B4], NFKC: [0xCE81], NFKD: [0x110F, 0x1161, 0x11B4] },
+{ source: [0xCE82], NFC: [0xCE82], NFD: [0x110F, 0x1161, 0x11B5], NFKC: [0xCE82], NFKD: [0x110F, 0x1161, 0x11B5] },
+{ source: [0xCE83], NFC: [0xCE83], NFD: [0x110F, 0x1161, 0x11B6], NFKC: [0xCE83], NFKD: [0x110F, 0x1161, 0x11B6] },
+{ source: [0xCE84], NFC: [0xCE84], NFD: [0x110F, 0x1161, 0x11B7], NFKC: [0xCE84], NFKD: [0x110F, 0x1161, 0x11B7] },
+{ source: [0xCE85], NFC: [0xCE85], NFD: [0x110F, 0x1161, 0x11B8], NFKC: [0xCE85], NFKD: [0x110F, 0x1161, 0x11B8] },
+{ source: [0xCE86], NFC: [0xCE86], NFD: [0x110F, 0x1161, 0x11B9], NFKC: [0xCE86], NFKD: [0x110F, 0x1161, 0x11B9] },
+{ source: [0xCE87], NFC: [0xCE87], NFD: [0x110F, 0x1161, 0x11BA], NFKC: [0xCE87], NFKD: [0x110F, 0x1161, 0x11BA] },
+{ source: [0xCE88], NFC: [0xCE88], NFD: [0x110F, 0x1161, 0x11BB], NFKC: [0xCE88], NFKD: [0x110F, 0x1161, 0x11BB] },
+{ source: [0xCE89], NFC: [0xCE89], NFD: [0x110F, 0x1161, 0x11BC], NFKC: [0xCE89], NFKD: [0x110F, 0x1161, 0x11BC] },
+{ source: [0xCE8A], NFC: [0xCE8A], NFD: [0x110F, 0x1161, 0x11BD], NFKC: [0xCE8A], NFKD: [0x110F, 0x1161, 0x11BD] },
+{ source: [0xCE8B], NFC: [0xCE8B], NFD: [0x110F, 0x1161, 0x11BE], NFKC: [0xCE8B], NFKD: [0x110F, 0x1161, 0x11BE] },
+{ source: [0xCE8C], NFC: [0xCE8C], NFD: [0x110F, 0x1161, 0x11BF], NFKC: [0xCE8C], NFKD: [0x110F, 0x1161, 0x11BF] },
+{ source: [0xCE8D], NFC: [0xCE8D], NFD: [0x110F, 0x1161, 0x11C0], NFKC: [0xCE8D], NFKD: [0x110F, 0x1161, 0x11C0] },
+{ source: [0xCE8E], NFC: [0xCE8E], NFD: [0x110F, 0x1161, 0x11C1], NFKC: [0xCE8E], NFKD: [0x110F, 0x1161, 0x11C1] },
+{ source: [0xCE8F], NFC: [0xCE8F], NFD: [0x110F, 0x1161, 0x11C2], NFKC: [0xCE8F], NFKD: [0x110F, 0x1161, 0x11C2] },
+{ source: [0xCE90], NFC: [0xCE90], NFD: [0x110F, 0x1162], NFKC: [0xCE90], NFKD: [0x110F, 0x1162] },
+{ source: [0xCE91], NFC: [0xCE91], NFD: [0x110F, 0x1162, 0x11A8], NFKC: [0xCE91], NFKD: [0x110F, 0x1162, 0x11A8] },
+{ source: [0xCE92], NFC: [0xCE92], NFD: [0x110F, 0x1162, 0x11A9], NFKC: [0xCE92], NFKD: [0x110F, 0x1162, 0x11A9] },
+{ source: [0xCE93], NFC: [0xCE93], NFD: [0x110F, 0x1162, 0x11AA], NFKC: [0xCE93], NFKD: [0x110F, 0x1162, 0x11AA] },
+{ source: [0xCE94], NFC: [0xCE94], NFD: [0x110F, 0x1162, 0x11AB], NFKC: [0xCE94], NFKD: [0x110F, 0x1162, 0x11AB] },
+{ source: [0xCE95], NFC: [0xCE95], NFD: [0x110F, 0x1162, 0x11AC], NFKC: [0xCE95], NFKD: [0x110F, 0x1162, 0x11AC] },
+{ source: [0xCE96], NFC: [0xCE96], NFD: [0x110F, 0x1162, 0x11AD], NFKC: [0xCE96], NFKD: [0x110F, 0x1162, 0x11AD] },
+{ source: [0xCE97], NFC: [0xCE97], NFD: [0x110F, 0x1162, 0x11AE], NFKC: [0xCE97], NFKD: [0x110F, 0x1162, 0x11AE] },
+{ source: [0xCE98], NFC: [0xCE98], NFD: [0x110F, 0x1162, 0x11AF], NFKC: [0xCE98], NFKD: [0x110F, 0x1162, 0x11AF] },
+{ source: [0xCE99], NFC: [0xCE99], NFD: [0x110F, 0x1162, 0x11B0], NFKC: [0xCE99], NFKD: [0x110F, 0x1162, 0x11B0] },
+{ source: [0xCE9A], NFC: [0xCE9A], NFD: [0x110F, 0x1162, 0x11B1], NFKC: [0xCE9A], NFKD: [0x110F, 0x1162, 0x11B1] },
+{ source: [0xCE9B], NFC: [0xCE9B], NFD: [0x110F, 0x1162, 0x11B2], NFKC: [0xCE9B], NFKD: [0x110F, 0x1162, 0x11B2] },
+{ source: [0xCE9C], NFC: [0xCE9C], NFD: [0x110F, 0x1162, 0x11B3], NFKC: [0xCE9C], NFKD: [0x110F, 0x1162, 0x11B3] },
+{ source: [0xCE9D], NFC: [0xCE9D], NFD: [0x110F, 0x1162, 0x11B4], NFKC: [0xCE9D], NFKD: [0x110F, 0x1162, 0x11B4] },
+{ source: [0xCE9E], NFC: [0xCE9E], NFD: [0x110F, 0x1162, 0x11B5], NFKC: [0xCE9E], NFKD: [0x110F, 0x1162, 0x11B5] },
+{ source: [0xCE9F], NFC: [0xCE9F], NFD: [0x110F, 0x1162, 0x11B6], NFKC: [0xCE9F], NFKD: [0x110F, 0x1162, 0x11B6] },
+{ source: [0xCEA0], NFC: [0xCEA0], NFD: [0x110F, 0x1162, 0x11B7], NFKC: [0xCEA0], NFKD: [0x110F, 0x1162, 0x11B7] },
+{ source: [0xCEA1], NFC: [0xCEA1], NFD: [0x110F, 0x1162, 0x11B8], NFKC: [0xCEA1], NFKD: [0x110F, 0x1162, 0x11B8] },
+{ source: [0xCEA2], NFC: [0xCEA2], NFD: [0x110F, 0x1162, 0x11B9], NFKC: [0xCEA2], NFKD: [0x110F, 0x1162, 0x11B9] },
+{ source: [0xCEA3], NFC: [0xCEA3], NFD: [0x110F, 0x1162, 0x11BA], NFKC: [0xCEA3], NFKD: [0x110F, 0x1162, 0x11BA] },
+{ source: [0xCEA4], NFC: [0xCEA4], NFD: [0x110F, 0x1162, 0x11BB], NFKC: [0xCEA4], NFKD: [0x110F, 0x1162, 0x11BB] },
+{ source: [0xCEA5], NFC: [0xCEA5], NFD: [0x110F, 0x1162, 0x11BC], NFKC: [0xCEA5], NFKD: [0x110F, 0x1162, 0x11BC] },
+{ source: [0xCEA6], NFC: [0xCEA6], NFD: [0x110F, 0x1162, 0x11BD], NFKC: [0xCEA6], NFKD: [0x110F, 0x1162, 0x11BD] },
+{ source: [0xCEA7], NFC: [0xCEA7], NFD: [0x110F, 0x1162, 0x11BE], NFKC: [0xCEA7], NFKD: [0x110F, 0x1162, 0x11BE] },
+{ source: [0xCEA8], NFC: [0xCEA8], NFD: [0x110F, 0x1162, 0x11BF], NFKC: [0xCEA8], NFKD: [0x110F, 0x1162, 0x11BF] },
+{ source: [0xCEA9], NFC: [0xCEA9], NFD: [0x110F, 0x1162, 0x11C0], NFKC: [0xCEA9], NFKD: [0x110F, 0x1162, 0x11C0] },
+{ source: [0xCEAA], NFC: [0xCEAA], NFD: [0x110F, 0x1162, 0x11C1], NFKC: [0xCEAA], NFKD: [0x110F, 0x1162, 0x11C1] },
+{ source: [0xCEAB], NFC: [0xCEAB], NFD: [0x110F, 0x1162, 0x11C2], NFKC: [0xCEAB], NFKD: [0x110F, 0x1162, 0x11C2] },
+{ source: [0xCEAC], NFC: [0xCEAC], NFD: [0x110F, 0x1163], NFKC: [0xCEAC], NFKD: [0x110F, 0x1163] },
+{ source: [0xCEAD], NFC: [0xCEAD], NFD: [0x110F, 0x1163, 0x11A8], NFKC: [0xCEAD], NFKD: [0x110F, 0x1163, 0x11A8] },
+{ source: [0xCEAE], NFC: [0xCEAE], NFD: [0x110F, 0x1163, 0x11A9], NFKC: [0xCEAE], NFKD: [0x110F, 0x1163, 0x11A9] },
+{ source: [0xCEAF], NFC: [0xCEAF], NFD: [0x110F, 0x1163, 0x11AA], NFKC: [0xCEAF], NFKD: [0x110F, 0x1163, 0x11AA] },
+{ source: [0xCEB0], NFC: [0xCEB0], NFD: [0x110F, 0x1163, 0x11AB], NFKC: [0xCEB0], NFKD: [0x110F, 0x1163, 0x11AB] },
+{ source: [0xCEB1], NFC: [0xCEB1], NFD: [0x110F, 0x1163, 0x11AC], NFKC: [0xCEB1], NFKD: [0x110F, 0x1163, 0x11AC] },
+{ source: [0xCEB2], NFC: [0xCEB2], NFD: [0x110F, 0x1163, 0x11AD], NFKC: [0xCEB2], NFKD: [0x110F, 0x1163, 0x11AD] },
+{ source: [0xCEB3], NFC: [0xCEB3], NFD: [0x110F, 0x1163, 0x11AE], NFKC: [0xCEB3], NFKD: [0x110F, 0x1163, 0x11AE] },
+{ source: [0xCEB4], NFC: [0xCEB4], NFD: [0x110F, 0x1163, 0x11AF], NFKC: [0xCEB4], NFKD: [0x110F, 0x1163, 0x11AF] },
+{ source: [0xCEB5], NFC: [0xCEB5], NFD: [0x110F, 0x1163, 0x11B0], NFKC: [0xCEB5], NFKD: [0x110F, 0x1163, 0x11B0] },
+{ source: [0xCEB6], NFC: [0xCEB6], NFD: [0x110F, 0x1163, 0x11B1], NFKC: [0xCEB6], NFKD: [0x110F, 0x1163, 0x11B1] },
+{ source: [0xCEB7], NFC: [0xCEB7], NFD: [0x110F, 0x1163, 0x11B2], NFKC: [0xCEB7], NFKD: [0x110F, 0x1163, 0x11B2] },
+{ source: [0xCEB8], NFC: [0xCEB8], NFD: [0x110F, 0x1163, 0x11B3], NFKC: [0xCEB8], NFKD: [0x110F, 0x1163, 0x11B3] },
+{ source: [0xCEB9], NFC: [0xCEB9], NFD: [0x110F, 0x1163, 0x11B4], NFKC: [0xCEB9], NFKD: [0x110F, 0x1163, 0x11B4] },
+{ source: [0xCEBA], NFC: [0xCEBA], NFD: [0x110F, 0x1163, 0x11B5], NFKC: [0xCEBA], NFKD: [0x110F, 0x1163, 0x11B5] },
+{ source: [0xCEBB], NFC: [0xCEBB], NFD: [0x110F, 0x1163, 0x11B6], NFKC: [0xCEBB], NFKD: [0x110F, 0x1163, 0x11B6] },
+{ source: [0xCEBC], NFC: [0xCEBC], NFD: [0x110F, 0x1163, 0x11B7], NFKC: [0xCEBC], NFKD: [0x110F, 0x1163, 0x11B7] },
+{ source: [0xCEBD], NFC: [0xCEBD], NFD: [0x110F, 0x1163, 0x11B8], NFKC: [0xCEBD], NFKD: [0x110F, 0x1163, 0x11B8] },
+{ source: [0xCEBE], NFC: [0xCEBE], NFD: [0x110F, 0x1163, 0x11B9], NFKC: [0xCEBE], NFKD: [0x110F, 0x1163, 0x11B9] },
+{ source: [0xCEBF], NFC: [0xCEBF], NFD: [0x110F, 0x1163, 0x11BA], NFKC: [0xCEBF], NFKD: [0x110F, 0x1163, 0x11BA] },
+{ source: [0xCEC0], NFC: [0xCEC0], NFD: [0x110F, 0x1163, 0x11BB], NFKC: [0xCEC0], NFKD: [0x110F, 0x1163, 0x11BB] },
+{ source: [0xCEC1], NFC: [0xCEC1], NFD: [0x110F, 0x1163, 0x11BC], NFKC: [0xCEC1], NFKD: [0x110F, 0x1163, 0x11BC] },
+{ source: [0xCEC2], NFC: [0xCEC2], NFD: [0x110F, 0x1163, 0x11BD], NFKC: [0xCEC2], NFKD: [0x110F, 0x1163, 0x11BD] },
+{ source: [0xCEC3], NFC: [0xCEC3], NFD: [0x110F, 0x1163, 0x11BE], NFKC: [0xCEC3], NFKD: [0x110F, 0x1163, 0x11BE] },
+{ source: [0xCEC4], NFC: [0xCEC4], NFD: [0x110F, 0x1163, 0x11BF], NFKC: [0xCEC4], NFKD: [0x110F, 0x1163, 0x11BF] },
+{ source: [0xCEC5], NFC: [0xCEC5], NFD: [0x110F, 0x1163, 0x11C0], NFKC: [0xCEC5], NFKD: [0x110F, 0x1163, 0x11C0] },
+{ source: [0xCEC6], NFC: [0xCEC6], NFD: [0x110F, 0x1163, 0x11C1], NFKC: [0xCEC6], NFKD: [0x110F, 0x1163, 0x11C1] },
+{ source: [0xCEC7], NFC: [0xCEC7], NFD: [0x110F, 0x1163, 0x11C2], NFKC: [0xCEC7], NFKD: [0x110F, 0x1163, 0x11C2] },
+{ source: [0xCEC8], NFC: [0xCEC8], NFD: [0x110F, 0x1164], NFKC: [0xCEC8], NFKD: [0x110F, 0x1164] },
+{ source: [0xCEC9], NFC: [0xCEC9], NFD: [0x110F, 0x1164, 0x11A8], NFKC: [0xCEC9], NFKD: [0x110F, 0x1164, 0x11A8] },
+{ source: [0xCECA], NFC: [0xCECA], NFD: [0x110F, 0x1164, 0x11A9], NFKC: [0xCECA], NFKD: [0x110F, 0x1164, 0x11A9] },
+{ source: [0xCECB], NFC: [0xCECB], NFD: [0x110F, 0x1164, 0x11AA], NFKC: [0xCECB], NFKD: [0x110F, 0x1164, 0x11AA] },
+{ source: [0xCECC], NFC: [0xCECC], NFD: [0x110F, 0x1164, 0x11AB], NFKC: [0xCECC], NFKD: [0x110F, 0x1164, 0x11AB] },
+{ source: [0xCECD], NFC: [0xCECD], NFD: [0x110F, 0x1164, 0x11AC], NFKC: [0xCECD], NFKD: [0x110F, 0x1164, 0x11AC] },
+{ source: [0xCECE], NFC: [0xCECE], NFD: [0x110F, 0x1164, 0x11AD], NFKC: [0xCECE], NFKD: [0x110F, 0x1164, 0x11AD] },
+{ source: [0xCECF], NFC: [0xCECF], NFD: [0x110F, 0x1164, 0x11AE], NFKC: [0xCECF], NFKD: [0x110F, 0x1164, 0x11AE] },
+{ source: [0xCED0], NFC: [0xCED0], NFD: [0x110F, 0x1164, 0x11AF], NFKC: [0xCED0], NFKD: [0x110F, 0x1164, 0x11AF] },
+{ source: [0xCED1], NFC: [0xCED1], NFD: [0x110F, 0x1164, 0x11B0], NFKC: [0xCED1], NFKD: [0x110F, 0x1164, 0x11B0] },
+{ source: [0xCED2], NFC: [0xCED2], NFD: [0x110F, 0x1164, 0x11B1], NFKC: [0xCED2], NFKD: [0x110F, 0x1164, 0x11B1] },
+{ source: [0xCED3], NFC: [0xCED3], NFD: [0x110F, 0x1164, 0x11B2], NFKC: [0xCED3], NFKD: [0x110F, 0x1164, 0x11B2] },
+{ source: [0xCED4], NFC: [0xCED4], NFD: [0x110F, 0x1164, 0x11B3], NFKC: [0xCED4], NFKD: [0x110F, 0x1164, 0x11B3] },
+{ source: [0xCED5], NFC: [0xCED5], NFD: [0x110F, 0x1164, 0x11B4], NFKC: [0xCED5], NFKD: [0x110F, 0x1164, 0x11B4] },
+{ source: [0xCED6], NFC: [0xCED6], NFD: [0x110F, 0x1164, 0x11B5], NFKC: [0xCED6], NFKD: [0x110F, 0x1164, 0x11B5] },
+{ source: [0xCED7], NFC: [0xCED7], NFD: [0x110F, 0x1164, 0x11B6], NFKC: [0xCED7], NFKD: [0x110F, 0x1164, 0x11B6] },
+{ source: [0xCED8], NFC: [0xCED8], NFD: [0x110F, 0x1164, 0x11B7], NFKC: [0xCED8], NFKD: [0x110F, 0x1164, 0x11B7] },
+{ source: [0xCED9], NFC: [0xCED9], NFD: [0x110F, 0x1164, 0x11B8], NFKC: [0xCED9], NFKD: [0x110F, 0x1164, 0x11B8] },
+{ source: [0xCEDA], NFC: [0xCEDA], NFD: [0x110F, 0x1164, 0x11B9], NFKC: [0xCEDA], NFKD: [0x110F, 0x1164, 0x11B9] },
+{ source: [0xCEDB], NFC: [0xCEDB], NFD: [0x110F, 0x1164, 0x11BA], NFKC: [0xCEDB], NFKD: [0x110F, 0x1164, 0x11BA] },
+{ source: [0xCEDC], NFC: [0xCEDC], NFD: [0x110F, 0x1164, 0x11BB], NFKC: [0xCEDC], NFKD: [0x110F, 0x1164, 0x11BB] },
+{ source: [0xCEDD], NFC: [0xCEDD], NFD: [0x110F, 0x1164, 0x11BC], NFKC: [0xCEDD], NFKD: [0x110F, 0x1164, 0x11BC] },
+{ source: [0xCEDE], NFC: [0xCEDE], NFD: [0x110F, 0x1164, 0x11BD], NFKC: [0xCEDE], NFKD: [0x110F, 0x1164, 0x11BD] },
+{ source: [0xCEDF], NFC: [0xCEDF], NFD: [0x110F, 0x1164, 0x11BE], NFKC: [0xCEDF], NFKD: [0x110F, 0x1164, 0x11BE] },
+{ source: [0xCEE0], NFC: [0xCEE0], NFD: [0x110F, 0x1164, 0x11BF], NFKC: [0xCEE0], NFKD: [0x110F, 0x1164, 0x11BF] },
+{ source: [0xCEE1], NFC: [0xCEE1], NFD: [0x110F, 0x1164, 0x11C0], NFKC: [0xCEE1], NFKD: [0x110F, 0x1164, 0x11C0] },
+{ source: [0xCEE2], NFC: [0xCEE2], NFD: [0x110F, 0x1164, 0x11C1], NFKC: [0xCEE2], NFKD: [0x110F, 0x1164, 0x11C1] },
+{ source: [0xCEE3], NFC: [0xCEE3], NFD: [0x110F, 0x1164, 0x11C2], NFKC: [0xCEE3], NFKD: [0x110F, 0x1164, 0x11C2] },
+{ source: [0xCEE4], NFC: [0xCEE4], NFD: [0x110F, 0x1165], NFKC: [0xCEE4], NFKD: [0x110F, 0x1165] },
+{ source: [0xCEE5], NFC: [0xCEE5], NFD: [0x110F, 0x1165, 0x11A8], NFKC: [0xCEE5], NFKD: [0x110F, 0x1165, 0x11A8] },
+{ source: [0xCEE6], NFC: [0xCEE6], NFD: [0x110F, 0x1165, 0x11A9], NFKC: [0xCEE6], NFKD: [0x110F, 0x1165, 0x11A9] },
+{ source: [0xCEE7], NFC: [0xCEE7], NFD: [0x110F, 0x1165, 0x11AA], NFKC: [0xCEE7], NFKD: [0x110F, 0x1165, 0x11AA] },
+{ source: [0xCEE8], NFC: [0xCEE8], NFD: [0x110F, 0x1165, 0x11AB], NFKC: [0xCEE8], NFKD: [0x110F, 0x1165, 0x11AB] },
+{ source: [0xCEE9], NFC: [0xCEE9], NFD: [0x110F, 0x1165, 0x11AC], NFKC: [0xCEE9], NFKD: [0x110F, 0x1165, 0x11AC] },
+{ source: [0xCEEA], NFC: [0xCEEA], NFD: [0x110F, 0x1165, 0x11AD], NFKC: [0xCEEA], NFKD: [0x110F, 0x1165, 0x11AD] },
+{ source: [0xCEEB], NFC: [0xCEEB], NFD: [0x110F, 0x1165, 0x11AE], NFKC: [0xCEEB], NFKD: [0x110F, 0x1165, 0x11AE] },
+{ source: [0xCEEC], NFC: [0xCEEC], NFD: [0x110F, 0x1165, 0x11AF], NFKC: [0xCEEC], NFKD: [0x110F, 0x1165, 0x11AF] },
+{ source: [0xCEED], NFC: [0xCEED], NFD: [0x110F, 0x1165, 0x11B0], NFKC: [0xCEED], NFKD: [0x110F, 0x1165, 0x11B0] },
+{ source: [0xCEEE], NFC: [0xCEEE], NFD: [0x110F, 0x1165, 0x11B1], NFKC: [0xCEEE], NFKD: [0x110F, 0x1165, 0x11B1] },
+{ source: [0xCEEF], NFC: [0xCEEF], NFD: [0x110F, 0x1165, 0x11B2], NFKC: [0xCEEF], NFKD: [0x110F, 0x1165, 0x11B2] },
+{ source: [0xCEF0], NFC: [0xCEF0], NFD: [0x110F, 0x1165, 0x11B3], NFKC: [0xCEF0], NFKD: [0x110F, 0x1165, 0x11B3] },
+{ source: [0xCEF1], NFC: [0xCEF1], NFD: [0x110F, 0x1165, 0x11B4], NFKC: [0xCEF1], NFKD: [0x110F, 0x1165, 0x11B4] },
+{ source: [0xCEF2], NFC: [0xCEF2], NFD: [0x110F, 0x1165, 0x11B5], NFKC: [0xCEF2], NFKD: [0x110F, 0x1165, 0x11B5] },
+{ source: [0xCEF3], NFC: [0xCEF3], NFD: [0x110F, 0x1165, 0x11B6], NFKC: [0xCEF3], NFKD: [0x110F, 0x1165, 0x11B6] },
+{ source: [0xCEF4], NFC: [0xCEF4], NFD: [0x110F, 0x1165, 0x11B7], NFKC: [0xCEF4], NFKD: [0x110F, 0x1165, 0x11B7] },
+{ source: [0xCEF5], NFC: [0xCEF5], NFD: [0x110F, 0x1165, 0x11B8], NFKC: [0xCEF5], NFKD: [0x110F, 0x1165, 0x11B8] },
+{ source: [0xCEF6], NFC: [0xCEF6], NFD: [0x110F, 0x1165, 0x11B9], NFKC: [0xCEF6], NFKD: [0x110F, 0x1165, 0x11B9] },
+{ source: [0xCEF7], NFC: [0xCEF7], NFD: [0x110F, 0x1165, 0x11BA], NFKC: [0xCEF7], NFKD: [0x110F, 0x1165, 0x11BA] },
+{ source: [0xCEF8], NFC: [0xCEF8], NFD: [0x110F, 0x1165, 0x11BB], NFKC: [0xCEF8], NFKD: [0x110F, 0x1165, 0x11BB] },
+{ source: [0xCEF9], NFC: [0xCEF9], NFD: [0x110F, 0x1165, 0x11BC], NFKC: [0xCEF9], NFKD: [0x110F, 0x1165, 0x11BC] },
+{ source: [0xCEFA], NFC: [0xCEFA], NFD: [0x110F, 0x1165, 0x11BD], NFKC: [0xCEFA], NFKD: [0x110F, 0x1165, 0x11BD] },
+{ source: [0xCEFB], NFC: [0xCEFB], NFD: [0x110F, 0x1165, 0x11BE], NFKC: [0xCEFB], NFKD: [0x110F, 0x1165, 0x11BE] },
+{ source: [0xCEFC], NFC: [0xCEFC], NFD: [0x110F, 0x1165, 0x11BF], NFKC: [0xCEFC], NFKD: [0x110F, 0x1165, 0x11BF] },
+{ source: [0xCEFD], NFC: [0xCEFD], NFD: [0x110F, 0x1165, 0x11C0], NFKC: [0xCEFD], NFKD: [0x110F, 0x1165, 0x11C0] },
+{ source: [0xCEFE], NFC: [0xCEFE], NFD: [0x110F, 0x1165, 0x11C1], NFKC: [0xCEFE], NFKD: [0x110F, 0x1165, 0x11C1] },
+{ source: [0xCEFF], NFC: [0xCEFF], NFD: [0x110F, 0x1165, 0x11C2], NFKC: [0xCEFF], NFKD: [0x110F, 0x1165, 0x11C2] },
+{ source: [0xCF00], NFC: [0xCF00], NFD: [0x110F, 0x1166], NFKC: [0xCF00], NFKD: [0x110F, 0x1166] },
+{ source: [0xCF01], NFC: [0xCF01], NFD: [0x110F, 0x1166, 0x11A8], NFKC: [0xCF01], NFKD: [0x110F, 0x1166, 0x11A8] },
+{ source: [0xCF02], NFC: [0xCF02], NFD: [0x110F, 0x1166, 0x11A9], NFKC: [0xCF02], NFKD: [0x110F, 0x1166, 0x11A9] },
+{ source: [0xCF03], NFC: [0xCF03], NFD: [0x110F, 0x1166, 0x11AA], NFKC: [0xCF03], NFKD: [0x110F, 0x1166, 0x11AA] },
+{ source: [0xCF04], NFC: [0xCF04], NFD: [0x110F, 0x1166, 0x11AB], NFKC: [0xCF04], NFKD: [0x110F, 0x1166, 0x11AB] },
+{ source: [0xCF05], NFC: [0xCF05], NFD: [0x110F, 0x1166, 0x11AC], NFKC: [0xCF05], NFKD: [0x110F, 0x1166, 0x11AC] },
+{ source: [0xCF06], NFC: [0xCF06], NFD: [0x110F, 0x1166, 0x11AD], NFKC: [0xCF06], NFKD: [0x110F, 0x1166, 0x11AD] },
+{ source: [0xCF07], NFC: [0xCF07], NFD: [0x110F, 0x1166, 0x11AE], NFKC: [0xCF07], NFKD: [0x110F, 0x1166, 0x11AE] },
+{ source: [0xCF08], NFC: [0xCF08], NFD: [0x110F, 0x1166, 0x11AF], NFKC: [0xCF08], NFKD: [0x110F, 0x1166, 0x11AF] },
+{ source: [0xCF09], NFC: [0xCF09], NFD: [0x110F, 0x1166, 0x11B0], NFKC: [0xCF09], NFKD: [0x110F, 0x1166, 0x11B0] },
+{ source: [0xCF0A], NFC: [0xCF0A], NFD: [0x110F, 0x1166, 0x11B1], NFKC: [0xCF0A], NFKD: [0x110F, 0x1166, 0x11B1] },
+{ source: [0xCF0B], NFC: [0xCF0B], NFD: [0x110F, 0x1166, 0x11B2], NFKC: [0xCF0B], NFKD: [0x110F, 0x1166, 0x11B2] },
+{ source: [0xCF0C], NFC: [0xCF0C], NFD: [0x110F, 0x1166, 0x11B3], NFKC: [0xCF0C], NFKD: [0x110F, 0x1166, 0x11B3] },
+{ source: [0xCF0D], NFC: [0xCF0D], NFD: [0x110F, 0x1166, 0x11B4], NFKC: [0xCF0D], NFKD: [0x110F, 0x1166, 0x11B4] },
+{ source: [0xCF0E], NFC: [0xCF0E], NFD: [0x110F, 0x1166, 0x11B5], NFKC: [0xCF0E], NFKD: [0x110F, 0x1166, 0x11B5] },
+{ source: [0xCF0F], NFC: [0xCF0F], NFD: [0x110F, 0x1166, 0x11B6], NFKC: [0xCF0F], NFKD: [0x110F, 0x1166, 0x11B6] },
+{ source: [0xCF10], NFC: [0xCF10], NFD: [0x110F, 0x1166, 0x11B7], NFKC: [0xCF10], NFKD: [0x110F, 0x1166, 0x11B7] },
+{ source: [0xCF11], NFC: [0xCF11], NFD: [0x110F, 0x1166, 0x11B8], NFKC: [0xCF11], NFKD: [0x110F, 0x1166, 0x11B8] },
+{ source: [0xCF12], NFC: [0xCF12], NFD: [0x110F, 0x1166, 0x11B9], NFKC: [0xCF12], NFKD: [0x110F, 0x1166, 0x11B9] },
+{ source: [0xCF13], NFC: [0xCF13], NFD: [0x110F, 0x1166, 0x11BA], NFKC: [0xCF13], NFKD: [0x110F, 0x1166, 0x11BA] },
+{ source: [0xCF14], NFC: [0xCF14], NFD: [0x110F, 0x1166, 0x11BB], NFKC: [0xCF14], NFKD: [0x110F, 0x1166, 0x11BB] },
+{ source: [0xCF15], NFC: [0xCF15], NFD: [0x110F, 0x1166, 0x11BC], NFKC: [0xCF15], NFKD: [0x110F, 0x1166, 0x11BC] },
+{ source: [0xCF16], NFC: [0xCF16], NFD: [0x110F, 0x1166, 0x11BD], NFKC: [0xCF16], NFKD: [0x110F, 0x1166, 0x11BD] },
+{ source: [0xCF17], NFC: [0xCF17], NFD: [0x110F, 0x1166, 0x11BE], NFKC: [0xCF17], NFKD: [0x110F, 0x1166, 0x11BE] },
+{ source: [0xCF18], NFC: [0xCF18], NFD: [0x110F, 0x1166, 0x11BF], NFKC: [0xCF18], NFKD: [0x110F, 0x1166, 0x11BF] },
+{ source: [0xCF19], NFC: [0xCF19], NFD: [0x110F, 0x1166, 0x11C0], NFKC: [0xCF19], NFKD: [0x110F, 0x1166, 0x11C0] },
+{ source: [0xCF1A], NFC: [0xCF1A], NFD: [0x110F, 0x1166, 0x11C1], NFKC: [0xCF1A], NFKD: [0x110F, 0x1166, 0x11C1] },
+{ source: [0xCF1B], NFC: [0xCF1B], NFD: [0x110F, 0x1166, 0x11C2], NFKC: [0xCF1B], NFKD: [0x110F, 0x1166, 0x11C2] },
+{ source: [0xCF1C], NFC: [0xCF1C], NFD: [0x110F, 0x1167], NFKC: [0xCF1C], NFKD: [0x110F, 0x1167] },
+{ source: [0xCF1D], NFC: [0xCF1D], NFD: [0x110F, 0x1167, 0x11A8], NFKC: [0xCF1D], NFKD: [0x110F, 0x1167, 0x11A8] },
+{ source: [0xCF1E], NFC: [0xCF1E], NFD: [0x110F, 0x1167, 0x11A9], NFKC: [0xCF1E], NFKD: [0x110F, 0x1167, 0x11A9] },
+{ source: [0xCF1F], NFC: [0xCF1F], NFD: [0x110F, 0x1167, 0x11AA], NFKC: [0xCF1F], NFKD: [0x110F, 0x1167, 0x11AA] },
+{ source: [0xCF20], NFC: [0xCF20], NFD: [0x110F, 0x1167, 0x11AB], NFKC: [0xCF20], NFKD: [0x110F, 0x1167, 0x11AB] },
+{ source: [0xCF21], NFC: [0xCF21], NFD: [0x110F, 0x1167, 0x11AC], NFKC: [0xCF21], NFKD: [0x110F, 0x1167, 0x11AC] },
+{ source: [0xCF22], NFC: [0xCF22], NFD: [0x110F, 0x1167, 0x11AD], NFKC: [0xCF22], NFKD: [0x110F, 0x1167, 0x11AD] },
+{ source: [0xCF23], NFC: [0xCF23], NFD: [0x110F, 0x1167, 0x11AE], NFKC: [0xCF23], NFKD: [0x110F, 0x1167, 0x11AE] },
+{ source: [0xCF24], NFC: [0xCF24], NFD: [0x110F, 0x1167, 0x11AF], NFKC: [0xCF24], NFKD: [0x110F, 0x1167, 0x11AF] },
+{ source: [0xCF25], NFC: [0xCF25], NFD: [0x110F, 0x1167, 0x11B0], NFKC: [0xCF25], NFKD: [0x110F, 0x1167, 0x11B0] },
+{ source: [0xCF26], NFC: [0xCF26], NFD: [0x110F, 0x1167, 0x11B1], NFKC: [0xCF26], NFKD: [0x110F, 0x1167, 0x11B1] },
+{ source: [0xCF27], NFC: [0xCF27], NFD: [0x110F, 0x1167, 0x11B2], NFKC: [0xCF27], NFKD: [0x110F, 0x1167, 0x11B2] },
+{ source: [0xCF28], NFC: [0xCF28], NFD: [0x110F, 0x1167, 0x11B3], NFKC: [0xCF28], NFKD: [0x110F, 0x1167, 0x11B3] },
+{ source: [0xCF29], NFC: [0xCF29], NFD: [0x110F, 0x1167, 0x11B4], NFKC: [0xCF29], NFKD: [0x110F, 0x1167, 0x11B4] },
+{ source: [0xCF2A], NFC: [0xCF2A], NFD: [0x110F, 0x1167, 0x11B5], NFKC: [0xCF2A], NFKD: [0x110F, 0x1167, 0x11B5] },
+{ source: [0xCF2B], NFC: [0xCF2B], NFD: [0x110F, 0x1167, 0x11B6], NFKC: [0xCF2B], NFKD: [0x110F, 0x1167, 0x11B6] },
+{ source: [0xCF2C], NFC: [0xCF2C], NFD: [0x110F, 0x1167, 0x11B7], NFKC: [0xCF2C], NFKD: [0x110F, 0x1167, 0x11B7] },
+{ source: [0xCF2D], NFC: [0xCF2D], NFD: [0x110F, 0x1167, 0x11B8], NFKC: [0xCF2D], NFKD: [0x110F, 0x1167, 0x11B8] },
+{ source: [0xCF2E], NFC: [0xCF2E], NFD: [0x110F, 0x1167, 0x11B9], NFKC: [0xCF2E], NFKD: [0x110F, 0x1167, 0x11B9] },
+{ source: [0xCF2F], NFC: [0xCF2F], NFD: [0x110F, 0x1167, 0x11BA], NFKC: [0xCF2F], NFKD: [0x110F, 0x1167, 0x11BA] },
+{ source: [0xCF30], NFC: [0xCF30], NFD: [0x110F, 0x1167, 0x11BB], NFKC: [0xCF30], NFKD: [0x110F, 0x1167, 0x11BB] },
+{ source: [0xCF31], NFC: [0xCF31], NFD: [0x110F, 0x1167, 0x11BC], NFKC: [0xCF31], NFKD: [0x110F, 0x1167, 0x11BC] },
+{ source: [0xCF32], NFC: [0xCF32], NFD: [0x110F, 0x1167, 0x11BD], NFKC: [0xCF32], NFKD: [0x110F, 0x1167, 0x11BD] },
+{ source: [0xCF33], NFC: [0xCF33], NFD: [0x110F, 0x1167, 0x11BE], NFKC: [0xCF33], NFKD: [0x110F, 0x1167, 0x11BE] },
+{ source: [0xCF34], NFC: [0xCF34], NFD: [0x110F, 0x1167, 0x11BF], NFKC: [0xCF34], NFKD: [0x110F, 0x1167, 0x11BF] },
+{ source: [0xCF35], NFC: [0xCF35], NFD: [0x110F, 0x1167, 0x11C0], NFKC: [0xCF35], NFKD: [0x110F, 0x1167, 0x11C0] },
+{ source: [0xCF36], NFC: [0xCF36], NFD: [0x110F, 0x1167, 0x11C1], NFKC: [0xCF36], NFKD: [0x110F, 0x1167, 0x11C1] },
+{ source: [0xCF37], NFC: [0xCF37], NFD: [0x110F, 0x1167, 0x11C2], NFKC: [0xCF37], NFKD: [0x110F, 0x1167, 0x11C2] },
+{ source: [0xCF38], NFC: [0xCF38], NFD: [0x110F, 0x1168], NFKC: [0xCF38], NFKD: [0x110F, 0x1168] },
+{ source: [0xCF39], NFC: [0xCF39], NFD: [0x110F, 0x1168, 0x11A8], NFKC: [0xCF39], NFKD: [0x110F, 0x1168, 0x11A8] },
+{ source: [0xCF3A], NFC: [0xCF3A], NFD: [0x110F, 0x1168, 0x11A9], NFKC: [0xCF3A], NFKD: [0x110F, 0x1168, 0x11A9] },
+{ source: [0xCF3B], NFC: [0xCF3B], NFD: [0x110F, 0x1168, 0x11AA], NFKC: [0xCF3B], NFKD: [0x110F, 0x1168, 0x11AA] },
+{ source: [0xCF3C], NFC: [0xCF3C], NFD: [0x110F, 0x1168, 0x11AB], NFKC: [0xCF3C], NFKD: [0x110F, 0x1168, 0x11AB] },
+{ source: [0xCF3D], NFC: [0xCF3D], NFD: [0x110F, 0x1168, 0x11AC], NFKC: [0xCF3D], NFKD: [0x110F, 0x1168, 0x11AC] },
+{ source: [0xCF3E], NFC: [0xCF3E], NFD: [0x110F, 0x1168, 0x11AD], NFKC: [0xCF3E], NFKD: [0x110F, 0x1168, 0x11AD] },
+{ source: [0xCF3F], NFC: [0xCF3F], NFD: [0x110F, 0x1168, 0x11AE], NFKC: [0xCF3F], NFKD: [0x110F, 0x1168, 0x11AE] },
+{ source: [0xCF40], NFC: [0xCF40], NFD: [0x110F, 0x1168, 0x11AF], NFKC: [0xCF40], NFKD: [0x110F, 0x1168, 0x11AF] },
+{ source: [0xCF41], NFC: [0xCF41], NFD: [0x110F, 0x1168, 0x11B0], NFKC: [0xCF41], NFKD: [0x110F, 0x1168, 0x11B0] },
+{ source: [0xCF42], NFC: [0xCF42], NFD: [0x110F, 0x1168, 0x11B1], NFKC: [0xCF42], NFKD: [0x110F, 0x1168, 0x11B1] },
+{ source: [0xCF43], NFC: [0xCF43], NFD: [0x110F, 0x1168, 0x11B2], NFKC: [0xCF43], NFKD: [0x110F, 0x1168, 0x11B2] },
+{ source: [0xCF44], NFC: [0xCF44], NFD: [0x110F, 0x1168, 0x11B3], NFKC: [0xCF44], NFKD: [0x110F, 0x1168, 0x11B3] },
+{ source: [0xCF45], NFC: [0xCF45], NFD: [0x110F, 0x1168, 0x11B4], NFKC: [0xCF45], NFKD: [0x110F, 0x1168, 0x11B4] },
+{ source: [0xCF46], NFC: [0xCF46], NFD: [0x110F, 0x1168, 0x11B5], NFKC: [0xCF46], NFKD: [0x110F, 0x1168, 0x11B5] },
+{ source: [0xCF47], NFC: [0xCF47], NFD: [0x110F, 0x1168, 0x11B6], NFKC: [0xCF47], NFKD: [0x110F, 0x1168, 0x11B6] },
+{ source: [0xCF48], NFC: [0xCF48], NFD: [0x110F, 0x1168, 0x11B7], NFKC: [0xCF48], NFKD: [0x110F, 0x1168, 0x11B7] },
+{ source: [0xCF49], NFC: [0xCF49], NFD: [0x110F, 0x1168, 0x11B8], NFKC: [0xCF49], NFKD: [0x110F, 0x1168, 0x11B8] },
+{ source: [0xCF4A], NFC: [0xCF4A], NFD: [0x110F, 0x1168, 0x11B9], NFKC: [0xCF4A], NFKD: [0x110F, 0x1168, 0x11B9] },
+{ source: [0xCF4B], NFC: [0xCF4B], NFD: [0x110F, 0x1168, 0x11BA], NFKC: [0xCF4B], NFKD: [0x110F, 0x1168, 0x11BA] },
+{ source: [0xCF4C], NFC: [0xCF4C], NFD: [0x110F, 0x1168, 0x11BB], NFKC: [0xCF4C], NFKD: [0x110F, 0x1168, 0x11BB] },
+{ source: [0xCF4D], NFC: [0xCF4D], NFD: [0x110F, 0x1168, 0x11BC], NFKC: [0xCF4D], NFKD: [0x110F, 0x1168, 0x11BC] },
+{ source: [0xCF4E], NFC: [0xCF4E], NFD: [0x110F, 0x1168, 0x11BD], NFKC: [0xCF4E], NFKD: [0x110F, 0x1168, 0x11BD] },
+{ source: [0xCF4F], NFC: [0xCF4F], NFD: [0x110F, 0x1168, 0x11BE], NFKC: [0xCF4F], NFKD: [0x110F, 0x1168, 0x11BE] },
+{ source: [0xCF50], NFC: [0xCF50], NFD: [0x110F, 0x1168, 0x11BF], NFKC: [0xCF50], NFKD: [0x110F, 0x1168, 0x11BF] },
+{ source: [0xCF51], NFC: [0xCF51], NFD: [0x110F, 0x1168, 0x11C0], NFKC: [0xCF51], NFKD: [0x110F, 0x1168, 0x11C0] },
+{ source: [0xCF52], NFC: [0xCF52], NFD: [0x110F, 0x1168, 0x11C1], NFKC: [0xCF52], NFKD: [0x110F, 0x1168, 0x11C1] },
+{ source: [0xCF53], NFC: [0xCF53], NFD: [0x110F, 0x1168, 0x11C2], NFKC: [0xCF53], NFKD: [0x110F, 0x1168, 0x11C2] },
+{ source: [0xCF54], NFC: [0xCF54], NFD: [0x110F, 0x1169], NFKC: [0xCF54], NFKD: [0x110F, 0x1169] },
+{ source: [0xCF55], NFC: [0xCF55], NFD: [0x110F, 0x1169, 0x11A8], NFKC: [0xCF55], NFKD: [0x110F, 0x1169, 0x11A8] },
+{ source: [0xCF56], NFC: [0xCF56], NFD: [0x110F, 0x1169, 0x11A9], NFKC: [0xCF56], NFKD: [0x110F, 0x1169, 0x11A9] },
+{ source: [0xCF57], NFC: [0xCF57], NFD: [0x110F, 0x1169, 0x11AA], NFKC: [0xCF57], NFKD: [0x110F, 0x1169, 0x11AA] },
+{ source: [0xCF58], NFC: [0xCF58], NFD: [0x110F, 0x1169, 0x11AB], NFKC: [0xCF58], NFKD: [0x110F, 0x1169, 0x11AB] },
+{ source: [0xCF59], NFC: [0xCF59], NFD: [0x110F, 0x1169, 0x11AC], NFKC: [0xCF59], NFKD: [0x110F, 0x1169, 0x11AC] },
+{ source: [0xCF5A], NFC: [0xCF5A], NFD: [0x110F, 0x1169, 0x11AD], NFKC: [0xCF5A], NFKD: [0x110F, 0x1169, 0x11AD] },
+{ source: [0xCF5B], NFC: [0xCF5B], NFD: [0x110F, 0x1169, 0x11AE], NFKC: [0xCF5B], NFKD: [0x110F, 0x1169, 0x11AE] },
+{ source: [0xCF5C], NFC: [0xCF5C], NFD: [0x110F, 0x1169, 0x11AF], NFKC: [0xCF5C], NFKD: [0x110F, 0x1169, 0x11AF] },
+{ source: [0xCF5D], NFC: [0xCF5D], NFD: [0x110F, 0x1169, 0x11B0], NFKC: [0xCF5D], NFKD: [0x110F, 0x1169, 0x11B0] },
+{ source: [0xCF5E], NFC: [0xCF5E], NFD: [0x110F, 0x1169, 0x11B1], NFKC: [0xCF5E], NFKD: [0x110F, 0x1169, 0x11B1] },
+{ source: [0xCF5F], NFC: [0xCF5F], NFD: [0x110F, 0x1169, 0x11B2], NFKC: [0xCF5F], NFKD: [0x110F, 0x1169, 0x11B2] },
+{ source: [0xCF60], NFC: [0xCF60], NFD: [0x110F, 0x1169, 0x11B3], NFKC: [0xCF60], NFKD: [0x110F, 0x1169, 0x11B3] },
+{ source: [0xCF61], NFC: [0xCF61], NFD: [0x110F, 0x1169, 0x11B4], NFKC: [0xCF61], NFKD: [0x110F, 0x1169, 0x11B4] },
+{ source: [0xCF62], NFC: [0xCF62], NFD: [0x110F, 0x1169, 0x11B5], NFKC: [0xCF62], NFKD: [0x110F, 0x1169, 0x11B5] },
+{ source: [0xCF63], NFC: [0xCF63], NFD: [0x110F, 0x1169, 0x11B6], NFKC: [0xCF63], NFKD: [0x110F, 0x1169, 0x11B6] },
+{ source: [0xCF64], NFC: [0xCF64], NFD: [0x110F, 0x1169, 0x11B7], NFKC: [0xCF64], NFKD: [0x110F, 0x1169, 0x11B7] },
+{ source: [0xCF65], NFC: [0xCF65], NFD: [0x110F, 0x1169, 0x11B8], NFKC: [0xCF65], NFKD: [0x110F, 0x1169, 0x11B8] },
+{ source: [0xCF66], NFC: [0xCF66], NFD: [0x110F, 0x1169, 0x11B9], NFKC: [0xCF66], NFKD: [0x110F, 0x1169, 0x11B9] },
+{ source: [0xCF67], NFC: [0xCF67], NFD: [0x110F, 0x1169, 0x11BA], NFKC: [0xCF67], NFKD: [0x110F, 0x1169, 0x11BA] },
+{ source: [0xCF68], NFC: [0xCF68], NFD: [0x110F, 0x1169, 0x11BB], NFKC: [0xCF68], NFKD: [0x110F, 0x1169, 0x11BB] },
+{ source: [0xCF69], NFC: [0xCF69], NFD: [0x110F, 0x1169, 0x11BC], NFKC: [0xCF69], NFKD: [0x110F, 0x1169, 0x11BC] },
+{ source: [0xCF6A], NFC: [0xCF6A], NFD: [0x110F, 0x1169, 0x11BD], NFKC: [0xCF6A], NFKD: [0x110F, 0x1169, 0x11BD] },
+{ source: [0xCF6B], NFC: [0xCF6B], NFD: [0x110F, 0x1169, 0x11BE], NFKC: [0xCF6B], NFKD: [0x110F, 0x1169, 0x11BE] },
+{ source: [0xCF6C], NFC: [0xCF6C], NFD: [0x110F, 0x1169, 0x11BF], NFKC: [0xCF6C], NFKD: [0x110F, 0x1169, 0x11BF] },
+{ source: [0xCF6D], NFC: [0xCF6D], NFD: [0x110F, 0x1169, 0x11C0], NFKC: [0xCF6D], NFKD: [0x110F, 0x1169, 0x11C0] },
+{ source: [0xCF6E], NFC: [0xCF6E], NFD: [0x110F, 0x1169, 0x11C1], NFKC: [0xCF6E], NFKD: [0x110F, 0x1169, 0x11C1] },
+{ source: [0xCF6F], NFC: [0xCF6F], NFD: [0x110F, 0x1169, 0x11C2], NFKC: [0xCF6F], NFKD: [0x110F, 0x1169, 0x11C2] },
+{ source: [0xCF70], NFC: [0xCF70], NFD: [0x110F, 0x116A], NFKC: [0xCF70], NFKD: [0x110F, 0x116A] },
+{ source: [0xCF71], NFC: [0xCF71], NFD: [0x110F, 0x116A, 0x11A8], NFKC: [0xCF71], NFKD: [0x110F, 0x116A, 0x11A8] },
+{ source: [0xCF72], NFC: [0xCF72], NFD: [0x110F, 0x116A, 0x11A9], NFKC: [0xCF72], NFKD: [0x110F, 0x116A, 0x11A9] },
+{ source: [0xCF73], NFC: [0xCF73], NFD: [0x110F, 0x116A, 0x11AA], NFKC: [0xCF73], NFKD: [0x110F, 0x116A, 0x11AA] },
+{ source: [0xCF74], NFC: [0xCF74], NFD: [0x110F, 0x116A, 0x11AB], NFKC: [0xCF74], NFKD: [0x110F, 0x116A, 0x11AB] },
+{ source: [0xCF75], NFC: [0xCF75], NFD: [0x110F, 0x116A, 0x11AC], NFKC: [0xCF75], NFKD: [0x110F, 0x116A, 0x11AC] },
+{ source: [0xCF76], NFC: [0xCF76], NFD: [0x110F, 0x116A, 0x11AD], NFKC: [0xCF76], NFKD: [0x110F, 0x116A, 0x11AD] },
+{ source: [0xCF77], NFC: [0xCF77], NFD: [0x110F, 0x116A, 0x11AE], NFKC: [0xCF77], NFKD: [0x110F, 0x116A, 0x11AE] },
+{ source: [0xCF78], NFC: [0xCF78], NFD: [0x110F, 0x116A, 0x11AF], NFKC: [0xCF78], NFKD: [0x110F, 0x116A, 0x11AF] },
+{ source: [0xCF79], NFC: [0xCF79], NFD: [0x110F, 0x116A, 0x11B0], NFKC: [0xCF79], NFKD: [0x110F, 0x116A, 0x11B0] },
+{ source: [0xCF7A], NFC: [0xCF7A], NFD: [0x110F, 0x116A, 0x11B1], NFKC: [0xCF7A], NFKD: [0x110F, 0x116A, 0x11B1] },
+{ source: [0xCF7B], NFC: [0xCF7B], NFD: [0x110F, 0x116A, 0x11B2], NFKC: [0xCF7B], NFKD: [0x110F, 0x116A, 0x11B2] },
+{ source: [0xCF7C], NFC: [0xCF7C], NFD: [0x110F, 0x116A, 0x11B3], NFKC: [0xCF7C], NFKD: [0x110F, 0x116A, 0x11B3] },
+{ source: [0xCF7D], NFC: [0xCF7D], NFD: [0x110F, 0x116A, 0x11B4], NFKC: [0xCF7D], NFKD: [0x110F, 0x116A, 0x11B4] },
+{ source: [0xCF7E], NFC: [0xCF7E], NFD: [0x110F, 0x116A, 0x11B5], NFKC: [0xCF7E], NFKD: [0x110F, 0x116A, 0x11B5] },
+{ source: [0xCF7F], NFC: [0xCF7F], NFD: [0x110F, 0x116A, 0x11B6], NFKC: [0xCF7F], NFKD: [0x110F, 0x116A, 0x11B6] },
+{ source: [0xCF80], NFC: [0xCF80], NFD: [0x110F, 0x116A, 0x11B7], NFKC: [0xCF80], NFKD: [0x110F, 0x116A, 0x11B7] },
+{ source: [0xCF81], NFC: [0xCF81], NFD: [0x110F, 0x116A, 0x11B8], NFKC: [0xCF81], NFKD: [0x110F, 0x116A, 0x11B8] },
+{ source: [0xCF82], NFC: [0xCF82], NFD: [0x110F, 0x116A, 0x11B9], NFKC: [0xCF82], NFKD: [0x110F, 0x116A, 0x11B9] },
+{ source: [0xCF83], NFC: [0xCF83], NFD: [0x110F, 0x116A, 0x11BA], NFKC: [0xCF83], NFKD: [0x110F, 0x116A, 0x11BA] },
+{ source: [0xCF84], NFC: [0xCF84], NFD: [0x110F, 0x116A, 0x11BB], NFKC: [0xCF84], NFKD: [0x110F, 0x116A, 0x11BB] },
+{ source: [0xCF85], NFC: [0xCF85], NFD: [0x110F, 0x116A, 0x11BC], NFKC: [0xCF85], NFKD: [0x110F, 0x116A, 0x11BC] },
+{ source: [0xCF86], NFC: [0xCF86], NFD: [0x110F, 0x116A, 0x11BD], NFKC: [0xCF86], NFKD: [0x110F, 0x116A, 0x11BD] },
+{ source: [0xCF87], NFC: [0xCF87], NFD: [0x110F, 0x116A, 0x11BE], NFKC: [0xCF87], NFKD: [0x110F, 0x116A, 0x11BE] },
+{ source: [0xCF88], NFC: [0xCF88], NFD: [0x110F, 0x116A, 0x11BF], NFKC: [0xCF88], NFKD: [0x110F, 0x116A, 0x11BF] },
+{ source: [0xCF89], NFC: [0xCF89], NFD: [0x110F, 0x116A, 0x11C0], NFKC: [0xCF89], NFKD: [0x110F, 0x116A, 0x11C0] },
+{ source: [0xCF8A], NFC: [0xCF8A], NFD: [0x110F, 0x116A, 0x11C1], NFKC: [0xCF8A], NFKD: [0x110F, 0x116A, 0x11C1] },
+{ source: [0xCF8B], NFC: [0xCF8B], NFD: [0x110F, 0x116A, 0x11C2], NFKC: [0xCF8B], NFKD: [0x110F, 0x116A, 0x11C2] },
+{ source: [0xCF8C], NFC: [0xCF8C], NFD: [0x110F, 0x116B], NFKC: [0xCF8C], NFKD: [0x110F, 0x116B] },
+{ source: [0xCF8D], NFC: [0xCF8D], NFD: [0x110F, 0x116B, 0x11A8], NFKC: [0xCF8D], NFKD: [0x110F, 0x116B, 0x11A8] },
+{ source: [0xCF8E], NFC: [0xCF8E], NFD: [0x110F, 0x116B, 0x11A9], NFKC: [0xCF8E], NFKD: [0x110F, 0x116B, 0x11A9] },
+{ source: [0xCF8F], NFC: [0xCF8F], NFD: [0x110F, 0x116B, 0x11AA], NFKC: [0xCF8F], NFKD: [0x110F, 0x116B, 0x11AA] },
+{ source: [0xCF90], NFC: [0xCF90], NFD: [0x110F, 0x116B, 0x11AB], NFKC: [0xCF90], NFKD: [0x110F, 0x116B, 0x11AB] },
+{ source: [0xCF91], NFC: [0xCF91], NFD: [0x110F, 0x116B, 0x11AC], NFKC: [0xCF91], NFKD: [0x110F, 0x116B, 0x11AC] },
+{ source: [0xCF92], NFC: [0xCF92], NFD: [0x110F, 0x116B, 0x11AD], NFKC: [0xCF92], NFKD: [0x110F, 0x116B, 0x11AD] },
+{ source: [0xCF93], NFC: [0xCF93], NFD: [0x110F, 0x116B, 0x11AE], NFKC: [0xCF93], NFKD: [0x110F, 0x116B, 0x11AE] },
+{ source: [0xCF94], NFC: [0xCF94], NFD: [0x110F, 0x116B, 0x11AF], NFKC: [0xCF94], NFKD: [0x110F, 0x116B, 0x11AF] },
+{ source: [0xCF95], NFC: [0xCF95], NFD: [0x110F, 0x116B, 0x11B0], NFKC: [0xCF95], NFKD: [0x110F, 0x116B, 0x11B0] },
+{ source: [0xCF96], NFC: [0xCF96], NFD: [0x110F, 0x116B, 0x11B1], NFKC: [0xCF96], NFKD: [0x110F, 0x116B, 0x11B1] },
+{ source: [0xCF97], NFC: [0xCF97], NFD: [0x110F, 0x116B, 0x11B2], NFKC: [0xCF97], NFKD: [0x110F, 0x116B, 0x11B2] },
+{ source: [0xCF98], NFC: [0xCF98], NFD: [0x110F, 0x116B, 0x11B3], NFKC: [0xCF98], NFKD: [0x110F, 0x116B, 0x11B3] },
+{ source: [0xCF99], NFC: [0xCF99], NFD: [0x110F, 0x116B, 0x11B4], NFKC: [0xCF99], NFKD: [0x110F, 0x116B, 0x11B4] },
+{ source: [0xCF9A], NFC: [0xCF9A], NFD: [0x110F, 0x116B, 0x11B5], NFKC: [0xCF9A], NFKD: [0x110F, 0x116B, 0x11B5] },
+{ source: [0xCF9B], NFC: [0xCF9B], NFD: [0x110F, 0x116B, 0x11B6], NFKC: [0xCF9B], NFKD: [0x110F, 0x116B, 0x11B6] },
+{ source: [0xCF9C], NFC: [0xCF9C], NFD: [0x110F, 0x116B, 0x11B7], NFKC: [0xCF9C], NFKD: [0x110F, 0x116B, 0x11B7] },
+{ source: [0xCF9D], NFC: [0xCF9D], NFD: [0x110F, 0x116B, 0x11B8], NFKC: [0xCF9D], NFKD: [0x110F, 0x116B, 0x11B8] },
+{ source: [0xCF9E], NFC: [0xCF9E], NFD: [0x110F, 0x116B, 0x11B9], NFKC: [0xCF9E], NFKD: [0x110F, 0x116B, 0x11B9] },
+{ source: [0xCF9F], NFC: [0xCF9F], NFD: [0x110F, 0x116B, 0x11BA], NFKC: [0xCF9F], NFKD: [0x110F, 0x116B, 0x11BA] },
+{ source: [0xCFA0], NFC: [0xCFA0], NFD: [0x110F, 0x116B, 0x11BB], NFKC: [0xCFA0], NFKD: [0x110F, 0x116B, 0x11BB] },
+{ source: [0xCFA1], NFC: [0xCFA1], NFD: [0x110F, 0x116B, 0x11BC], NFKC: [0xCFA1], NFKD: [0x110F, 0x116B, 0x11BC] },
+{ source: [0xCFA2], NFC: [0xCFA2], NFD: [0x110F, 0x116B, 0x11BD], NFKC: [0xCFA2], NFKD: [0x110F, 0x116B, 0x11BD] },
+{ source: [0xCFA3], NFC: [0xCFA3], NFD: [0x110F, 0x116B, 0x11BE], NFKC: [0xCFA3], NFKD: [0x110F, 0x116B, 0x11BE] },
+{ source: [0xCFA4], NFC: [0xCFA4], NFD: [0x110F, 0x116B, 0x11BF], NFKC: [0xCFA4], NFKD: [0x110F, 0x116B, 0x11BF] },
+{ source: [0xCFA5], NFC: [0xCFA5], NFD: [0x110F, 0x116B, 0x11C0], NFKC: [0xCFA5], NFKD: [0x110F, 0x116B, 0x11C0] },
+{ source: [0xCFA6], NFC: [0xCFA6], NFD: [0x110F, 0x116B, 0x11C1], NFKC: [0xCFA6], NFKD: [0x110F, 0x116B, 0x11C1] },
+{ source: [0xCFA7], NFC: [0xCFA7], NFD: [0x110F, 0x116B, 0x11C2], NFKC: [0xCFA7], NFKD: [0x110F, 0x116B, 0x11C2] },
+{ source: [0xCFA8], NFC: [0xCFA8], NFD: [0x110F, 0x116C], NFKC: [0xCFA8], NFKD: [0x110F, 0x116C] },
+{ source: [0xCFA9], NFC: [0xCFA9], NFD: [0x110F, 0x116C, 0x11A8], NFKC: [0xCFA9], NFKD: [0x110F, 0x116C, 0x11A8] },
+{ source: [0xCFAA], NFC: [0xCFAA], NFD: [0x110F, 0x116C, 0x11A9], NFKC: [0xCFAA], NFKD: [0x110F, 0x116C, 0x11A9] },
+{ source: [0xCFAB], NFC: [0xCFAB], NFD: [0x110F, 0x116C, 0x11AA], NFKC: [0xCFAB], NFKD: [0x110F, 0x116C, 0x11AA] },
+{ source: [0xCFAC], NFC: [0xCFAC], NFD: [0x110F, 0x116C, 0x11AB], NFKC: [0xCFAC], NFKD: [0x110F, 0x116C, 0x11AB] },
+{ source: [0xCFAD], NFC: [0xCFAD], NFD: [0x110F, 0x116C, 0x11AC], NFKC: [0xCFAD], NFKD: [0x110F, 0x116C, 0x11AC] },
+{ source: [0xCFAE], NFC: [0xCFAE], NFD: [0x110F, 0x116C, 0x11AD], NFKC: [0xCFAE], NFKD: [0x110F, 0x116C, 0x11AD] },
+{ source: [0xCFAF], NFC: [0xCFAF], NFD: [0x110F, 0x116C, 0x11AE], NFKC: [0xCFAF], NFKD: [0x110F, 0x116C, 0x11AE] },
+{ source: [0xCFB0], NFC: [0xCFB0], NFD: [0x110F, 0x116C, 0x11AF], NFKC: [0xCFB0], NFKD: [0x110F, 0x116C, 0x11AF] },
+{ source: [0xCFB1], NFC: [0xCFB1], NFD: [0x110F, 0x116C, 0x11B0], NFKC: [0xCFB1], NFKD: [0x110F, 0x116C, 0x11B0] },
+{ source: [0xCFB2], NFC: [0xCFB2], NFD: [0x110F, 0x116C, 0x11B1], NFKC: [0xCFB2], NFKD: [0x110F, 0x116C, 0x11B1] },
+{ source: [0xCFB3], NFC: [0xCFB3], NFD: [0x110F, 0x116C, 0x11B2], NFKC: [0xCFB3], NFKD: [0x110F, 0x116C, 0x11B2] },
+{ source: [0xCFB4], NFC: [0xCFB4], NFD: [0x110F, 0x116C, 0x11B3], NFKC: [0xCFB4], NFKD: [0x110F, 0x116C, 0x11B3] },
+{ source: [0xCFB5], NFC: [0xCFB5], NFD: [0x110F, 0x116C, 0x11B4], NFKC: [0xCFB5], NFKD: [0x110F, 0x116C, 0x11B4] },
+{ source: [0xCFB6], NFC: [0xCFB6], NFD: [0x110F, 0x116C, 0x11B5], NFKC: [0xCFB6], NFKD: [0x110F, 0x116C, 0x11B5] },
+{ source: [0xCFB7], NFC: [0xCFB7], NFD: [0x110F, 0x116C, 0x11B6], NFKC: [0xCFB7], NFKD: [0x110F, 0x116C, 0x11B6] },
+{ source: [0xCFB8], NFC: [0xCFB8], NFD: [0x110F, 0x116C, 0x11B7], NFKC: [0xCFB8], NFKD: [0x110F, 0x116C, 0x11B7] },
+{ source: [0xCFB9], NFC: [0xCFB9], NFD: [0x110F, 0x116C, 0x11B8], NFKC: [0xCFB9], NFKD: [0x110F, 0x116C, 0x11B8] },
+{ source: [0xCFBA], NFC: [0xCFBA], NFD: [0x110F, 0x116C, 0x11B9], NFKC: [0xCFBA], NFKD: [0x110F, 0x116C, 0x11B9] },
+{ source: [0xCFBB], NFC: [0xCFBB], NFD: [0x110F, 0x116C, 0x11BA], NFKC: [0xCFBB], NFKD: [0x110F, 0x116C, 0x11BA] },
+{ source: [0xCFBC], NFC: [0xCFBC], NFD: [0x110F, 0x116C, 0x11BB], NFKC: [0xCFBC], NFKD: [0x110F, 0x116C, 0x11BB] },
+{ source: [0xCFBD], NFC: [0xCFBD], NFD: [0x110F, 0x116C, 0x11BC], NFKC: [0xCFBD], NFKD: [0x110F, 0x116C, 0x11BC] },
+{ source: [0xCFBE], NFC: [0xCFBE], NFD: [0x110F, 0x116C, 0x11BD], NFKC: [0xCFBE], NFKD: [0x110F, 0x116C, 0x11BD] },
+{ source: [0xCFBF], NFC: [0xCFBF], NFD: [0x110F, 0x116C, 0x11BE], NFKC: [0xCFBF], NFKD: [0x110F, 0x116C, 0x11BE] },
+{ source: [0xCFC0], NFC: [0xCFC0], NFD: [0x110F, 0x116C, 0x11BF], NFKC: [0xCFC0], NFKD: [0x110F, 0x116C, 0x11BF] },
+{ source: [0xCFC1], NFC: [0xCFC1], NFD: [0x110F, 0x116C, 0x11C0], NFKC: [0xCFC1], NFKD: [0x110F, 0x116C, 0x11C0] },
+{ source: [0xCFC2], NFC: [0xCFC2], NFD: [0x110F, 0x116C, 0x11C1], NFKC: [0xCFC2], NFKD: [0x110F, 0x116C, 0x11C1] },
+{ source: [0xCFC3], NFC: [0xCFC3], NFD: [0x110F, 0x116C, 0x11C2], NFKC: [0xCFC3], NFKD: [0x110F, 0x116C, 0x11C2] },
+{ source: [0xCFC4], NFC: [0xCFC4], NFD: [0x110F, 0x116D], NFKC: [0xCFC4], NFKD: [0x110F, 0x116D] },
+{ source: [0xCFC5], NFC: [0xCFC5], NFD: [0x110F, 0x116D, 0x11A8], NFKC: [0xCFC5], NFKD: [0x110F, 0x116D, 0x11A8] },
+{ source: [0xCFC6], NFC: [0xCFC6], NFD: [0x110F, 0x116D, 0x11A9], NFKC: [0xCFC6], NFKD: [0x110F, 0x116D, 0x11A9] },
+{ source: [0xCFC7], NFC: [0xCFC7], NFD: [0x110F, 0x116D, 0x11AA], NFKC: [0xCFC7], NFKD: [0x110F, 0x116D, 0x11AA] },
+{ source: [0xCFC8], NFC: [0xCFC8], NFD: [0x110F, 0x116D, 0x11AB], NFKC: [0xCFC8], NFKD: [0x110F, 0x116D, 0x11AB] },
+{ source: [0xCFC9], NFC: [0xCFC9], NFD: [0x110F, 0x116D, 0x11AC], NFKC: [0xCFC9], NFKD: [0x110F, 0x116D, 0x11AC] },
+{ source: [0xCFCA], NFC: [0xCFCA], NFD: [0x110F, 0x116D, 0x11AD], NFKC: [0xCFCA], NFKD: [0x110F, 0x116D, 0x11AD] },
+{ source: [0xCFCB], NFC: [0xCFCB], NFD: [0x110F, 0x116D, 0x11AE], NFKC: [0xCFCB], NFKD: [0x110F, 0x116D, 0x11AE] },
+{ source: [0xCFCC], NFC: [0xCFCC], NFD: [0x110F, 0x116D, 0x11AF], NFKC: [0xCFCC], NFKD: [0x110F, 0x116D, 0x11AF] },
+{ source: [0xCFCD], NFC: [0xCFCD], NFD: [0x110F, 0x116D, 0x11B0], NFKC: [0xCFCD], NFKD: [0x110F, 0x116D, 0x11B0] },
+{ source: [0xCFCE], NFC: [0xCFCE], NFD: [0x110F, 0x116D, 0x11B1], NFKC: [0xCFCE], NFKD: [0x110F, 0x116D, 0x11B1] },
+{ source: [0xCFCF], NFC: [0xCFCF], NFD: [0x110F, 0x116D, 0x11B2], NFKC: [0xCFCF], NFKD: [0x110F, 0x116D, 0x11B2] },
+{ source: [0xCFD0], NFC: [0xCFD0], NFD: [0x110F, 0x116D, 0x11B3], NFKC: [0xCFD0], NFKD: [0x110F, 0x116D, 0x11B3] },
+{ source: [0xCFD1], NFC: [0xCFD1], NFD: [0x110F, 0x116D, 0x11B4], NFKC: [0xCFD1], NFKD: [0x110F, 0x116D, 0x11B4] },
+{ source: [0xCFD2], NFC: [0xCFD2], NFD: [0x110F, 0x116D, 0x11B5], NFKC: [0xCFD2], NFKD: [0x110F, 0x116D, 0x11B5] },
+{ source: [0xCFD3], NFC: [0xCFD3], NFD: [0x110F, 0x116D, 0x11B6], NFKC: [0xCFD3], NFKD: [0x110F, 0x116D, 0x11B6] },
+{ source: [0xCFD4], NFC: [0xCFD4], NFD: [0x110F, 0x116D, 0x11B7], NFKC: [0xCFD4], NFKD: [0x110F, 0x116D, 0x11B7] },
+{ source: [0xCFD5], NFC: [0xCFD5], NFD: [0x110F, 0x116D, 0x11B8], NFKC: [0xCFD5], NFKD: [0x110F, 0x116D, 0x11B8] },
+{ source: [0xCFD6], NFC: [0xCFD6], NFD: [0x110F, 0x116D, 0x11B9], NFKC: [0xCFD6], NFKD: [0x110F, 0x116D, 0x11B9] },
+{ source: [0xCFD7], NFC: [0xCFD7], NFD: [0x110F, 0x116D, 0x11BA], NFKC: [0xCFD7], NFKD: [0x110F, 0x116D, 0x11BA] },
+{ source: [0xCFD8], NFC: [0xCFD8], NFD: [0x110F, 0x116D, 0x11BB], NFKC: [0xCFD8], NFKD: [0x110F, 0x116D, 0x11BB] },
+{ source: [0xCFD9], NFC: [0xCFD9], NFD: [0x110F, 0x116D, 0x11BC], NFKC: [0xCFD9], NFKD: [0x110F, 0x116D, 0x11BC] },
+{ source: [0xCFDA], NFC: [0xCFDA], NFD: [0x110F, 0x116D, 0x11BD], NFKC: [0xCFDA], NFKD: [0x110F, 0x116D, 0x11BD] },
+{ source: [0xCFDB], NFC: [0xCFDB], NFD: [0x110F, 0x116D, 0x11BE], NFKC: [0xCFDB], NFKD: [0x110F, 0x116D, 0x11BE] },
+{ source: [0xCFDC], NFC: [0xCFDC], NFD: [0x110F, 0x116D, 0x11BF], NFKC: [0xCFDC], NFKD: [0x110F, 0x116D, 0x11BF] },
+{ source: [0xCFDD], NFC: [0xCFDD], NFD: [0x110F, 0x116D, 0x11C0], NFKC: [0xCFDD], NFKD: [0x110F, 0x116D, 0x11C0] },
+{ source: [0xCFDE], NFC: [0xCFDE], NFD: [0x110F, 0x116D, 0x11C1], NFKC: [0xCFDE], NFKD: [0x110F, 0x116D, 0x11C1] },
+{ source: [0xCFDF], NFC: [0xCFDF], NFD: [0x110F, 0x116D, 0x11C2], NFKC: [0xCFDF], NFKD: [0x110F, 0x116D, 0x11C2] },
+{ source: [0xCFE0], NFC: [0xCFE0], NFD: [0x110F, 0x116E], NFKC: [0xCFE0], NFKD: [0x110F, 0x116E] },
+{ source: [0xCFE1], NFC: [0xCFE1], NFD: [0x110F, 0x116E, 0x11A8], NFKC: [0xCFE1], NFKD: [0x110F, 0x116E, 0x11A8] },
+{ source: [0xCFE2], NFC: [0xCFE2], NFD: [0x110F, 0x116E, 0x11A9], NFKC: [0xCFE2], NFKD: [0x110F, 0x116E, 0x11A9] },
+{ source: [0xCFE3], NFC: [0xCFE3], NFD: [0x110F, 0x116E, 0x11AA], NFKC: [0xCFE3], NFKD: [0x110F, 0x116E, 0x11AA] },
+{ source: [0xCFE4], NFC: [0xCFE4], NFD: [0x110F, 0x116E, 0x11AB], NFKC: [0xCFE4], NFKD: [0x110F, 0x116E, 0x11AB] },
+{ source: [0xCFE5], NFC: [0xCFE5], NFD: [0x110F, 0x116E, 0x11AC], NFKC: [0xCFE5], NFKD: [0x110F, 0x116E, 0x11AC] },
+{ source: [0xCFE6], NFC: [0xCFE6], NFD: [0x110F, 0x116E, 0x11AD], NFKC: [0xCFE6], NFKD: [0x110F, 0x116E, 0x11AD] },
+{ source: [0xCFE7], NFC: [0xCFE7], NFD: [0x110F, 0x116E, 0x11AE], NFKC: [0xCFE7], NFKD: [0x110F, 0x116E, 0x11AE] },
+{ source: [0xCFE8], NFC: [0xCFE8], NFD: [0x110F, 0x116E, 0x11AF], NFKC: [0xCFE8], NFKD: [0x110F, 0x116E, 0x11AF] },
+{ source: [0xCFE9], NFC: [0xCFE9], NFD: [0x110F, 0x116E, 0x11B0], NFKC: [0xCFE9], NFKD: [0x110F, 0x116E, 0x11B0] },
+{ source: [0xCFEA], NFC: [0xCFEA], NFD: [0x110F, 0x116E, 0x11B1], NFKC: [0xCFEA], NFKD: [0x110F, 0x116E, 0x11B1] },
+{ source: [0xCFEB], NFC: [0xCFEB], NFD: [0x110F, 0x116E, 0x11B2], NFKC: [0xCFEB], NFKD: [0x110F, 0x116E, 0x11B2] },
+{ source: [0xCFEC], NFC: [0xCFEC], NFD: [0x110F, 0x116E, 0x11B3], NFKC: [0xCFEC], NFKD: [0x110F, 0x116E, 0x11B3] },
+{ source: [0xCFED], NFC: [0xCFED], NFD: [0x110F, 0x116E, 0x11B4], NFKC: [0xCFED], NFKD: [0x110F, 0x116E, 0x11B4] },
+{ source: [0xCFEE], NFC: [0xCFEE], NFD: [0x110F, 0x116E, 0x11B5], NFKC: [0xCFEE], NFKD: [0x110F, 0x116E, 0x11B5] },
+{ source: [0xCFEF], NFC: [0xCFEF], NFD: [0x110F, 0x116E, 0x11B6], NFKC: [0xCFEF], NFKD: [0x110F, 0x116E, 0x11B6] },
+{ source: [0xCFF0], NFC: [0xCFF0], NFD: [0x110F, 0x116E, 0x11B7], NFKC: [0xCFF0], NFKD: [0x110F, 0x116E, 0x11B7] },
+{ source: [0xCFF1], NFC: [0xCFF1], NFD: [0x110F, 0x116E, 0x11B8], NFKC: [0xCFF1], NFKD: [0x110F, 0x116E, 0x11B8] },
+{ source: [0xCFF2], NFC: [0xCFF2], NFD: [0x110F, 0x116E, 0x11B9], NFKC: [0xCFF2], NFKD: [0x110F, 0x116E, 0x11B9] },
+{ source: [0xCFF3], NFC: [0xCFF3], NFD: [0x110F, 0x116E, 0x11BA], NFKC: [0xCFF3], NFKD: [0x110F, 0x116E, 0x11BA] },
+{ source: [0xCFF4], NFC: [0xCFF4], NFD: [0x110F, 0x116E, 0x11BB], NFKC: [0xCFF4], NFKD: [0x110F, 0x116E, 0x11BB] },
+{ source: [0xCFF5], NFC: [0xCFF5], NFD: [0x110F, 0x116E, 0x11BC], NFKC: [0xCFF5], NFKD: [0x110F, 0x116E, 0x11BC] },
+{ source: [0xCFF6], NFC: [0xCFF6], NFD: [0x110F, 0x116E, 0x11BD], NFKC: [0xCFF6], NFKD: [0x110F, 0x116E, 0x11BD] },
+{ source: [0xCFF7], NFC: [0xCFF7], NFD: [0x110F, 0x116E, 0x11BE], NFKC: [0xCFF7], NFKD: [0x110F, 0x116E, 0x11BE] },
+{ source: [0xCFF8], NFC: [0xCFF8], NFD: [0x110F, 0x116E, 0x11BF], NFKC: [0xCFF8], NFKD: [0x110F, 0x116E, 0x11BF] },
+{ source: [0xCFF9], NFC: [0xCFF9], NFD: [0x110F, 0x116E, 0x11C0], NFKC: [0xCFF9], NFKD: [0x110F, 0x116E, 0x11C0] },
+{ source: [0xCFFA], NFC: [0xCFFA], NFD: [0x110F, 0x116E, 0x11C1], NFKC: [0xCFFA], NFKD: [0x110F, 0x116E, 0x11C1] },
+{ source: [0xCFFB], NFC: [0xCFFB], NFD: [0x110F, 0x116E, 0x11C2], NFKC: [0xCFFB], NFKD: [0x110F, 0x116E, 0x11C2] },
+{ source: [0xCFFC], NFC: [0xCFFC], NFD: [0x110F, 0x116F], NFKC: [0xCFFC], NFKD: [0x110F, 0x116F] },
+{ source: [0xCFFD], NFC: [0xCFFD], NFD: [0x110F, 0x116F, 0x11A8], NFKC: [0xCFFD], NFKD: [0x110F, 0x116F, 0x11A8] },
+{ source: [0xCFFE], NFC: [0xCFFE], NFD: [0x110F, 0x116F, 0x11A9], NFKC: [0xCFFE], NFKD: [0x110F, 0x116F, 0x11A9] },
+{ source: [0xCFFF], NFC: [0xCFFF], NFD: [0x110F, 0x116F, 0x11AA], NFKC: [0xCFFF], NFKD: [0x110F, 0x116F, 0x11AA] },
+{ source: [0xD000], NFC: [0xD000], NFD: [0x110F, 0x116F, 0x11AB], NFKC: [0xD000], NFKD: [0x110F, 0x116F, 0x11AB] },
+{ source: [0xD001], NFC: [0xD001], NFD: [0x110F, 0x116F, 0x11AC], NFKC: [0xD001], NFKD: [0x110F, 0x116F, 0x11AC] },
+{ source: [0xD002], NFC: [0xD002], NFD: [0x110F, 0x116F, 0x11AD], NFKC: [0xD002], NFKD: [0x110F, 0x116F, 0x11AD] },
+{ source: [0xD003], NFC: [0xD003], NFD: [0x110F, 0x116F, 0x11AE], NFKC: [0xD003], NFKD: [0x110F, 0x116F, 0x11AE] },
+{ source: [0xD004], NFC: [0xD004], NFD: [0x110F, 0x116F, 0x11AF], NFKC: [0xD004], NFKD: [0x110F, 0x116F, 0x11AF] },
+{ source: [0xD005], NFC: [0xD005], NFD: [0x110F, 0x116F, 0x11B0], NFKC: [0xD005], NFKD: [0x110F, 0x116F, 0x11B0] },
+{ source: [0xD006], NFC: [0xD006], NFD: [0x110F, 0x116F, 0x11B1], NFKC: [0xD006], NFKD: [0x110F, 0x116F, 0x11B1] },
+{ source: [0xD007], NFC: [0xD007], NFD: [0x110F, 0x116F, 0x11B2], NFKC: [0xD007], NFKD: [0x110F, 0x116F, 0x11B2] },
+{ source: [0xD008], NFC: [0xD008], NFD: [0x110F, 0x116F, 0x11B3], NFKC: [0xD008], NFKD: [0x110F, 0x116F, 0x11B3] },
+{ source: [0xD009], NFC: [0xD009], NFD: [0x110F, 0x116F, 0x11B4], NFKC: [0xD009], NFKD: [0x110F, 0x116F, 0x11B4] },
+{ source: [0xD00A], NFC: [0xD00A], NFD: [0x110F, 0x116F, 0x11B5], NFKC: [0xD00A], NFKD: [0x110F, 0x116F, 0x11B5] },
+{ source: [0xD00B], NFC: [0xD00B], NFD: [0x110F, 0x116F, 0x11B6], NFKC: [0xD00B], NFKD: [0x110F, 0x116F, 0x11B6] },
+{ source: [0xD00C], NFC: [0xD00C], NFD: [0x110F, 0x116F, 0x11B7], NFKC: [0xD00C], NFKD: [0x110F, 0x116F, 0x11B7] },
+{ source: [0xD00D], NFC: [0xD00D], NFD: [0x110F, 0x116F, 0x11B8], NFKC: [0xD00D], NFKD: [0x110F, 0x116F, 0x11B8] },
+{ source: [0xD00E], NFC: [0xD00E], NFD: [0x110F, 0x116F, 0x11B9], NFKC: [0xD00E], NFKD: [0x110F, 0x116F, 0x11B9] },
+{ source: [0xD00F], NFC: [0xD00F], NFD: [0x110F, 0x116F, 0x11BA], NFKC: [0xD00F], NFKD: [0x110F, 0x116F, 0x11BA] },
+{ source: [0xD010], NFC: [0xD010], NFD: [0x110F, 0x116F, 0x11BB], NFKC: [0xD010], NFKD: [0x110F, 0x116F, 0x11BB] },
+{ source: [0xD011], NFC: [0xD011], NFD: [0x110F, 0x116F, 0x11BC], NFKC: [0xD011], NFKD: [0x110F, 0x116F, 0x11BC] },
+{ source: [0xD012], NFC: [0xD012], NFD: [0x110F, 0x116F, 0x11BD], NFKC: [0xD012], NFKD: [0x110F, 0x116F, 0x11BD] },
+{ source: [0xD013], NFC: [0xD013], NFD: [0x110F, 0x116F, 0x11BE], NFKC: [0xD013], NFKD: [0x110F, 0x116F, 0x11BE] },
+{ source: [0xD014], NFC: [0xD014], NFD: [0x110F, 0x116F, 0x11BF], NFKC: [0xD014], NFKD: [0x110F, 0x116F, 0x11BF] },
+{ source: [0xD015], NFC: [0xD015], NFD: [0x110F, 0x116F, 0x11C0], NFKC: [0xD015], NFKD: [0x110F, 0x116F, 0x11C0] },
+{ source: [0xD016], NFC: [0xD016], NFD: [0x110F, 0x116F, 0x11C1], NFKC: [0xD016], NFKD: [0x110F, 0x116F, 0x11C1] },
+{ source: [0xD017], NFC: [0xD017], NFD: [0x110F, 0x116F, 0x11C2], NFKC: [0xD017], NFKD: [0x110F, 0x116F, 0x11C2] },
+{ source: [0xD018], NFC: [0xD018], NFD: [0x110F, 0x1170], NFKC: [0xD018], NFKD: [0x110F, 0x1170] },
+{ source: [0xD019], NFC: [0xD019], NFD: [0x110F, 0x1170, 0x11A8], NFKC: [0xD019], NFKD: [0x110F, 0x1170, 0x11A8] },
+{ source: [0xD01A], NFC: [0xD01A], NFD: [0x110F, 0x1170, 0x11A9], NFKC: [0xD01A], NFKD: [0x110F, 0x1170, 0x11A9] },
+{ source: [0xD01B], NFC: [0xD01B], NFD: [0x110F, 0x1170, 0x11AA], NFKC: [0xD01B], NFKD: [0x110F, 0x1170, 0x11AA] },
+{ source: [0xD01C], NFC: [0xD01C], NFD: [0x110F, 0x1170, 0x11AB], NFKC: [0xD01C], NFKD: [0x110F, 0x1170, 0x11AB] },
+{ source: [0xD01D], NFC: [0xD01D], NFD: [0x110F, 0x1170, 0x11AC], NFKC: [0xD01D], NFKD: [0x110F, 0x1170, 0x11AC] },
+{ source: [0xD01E], NFC: [0xD01E], NFD: [0x110F, 0x1170, 0x11AD], NFKC: [0xD01E], NFKD: [0x110F, 0x1170, 0x11AD] },
+{ source: [0xD01F], NFC: [0xD01F], NFD: [0x110F, 0x1170, 0x11AE], NFKC: [0xD01F], NFKD: [0x110F, 0x1170, 0x11AE] },
+{ source: [0xD020], NFC: [0xD020], NFD: [0x110F, 0x1170, 0x11AF], NFKC: [0xD020], NFKD: [0x110F, 0x1170, 0x11AF] },
+{ source: [0xD021], NFC: [0xD021], NFD: [0x110F, 0x1170, 0x11B0], NFKC: [0xD021], NFKD: [0x110F, 0x1170, 0x11B0] },
+{ source: [0xD022], NFC: [0xD022], NFD: [0x110F, 0x1170, 0x11B1], NFKC: [0xD022], NFKD: [0x110F, 0x1170, 0x11B1] },
+{ source: [0xD023], NFC: [0xD023], NFD: [0x110F, 0x1170, 0x11B2], NFKC: [0xD023], NFKD: [0x110F, 0x1170, 0x11B2] },
+{ source: [0xD024], NFC: [0xD024], NFD: [0x110F, 0x1170, 0x11B3], NFKC: [0xD024], NFKD: [0x110F, 0x1170, 0x11B3] },
+{ source: [0xD025], NFC: [0xD025], NFD: [0x110F, 0x1170, 0x11B4], NFKC: [0xD025], NFKD: [0x110F, 0x1170, 0x11B4] },
+{ source: [0xD026], NFC: [0xD026], NFD: [0x110F, 0x1170, 0x11B5], NFKC: [0xD026], NFKD: [0x110F, 0x1170, 0x11B5] },
+{ source: [0xD027], NFC: [0xD027], NFD: [0x110F, 0x1170, 0x11B6], NFKC: [0xD027], NFKD: [0x110F, 0x1170, 0x11B6] },
+{ source: [0xD028], NFC: [0xD028], NFD: [0x110F, 0x1170, 0x11B7], NFKC: [0xD028], NFKD: [0x110F, 0x1170, 0x11B7] },
+{ source: [0xD029], NFC: [0xD029], NFD: [0x110F, 0x1170, 0x11B8], NFKC: [0xD029], NFKD: [0x110F, 0x1170, 0x11B8] },
+{ source: [0xD02A], NFC: [0xD02A], NFD: [0x110F, 0x1170, 0x11B9], NFKC: [0xD02A], NFKD: [0x110F, 0x1170, 0x11B9] },
+{ source: [0xD02B], NFC: [0xD02B], NFD: [0x110F, 0x1170, 0x11BA], NFKC: [0xD02B], NFKD: [0x110F, 0x1170, 0x11BA] },
+{ source: [0xD02C], NFC: [0xD02C], NFD: [0x110F, 0x1170, 0x11BB], NFKC: [0xD02C], NFKD: [0x110F, 0x1170, 0x11BB] },
+{ source: [0xD02D], NFC: [0xD02D], NFD: [0x110F, 0x1170, 0x11BC], NFKC: [0xD02D], NFKD: [0x110F, 0x1170, 0x11BC] },
+{ source: [0xD02E], NFC: [0xD02E], NFD: [0x110F, 0x1170, 0x11BD], NFKC: [0xD02E], NFKD: [0x110F, 0x1170, 0x11BD] },
+{ source: [0xD02F], NFC: [0xD02F], NFD: [0x110F, 0x1170, 0x11BE], NFKC: [0xD02F], NFKD: [0x110F, 0x1170, 0x11BE] },
+{ source: [0xD030], NFC: [0xD030], NFD: [0x110F, 0x1170, 0x11BF], NFKC: [0xD030], NFKD: [0x110F, 0x1170, 0x11BF] },
+{ source: [0xD031], NFC: [0xD031], NFD: [0x110F, 0x1170, 0x11C0], NFKC: [0xD031], NFKD: [0x110F, 0x1170, 0x11C0] },
+{ source: [0xD032], NFC: [0xD032], NFD: [0x110F, 0x1170, 0x11C1], NFKC: [0xD032], NFKD: [0x110F, 0x1170, 0x11C1] },
+{ source: [0xD033], NFC: [0xD033], NFD: [0x110F, 0x1170, 0x11C2], NFKC: [0xD033], NFKD: [0x110F, 0x1170, 0x11C2] },
+{ source: [0xD034], NFC: [0xD034], NFD: [0x110F, 0x1171], NFKC: [0xD034], NFKD: [0x110F, 0x1171] },
+{ source: [0xD035], NFC: [0xD035], NFD: [0x110F, 0x1171, 0x11A8], NFKC: [0xD035], NFKD: [0x110F, 0x1171, 0x11A8] },
+{ source: [0xD036], NFC: [0xD036], NFD: [0x110F, 0x1171, 0x11A9], NFKC: [0xD036], NFKD: [0x110F, 0x1171, 0x11A9] },
+{ source: [0xD037], NFC: [0xD037], NFD: [0x110F, 0x1171, 0x11AA], NFKC: [0xD037], NFKD: [0x110F, 0x1171, 0x11AA] },
+{ source: [0xD038], NFC: [0xD038], NFD: [0x110F, 0x1171, 0x11AB], NFKC: [0xD038], NFKD: [0x110F, 0x1171, 0x11AB] },
+{ source: [0xD039], NFC: [0xD039], NFD: [0x110F, 0x1171, 0x11AC], NFKC: [0xD039], NFKD: [0x110F, 0x1171, 0x11AC] },
+{ source: [0xD03A], NFC: [0xD03A], NFD: [0x110F, 0x1171, 0x11AD], NFKC: [0xD03A], NFKD: [0x110F, 0x1171, 0x11AD] },
+{ source: [0xD03B], NFC: [0xD03B], NFD: [0x110F, 0x1171, 0x11AE], NFKC: [0xD03B], NFKD: [0x110F, 0x1171, 0x11AE] },
+{ source: [0xD03C], NFC: [0xD03C], NFD: [0x110F, 0x1171, 0x11AF], NFKC: [0xD03C], NFKD: [0x110F, 0x1171, 0x11AF] },
+{ source: [0xD03D], NFC: [0xD03D], NFD: [0x110F, 0x1171, 0x11B0], NFKC: [0xD03D], NFKD: [0x110F, 0x1171, 0x11B0] },
+{ source: [0xD03E], NFC: [0xD03E], NFD: [0x110F, 0x1171, 0x11B1], NFKC: [0xD03E], NFKD: [0x110F, 0x1171, 0x11B1] },
+{ source: [0xD03F], NFC: [0xD03F], NFD: [0x110F, 0x1171, 0x11B2], NFKC: [0xD03F], NFKD: [0x110F, 0x1171, 0x11B2] },
+{ source: [0xD040], NFC: [0xD040], NFD: [0x110F, 0x1171, 0x11B3], NFKC: [0xD040], NFKD: [0x110F, 0x1171, 0x11B3] },
+{ source: [0xD041], NFC: [0xD041], NFD: [0x110F, 0x1171, 0x11B4], NFKC: [0xD041], NFKD: [0x110F, 0x1171, 0x11B4] },
+{ source: [0xD042], NFC: [0xD042], NFD: [0x110F, 0x1171, 0x11B5], NFKC: [0xD042], NFKD: [0x110F, 0x1171, 0x11B5] },
+{ source: [0xD043], NFC: [0xD043], NFD: [0x110F, 0x1171, 0x11B6], NFKC: [0xD043], NFKD: [0x110F, 0x1171, 0x11B6] },
+{ source: [0xD044], NFC: [0xD044], NFD: [0x110F, 0x1171, 0x11B7], NFKC: [0xD044], NFKD: [0x110F, 0x1171, 0x11B7] },
+{ source: [0xD045], NFC: [0xD045], NFD: [0x110F, 0x1171, 0x11B8], NFKC: [0xD045], NFKD: [0x110F, 0x1171, 0x11B8] },
+{ source: [0xD046], NFC: [0xD046], NFD: [0x110F, 0x1171, 0x11B9], NFKC: [0xD046], NFKD: [0x110F, 0x1171, 0x11B9] },
+{ source: [0xD047], NFC: [0xD047], NFD: [0x110F, 0x1171, 0x11BA], NFKC: [0xD047], NFKD: [0x110F, 0x1171, 0x11BA] },
+{ source: [0xD048], NFC: [0xD048], NFD: [0x110F, 0x1171, 0x11BB], NFKC: [0xD048], NFKD: [0x110F, 0x1171, 0x11BB] },
+{ source: [0xD049], NFC: [0xD049], NFD: [0x110F, 0x1171, 0x11BC], NFKC: [0xD049], NFKD: [0x110F, 0x1171, 0x11BC] },
+{ source: [0xD04A], NFC: [0xD04A], NFD: [0x110F, 0x1171, 0x11BD], NFKC: [0xD04A], NFKD: [0x110F, 0x1171, 0x11BD] },
+{ source: [0xD04B], NFC: [0xD04B], NFD: [0x110F, 0x1171, 0x11BE], NFKC: [0xD04B], NFKD: [0x110F, 0x1171, 0x11BE] },
+{ source: [0xD04C], NFC: [0xD04C], NFD: [0x110F, 0x1171, 0x11BF], NFKC: [0xD04C], NFKD: [0x110F, 0x1171, 0x11BF] },
+{ source: [0xD04D], NFC: [0xD04D], NFD: [0x110F, 0x1171, 0x11C0], NFKC: [0xD04D], NFKD: [0x110F, 0x1171, 0x11C0] },
+{ source: [0xD04E], NFC: [0xD04E], NFD: [0x110F, 0x1171, 0x11C1], NFKC: [0xD04E], NFKD: [0x110F, 0x1171, 0x11C1] },
+{ source: [0xD04F], NFC: [0xD04F], NFD: [0x110F, 0x1171, 0x11C2], NFKC: [0xD04F], NFKD: [0x110F, 0x1171, 0x11C2] },
+{ source: [0xD050], NFC: [0xD050], NFD: [0x110F, 0x1172], NFKC: [0xD050], NFKD: [0x110F, 0x1172] },
+{ source: [0xD051], NFC: [0xD051], NFD: [0x110F, 0x1172, 0x11A8], NFKC: [0xD051], NFKD: [0x110F, 0x1172, 0x11A8] },
+{ source: [0xD052], NFC: [0xD052], NFD: [0x110F, 0x1172, 0x11A9], NFKC: [0xD052], NFKD: [0x110F, 0x1172, 0x11A9] },
+{ source: [0xD053], NFC: [0xD053], NFD: [0x110F, 0x1172, 0x11AA], NFKC: [0xD053], NFKD: [0x110F, 0x1172, 0x11AA] },
+{ source: [0xD054], NFC: [0xD054], NFD: [0x110F, 0x1172, 0x11AB], NFKC: [0xD054], NFKD: [0x110F, 0x1172, 0x11AB] },
+{ source: [0xD055], NFC: [0xD055], NFD: [0x110F, 0x1172, 0x11AC], NFKC: [0xD055], NFKD: [0x110F, 0x1172, 0x11AC] },
+{ source: [0xD056], NFC: [0xD056], NFD: [0x110F, 0x1172, 0x11AD], NFKC: [0xD056], NFKD: [0x110F, 0x1172, 0x11AD] },
+{ source: [0xD057], NFC: [0xD057], NFD: [0x110F, 0x1172, 0x11AE], NFKC: [0xD057], NFKD: [0x110F, 0x1172, 0x11AE] },
+{ source: [0xD058], NFC: [0xD058], NFD: [0x110F, 0x1172, 0x11AF], NFKC: [0xD058], NFKD: [0x110F, 0x1172, 0x11AF] },
+{ source: [0xD059], NFC: [0xD059], NFD: [0x110F, 0x1172, 0x11B0], NFKC: [0xD059], NFKD: [0x110F, 0x1172, 0x11B0] },
+{ source: [0xD05A], NFC: [0xD05A], NFD: [0x110F, 0x1172, 0x11B1], NFKC: [0xD05A], NFKD: [0x110F, 0x1172, 0x11B1] },
+{ source: [0xD05B], NFC: [0xD05B], NFD: [0x110F, 0x1172, 0x11B2], NFKC: [0xD05B], NFKD: [0x110F, 0x1172, 0x11B2] },
+{ source: [0xD05C], NFC: [0xD05C], NFD: [0x110F, 0x1172, 0x11B3], NFKC: [0xD05C], NFKD: [0x110F, 0x1172, 0x11B3] },
+{ source: [0xD05D], NFC: [0xD05D], NFD: [0x110F, 0x1172, 0x11B4], NFKC: [0xD05D], NFKD: [0x110F, 0x1172, 0x11B4] },
+{ source: [0xD05E], NFC: [0xD05E], NFD: [0x110F, 0x1172, 0x11B5], NFKC: [0xD05E], NFKD: [0x110F, 0x1172, 0x11B5] },
+{ source: [0xD05F], NFC: [0xD05F], NFD: [0x110F, 0x1172, 0x11B6], NFKC: [0xD05F], NFKD: [0x110F, 0x1172, 0x11B6] },
+{ source: [0xD060], NFC: [0xD060], NFD: [0x110F, 0x1172, 0x11B7], NFKC: [0xD060], NFKD: [0x110F, 0x1172, 0x11B7] },
+{ source: [0xD061], NFC: [0xD061], NFD: [0x110F, 0x1172, 0x11B8], NFKC: [0xD061], NFKD: [0x110F, 0x1172, 0x11B8] },
+{ source: [0xD062], NFC: [0xD062], NFD: [0x110F, 0x1172, 0x11B9], NFKC: [0xD062], NFKD: [0x110F, 0x1172, 0x11B9] },
+{ source: [0xD063], NFC: [0xD063], NFD: [0x110F, 0x1172, 0x11BA], NFKC: [0xD063], NFKD: [0x110F, 0x1172, 0x11BA] },
+{ source: [0xD064], NFC: [0xD064], NFD: [0x110F, 0x1172, 0x11BB], NFKC: [0xD064], NFKD: [0x110F, 0x1172, 0x11BB] },
+{ source: [0xD065], NFC: [0xD065], NFD: [0x110F, 0x1172, 0x11BC], NFKC: [0xD065], NFKD: [0x110F, 0x1172, 0x11BC] },
+{ source: [0xD066], NFC: [0xD066], NFD: [0x110F, 0x1172, 0x11BD], NFKC: [0xD066], NFKD: [0x110F, 0x1172, 0x11BD] },
+{ source: [0xD067], NFC: [0xD067], NFD: [0x110F, 0x1172, 0x11BE], NFKC: [0xD067], NFKD: [0x110F, 0x1172, 0x11BE] },
+{ source: [0xD068], NFC: [0xD068], NFD: [0x110F, 0x1172, 0x11BF], NFKC: [0xD068], NFKD: [0x110F, 0x1172, 0x11BF] },
+{ source: [0xD069], NFC: [0xD069], NFD: [0x110F, 0x1172, 0x11C0], NFKC: [0xD069], NFKD: [0x110F, 0x1172, 0x11C0] },
+{ source: [0xD06A], NFC: [0xD06A], NFD: [0x110F, 0x1172, 0x11C1], NFKC: [0xD06A], NFKD: [0x110F, 0x1172, 0x11C1] },
+{ source: [0xD06B], NFC: [0xD06B], NFD: [0x110F, 0x1172, 0x11C2], NFKC: [0xD06B], NFKD: [0x110F, 0x1172, 0x11C2] },
+{ source: [0xD06C], NFC: [0xD06C], NFD: [0x110F, 0x1173], NFKC: [0xD06C], NFKD: [0x110F, 0x1173] },
+{ source: [0xD06D], NFC: [0xD06D], NFD: [0x110F, 0x1173, 0x11A8], NFKC: [0xD06D], NFKD: [0x110F, 0x1173, 0x11A8] },
+{ source: [0xD06E], NFC: [0xD06E], NFD: [0x110F, 0x1173, 0x11A9], NFKC: [0xD06E], NFKD: [0x110F, 0x1173, 0x11A9] },
+{ source: [0xD06F], NFC: [0xD06F], NFD: [0x110F, 0x1173, 0x11AA], NFKC: [0xD06F], NFKD: [0x110F, 0x1173, 0x11AA] },
+{ source: [0xD070], NFC: [0xD070], NFD: [0x110F, 0x1173, 0x11AB], NFKC: [0xD070], NFKD: [0x110F, 0x1173, 0x11AB] },
+{ source: [0xD071], NFC: [0xD071], NFD: [0x110F, 0x1173, 0x11AC], NFKC: [0xD071], NFKD: [0x110F, 0x1173, 0x11AC] },
+{ source: [0xD072], NFC: [0xD072], NFD: [0x110F, 0x1173, 0x11AD], NFKC: [0xD072], NFKD: [0x110F, 0x1173, 0x11AD] },
+{ source: [0xD073], NFC: [0xD073], NFD: [0x110F, 0x1173, 0x11AE], NFKC: [0xD073], NFKD: [0x110F, 0x1173, 0x11AE] },
+{ source: [0xD074], NFC: [0xD074], NFD: [0x110F, 0x1173, 0x11AF], NFKC: [0xD074], NFKD: [0x110F, 0x1173, 0x11AF] },
+{ source: [0xD075], NFC: [0xD075], NFD: [0x110F, 0x1173, 0x11B0], NFKC: [0xD075], NFKD: [0x110F, 0x1173, 0x11B0] },
+{ source: [0xD076], NFC: [0xD076], NFD: [0x110F, 0x1173, 0x11B1], NFKC: [0xD076], NFKD: [0x110F, 0x1173, 0x11B1] },
+{ source: [0xD077], NFC: [0xD077], NFD: [0x110F, 0x1173, 0x11B2], NFKC: [0xD077], NFKD: [0x110F, 0x1173, 0x11B2] },
+{ source: [0xD078], NFC: [0xD078], NFD: [0x110F, 0x1173, 0x11B3], NFKC: [0xD078], NFKD: [0x110F, 0x1173, 0x11B3] },
+{ source: [0xD079], NFC: [0xD079], NFD: [0x110F, 0x1173, 0x11B4], NFKC: [0xD079], NFKD: [0x110F, 0x1173, 0x11B4] },
+{ source: [0xD07A], NFC: [0xD07A], NFD: [0x110F, 0x1173, 0x11B5], NFKC: [0xD07A], NFKD: [0x110F, 0x1173, 0x11B5] },
+{ source: [0xD07B], NFC: [0xD07B], NFD: [0x110F, 0x1173, 0x11B6], NFKC: [0xD07B], NFKD: [0x110F, 0x1173, 0x11B6] },
+{ source: [0xD07C], NFC: [0xD07C], NFD: [0x110F, 0x1173, 0x11B7], NFKC: [0xD07C], NFKD: [0x110F, 0x1173, 0x11B7] },
+{ source: [0xD07D], NFC: [0xD07D], NFD: [0x110F, 0x1173, 0x11B8], NFKC: [0xD07D], NFKD: [0x110F, 0x1173, 0x11B8] },
+{ source: [0xD07E], NFC: [0xD07E], NFD: [0x110F, 0x1173, 0x11B9], NFKC: [0xD07E], NFKD: [0x110F, 0x1173, 0x11B9] },
+{ source: [0xD07F], NFC: [0xD07F], NFD: [0x110F, 0x1173, 0x11BA], NFKC: [0xD07F], NFKD: [0x110F, 0x1173, 0x11BA] },
+{ source: [0xD080], NFC: [0xD080], NFD: [0x110F, 0x1173, 0x11BB], NFKC: [0xD080], NFKD: [0x110F, 0x1173, 0x11BB] },
+{ source: [0xD081], NFC: [0xD081], NFD: [0x110F, 0x1173, 0x11BC], NFKC: [0xD081], NFKD: [0x110F, 0x1173, 0x11BC] },
+{ source: [0xD082], NFC: [0xD082], NFD: [0x110F, 0x1173, 0x11BD], NFKC: [0xD082], NFKD: [0x110F, 0x1173, 0x11BD] },
+{ source: [0xD083], NFC: [0xD083], NFD: [0x110F, 0x1173, 0x11BE], NFKC: [0xD083], NFKD: [0x110F, 0x1173, 0x11BE] },
+{ source: [0xD084], NFC: [0xD084], NFD: [0x110F, 0x1173, 0x11BF], NFKC: [0xD084], NFKD: [0x110F, 0x1173, 0x11BF] },
+{ source: [0xD085], NFC: [0xD085], NFD: [0x110F, 0x1173, 0x11C0], NFKC: [0xD085], NFKD: [0x110F, 0x1173, 0x11C0] },
+{ source: [0xD086], NFC: [0xD086], NFD: [0x110F, 0x1173, 0x11C1], NFKC: [0xD086], NFKD: [0x110F, 0x1173, 0x11C1] },
+{ source: [0xD087], NFC: [0xD087], NFD: [0x110F, 0x1173, 0x11C2], NFKC: [0xD087], NFKD: [0x110F, 0x1173, 0x11C2] },
+{ source: [0xD088], NFC: [0xD088], NFD: [0x110F, 0x1174], NFKC: [0xD088], NFKD: [0x110F, 0x1174] },
+{ source: [0xD089], NFC: [0xD089], NFD: [0x110F, 0x1174, 0x11A8], NFKC: [0xD089], NFKD: [0x110F, 0x1174, 0x11A8] },
+{ source: [0xD08A], NFC: [0xD08A], NFD: [0x110F, 0x1174, 0x11A9], NFKC: [0xD08A], NFKD: [0x110F, 0x1174, 0x11A9] },
+{ source: [0xD08B], NFC: [0xD08B], NFD: [0x110F, 0x1174, 0x11AA], NFKC: [0xD08B], NFKD: [0x110F, 0x1174, 0x11AA] },
+{ source: [0xD08C], NFC: [0xD08C], NFD: [0x110F, 0x1174, 0x11AB], NFKC: [0xD08C], NFKD: [0x110F, 0x1174, 0x11AB] },
+{ source: [0xD08D], NFC: [0xD08D], NFD: [0x110F, 0x1174, 0x11AC], NFKC: [0xD08D], NFKD: [0x110F, 0x1174, 0x11AC] },
+{ source: [0xD08E], NFC: [0xD08E], NFD: [0x110F, 0x1174, 0x11AD], NFKC: [0xD08E], NFKD: [0x110F, 0x1174, 0x11AD] },
+{ source: [0xD08F], NFC: [0xD08F], NFD: [0x110F, 0x1174, 0x11AE], NFKC: [0xD08F], NFKD: [0x110F, 0x1174, 0x11AE] },
+{ source: [0xD090], NFC: [0xD090], NFD: [0x110F, 0x1174, 0x11AF], NFKC: [0xD090], NFKD: [0x110F, 0x1174, 0x11AF] },
+{ source: [0xD091], NFC: [0xD091], NFD: [0x110F, 0x1174, 0x11B0], NFKC: [0xD091], NFKD: [0x110F, 0x1174, 0x11B0] },
+{ source: [0xD092], NFC: [0xD092], NFD: [0x110F, 0x1174, 0x11B1], NFKC: [0xD092], NFKD: [0x110F, 0x1174, 0x11B1] },
+{ source: [0xD093], NFC: [0xD093], NFD: [0x110F, 0x1174, 0x11B2], NFKC: [0xD093], NFKD: [0x110F, 0x1174, 0x11B2] },
+{ source: [0xD094], NFC: [0xD094], NFD: [0x110F, 0x1174, 0x11B3], NFKC: [0xD094], NFKD: [0x110F, 0x1174, 0x11B3] },
+{ source: [0xD095], NFC: [0xD095], NFD: [0x110F, 0x1174, 0x11B4], NFKC: [0xD095], NFKD: [0x110F, 0x1174, 0x11B4] },
+{ source: [0xD096], NFC: [0xD096], NFD: [0x110F, 0x1174, 0x11B5], NFKC: [0xD096], NFKD: [0x110F, 0x1174, 0x11B5] },
+{ source: [0xD097], NFC: [0xD097], NFD: [0x110F, 0x1174, 0x11B6], NFKC: [0xD097], NFKD: [0x110F, 0x1174, 0x11B6] },
+{ source: [0xD098], NFC: [0xD098], NFD: [0x110F, 0x1174, 0x11B7], NFKC: [0xD098], NFKD: [0x110F, 0x1174, 0x11B7] },
+{ source: [0xD099], NFC: [0xD099], NFD: [0x110F, 0x1174, 0x11B8], NFKC: [0xD099], NFKD: [0x110F, 0x1174, 0x11B8] },
+{ source: [0xD09A], NFC: [0xD09A], NFD: [0x110F, 0x1174, 0x11B9], NFKC: [0xD09A], NFKD: [0x110F, 0x1174, 0x11B9] },
+{ source: [0xD09B], NFC: [0xD09B], NFD: [0x110F, 0x1174, 0x11BA], NFKC: [0xD09B], NFKD: [0x110F, 0x1174, 0x11BA] },
+{ source: [0xD09C], NFC: [0xD09C], NFD: [0x110F, 0x1174, 0x11BB], NFKC: [0xD09C], NFKD: [0x110F, 0x1174, 0x11BB] },
+{ source: [0xD09D], NFC: [0xD09D], NFD: [0x110F, 0x1174, 0x11BC], NFKC: [0xD09D], NFKD: [0x110F, 0x1174, 0x11BC] },
+{ source: [0xD09E], NFC: [0xD09E], NFD: [0x110F, 0x1174, 0x11BD], NFKC: [0xD09E], NFKD: [0x110F, 0x1174, 0x11BD] },
+{ source: [0xD09F], NFC: [0xD09F], NFD: [0x110F, 0x1174, 0x11BE], NFKC: [0xD09F], NFKD: [0x110F, 0x1174, 0x11BE] },
+{ source: [0xD0A0], NFC: [0xD0A0], NFD: [0x110F, 0x1174, 0x11BF], NFKC: [0xD0A0], NFKD: [0x110F, 0x1174, 0x11BF] },
+{ source: [0xD0A1], NFC: [0xD0A1], NFD: [0x110F, 0x1174, 0x11C0], NFKC: [0xD0A1], NFKD: [0x110F, 0x1174, 0x11C0] },
+{ source: [0xD0A2], NFC: [0xD0A2], NFD: [0x110F, 0x1174, 0x11C1], NFKC: [0xD0A2], NFKD: [0x110F, 0x1174, 0x11C1] },
+{ source: [0xD0A3], NFC: [0xD0A3], NFD: [0x110F, 0x1174, 0x11C2], NFKC: [0xD0A3], NFKD: [0x110F, 0x1174, 0x11C2] },
+{ source: [0xD0A4], NFC: [0xD0A4], NFD: [0x110F, 0x1175], NFKC: [0xD0A4], NFKD: [0x110F, 0x1175] },
+{ source: [0xD0A5], NFC: [0xD0A5], NFD: [0x110F, 0x1175, 0x11A8], NFKC: [0xD0A5], NFKD: [0x110F, 0x1175, 0x11A8] },
+{ source: [0xD0A6], NFC: [0xD0A6], NFD: [0x110F, 0x1175, 0x11A9], NFKC: [0xD0A6], NFKD: [0x110F, 0x1175, 0x11A9] },
+{ source: [0xD0A7], NFC: [0xD0A7], NFD: [0x110F, 0x1175, 0x11AA], NFKC: [0xD0A7], NFKD: [0x110F, 0x1175, 0x11AA] },
+{ source: [0xD0A8], NFC: [0xD0A8], NFD: [0x110F, 0x1175, 0x11AB], NFKC: [0xD0A8], NFKD: [0x110F, 0x1175, 0x11AB] },
+{ source: [0xD0A9], NFC: [0xD0A9], NFD: [0x110F, 0x1175, 0x11AC], NFKC: [0xD0A9], NFKD: [0x110F, 0x1175, 0x11AC] },
+{ source: [0xD0AA], NFC: [0xD0AA], NFD: [0x110F, 0x1175, 0x11AD], NFKC: [0xD0AA], NFKD: [0x110F, 0x1175, 0x11AD] },
+{ source: [0xD0AB], NFC: [0xD0AB], NFD: [0x110F, 0x1175, 0x11AE], NFKC: [0xD0AB], NFKD: [0x110F, 0x1175, 0x11AE] },
+{ source: [0xD0AC], NFC: [0xD0AC], NFD: [0x110F, 0x1175, 0x11AF], NFKC: [0xD0AC], NFKD: [0x110F, 0x1175, 0x11AF] },
+{ source: [0xD0AD], NFC: [0xD0AD], NFD: [0x110F, 0x1175, 0x11B0], NFKC: [0xD0AD], NFKD: [0x110F, 0x1175, 0x11B0] },
+{ source: [0xD0AE], NFC: [0xD0AE], NFD: [0x110F, 0x1175, 0x11B1], NFKC: [0xD0AE], NFKD: [0x110F, 0x1175, 0x11B1] },
+{ source: [0xD0AF], NFC: [0xD0AF], NFD: [0x110F, 0x1175, 0x11B2], NFKC: [0xD0AF], NFKD: [0x110F, 0x1175, 0x11B2] },
+{ source: [0xD0B0], NFC: [0xD0B0], NFD: [0x110F, 0x1175, 0x11B3], NFKC: [0xD0B0], NFKD: [0x110F, 0x1175, 0x11B3] },
+{ source: [0xD0B1], NFC: [0xD0B1], NFD: [0x110F, 0x1175, 0x11B4], NFKC: [0xD0B1], NFKD: [0x110F, 0x1175, 0x11B4] },
+{ source: [0xD0B2], NFC: [0xD0B2], NFD: [0x110F, 0x1175, 0x11B5], NFKC: [0xD0B2], NFKD: [0x110F, 0x1175, 0x11B5] },
+{ source: [0xD0B3], NFC: [0xD0B3], NFD: [0x110F, 0x1175, 0x11B6], NFKC: [0xD0B3], NFKD: [0x110F, 0x1175, 0x11B6] },
+{ source: [0xD0B4], NFC: [0xD0B4], NFD: [0x110F, 0x1175, 0x11B7], NFKC: [0xD0B4], NFKD: [0x110F, 0x1175, 0x11B7] },
+{ source: [0xD0B5], NFC: [0xD0B5], NFD: [0x110F, 0x1175, 0x11B8], NFKC: [0xD0B5], NFKD: [0x110F, 0x1175, 0x11B8] },
+{ source: [0xD0B6], NFC: [0xD0B6], NFD: [0x110F, 0x1175, 0x11B9], NFKC: [0xD0B6], NFKD: [0x110F, 0x1175, 0x11B9] },
+{ source: [0xD0B7], NFC: [0xD0B7], NFD: [0x110F, 0x1175, 0x11BA], NFKC: [0xD0B7], NFKD: [0x110F, 0x1175, 0x11BA] },
+{ source: [0xD0B8], NFC: [0xD0B8], NFD: [0x110F, 0x1175, 0x11BB], NFKC: [0xD0B8], NFKD: [0x110F, 0x1175, 0x11BB] },
+{ source: [0xD0B9], NFC: [0xD0B9], NFD: [0x110F, 0x1175, 0x11BC], NFKC: [0xD0B9], NFKD: [0x110F, 0x1175, 0x11BC] },
+{ source: [0xD0BA], NFC: [0xD0BA], NFD: [0x110F, 0x1175, 0x11BD], NFKC: [0xD0BA], NFKD: [0x110F, 0x1175, 0x11BD] },
+{ source: [0xD0BB], NFC: [0xD0BB], NFD: [0x110F, 0x1175, 0x11BE], NFKC: [0xD0BB], NFKD: [0x110F, 0x1175, 0x11BE] },
+{ source: [0xD0BC], NFC: [0xD0BC], NFD: [0x110F, 0x1175, 0x11BF], NFKC: [0xD0BC], NFKD: [0x110F, 0x1175, 0x11BF] },
+{ source: [0xD0BD], NFC: [0xD0BD], NFD: [0x110F, 0x1175, 0x11C0], NFKC: [0xD0BD], NFKD: [0x110F, 0x1175, 0x11C0] },
+{ source: [0xD0BE], NFC: [0xD0BE], NFD: [0x110F, 0x1175, 0x11C1], NFKC: [0xD0BE], NFKD: [0x110F, 0x1175, 0x11C1] },
+{ source: [0xD0BF], NFC: [0xD0BF], NFD: [0x110F, 0x1175, 0x11C2], NFKC: [0xD0BF], NFKD: [0x110F, 0x1175, 0x11C2] },
+{ source: [0xD0C0], NFC: [0xD0C0], NFD: [0x1110, 0x1161], NFKC: [0xD0C0], NFKD: [0x1110, 0x1161] },
+{ source: [0xD0C1], NFC: [0xD0C1], NFD: [0x1110, 0x1161, 0x11A8], NFKC: [0xD0C1], NFKD: [0x1110, 0x1161, 0x11A8] },
+{ source: [0xD0C2], NFC: [0xD0C2], NFD: [0x1110, 0x1161, 0x11A9], NFKC: [0xD0C2], NFKD: [0x1110, 0x1161, 0x11A9] },
+{ source: [0xD0C3], NFC: [0xD0C3], NFD: [0x1110, 0x1161, 0x11AA], NFKC: [0xD0C3], NFKD: [0x1110, 0x1161, 0x11AA] },
+{ source: [0xD0C4], NFC: [0xD0C4], NFD: [0x1110, 0x1161, 0x11AB], NFKC: [0xD0C4], NFKD: [0x1110, 0x1161, 0x11AB] },
+{ source: [0xD0C5], NFC: [0xD0C5], NFD: [0x1110, 0x1161, 0x11AC], NFKC: [0xD0C5], NFKD: [0x1110, 0x1161, 0x11AC] },
+{ source: [0xD0C6], NFC: [0xD0C6], NFD: [0x1110, 0x1161, 0x11AD], NFKC: [0xD0C6], NFKD: [0x1110, 0x1161, 0x11AD] },
+{ source: [0xD0C7], NFC: [0xD0C7], NFD: [0x1110, 0x1161, 0x11AE], NFKC: [0xD0C7], NFKD: [0x1110, 0x1161, 0x11AE] },
+{ source: [0xD0C8], NFC: [0xD0C8], NFD: [0x1110, 0x1161, 0x11AF], NFKC: [0xD0C8], NFKD: [0x1110, 0x1161, 0x11AF] },
+{ source: [0xD0C9], NFC: [0xD0C9], NFD: [0x1110, 0x1161, 0x11B0], NFKC: [0xD0C9], NFKD: [0x1110, 0x1161, 0x11B0] },
+{ source: [0xD0CA], NFC: [0xD0CA], NFD: [0x1110, 0x1161, 0x11B1], NFKC: [0xD0CA], NFKD: [0x1110, 0x1161, 0x11B1] },
+{ source: [0xD0CB], NFC: [0xD0CB], NFD: [0x1110, 0x1161, 0x11B2], NFKC: [0xD0CB], NFKD: [0x1110, 0x1161, 0x11B2] },
+{ source: [0xD0CC], NFC: [0xD0CC], NFD: [0x1110, 0x1161, 0x11B3], NFKC: [0xD0CC], NFKD: [0x1110, 0x1161, 0x11B3] },
+{ source: [0xD0CD], NFC: [0xD0CD], NFD: [0x1110, 0x1161, 0x11B4], NFKC: [0xD0CD], NFKD: [0x1110, 0x1161, 0x11B4] },
+{ source: [0xD0CE], NFC: [0xD0CE], NFD: [0x1110, 0x1161, 0x11B5], NFKC: [0xD0CE], NFKD: [0x1110, 0x1161, 0x11B5] },
+{ source: [0xD0CF], NFC: [0xD0CF], NFD: [0x1110, 0x1161, 0x11B6], NFKC: [0xD0CF], NFKD: [0x1110, 0x1161, 0x11B6] },
+{ source: [0xD0D0], NFC: [0xD0D0], NFD: [0x1110, 0x1161, 0x11B7], NFKC: [0xD0D0], NFKD: [0x1110, 0x1161, 0x11B7] },
+{ source: [0xD0D1], NFC: [0xD0D1], NFD: [0x1110, 0x1161, 0x11B8], NFKC: [0xD0D1], NFKD: [0x1110, 0x1161, 0x11B8] },
+{ source: [0xD0D2], NFC: [0xD0D2], NFD: [0x1110, 0x1161, 0x11B9], NFKC: [0xD0D2], NFKD: [0x1110, 0x1161, 0x11B9] },
+{ source: [0xD0D3], NFC: [0xD0D3], NFD: [0x1110, 0x1161, 0x11BA], NFKC: [0xD0D3], NFKD: [0x1110, 0x1161, 0x11BA] },
+{ source: [0xD0D4], NFC: [0xD0D4], NFD: [0x1110, 0x1161, 0x11BB], NFKC: [0xD0D4], NFKD: [0x1110, 0x1161, 0x11BB] },
+{ source: [0xD0D5], NFC: [0xD0D5], NFD: [0x1110, 0x1161, 0x11BC], NFKC: [0xD0D5], NFKD: [0x1110, 0x1161, 0x11BC] },
+{ source: [0xD0D6], NFC: [0xD0D6], NFD: [0x1110, 0x1161, 0x11BD], NFKC: [0xD0D6], NFKD: [0x1110, 0x1161, 0x11BD] },
+{ source: [0xD0D7], NFC: [0xD0D7], NFD: [0x1110, 0x1161, 0x11BE], NFKC: [0xD0D7], NFKD: [0x1110, 0x1161, 0x11BE] },
+{ source: [0xD0D8], NFC: [0xD0D8], NFD: [0x1110, 0x1161, 0x11BF], NFKC: [0xD0D8], NFKD: [0x1110, 0x1161, 0x11BF] },
+{ source: [0xD0D9], NFC: [0xD0D9], NFD: [0x1110, 0x1161, 0x11C0], NFKC: [0xD0D9], NFKD: [0x1110, 0x1161, 0x11C0] },
+{ source: [0xD0DA], NFC: [0xD0DA], NFD: [0x1110, 0x1161, 0x11C1], NFKC: [0xD0DA], NFKD: [0x1110, 0x1161, 0x11C1] },
+{ source: [0xD0DB], NFC: [0xD0DB], NFD: [0x1110, 0x1161, 0x11C2], NFKC: [0xD0DB], NFKD: [0x1110, 0x1161, 0x11C2] },
+{ source: [0xD0DC], NFC: [0xD0DC], NFD: [0x1110, 0x1162], NFKC: [0xD0DC], NFKD: [0x1110, 0x1162] },
+{ source: [0xD0DD], NFC: [0xD0DD], NFD: [0x1110, 0x1162, 0x11A8], NFKC: [0xD0DD], NFKD: [0x1110, 0x1162, 0x11A8] },
+{ source: [0xD0DE], NFC: [0xD0DE], NFD: [0x1110, 0x1162, 0x11A9], NFKC: [0xD0DE], NFKD: [0x1110, 0x1162, 0x11A9] },
+{ source: [0xD0DF], NFC: [0xD0DF], NFD: [0x1110, 0x1162, 0x11AA], NFKC: [0xD0DF], NFKD: [0x1110, 0x1162, 0x11AA] },
+{ source: [0xD0E0], NFC: [0xD0E0], NFD: [0x1110, 0x1162, 0x11AB], NFKC: [0xD0E0], NFKD: [0x1110, 0x1162, 0x11AB] },
+{ source: [0xD0E1], NFC: [0xD0E1], NFD: [0x1110, 0x1162, 0x11AC], NFKC: [0xD0E1], NFKD: [0x1110, 0x1162, 0x11AC] },
+{ source: [0xD0E2], NFC: [0xD0E2], NFD: [0x1110, 0x1162, 0x11AD], NFKC: [0xD0E2], NFKD: [0x1110, 0x1162, 0x11AD] },
+{ source: [0xD0E3], NFC: [0xD0E3], NFD: [0x1110, 0x1162, 0x11AE], NFKC: [0xD0E3], NFKD: [0x1110, 0x1162, 0x11AE] },
+{ source: [0xD0E4], NFC: [0xD0E4], NFD: [0x1110, 0x1162, 0x11AF], NFKC: [0xD0E4], NFKD: [0x1110, 0x1162, 0x11AF] },
+{ source: [0xD0E5], NFC: [0xD0E5], NFD: [0x1110, 0x1162, 0x11B0], NFKC: [0xD0E5], NFKD: [0x1110, 0x1162, 0x11B0] },
+{ source: [0xD0E6], NFC: [0xD0E6], NFD: [0x1110, 0x1162, 0x11B1], NFKC: [0xD0E6], NFKD: [0x1110, 0x1162, 0x11B1] },
+{ source: [0xD0E7], NFC: [0xD0E7], NFD: [0x1110, 0x1162, 0x11B2], NFKC: [0xD0E7], NFKD: [0x1110, 0x1162, 0x11B2] },
+{ source: [0xD0E8], NFC: [0xD0E8], NFD: [0x1110, 0x1162, 0x11B3], NFKC: [0xD0E8], NFKD: [0x1110, 0x1162, 0x11B3] },
+{ source: [0xD0E9], NFC: [0xD0E9], NFD: [0x1110, 0x1162, 0x11B4], NFKC: [0xD0E9], NFKD: [0x1110, 0x1162, 0x11B4] },
+{ source: [0xD0EA], NFC: [0xD0EA], NFD: [0x1110, 0x1162, 0x11B5], NFKC: [0xD0EA], NFKD: [0x1110, 0x1162, 0x11B5] },
+{ source: [0xD0EB], NFC: [0xD0EB], NFD: [0x1110, 0x1162, 0x11B6], NFKC: [0xD0EB], NFKD: [0x1110, 0x1162, 0x11B6] },
+{ source: [0xD0EC], NFC: [0xD0EC], NFD: [0x1110, 0x1162, 0x11B7], NFKC: [0xD0EC], NFKD: [0x1110, 0x1162, 0x11B7] },
+{ source: [0xD0ED], NFC: [0xD0ED], NFD: [0x1110, 0x1162, 0x11B8], NFKC: [0xD0ED], NFKD: [0x1110, 0x1162, 0x11B8] },
+{ source: [0xD0EE], NFC: [0xD0EE], NFD: [0x1110, 0x1162, 0x11B9], NFKC: [0xD0EE], NFKD: [0x1110, 0x1162, 0x11B9] },
+{ source: [0xD0EF], NFC: [0xD0EF], NFD: [0x1110, 0x1162, 0x11BA], NFKC: [0xD0EF], NFKD: [0x1110, 0x1162, 0x11BA] },
+{ source: [0xD0F0], NFC: [0xD0F0], NFD: [0x1110, 0x1162, 0x11BB], NFKC: [0xD0F0], NFKD: [0x1110, 0x1162, 0x11BB] },
+{ source: [0xD0F1], NFC: [0xD0F1], NFD: [0x1110, 0x1162, 0x11BC], NFKC: [0xD0F1], NFKD: [0x1110, 0x1162, 0x11BC] },
+{ source: [0xD0F2], NFC: [0xD0F2], NFD: [0x1110, 0x1162, 0x11BD], NFKC: [0xD0F2], NFKD: [0x1110, 0x1162, 0x11BD] },
+{ source: [0xD0F3], NFC: [0xD0F3], NFD: [0x1110, 0x1162, 0x11BE], NFKC: [0xD0F3], NFKD: [0x1110, 0x1162, 0x11BE] },
+{ source: [0xD0F4], NFC: [0xD0F4], NFD: [0x1110, 0x1162, 0x11BF], NFKC: [0xD0F4], NFKD: [0x1110, 0x1162, 0x11BF] },
+{ source: [0xD0F5], NFC: [0xD0F5], NFD: [0x1110, 0x1162, 0x11C0], NFKC: [0xD0F5], NFKD: [0x1110, 0x1162, 0x11C0] },
+{ source: [0xD0F6], NFC: [0xD0F6], NFD: [0x1110, 0x1162, 0x11C1], NFKC: [0xD0F6], NFKD: [0x1110, 0x1162, 0x11C1] },
+{ source: [0xD0F7], NFC: [0xD0F7], NFD: [0x1110, 0x1162, 0x11C2], NFKC: [0xD0F7], NFKD: [0x1110, 0x1162, 0x11C2] },
+{ source: [0xD0F8], NFC: [0xD0F8], NFD: [0x1110, 0x1163], NFKC: [0xD0F8], NFKD: [0x1110, 0x1163] },
+{ source: [0xD0F9], NFC: [0xD0F9], NFD: [0x1110, 0x1163, 0x11A8], NFKC: [0xD0F9], NFKD: [0x1110, 0x1163, 0x11A8] },
+{ source: [0xD0FA], NFC: [0xD0FA], NFD: [0x1110, 0x1163, 0x11A9], NFKC: [0xD0FA], NFKD: [0x1110, 0x1163, 0x11A9] },
+{ source: [0xD0FB], NFC: [0xD0FB], NFD: [0x1110, 0x1163, 0x11AA], NFKC: [0xD0FB], NFKD: [0x1110, 0x1163, 0x11AA] },
+{ source: [0xD0FC], NFC: [0xD0FC], NFD: [0x1110, 0x1163, 0x11AB], NFKC: [0xD0FC], NFKD: [0x1110, 0x1163, 0x11AB] },
+{ source: [0xD0FD], NFC: [0xD0FD], NFD: [0x1110, 0x1163, 0x11AC], NFKC: [0xD0FD], NFKD: [0x1110, 0x1163, 0x11AC] },
+{ source: [0xD0FE], NFC: [0xD0FE], NFD: [0x1110, 0x1163, 0x11AD], NFKC: [0xD0FE], NFKD: [0x1110, 0x1163, 0x11AD] },
+{ source: [0xD0FF], NFC: [0xD0FF], NFD: [0x1110, 0x1163, 0x11AE], NFKC: [0xD0FF], NFKD: [0x1110, 0x1163, 0x11AE] },
+{ source: [0xD100], NFC: [0xD100], NFD: [0x1110, 0x1163, 0x11AF], NFKC: [0xD100], NFKD: [0x1110, 0x1163, 0x11AF] },
+{ source: [0xD101], NFC: [0xD101], NFD: [0x1110, 0x1163, 0x11B0], NFKC: [0xD101], NFKD: [0x1110, 0x1163, 0x11B0] },
+{ source: [0xD102], NFC: [0xD102], NFD: [0x1110, 0x1163, 0x11B1], NFKC: [0xD102], NFKD: [0x1110, 0x1163, 0x11B1] },
+{ source: [0xD103], NFC: [0xD103], NFD: [0x1110, 0x1163, 0x11B2], NFKC: [0xD103], NFKD: [0x1110, 0x1163, 0x11B2] },
+{ source: [0xD104], NFC: [0xD104], NFD: [0x1110, 0x1163, 0x11B3], NFKC: [0xD104], NFKD: [0x1110, 0x1163, 0x11B3] },
+{ source: [0xD105], NFC: [0xD105], NFD: [0x1110, 0x1163, 0x11B4], NFKC: [0xD105], NFKD: [0x1110, 0x1163, 0x11B4] },
+{ source: [0xD106], NFC: [0xD106], NFD: [0x1110, 0x1163, 0x11B5], NFKC: [0xD106], NFKD: [0x1110, 0x1163, 0x11B5] },
+{ source: [0xD107], NFC: [0xD107], NFD: [0x1110, 0x1163, 0x11B6], NFKC: [0xD107], NFKD: [0x1110, 0x1163, 0x11B6] },
+{ source: [0xD108], NFC: [0xD108], NFD: [0x1110, 0x1163, 0x11B7], NFKC: [0xD108], NFKD: [0x1110, 0x1163, 0x11B7] },
+{ source: [0xD109], NFC: [0xD109], NFD: [0x1110, 0x1163, 0x11B8], NFKC: [0xD109], NFKD: [0x1110, 0x1163, 0x11B8] },
+{ source: [0xD10A], NFC: [0xD10A], NFD: [0x1110, 0x1163, 0x11B9], NFKC: [0xD10A], NFKD: [0x1110, 0x1163, 0x11B9] },
+{ source: [0xD10B], NFC: [0xD10B], NFD: [0x1110, 0x1163, 0x11BA], NFKC: [0xD10B], NFKD: [0x1110, 0x1163, 0x11BA] },
+{ source: [0xD10C], NFC: [0xD10C], NFD: [0x1110, 0x1163, 0x11BB], NFKC: [0xD10C], NFKD: [0x1110, 0x1163, 0x11BB] },
+{ source: [0xD10D], NFC: [0xD10D], NFD: [0x1110, 0x1163, 0x11BC], NFKC: [0xD10D], NFKD: [0x1110, 0x1163, 0x11BC] },
+{ source: [0xD10E], NFC: [0xD10E], NFD: [0x1110, 0x1163, 0x11BD], NFKC: [0xD10E], NFKD: [0x1110, 0x1163, 0x11BD] },
+{ source: [0xD10F], NFC: [0xD10F], NFD: [0x1110, 0x1163, 0x11BE], NFKC: [0xD10F], NFKD: [0x1110, 0x1163, 0x11BE] },
+{ source: [0xD110], NFC: [0xD110], NFD: [0x1110, 0x1163, 0x11BF], NFKC: [0xD110], NFKD: [0x1110, 0x1163, 0x11BF] },
+{ source: [0xD111], NFC: [0xD111], NFD: [0x1110, 0x1163, 0x11C0], NFKC: [0xD111], NFKD: [0x1110, 0x1163, 0x11C0] },
+{ source: [0xD112], NFC: [0xD112], NFD: [0x1110, 0x1163, 0x11C1], NFKC: [0xD112], NFKD: [0x1110, 0x1163, 0x11C1] },
+{ source: [0xD113], NFC: [0xD113], NFD: [0x1110, 0x1163, 0x11C2], NFKC: [0xD113], NFKD: [0x1110, 0x1163, 0x11C2] },
+{ source: [0xD114], NFC: [0xD114], NFD: [0x1110, 0x1164], NFKC: [0xD114], NFKD: [0x1110, 0x1164] },
+{ source: [0xD115], NFC: [0xD115], NFD: [0x1110, 0x1164, 0x11A8], NFKC: [0xD115], NFKD: [0x1110, 0x1164, 0x11A8] },
+{ source: [0xD116], NFC: [0xD116], NFD: [0x1110, 0x1164, 0x11A9], NFKC: [0xD116], NFKD: [0x1110, 0x1164, 0x11A9] },
+{ source: [0xD117], NFC: [0xD117], NFD: [0x1110, 0x1164, 0x11AA], NFKC: [0xD117], NFKD: [0x1110, 0x1164, 0x11AA] },
+{ source: [0xD118], NFC: [0xD118], NFD: [0x1110, 0x1164, 0x11AB], NFKC: [0xD118], NFKD: [0x1110, 0x1164, 0x11AB] },
+{ source: [0xD119], NFC: [0xD119], NFD: [0x1110, 0x1164, 0x11AC], NFKC: [0xD119], NFKD: [0x1110, 0x1164, 0x11AC] },
+{ source: [0xD11A], NFC: [0xD11A], NFD: [0x1110, 0x1164, 0x11AD], NFKC: [0xD11A], NFKD: [0x1110, 0x1164, 0x11AD] },
+{ source: [0xD11B], NFC: [0xD11B], NFD: [0x1110, 0x1164, 0x11AE], NFKC: [0xD11B], NFKD: [0x1110, 0x1164, 0x11AE] },
+{ source: [0xD11C], NFC: [0xD11C], NFD: [0x1110, 0x1164, 0x11AF], NFKC: [0xD11C], NFKD: [0x1110, 0x1164, 0x11AF] },
+{ source: [0xD11D], NFC: [0xD11D], NFD: [0x1110, 0x1164, 0x11B0], NFKC: [0xD11D], NFKD: [0x1110, 0x1164, 0x11B0] },
+{ source: [0xD11E], NFC: [0xD11E], NFD: [0x1110, 0x1164, 0x11B1], NFKC: [0xD11E], NFKD: [0x1110, 0x1164, 0x11B1] },
+{ source: [0xD11F], NFC: [0xD11F], NFD: [0x1110, 0x1164, 0x11B2], NFKC: [0xD11F], NFKD: [0x1110, 0x1164, 0x11B2] },
+{ source: [0xD120], NFC: [0xD120], NFD: [0x1110, 0x1164, 0x11B3], NFKC: [0xD120], NFKD: [0x1110, 0x1164, 0x11B3] },
+{ source: [0xD121], NFC: [0xD121], NFD: [0x1110, 0x1164, 0x11B4], NFKC: [0xD121], NFKD: [0x1110, 0x1164, 0x11B4] },
+{ source: [0xD122], NFC: [0xD122], NFD: [0x1110, 0x1164, 0x11B5], NFKC: [0xD122], NFKD: [0x1110, 0x1164, 0x11B5] },
+{ source: [0xD123], NFC: [0xD123], NFD: [0x1110, 0x1164, 0x11B6], NFKC: [0xD123], NFKD: [0x1110, 0x1164, 0x11B6] },
+{ source: [0xD124], NFC: [0xD124], NFD: [0x1110, 0x1164, 0x11B7], NFKC: [0xD124], NFKD: [0x1110, 0x1164, 0x11B7] },
+{ source: [0xD125], NFC: [0xD125], NFD: [0x1110, 0x1164, 0x11B8], NFKC: [0xD125], NFKD: [0x1110, 0x1164, 0x11B8] },
+{ source: [0xD126], NFC: [0xD126], NFD: [0x1110, 0x1164, 0x11B9], NFKC: [0xD126], NFKD: [0x1110, 0x1164, 0x11B9] },
+{ source: [0xD127], NFC: [0xD127], NFD: [0x1110, 0x1164, 0x11BA], NFKC: [0xD127], NFKD: [0x1110, 0x1164, 0x11BA] },
+{ source: [0xD128], NFC: [0xD128], NFD: [0x1110, 0x1164, 0x11BB], NFKC: [0xD128], NFKD: [0x1110, 0x1164, 0x11BB] },
+{ source: [0xD129], NFC: [0xD129], NFD: [0x1110, 0x1164, 0x11BC], NFKC: [0xD129], NFKD: [0x1110, 0x1164, 0x11BC] },
+{ source: [0xD12A], NFC: [0xD12A], NFD: [0x1110, 0x1164, 0x11BD], NFKC: [0xD12A], NFKD: [0x1110, 0x1164, 0x11BD] },
+{ source: [0xD12B], NFC: [0xD12B], NFD: [0x1110, 0x1164, 0x11BE], NFKC: [0xD12B], NFKD: [0x1110, 0x1164, 0x11BE] },
+{ source: [0xD12C], NFC: [0xD12C], NFD: [0x1110, 0x1164, 0x11BF], NFKC: [0xD12C], NFKD: [0x1110, 0x1164, 0x11BF] },
+{ source: [0xD12D], NFC: [0xD12D], NFD: [0x1110, 0x1164, 0x11C0], NFKC: [0xD12D], NFKD: [0x1110, 0x1164, 0x11C0] },
+{ source: [0xD12E], NFC: [0xD12E], NFD: [0x1110, 0x1164, 0x11C1], NFKC: [0xD12E], NFKD: [0x1110, 0x1164, 0x11C1] },
+{ source: [0xD12F], NFC: [0xD12F], NFD: [0x1110, 0x1164, 0x11C2], NFKC: [0xD12F], NFKD: [0x1110, 0x1164, 0x11C2] },
+{ source: [0xD130], NFC: [0xD130], NFD: [0x1110, 0x1165], NFKC: [0xD130], NFKD: [0x1110, 0x1165] },
+{ source: [0xD131], NFC: [0xD131], NFD: [0x1110, 0x1165, 0x11A8], NFKC: [0xD131], NFKD: [0x1110, 0x1165, 0x11A8] },
+{ source: [0xD132], NFC: [0xD132], NFD: [0x1110, 0x1165, 0x11A9], NFKC: [0xD132], NFKD: [0x1110, 0x1165, 0x11A9] },
+{ source: [0xD133], NFC: [0xD133], NFD: [0x1110, 0x1165, 0x11AA], NFKC: [0xD133], NFKD: [0x1110, 0x1165, 0x11AA] },
+{ source: [0xD134], NFC: [0xD134], NFD: [0x1110, 0x1165, 0x11AB], NFKC: [0xD134], NFKD: [0x1110, 0x1165, 0x11AB] },
+{ source: [0xD135], NFC: [0xD135], NFD: [0x1110, 0x1165, 0x11AC], NFKC: [0xD135], NFKD: [0x1110, 0x1165, 0x11AC] },
+{ source: [0xD136], NFC: [0xD136], NFD: [0x1110, 0x1165, 0x11AD], NFKC: [0xD136], NFKD: [0x1110, 0x1165, 0x11AD] },
+{ source: [0xD137], NFC: [0xD137], NFD: [0x1110, 0x1165, 0x11AE], NFKC: [0xD137], NFKD: [0x1110, 0x1165, 0x11AE] },
+{ source: [0xD138], NFC: [0xD138], NFD: [0x1110, 0x1165, 0x11AF], NFKC: [0xD138], NFKD: [0x1110, 0x1165, 0x11AF] },
+{ source: [0xD139], NFC: [0xD139], NFD: [0x1110, 0x1165, 0x11B0], NFKC: [0xD139], NFKD: [0x1110, 0x1165, 0x11B0] },
+{ source: [0xD13A], NFC: [0xD13A], NFD: [0x1110, 0x1165, 0x11B1], NFKC: [0xD13A], NFKD: [0x1110, 0x1165, 0x11B1] },
+{ source: [0xD13B], NFC: [0xD13B], NFD: [0x1110, 0x1165, 0x11B2], NFKC: [0xD13B], NFKD: [0x1110, 0x1165, 0x11B2] },
+{ source: [0xD13C], NFC: [0xD13C], NFD: [0x1110, 0x1165, 0x11B3], NFKC: [0xD13C], NFKD: [0x1110, 0x1165, 0x11B3] },
+{ source: [0xD13D], NFC: [0xD13D], NFD: [0x1110, 0x1165, 0x11B4], NFKC: [0xD13D], NFKD: [0x1110, 0x1165, 0x11B4] },
+{ source: [0xD13E], NFC: [0xD13E], NFD: [0x1110, 0x1165, 0x11B5], NFKC: [0xD13E], NFKD: [0x1110, 0x1165, 0x11B5] },
+{ source: [0xD13F], NFC: [0xD13F], NFD: [0x1110, 0x1165, 0x11B6], NFKC: [0xD13F], NFKD: [0x1110, 0x1165, 0x11B6] },
+{ source: [0xD140], NFC: [0xD140], NFD: [0x1110, 0x1165, 0x11B7], NFKC: [0xD140], NFKD: [0x1110, 0x1165, 0x11B7] },
+{ source: [0xD141], NFC: [0xD141], NFD: [0x1110, 0x1165, 0x11B8], NFKC: [0xD141], NFKD: [0x1110, 0x1165, 0x11B8] },
+{ source: [0xD142], NFC: [0xD142], NFD: [0x1110, 0x1165, 0x11B9], NFKC: [0xD142], NFKD: [0x1110, 0x1165, 0x11B9] },
+{ source: [0xD143], NFC: [0xD143], NFD: [0x1110, 0x1165, 0x11BA], NFKC: [0xD143], NFKD: [0x1110, 0x1165, 0x11BA] },
+{ source: [0xD144], NFC: [0xD144], NFD: [0x1110, 0x1165, 0x11BB], NFKC: [0xD144], NFKD: [0x1110, 0x1165, 0x11BB] },
+{ source: [0xD145], NFC: [0xD145], NFD: [0x1110, 0x1165, 0x11BC], NFKC: [0xD145], NFKD: [0x1110, 0x1165, 0x11BC] },
+{ source: [0xD146], NFC: [0xD146], NFD: [0x1110, 0x1165, 0x11BD], NFKC: [0xD146], NFKD: [0x1110, 0x1165, 0x11BD] },
+{ source: [0xD147], NFC: [0xD147], NFD: [0x1110, 0x1165, 0x11BE], NFKC: [0xD147], NFKD: [0x1110, 0x1165, 0x11BE] },
+{ source: [0xD148], NFC: [0xD148], NFD: [0x1110, 0x1165, 0x11BF], NFKC: [0xD148], NFKD: [0x1110, 0x1165, 0x11BF] },
+{ source: [0xD149], NFC: [0xD149], NFD: [0x1110, 0x1165, 0x11C0], NFKC: [0xD149], NFKD: [0x1110, 0x1165, 0x11C0] },
+{ source: [0xD14A], NFC: [0xD14A], NFD: [0x1110, 0x1165, 0x11C1], NFKC: [0xD14A], NFKD: [0x1110, 0x1165, 0x11C1] },
+{ source: [0xD14B], NFC: [0xD14B], NFD: [0x1110, 0x1165, 0x11C2], NFKC: [0xD14B], NFKD: [0x1110, 0x1165, 0x11C2] },
+{ source: [0xD14C], NFC: [0xD14C], NFD: [0x1110, 0x1166], NFKC: [0xD14C], NFKD: [0x1110, 0x1166] },
+{ source: [0xD14D], NFC: [0xD14D], NFD: [0x1110, 0x1166, 0x11A8], NFKC: [0xD14D], NFKD: [0x1110, 0x1166, 0x11A8] },
+{ source: [0xD14E], NFC: [0xD14E], NFD: [0x1110, 0x1166, 0x11A9], NFKC: [0xD14E], NFKD: [0x1110, 0x1166, 0x11A9] },
+{ source: [0xD14F], NFC: [0xD14F], NFD: [0x1110, 0x1166, 0x11AA], NFKC: [0xD14F], NFKD: [0x1110, 0x1166, 0x11AA] },
+{ source: [0xD150], NFC: [0xD150], NFD: [0x1110, 0x1166, 0x11AB], NFKC: [0xD150], NFKD: [0x1110, 0x1166, 0x11AB] },
+{ source: [0xD151], NFC: [0xD151], NFD: [0x1110, 0x1166, 0x11AC], NFKC: [0xD151], NFKD: [0x1110, 0x1166, 0x11AC] },
+{ source: [0xD152], NFC: [0xD152], NFD: [0x1110, 0x1166, 0x11AD], NFKC: [0xD152], NFKD: [0x1110, 0x1166, 0x11AD] },
+{ source: [0xD153], NFC: [0xD153], NFD: [0x1110, 0x1166, 0x11AE], NFKC: [0xD153], NFKD: [0x1110, 0x1166, 0x11AE] },
+{ source: [0xD154], NFC: [0xD154], NFD: [0x1110, 0x1166, 0x11AF], NFKC: [0xD154], NFKD: [0x1110, 0x1166, 0x11AF] },
+{ source: [0xD155], NFC: [0xD155], NFD: [0x1110, 0x1166, 0x11B0], NFKC: [0xD155], NFKD: [0x1110, 0x1166, 0x11B0] },
+{ source: [0xD156], NFC: [0xD156], NFD: [0x1110, 0x1166, 0x11B1], NFKC: [0xD156], NFKD: [0x1110, 0x1166, 0x11B1] },
+{ source: [0xD157], NFC: [0xD157], NFD: [0x1110, 0x1166, 0x11B2], NFKC: [0xD157], NFKD: [0x1110, 0x1166, 0x11B2] },
+{ source: [0xD158], NFC: [0xD158], NFD: [0x1110, 0x1166, 0x11B3], NFKC: [0xD158], NFKD: [0x1110, 0x1166, 0x11B3] },
+{ source: [0xD159], NFC: [0xD159], NFD: [0x1110, 0x1166, 0x11B4], NFKC: [0xD159], NFKD: [0x1110, 0x1166, 0x11B4] },
+{ source: [0xD15A], NFC: [0xD15A], NFD: [0x1110, 0x1166, 0x11B5], NFKC: [0xD15A], NFKD: [0x1110, 0x1166, 0x11B5] },
+{ source: [0xD15B], NFC: [0xD15B], NFD: [0x1110, 0x1166, 0x11B6], NFKC: [0xD15B], NFKD: [0x1110, 0x1166, 0x11B6] },
+{ source: [0xD15C], NFC: [0xD15C], NFD: [0x1110, 0x1166, 0x11B7], NFKC: [0xD15C], NFKD: [0x1110, 0x1166, 0x11B7] },
+{ source: [0xD15D], NFC: [0xD15D], NFD: [0x1110, 0x1166, 0x11B8], NFKC: [0xD15D], NFKD: [0x1110, 0x1166, 0x11B8] },
+{ source: [0xD15E], NFC: [0xD15E], NFD: [0x1110, 0x1166, 0x11B9], NFKC: [0xD15E], NFKD: [0x1110, 0x1166, 0x11B9] },
+{ source: [0xD15F], NFC: [0xD15F], NFD: [0x1110, 0x1166, 0x11BA], NFKC: [0xD15F], NFKD: [0x1110, 0x1166, 0x11BA] },
+{ source: [0xD160], NFC: [0xD160], NFD: [0x1110, 0x1166, 0x11BB], NFKC: [0xD160], NFKD: [0x1110, 0x1166, 0x11BB] },
+{ source: [0xD161], NFC: [0xD161], NFD: [0x1110, 0x1166, 0x11BC], NFKC: [0xD161], NFKD: [0x1110, 0x1166, 0x11BC] },
+{ source: [0xD162], NFC: [0xD162], NFD: [0x1110, 0x1166, 0x11BD], NFKC: [0xD162], NFKD: [0x1110, 0x1166, 0x11BD] },
+{ source: [0xD163], NFC: [0xD163], NFD: [0x1110, 0x1166, 0x11BE], NFKC: [0xD163], NFKD: [0x1110, 0x1166, 0x11BE] },
+{ source: [0xD164], NFC: [0xD164], NFD: [0x1110, 0x1166, 0x11BF], NFKC: [0xD164], NFKD: [0x1110, 0x1166, 0x11BF] },
+{ source: [0xD165], NFC: [0xD165], NFD: [0x1110, 0x1166, 0x11C0], NFKC: [0xD165], NFKD: [0x1110, 0x1166, 0x11C0] },
+{ source: [0xD166], NFC: [0xD166], NFD: [0x1110, 0x1166, 0x11C1], NFKC: [0xD166], NFKD: [0x1110, 0x1166, 0x11C1] },
+{ source: [0xD167], NFC: [0xD167], NFD: [0x1110, 0x1166, 0x11C2], NFKC: [0xD167], NFKD: [0x1110, 0x1166, 0x11C2] },
+{ source: [0xD168], NFC: [0xD168], NFD: [0x1110, 0x1167], NFKC: [0xD168], NFKD: [0x1110, 0x1167] },
+{ source: [0xD169], NFC: [0xD169], NFD: [0x1110, 0x1167, 0x11A8], NFKC: [0xD169], NFKD: [0x1110, 0x1167, 0x11A8] },
+{ source: [0xD16A], NFC: [0xD16A], NFD: [0x1110, 0x1167, 0x11A9], NFKC: [0xD16A], NFKD: [0x1110, 0x1167, 0x11A9] },
+{ source: [0xD16B], NFC: [0xD16B], NFD: [0x1110, 0x1167, 0x11AA], NFKC: [0xD16B], NFKD: [0x1110, 0x1167, 0x11AA] },
+{ source: [0xD16C], NFC: [0xD16C], NFD: [0x1110, 0x1167, 0x11AB], NFKC: [0xD16C], NFKD: [0x1110, 0x1167, 0x11AB] },
+{ source: [0xD16D], NFC: [0xD16D], NFD: [0x1110, 0x1167, 0x11AC], NFKC: [0xD16D], NFKD: [0x1110, 0x1167, 0x11AC] },
+{ source: [0xD16E], NFC: [0xD16E], NFD: [0x1110, 0x1167, 0x11AD], NFKC: [0xD16E], NFKD: [0x1110, 0x1167, 0x11AD] },
+{ source: [0xD16F], NFC: [0xD16F], NFD: [0x1110, 0x1167, 0x11AE], NFKC: [0xD16F], NFKD: [0x1110, 0x1167, 0x11AE] },
+{ source: [0xD170], NFC: [0xD170], NFD: [0x1110, 0x1167, 0x11AF], NFKC: [0xD170], NFKD: [0x1110, 0x1167, 0x11AF] },
+{ source: [0xD171], NFC: [0xD171], NFD: [0x1110, 0x1167, 0x11B0], NFKC: [0xD171], NFKD: [0x1110, 0x1167, 0x11B0] },
+{ source: [0xD172], NFC: [0xD172], NFD: [0x1110, 0x1167, 0x11B1], NFKC: [0xD172], NFKD: [0x1110, 0x1167, 0x11B1] },
+{ source: [0xD173], NFC: [0xD173], NFD: [0x1110, 0x1167, 0x11B2], NFKC: [0xD173], NFKD: [0x1110, 0x1167, 0x11B2] },
+{ source: [0xD174], NFC: [0xD174], NFD: [0x1110, 0x1167, 0x11B3], NFKC: [0xD174], NFKD: [0x1110, 0x1167, 0x11B3] },
+{ source: [0xD175], NFC: [0xD175], NFD: [0x1110, 0x1167, 0x11B4], NFKC: [0xD175], NFKD: [0x1110, 0x1167, 0x11B4] },
+{ source: [0xD176], NFC: [0xD176], NFD: [0x1110, 0x1167, 0x11B5], NFKC: [0xD176], NFKD: [0x1110, 0x1167, 0x11B5] },
+{ source: [0xD177], NFC: [0xD177], NFD: [0x1110, 0x1167, 0x11B6], NFKC: [0xD177], NFKD: [0x1110, 0x1167, 0x11B6] },
+{ source: [0xD178], NFC: [0xD178], NFD: [0x1110, 0x1167, 0x11B7], NFKC: [0xD178], NFKD: [0x1110, 0x1167, 0x11B7] },
+{ source: [0xD179], NFC: [0xD179], NFD: [0x1110, 0x1167, 0x11B8], NFKC: [0xD179], NFKD: [0x1110, 0x1167, 0x11B8] },
+{ source: [0xD17A], NFC: [0xD17A], NFD: [0x1110, 0x1167, 0x11B9], NFKC: [0xD17A], NFKD: [0x1110, 0x1167, 0x11B9] },
+{ source: [0xD17B], NFC: [0xD17B], NFD: [0x1110, 0x1167, 0x11BA], NFKC: [0xD17B], NFKD: [0x1110, 0x1167, 0x11BA] },
+{ source: [0xD17C], NFC: [0xD17C], NFD: [0x1110, 0x1167, 0x11BB], NFKC: [0xD17C], NFKD: [0x1110, 0x1167, 0x11BB] },
+{ source: [0xD17D], NFC: [0xD17D], NFD: [0x1110, 0x1167, 0x11BC], NFKC: [0xD17D], NFKD: [0x1110, 0x1167, 0x11BC] },
+{ source: [0xD17E], NFC: [0xD17E], NFD: [0x1110, 0x1167, 0x11BD], NFKC: [0xD17E], NFKD: [0x1110, 0x1167, 0x11BD] },
+{ source: [0xD17F], NFC: [0xD17F], NFD: [0x1110, 0x1167, 0x11BE], NFKC: [0xD17F], NFKD: [0x1110, 0x1167, 0x11BE] },
+{ source: [0xD180], NFC: [0xD180], NFD: [0x1110, 0x1167, 0x11BF], NFKC: [0xD180], NFKD: [0x1110, 0x1167, 0x11BF] },
+{ source: [0xD181], NFC: [0xD181], NFD: [0x1110, 0x1167, 0x11C0], NFKC: [0xD181], NFKD: [0x1110, 0x1167, 0x11C0] },
+{ source: [0xD182], NFC: [0xD182], NFD: [0x1110, 0x1167, 0x11C1], NFKC: [0xD182], NFKD: [0x1110, 0x1167, 0x11C1] },
+{ source: [0xD183], NFC: [0xD183], NFD: [0x1110, 0x1167, 0x11C2], NFKC: [0xD183], NFKD: [0x1110, 0x1167, 0x11C2] },
+{ source: [0xD184], NFC: [0xD184], NFD: [0x1110, 0x1168], NFKC: [0xD184], NFKD: [0x1110, 0x1168] },
+{ source: [0xD185], NFC: [0xD185], NFD: [0x1110, 0x1168, 0x11A8], NFKC: [0xD185], NFKD: [0x1110, 0x1168, 0x11A8] },
+{ source: [0xD186], NFC: [0xD186], NFD: [0x1110, 0x1168, 0x11A9], NFKC: [0xD186], NFKD: [0x1110, 0x1168, 0x11A9] },
+{ source: [0xD187], NFC: [0xD187], NFD: [0x1110, 0x1168, 0x11AA], NFKC: [0xD187], NFKD: [0x1110, 0x1168, 0x11AA] },
+{ source: [0xD188], NFC: [0xD188], NFD: [0x1110, 0x1168, 0x11AB], NFKC: [0xD188], NFKD: [0x1110, 0x1168, 0x11AB] },
+{ source: [0xD189], NFC: [0xD189], NFD: [0x1110, 0x1168, 0x11AC], NFKC: [0xD189], NFKD: [0x1110, 0x1168, 0x11AC] },
+{ source: [0xD18A], NFC: [0xD18A], NFD: [0x1110, 0x1168, 0x11AD], NFKC: [0xD18A], NFKD: [0x1110, 0x1168, 0x11AD] },
+{ source: [0xD18B], NFC: [0xD18B], NFD: [0x1110, 0x1168, 0x11AE], NFKC: [0xD18B], NFKD: [0x1110, 0x1168, 0x11AE] },
+{ source: [0xD18C], NFC: [0xD18C], NFD: [0x1110, 0x1168, 0x11AF], NFKC: [0xD18C], NFKD: [0x1110, 0x1168, 0x11AF] },
+{ source: [0xD18D], NFC: [0xD18D], NFD: [0x1110, 0x1168, 0x11B0], NFKC: [0xD18D], NFKD: [0x1110, 0x1168, 0x11B0] },
+{ source: [0xD18E], NFC: [0xD18E], NFD: [0x1110, 0x1168, 0x11B1], NFKC: [0xD18E], NFKD: [0x1110, 0x1168, 0x11B1] },
+{ source: [0xD18F], NFC: [0xD18F], NFD: [0x1110, 0x1168, 0x11B2], NFKC: [0xD18F], NFKD: [0x1110, 0x1168, 0x11B2] },
+{ source: [0xD190], NFC: [0xD190], NFD: [0x1110, 0x1168, 0x11B3], NFKC: [0xD190], NFKD: [0x1110, 0x1168, 0x11B3] },
+{ source: [0xD191], NFC: [0xD191], NFD: [0x1110, 0x1168, 0x11B4], NFKC: [0xD191], NFKD: [0x1110, 0x1168, 0x11B4] },
+{ source: [0xD192], NFC: [0xD192], NFD: [0x1110, 0x1168, 0x11B5], NFKC: [0xD192], NFKD: [0x1110, 0x1168, 0x11B5] },
+{ source: [0xD193], NFC: [0xD193], NFD: [0x1110, 0x1168, 0x11B6], NFKC: [0xD193], NFKD: [0x1110, 0x1168, 0x11B6] },
+{ source: [0xD194], NFC: [0xD194], NFD: [0x1110, 0x1168, 0x11B7], NFKC: [0xD194], NFKD: [0x1110, 0x1168, 0x11B7] },
+{ source: [0xD195], NFC: [0xD195], NFD: [0x1110, 0x1168, 0x11B8], NFKC: [0xD195], NFKD: [0x1110, 0x1168, 0x11B8] },
+{ source: [0xD196], NFC: [0xD196], NFD: [0x1110, 0x1168, 0x11B9], NFKC: [0xD196], NFKD: [0x1110, 0x1168, 0x11B9] },
+{ source: [0xD197], NFC: [0xD197], NFD: [0x1110, 0x1168, 0x11BA], NFKC: [0xD197], NFKD: [0x1110, 0x1168, 0x11BA] },
+{ source: [0xD198], NFC: [0xD198], NFD: [0x1110, 0x1168, 0x11BB], NFKC: [0xD198], NFKD: [0x1110, 0x1168, 0x11BB] },
+{ source: [0xD199], NFC: [0xD199], NFD: [0x1110, 0x1168, 0x11BC], NFKC: [0xD199], NFKD: [0x1110, 0x1168, 0x11BC] },
+{ source: [0xD19A], NFC: [0xD19A], NFD: [0x1110, 0x1168, 0x11BD], NFKC: [0xD19A], NFKD: [0x1110, 0x1168, 0x11BD] },
+{ source: [0xD19B], NFC: [0xD19B], NFD: [0x1110, 0x1168, 0x11BE], NFKC: [0xD19B], NFKD: [0x1110, 0x1168, 0x11BE] },
+{ source: [0xD19C], NFC: [0xD19C], NFD: [0x1110, 0x1168, 0x11BF], NFKC: [0xD19C], NFKD: [0x1110, 0x1168, 0x11BF] },
+{ source: [0xD19D], NFC: [0xD19D], NFD: [0x1110, 0x1168, 0x11C0], NFKC: [0xD19D], NFKD: [0x1110, 0x1168, 0x11C0] },
+{ source: [0xD19E], NFC: [0xD19E], NFD: [0x1110, 0x1168, 0x11C1], NFKC: [0xD19E], NFKD: [0x1110, 0x1168, 0x11C1] },
+{ source: [0xD19F], NFC: [0xD19F], NFD: [0x1110, 0x1168, 0x11C2], NFKC: [0xD19F], NFKD: [0x1110, 0x1168, 0x11C2] },
+{ source: [0xD1A0], NFC: [0xD1A0], NFD: [0x1110, 0x1169], NFKC: [0xD1A0], NFKD: [0x1110, 0x1169] },
+{ source: [0xD1A1], NFC: [0xD1A1], NFD: [0x1110, 0x1169, 0x11A8], NFKC: [0xD1A1], NFKD: [0x1110, 0x1169, 0x11A8] },
+{ source: [0xD1A2], NFC: [0xD1A2], NFD: [0x1110, 0x1169, 0x11A9], NFKC: [0xD1A2], NFKD: [0x1110, 0x1169, 0x11A9] },
+{ source: [0xD1A3], NFC: [0xD1A3], NFD: [0x1110, 0x1169, 0x11AA], NFKC: [0xD1A3], NFKD: [0x1110, 0x1169, 0x11AA] },
+{ source: [0xD1A4], NFC: [0xD1A4], NFD: [0x1110, 0x1169, 0x11AB], NFKC: [0xD1A4], NFKD: [0x1110, 0x1169, 0x11AB] },
+{ source: [0xD1A5], NFC: [0xD1A5], NFD: [0x1110, 0x1169, 0x11AC], NFKC: [0xD1A5], NFKD: [0x1110, 0x1169, 0x11AC] },
+{ source: [0xD1A6], NFC: [0xD1A6], NFD: [0x1110, 0x1169, 0x11AD], NFKC: [0xD1A6], NFKD: [0x1110, 0x1169, 0x11AD] },
+{ source: [0xD1A7], NFC: [0xD1A7], NFD: [0x1110, 0x1169, 0x11AE], NFKC: [0xD1A7], NFKD: [0x1110, 0x1169, 0x11AE] },
+{ source: [0xD1A8], NFC: [0xD1A8], NFD: [0x1110, 0x1169, 0x11AF], NFKC: [0xD1A8], NFKD: [0x1110, 0x1169, 0x11AF] },
+{ source: [0xD1A9], NFC: [0xD1A9], NFD: [0x1110, 0x1169, 0x11B0], NFKC: [0xD1A9], NFKD: [0x1110, 0x1169, 0x11B0] },
+{ source: [0xD1AA], NFC: [0xD1AA], NFD: [0x1110, 0x1169, 0x11B1], NFKC: [0xD1AA], NFKD: [0x1110, 0x1169, 0x11B1] },
+{ source: [0xD1AB], NFC: [0xD1AB], NFD: [0x1110, 0x1169, 0x11B2], NFKC: [0xD1AB], NFKD: [0x1110, 0x1169, 0x11B2] },
+{ source: [0xD1AC], NFC: [0xD1AC], NFD: [0x1110, 0x1169, 0x11B3], NFKC: [0xD1AC], NFKD: [0x1110, 0x1169, 0x11B3] },
+{ source: [0xD1AD], NFC: [0xD1AD], NFD: [0x1110, 0x1169, 0x11B4], NFKC: [0xD1AD], NFKD: [0x1110, 0x1169, 0x11B4] },
+{ source: [0xD1AE], NFC: [0xD1AE], NFD: [0x1110, 0x1169, 0x11B5], NFKC: [0xD1AE], NFKD: [0x1110, 0x1169, 0x11B5] },
+{ source: [0xD1AF], NFC: [0xD1AF], NFD: [0x1110, 0x1169, 0x11B6], NFKC: [0xD1AF], NFKD: [0x1110, 0x1169, 0x11B6] },
+{ source: [0xD1B0], NFC: [0xD1B0], NFD: [0x1110, 0x1169, 0x11B7], NFKC: [0xD1B0], NFKD: [0x1110, 0x1169, 0x11B7] },
+{ source: [0xD1B1], NFC: [0xD1B1], NFD: [0x1110, 0x1169, 0x11B8], NFKC: [0xD1B1], NFKD: [0x1110, 0x1169, 0x11B8] },
+{ source: [0xD1B2], NFC: [0xD1B2], NFD: [0x1110, 0x1169, 0x11B9], NFKC: [0xD1B2], NFKD: [0x1110, 0x1169, 0x11B9] },
+{ source: [0xD1B3], NFC: [0xD1B3], NFD: [0x1110, 0x1169, 0x11BA], NFKC: [0xD1B3], NFKD: [0x1110, 0x1169, 0x11BA] },
+{ source: [0xD1B4], NFC: [0xD1B4], NFD: [0x1110, 0x1169, 0x11BB], NFKC: [0xD1B4], NFKD: [0x1110, 0x1169, 0x11BB] },
+{ source: [0xD1B5], NFC: [0xD1B5], NFD: [0x1110, 0x1169, 0x11BC], NFKC: [0xD1B5], NFKD: [0x1110, 0x1169, 0x11BC] },
+{ source: [0xD1B6], NFC: [0xD1B6], NFD: [0x1110, 0x1169, 0x11BD], NFKC: [0xD1B6], NFKD: [0x1110, 0x1169, 0x11BD] },
+{ source: [0xD1B7], NFC: [0xD1B7], NFD: [0x1110, 0x1169, 0x11BE], NFKC: [0xD1B7], NFKD: [0x1110, 0x1169, 0x11BE] },
+{ source: [0xD1B8], NFC: [0xD1B8], NFD: [0x1110, 0x1169, 0x11BF], NFKC: [0xD1B8], NFKD: [0x1110, 0x1169, 0x11BF] },
+{ source: [0xD1B9], NFC: [0xD1B9], NFD: [0x1110, 0x1169, 0x11C0], NFKC: [0xD1B9], NFKD: [0x1110, 0x1169, 0x11C0] },
+{ source: [0xD1BA], NFC: [0xD1BA], NFD: [0x1110, 0x1169, 0x11C1], NFKC: [0xD1BA], NFKD: [0x1110, 0x1169, 0x11C1] },
+{ source: [0xD1BB], NFC: [0xD1BB], NFD: [0x1110, 0x1169, 0x11C2], NFKC: [0xD1BB], NFKD: [0x1110, 0x1169, 0x11C2] },
+{ source: [0xD1BC], NFC: [0xD1BC], NFD: [0x1110, 0x116A], NFKC: [0xD1BC], NFKD: [0x1110, 0x116A] },
+{ source: [0xD1BD], NFC: [0xD1BD], NFD: [0x1110, 0x116A, 0x11A8], NFKC: [0xD1BD], NFKD: [0x1110, 0x116A, 0x11A8] },
+{ source: [0xD1BE], NFC: [0xD1BE], NFD: [0x1110, 0x116A, 0x11A9], NFKC: [0xD1BE], NFKD: [0x1110, 0x116A, 0x11A9] },
+{ source: [0xD1BF], NFC: [0xD1BF], NFD: [0x1110, 0x116A, 0x11AA], NFKC: [0xD1BF], NFKD: [0x1110, 0x116A, 0x11AA] },
+{ source: [0xD1C0], NFC: [0xD1C0], NFD: [0x1110, 0x116A, 0x11AB], NFKC: [0xD1C0], NFKD: [0x1110, 0x116A, 0x11AB] },
+{ source: [0xD1C1], NFC: [0xD1C1], NFD: [0x1110, 0x116A, 0x11AC], NFKC: [0xD1C1], NFKD: [0x1110, 0x116A, 0x11AC] },
+{ source: [0xD1C2], NFC: [0xD1C2], NFD: [0x1110, 0x116A, 0x11AD], NFKC: [0xD1C2], NFKD: [0x1110, 0x116A, 0x11AD] },
+{ source: [0xD1C3], NFC: [0xD1C3], NFD: [0x1110, 0x116A, 0x11AE], NFKC: [0xD1C3], NFKD: [0x1110, 0x116A, 0x11AE] },
+{ source: [0xD1C4], NFC: [0xD1C4], NFD: [0x1110, 0x116A, 0x11AF], NFKC: [0xD1C4], NFKD: [0x1110, 0x116A, 0x11AF] },
+{ source: [0xD1C5], NFC: [0xD1C5], NFD: [0x1110, 0x116A, 0x11B0], NFKC: [0xD1C5], NFKD: [0x1110, 0x116A, 0x11B0] },
+{ source: [0xD1C6], NFC: [0xD1C6], NFD: [0x1110, 0x116A, 0x11B1], NFKC: [0xD1C6], NFKD: [0x1110, 0x116A, 0x11B1] },
+{ source: [0xD1C7], NFC: [0xD1C7], NFD: [0x1110, 0x116A, 0x11B2], NFKC: [0xD1C7], NFKD: [0x1110, 0x116A, 0x11B2] },
+{ source: [0xD1C8], NFC: [0xD1C8], NFD: [0x1110, 0x116A, 0x11B3], NFKC: [0xD1C8], NFKD: [0x1110, 0x116A, 0x11B3] },
+{ source: [0xD1C9], NFC: [0xD1C9], NFD: [0x1110, 0x116A, 0x11B4], NFKC: [0xD1C9], NFKD: [0x1110, 0x116A, 0x11B4] },
+{ source: [0xD1CA], NFC: [0xD1CA], NFD: [0x1110, 0x116A, 0x11B5], NFKC: [0xD1CA], NFKD: [0x1110, 0x116A, 0x11B5] },
+{ source: [0xD1CB], NFC: [0xD1CB], NFD: [0x1110, 0x116A, 0x11B6], NFKC: [0xD1CB], NFKD: [0x1110, 0x116A, 0x11B6] },
+{ source: [0xD1CC], NFC: [0xD1CC], NFD: [0x1110, 0x116A, 0x11B7], NFKC: [0xD1CC], NFKD: [0x1110, 0x116A, 0x11B7] },
+{ source: [0xD1CD], NFC: [0xD1CD], NFD: [0x1110, 0x116A, 0x11B8], NFKC: [0xD1CD], NFKD: [0x1110, 0x116A, 0x11B8] },
+{ source: [0xD1CE], NFC: [0xD1CE], NFD: [0x1110, 0x116A, 0x11B9], NFKC: [0xD1CE], NFKD: [0x1110, 0x116A, 0x11B9] },
+{ source: [0xD1CF], NFC: [0xD1CF], NFD: [0x1110, 0x116A, 0x11BA], NFKC: [0xD1CF], NFKD: [0x1110, 0x116A, 0x11BA] },
+{ source: [0xD1D0], NFC: [0xD1D0], NFD: [0x1110, 0x116A, 0x11BB], NFKC: [0xD1D0], NFKD: [0x1110, 0x116A, 0x11BB] },
+{ source: [0xD1D1], NFC: [0xD1D1], NFD: [0x1110, 0x116A, 0x11BC], NFKC: [0xD1D1], NFKD: [0x1110, 0x116A, 0x11BC] },
+{ source: [0xD1D2], NFC: [0xD1D2], NFD: [0x1110, 0x116A, 0x11BD], NFKC: [0xD1D2], NFKD: [0x1110, 0x116A, 0x11BD] },
+{ source: [0xD1D3], NFC: [0xD1D3], NFD: [0x1110, 0x116A, 0x11BE], NFKC: [0xD1D3], NFKD: [0x1110, 0x116A, 0x11BE] },
+{ source: [0xD1D4], NFC: [0xD1D4], NFD: [0x1110, 0x116A, 0x11BF], NFKC: [0xD1D4], NFKD: [0x1110, 0x116A, 0x11BF] },
+{ source: [0xD1D5], NFC: [0xD1D5], NFD: [0x1110, 0x116A, 0x11C0], NFKC: [0xD1D5], NFKD: [0x1110, 0x116A, 0x11C0] },
+{ source: [0xD1D6], NFC: [0xD1D6], NFD: [0x1110, 0x116A, 0x11C1], NFKC: [0xD1D6], NFKD: [0x1110, 0x116A, 0x11C1] },
+{ source: [0xD1D7], NFC: [0xD1D7], NFD: [0x1110, 0x116A, 0x11C2], NFKC: [0xD1D7], NFKD: [0x1110, 0x116A, 0x11C2] },
+{ source: [0xD1D8], NFC: [0xD1D8], NFD: [0x1110, 0x116B], NFKC: [0xD1D8], NFKD: [0x1110, 0x116B] },
+{ source: [0xD1D9], NFC: [0xD1D9], NFD: [0x1110, 0x116B, 0x11A8], NFKC: [0xD1D9], NFKD: [0x1110, 0x116B, 0x11A8] },
+{ source: [0xD1DA], NFC: [0xD1DA], NFD: [0x1110, 0x116B, 0x11A9], NFKC: [0xD1DA], NFKD: [0x1110, 0x116B, 0x11A9] },
+{ source: [0xD1DB], NFC: [0xD1DB], NFD: [0x1110, 0x116B, 0x11AA], NFKC: [0xD1DB], NFKD: [0x1110, 0x116B, 0x11AA] },
+{ source: [0xD1DC], NFC: [0xD1DC], NFD: [0x1110, 0x116B, 0x11AB], NFKC: [0xD1DC], NFKD: [0x1110, 0x116B, 0x11AB] },
+{ source: [0xD1DD], NFC: [0xD1DD], NFD: [0x1110, 0x116B, 0x11AC], NFKC: [0xD1DD], NFKD: [0x1110, 0x116B, 0x11AC] },
+{ source: [0xD1DE], NFC: [0xD1DE], NFD: [0x1110, 0x116B, 0x11AD], NFKC: [0xD1DE], NFKD: [0x1110, 0x116B, 0x11AD] },
+{ source: [0xD1DF], NFC: [0xD1DF], NFD: [0x1110, 0x116B, 0x11AE], NFKC: [0xD1DF], NFKD: [0x1110, 0x116B, 0x11AE] },
+{ source: [0xD1E0], NFC: [0xD1E0], NFD: [0x1110, 0x116B, 0x11AF], NFKC: [0xD1E0], NFKD: [0x1110, 0x116B, 0x11AF] },
+{ source: [0xD1E1], NFC: [0xD1E1], NFD: [0x1110, 0x116B, 0x11B0], NFKC: [0xD1E1], NFKD: [0x1110, 0x116B, 0x11B0] },
+{ source: [0xD1E2], NFC: [0xD1E2], NFD: [0x1110, 0x116B, 0x11B1], NFKC: [0xD1E2], NFKD: [0x1110, 0x116B, 0x11B1] },
+{ source: [0xD1E3], NFC: [0xD1E3], NFD: [0x1110, 0x116B, 0x11B2], NFKC: [0xD1E3], NFKD: [0x1110, 0x116B, 0x11B2] },
+{ source: [0xD1E4], NFC: [0xD1E4], NFD: [0x1110, 0x116B, 0x11B3], NFKC: [0xD1E4], NFKD: [0x1110, 0x116B, 0x11B3] },
+{ source: [0xD1E5], NFC: [0xD1E5], NFD: [0x1110, 0x116B, 0x11B4], NFKC: [0xD1E5], NFKD: [0x1110, 0x116B, 0x11B4] },
+{ source: [0xD1E6], NFC: [0xD1E6], NFD: [0x1110, 0x116B, 0x11B5], NFKC: [0xD1E6], NFKD: [0x1110, 0x116B, 0x11B5] },
+{ source: [0xD1E7], NFC: [0xD1E7], NFD: [0x1110, 0x116B, 0x11B6], NFKC: [0xD1E7], NFKD: [0x1110, 0x116B, 0x11B6] },
+{ source: [0xD1E8], NFC: [0xD1E8], NFD: [0x1110, 0x116B, 0x11B7], NFKC: [0xD1E8], NFKD: [0x1110, 0x116B, 0x11B7] },
+{ source: [0xD1E9], NFC: [0xD1E9], NFD: [0x1110, 0x116B, 0x11B8], NFKC: [0xD1E9], NFKD: [0x1110, 0x116B, 0x11B8] },
+{ source: [0xD1EA], NFC: [0xD1EA], NFD: [0x1110, 0x116B, 0x11B9], NFKC: [0xD1EA], NFKD: [0x1110, 0x116B, 0x11B9] },
+{ source: [0xD1EB], NFC: [0xD1EB], NFD: [0x1110, 0x116B, 0x11BA], NFKC: [0xD1EB], NFKD: [0x1110, 0x116B, 0x11BA] },
+{ source: [0xD1EC], NFC: [0xD1EC], NFD: [0x1110, 0x116B, 0x11BB], NFKC: [0xD1EC], NFKD: [0x1110, 0x116B, 0x11BB] },
+{ source: [0xD1ED], NFC: [0xD1ED], NFD: [0x1110, 0x116B, 0x11BC], NFKC: [0xD1ED], NFKD: [0x1110, 0x116B, 0x11BC] },
+{ source: [0xD1EE], NFC: [0xD1EE], NFD: [0x1110, 0x116B, 0x11BD], NFKC: [0xD1EE], NFKD: [0x1110, 0x116B, 0x11BD] },
+{ source: [0xD1EF], NFC: [0xD1EF], NFD: [0x1110, 0x116B, 0x11BE], NFKC: [0xD1EF], NFKD: [0x1110, 0x116B, 0x11BE] },
+{ source: [0xD1F0], NFC: [0xD1F0], NFD: [0x1110, 0x116B, 0x11BF], NFKC: [0xD1F0], NFKD: [0x1110, 0x116B, 0x11BF] },
+{ source: [0xD1F1], NFC: [0xD1F1], NFD: [0x1110, 0x116B, 0x11C0], NFKC: [0xD1F1], NFKD: [0x1110, 0x116B, 0x11C0] },
+{ source: [0xD1F2], NFC: [0xD1F2], NFD: [0x1110, 0x116B, 0x11C1], NFKC: [0xD1F2], NFKD: [0x1110, 0x116B, 0x11C1] },
+{ source: [0xD1F3], NFC: [0xD1F3], NFD: [0x1110, 0x116B, 0x11C2], NFKC: [0xD1F3], NFKD: [0x1110, 0x116B, 0x11C2] },
+{ source: [0xD1F4], NFC: [0xD1F4], NFD: [0x1110, 0x116C], NFKC: [0xD1F4], NFKD: [0x1110, 0x116C] },
+{ source: [0xD1F5], NFC: [0xD1F5], NFD: [0x1110, 0x116C, 0x11A8], NFKC: [0xD1F5], NFKD: [0x1110, 0x116C, 0x11A8] },
+{ source: [0xD1F6], NFC: [0xD1F6], NFD: [0x1110, 0x116C, 0x11A9], NFKC: [0xD1F6], NFKD: [0x1110, 0x116C, 0x11A9] },
+{ source: [0xD1F7], NFC: [0xD1F7], NFD: [0x1110, 0x116C, 0x11AA], NFKC: [0xD1F7], NFKD: [0x1110, 0x116C, 0x11AA] },
+{ source: [0xD1F8], NFC: [0xD1F8], NFD: [0x1110, 0x116C, 0x11AB], NFKC: [0xD1F8], NFKD: [0x1110, 0x116C, 0x11AB] },
+{ source: [0xD1F9], NFC: [0xD1F9], NFD: [0x1110, 0x116C, 0x11AC], NFKC: [0xD1F9], NFKD: [0x1110, 0x116C, 0x11AC] },
+{ source: [0xD1FA], NFC: [0xD1FA], NFD: [0x1110, 0x116C, 0x11AD], NFKC: [0xD1FA], NFKD: [0x1110, 0x116C, 0x11AD] },
+{ source: [0xD1FB], NFC: [0xD1FB], NFD: [0x1110, 0x116C, 0x11AE], NFKC: [0xD1FB], NFKD: [0x1110, 0x116C, 0x11AE] },
+{ source: [0xD1FC], NFC: [0xD1FC], NFD: [0x1110, 0x116C, 0x11AF], NFKC: [0xD1FC], NFKD: [0x1110, 0x116C, 0x11AF] },
+{ source: [0xD1FD], NFC: [0xD1FD], NFD: [0x1110, 0x116C, 0x11B0], NFKC: [0xD1FD], NFKD: [0x1110, 0x116C, 0x11B0] },
+{ source: [0xD1FE], NFC: [0xD1FE], NFD: [0x1110, 0x116C, 0x11B1], NFKC: [0xD1FE], NFKD: [0x1110, 0x116C, 0x11B1] },
+{ source: [0xD1FF], NFC: [0xD1FF], NFD: [0x1110, 0x116C, 0x11B2], NFKC: [0xD1FF], NFKD: [0x1110, 0x116C, 0x11B2] },
+{ source: [0xD200], NFC: [0xD200], NFD: [0x1110, 0x116C, 0x11B3], NFKC: [0xD200], NFKD: [0x1110, 0x116C, 0x11B3] },
+{ source: [0xD201], NFC: [0xD201], NFD: [0x1110, 0x116C, 0x11B4], NFKC: [0xD201], NFKD: [0x1110, 0x116C, 0x11B4] },
+{ source: [0xD202], NFC: [0xD202], NFD: [0x1110, 0x116C, 0x11B5], NFKC: [0xD202], NFKD: [0x1110, 0x116C, 0x11B5] },
+{ source: [0xD203], NFC: [0xD203], NFD: [0x1110, 0x116C, 0x11B6], NFKC: [0xD203], NFKD: [0x1110, 0x116C, 0x11B6] },
+{ source: [0xD204], NFC: [0xD204], NFD: [0x1110, 0x116C, 0x11B7], NFKC: [0xD204], NFKD: [0x1110, 0x116C, 0x11B7] },
+{ source: [0xD205], NFC: [0xD205], NFD: [0x1110, 0x116C, 0x11B8], NFKC: [0xD205], NFKD: [0x1110, 0x116C, 0x11B8] },
+{ source: [0xD206], NFC: [0xD206], NFD: [0x1110, 0x116C, 0x11B9], NFKC: [0xD206], NFKD: [0x1110, 0x116C, 0x11B9] },
+{ source: [0xD207], NFC: [0xD207], NFD: [0x1110, 0x116C, 0x11BA], NFKC: [0xD207], NFKD: [0x1110, 0x116C, 0x11BA] },
+{ source: [0xD208], NFC: [0xD208], NFD: [0x1110, 0x116C, 0x11BB], NFKC: [0xD208], NFKD: [0x1110, 0x116C, 0x11BB] },
+{ source: [0xD209], NFC: [0xD209], NFD: [0x1110, 0x116C, 0x11BC], NFKC: [0xD209], NFKD: [0x1110, 0x116C, 0x11BC] },
+{ source: [0xD20A], NFC: [0xD20A], NFD: [0x1110, 0x116C, 0x11BD], NFKC: [0xD20A], NFKD: [0x1110, 0x116C, 0x11BD] },
+{ source: [0xD20B], NFC: [0xD20B], NFD: [0x1110, 0x116C, 0x11BE], NFKC: [0xD20B], NFKD: [0x1110, 0x116C, 0x11BE] },
+{ source: [0xD20C], NFC: [0xD20C], NFD: [0x1110, 0x116C, 0x11BF], NFKC: [0xD20C], NFKD: [0x1110, 0x116C, 0x11BF] },
+{ source: [0xD20D], NFC: [0xD20D], NFD: [0x1110, 0x116C, 0x11C0], NFKC: [0xD20D], NFKD: [0x1110, 0x116C, 0x11C0] },
+{ source: [0xD20E], NFC: [0xD20E], NFD: [0x1110, 0x116C, 0x11C1], NFKC: [0xD20E], NFKD: [0x1110, 0x116C, 0x11C1] },
+{ source: [0xD20F], NFC: [0xD20F], NFD: [0x1110, 0x116C, 0x11C2], NFKC: [0xD20F], NFKD: [0x1110, 0x116C, 0x11C2] },
+{ source: [0xD210], NFC: [0xD210], NFD: [0x1110, 0x116D], NFKC: [0xD210], NFKD: [0x1110, 0x116D] },
+{ source: [0xD211], NFC: [0xD211], NFD: [0x1110, 0x116D, 0x11A8], NFKC: [0xD211], NFKD: [0x1110, 0x116D, 0x11A8] },
+{ source: [0xD212], NFC: [0xD212], NFD: [0x1110, 0x116D, 0x11A9], NFKC: [0xD212], NFKD: [0x1110, 0x116D, 0x11A9] },
+{ source: [0xD213], NFC: [0xD213], NFD: [0x1110, 0x116D, 0x11AA], NFKC: [0xD213], NFKD: [0x1110, 0x116D, 0x11AA] },
+{ source: [0xD214], NFC: [0xD214], NFD: [0x1110, 0x116D, 0x11AB], NFKC: [0xD214], NFKD: [0x1110, 0x116D, 0x11AB] },
+{ source: [0xD215], NFC: [0xD215], NFD: [0x1110, 0x116D, 0x11AC], NFKC: [0xD215], NFKD: [0x1110, 0x116D, 0x11AC] },
+{ source: [0xD216], NFC: [0xD216], NFD: [0x1110, 0x116D, 0x11AD], NFKC: [0xD216], NFKD: [0x1110, 0x116D, 0x11AD] },
+{ source: [0xD217], NFC: [0xD217], NFD: [0x1110, 0x116D, 0x11AE], NFKC: [0xD217], NFKD: [0x1110, 0x116D, 0x11AE] },
+{ source: [0xD218], NFC: [0xD218], NFD: [0x1110, 0x116D, 0x11AF], NFKC: [0xD218], NFKD: [0x1110, 0x116D, 0x11AF] },
+{ source: [0xD219], NFC: [0xD219], NFD: [0x1110, 0x116D, 0x11B0], NFKC: [0xD219], NFKD: [0x1110, 0x116D, 0x11B0] },
+{ source: [0xD21A], NFC: [0xD21A], NFD: [0x1110, 0x116D, 0x11B1], NFKC: [0xD21A], NFKD: [0x1110, 0x116D, 0x11B1] },
+{ source: [0xD21B], NFC: [0xD21B], NFD: [0x1110, 0x116D, 0x11B2], NFKC: [0xD21B], NFKD: [0x1110, 0x116D, 0x11B2] },
+{ source: [0xD21C], NFC: [0xD21C], NFD: [0x1110, 0x116D, 0x11B3], NFKC: [0xD21C], NFKD: [0x1110, 0x116D, 0x11B3] },
+{ source: [0xD21D], NFC: [0xD21D], NFD: [0x1110, 0x116D, 0x11B4], NFKC: [0xD21D], NFKD: [0x1110, 0x116D, 0x11B4] },
+{ source: [0xD21E], NFC: [0xD21E], NFD: [0x1110, 0x116D, 0x11B5], NFKC: [0xD21E], NFKD: [0x1110, 0x116D, 0x11B5] },
+{ source: [0xD21F], NFC: [0xD21F], NFD: [0x1110, 0x116D, 0x11B6], NFKC: [0xD21F], NFKD: [0x1110, 0x116D, 0x11B6] },
+{ source: [0xD220], NFC: [0xD220], NFD: [0x1110, 0x116D, 0x11B7], NFKC: [0xD220], NFKD: [0x1110, 0x116D, 0x11B7] },
+{ source: [0xD221], NFC: [0xD221], NFD: [0x1110, 0x116D, 0x11B8], NFKC: [0xD221], NFKD: [0x1110, 0x116D, 0x11B8] },
+{ source: [0xD222], NFC: [0xD222], NFD: [0x1110, 0x116D, 0x11B9], NFKC: [0xD222], NFKD: [0x1110, 0x116D, 0x11B9] },
+{ source: [0xD223], NFC: [0xD223], NFD: [0x1110, 0x116D, 0x11BA], NFKC: [0xD223], NFKD: [0x1110, 0x116D, 0x11BA] },
+{ source: [0xD224], NFC: [0xD224], NFD: [0x1110, 0x116D, 0x11BB], NFKC: [0xD224], NFKD: [0x1110, 0x116D, 0x11BB] },
+{ source: [0xD225], NFC: [0xD225], NFD: [0x1110, 0x116D, 0x11BC], NFKC: [0xD225], NFKD: [0x1110, 0x116D, 0x11BC] },
+{ source: [0xD226], NFC: [0xD226], NFD: [0x1110, 0x116D, 0x11BD], NFKC: [0xD226], NFKD: [0x1110, 0x116D, 0x11BD] },
+{ source: [0xD227], NFC: [0xD227], NFD: [0x1110, 0x116D, 0x11BE], NFKC: [0xD227], NFKD: [0x1110, 0x116D, 0x11BE] },
+{ source: [0xD228], NFC: [0xD228], NFD: [0x1110, 0x116D, 0x11BF], NFKC: [0xD228], NFKD: [0x1110, 0x116D, 0x11BF] },
+{ source: [0xD229], NFC: [0xD229], NFD: [0x1110, 0x116D, 0x11C0], NFKC: [0xD229], NFKD: [0x1110, 0x116D, 0x11C0] },
+{ source: [0xD22A], NFC: [0xD22A], NFD: [0x1110, 0x116D, 0x11C1], NFKC: [0xD22A], NFKD: [0x1110, 0x116D, 0x11C1] },
+{ source: [0xD22B], NFC: [0xD22B], NFD: [0x1110, 0x116D, 0x11C2], NFKC: [0xD22B], NFKD: [0x1110, 0x116D, 0x11C2] },
+{ source: [0xD22C], NFC: [0xD22C], NFD: [0x1110, 0x116E], NFKC: [0xD22C], NFKD: [0x1110, 0x116E] },
+{ source: [0xD22D], NFC: [0xD22D], NFD: [0x1110, 0x116E, 0x11A8], NFKC: [0xD22D], NFKD: [0x1110, 0x116E, 0x11A8] },
+{ source: [0xD22E], NFC: [0xD22E], NFD: [0x1110, 0x116E, 0x11A9], NFKC: [0xD22E], NFKD: [0x1110, 0x116E, 0x11A9] },
+{ source: [0xD22F], NFC: [0xD22F], NFD: [0x1110, 0x116E, 0x11AA], NFKC: [0xD22F], NFKD: [0x1110, 0x116E, 0x11AA] },
+{ source: [0xD230], NFC: [0xD230], NFD: [0x1110, 0x116E, 0x11AB], NFKC: [0xD230], NFKD: [0x1110, 0x116E, 0x11AB] },
+{ source: [0xD231], NFC: [0xD231], NFD: [0x1110, 0x116E, 0x11AC], NFKC: [0xD231], NFKD: [0x1110, 0x116E, 0x11AC] },
+{ source: [0xD232], NFC: [0xD232], NFD: [0x1110, 0x116E, 0x11AD], NFKC: [0xD232], NFKD: [0x1110, 0x116E, 0x11AD] },
+{ source: [0xD233], NFC: [0xD233], NFD: [0x1110, 0x116E, 0x11AE], NFKC: [0xD233], NFKD: [0x1110, 0x116E, 0x11AE] },
+{ source: [0xD234], NFC: [0xD234], NFD: [0x1110, 0x116E, 0x11AF], NFKC: [0xD234], NFKD: [0x1110, 0x116E, 0x11AF] },
+{ source: [0xD235], NFC: [0xD235], NFD: [0x1110, 0x116E, 0x11B0], NFKC: [0xD235], NFKD: [0x1110, 0x116E, 0x11B0] },
+{ source: [0xD236], NFC: [0xD236], NFD: [0x1110, 0x116E, 0x11B1], NFKC: [0xD236], NFKD: [0x1110, 0x116E, 0x11B1] },
+{ source: [0xD237], NFC: [0xD237], NFD: [0x1110, 0x116E, 0x11B2], NFKC: [0xD237], NFKD: [0x1110, 0x116E, 0x11B2] },
+{ source: [0xD238], NFC: [0xD238], NFD: [0x1110, 0x116E, 0x11B3], NFKC: [0xD238], NFKD: [0x1110, 0x116E, 0x11B3] },
+{ source: [0xD239], NFC: [0xD239], NFD: [0x1110, 0x116E, 0x11B4], NFKC: [0xD239], NFKD: [0x1110, 0x116E, 0x11B4] },
+{ source: [0xD23A], NFC: [0xD23A], NFD: [0x1110, 0x116E, 0x11B5], NFKC: [0xD23A], NFKD: [0x1110, 0x116E, 0x11B5] },
+{ source: [0xD23B], NFC: [0xD23B], NFD: [0x1110, 0x116E, 0x11B6], NFKC: [0xD23B], NFKD: [0x1110, 0x116E, 0x11B6] },
+{ source: [0xD23C], NFC: [0xD23C], NFD: [0x1110, 0x116E, 0x11B7], NFKC: [0xD23C], NFKD: [0x1110, 0x116E, 0x11B7] },
+{ source: [0xD23D], NFC: [0xD23D], NFD: [0x1110, 0x116E, 0x11B8], NFKC: [0xD23D], NFKD: [0x1110, 0x116E, 0x11B8] },
+{ source: [0xD23E], NFC: [0xD23E], NFD: [0x1110, 0x116E, 0x11B9], NFKC: [0xD23E], NFKD: [0x1110, 0x116E, 0x11B9] },
+{ source: [0xD23F], NFC: [0xD23F], NFD: [0x1110, 0x116E, 0x11BA], NFKC: [0xD23F], NFKD: [0x1110, 0x116E, 0x11BA] },
+{ source: [0xD240], NFC: [0xD240], NFD: [0x1110, 0x116E, 0x11BB], NFKC: [0xD240], NFKD: [0x1110, 0x116E, 0x11BB] },
+{ source: [0xD241], NFC: [0xD241], NFD: [0x1110, 0x116E, 0x11BC], NFKC: [0xD241], NFKD: [0x1110, 0x116E, 0x11BC] },
+{ source: [0xD242], NFC: [0xD242], NFD: [0x1110, 0x116E, 0x11BD], NFKC: [0xD242], NFKD: [0x1110, 0x116E, 0x11BD] },
+{ source: [0xD243], NFC: [0xD243], NFD: [0x1110, 0x116E, 0x11BE], NFKC: [0xD243], NFKD: [0x1110, 0x116E, 0x11BE] },
+{ source: [0xD244], NFC: [0xD244], NFD: [0x1110, 0x116E, 0x11BF], NFKC: [0xD244], NFKD: [0x1110, 0x116E, 0x11BF] },
+{ source: [0xD245], NFC: [0xD245], NFD: [0x1110, 0x116E, 0x11C0], NFKC: [0xD245], NFKD: [0x1110, 0x116E, 0x11C0] },
+{ source: [0xD246], NFC: [0xD246], NFD: [0x1110, 0x116E, 0x11C1], NFKC: [0xD246], NFKD: [0x1110, 0x116E, 0x11C1] },
+{ source: [0xD247], NFC: [0xD247], NFD: [0x1110, 0x116E, 0x11C2], NFKC: [0xD247], NFKD: [0x1110, 0x116E, 0x11C2] },
+{ source: [0xD248], NFC: [0xD248], NFD: [0x1110, 0x116F], NFKC: [0xD248], NFKD: [0x1110, 0x116F] },
+{ source: [0xD249], NFC: [0xD249], NFD: [0x1110, 0x116F, 0x11A8], NFKC: [0xD249], NFKD: [0x1110, 0x116F, 0x11A8] },
+{ source: [0xD24A], NFC: [0xD24A], NFD: [0x1110, 0x116F, 0x11A9], NFKC: [0xD24A], NFKD: [0x1110, 0x116F, 0x11A9] },
+{ source: [0xD24B], NFC: [0xD24B], NFD: [0x1110, 0x116F, 0x11AA], NFKC: [0xD24B], NFKD: [0x1110, 0x116F, 0x11AA] },
+{ source: [0xD24C], NFC: [0xD24C], NFD: [0x1110, 0x116F, 0x11AB], NFKC: [0xD24C], NFKD: [0x1110, 0x116F, 0x11AB] },
+{ source: [0xD24D], NFC: [0xD24D], NFD: [0x1110, 0x116F, 0x11AC], NFKC: [0xD24D], NFKD: [0x1110, 0x116F, 0x11AC] },
+{ source: [0xD24E], NFC: [0xD24E], NFD: [0x1110, 0x116F, 0x11AD], NFKC: [0xD24E], NFKD: [0x1110, 0x116F, 0x11AD] },
+{ source: [0xD24F], NFC: [0xD24F], NFD: [0x1110, 0x116F, 0x11AE], NFKC: [0xD24F], NFKD: [0x1110, 0x116F, 0x11AE] },
+{ source: [0xD250], NFC: [0xD250], NFD: [0x1110, 0x116F, 0x11AF], NFKC: [0xD250], NFKD: [0x1110, 0x116F, 0x11AF] },
+{ source: [0xD251], NFC: [0xD251], NFD: [0x1110, 0x116F, 0x11B0], NFKC: [0xD251], NFKD: [0x1110, 0x116F, 0x11B0] },
+{ source: [0xD252], NFC: [0xD252], NFD: [0x1110, 0x116F, 0x11B1], NFKC: [0xD252], NFKD: [0x1110, 0x116F, 0x11B1] },
+{ source: [0xD253], NFC: [0xD253], NFD: [0x1110, 0x116F, 0x11B2], NFKC: [0xD253], NFKD: [0x1110, 0x116F, 0x11B2] },
+{ source: [0xD254], NFC: [0xD254], NFD: [0x1110, 0x116F, 0x11B3], NFKC: [0xD254], NFKD: [0x1110, 0x116F, 0x11B3] },
+{ source: [0xD255], NFC: [0xD255], NFD: [0x1110, 0x116F, 0x11B4], NFKC: [0xD255], NFKD: [0x1110, 0x116F, 0x11B4] },
+{ source: [0xD256], NFC: [0xD256], NFD: [0x1110, 0x116F, 0x11B5], NFKC: [0xD256], NFKD: [0x1110, 0x116F, 0x11B5] },
+{ source: [0xD257], NFC: [0xD257], NFD: [0x1110, 0x116F, 0x11B6], NFKC: [0xD257], NFKD: [0x1110, 0x116F, 0x11B6] },
+{ source: [0xD258], NFC: [0xD258], NFD: [0x1110, 0x116F, 0x11B7], NFKC: [0xD258], NFKD: [0x1110, 0x116F, 0x11B7] },
+{ source: [0xD259], NFC: [0xD259], NFD: [0x1110, 0x116F, 0x11B8], NFKC: [0xD259], NFKD: [0x1110, 0x116F, 0x11B8] },
+{ source: [0xD25A], NFC: [0xD25A], NFD: [0x1110, 0x116F, 0x11B9], NFKC: [0xD25A], NFKD: [0x1110, 0x116F, 0x11B9] },
+{ source: [0xD25B], NFC: [0xD25B], NFD: [0x1110, 0x116F, 0x11BA], NFKC: [0xD25B], NFKD: [0x1110, 0x116F, 0x11BA] },
+{ source: [0xD25C], NFC: [0xD25C], NFD: [0x1110, 0x116F, 0x11BB], NFKC: [0xD25C], NFKD: [0x1110, 0x116F, 0x11BB] },
+{ source: [0xD25D], NFC: [0xD25D], NFD: [0x1110, 0x116F, 0x11BC], NFKC: [0xD25D], NFKD: [0x1110, 0x116F, 0x11BC] },
+{ source: [0xD25E], NFC: [0xD25E], NFD: [0x1110, 0x116F, 0x11BD], NFKC: [0xD25E], NFKD: [0x1110, 0x116F, 0x11BD] },
+{ source: [0xD25F], NFC: [0xD25F], NFD: [0x1110, 0x116F, 0x11BE], NFKC: [0xD25F], NFKD: [0x1110, 0x116F, 0x11BE] },
+{ source: [0xD260], NFC: [0xD260], NFD: [0x1110, 0x116F, 0x11BF], NFKC: [0xD260], NFKD: [0x1110, 0x116F, 0x11BF] },
+{ source: [0xD261], NFC: [0xD261], NFD: [0x1110, 0x116F, 0x11C0], NFKC: [0xD261], NFKD: [0x1110, 0x116F, 0x11C0] },
+{ source: [0xD262], NFC: [0xD262], NFD: [0x1110, 0x116F, 0x11C1], NFKC: [0xD262], NFKD: [0x1110, 0x116F, 0x11C1] },
+{ source: [0xD263], NFC: [0xD263], NFD: [0x1110, 0x116F, 0x11C2], NFKC: [0xD263], NFKD: [0x1110, 0x116F, 0x11C2] },
+{ source: [0xD264], NFC: [0xD264], NFD: [0x1110, 0x1170], NFKC: [0xD264], NFKD: [0x1110, 0x1170] },
+{ source: [0xD265], NFC: [0xD265], NFD: [0x1110, 0x1170, 0x11A8], NFKC: [0xD265], NFKD: [0x1110, 0x1170, 0x11A8] },
+{ source: [0xD266], NFC: [0xD266], NFD: [0x1110, 0x1170, 0x11A9], NFKC: [0xD266], NFKD: [0x1110, 0x1170, 0x11A9] },
+{ source: [0xD267], NFC: [0xD267], NFD: [0x1110, 0x1170, 0x11AA], NFKC: [0xD267], NFKD: [0x1110, 0x1170, 0x11AA] },
+{ source: [0xD268], NFC: [0xD268], NFD: [0x1110, 0x1170, 0x11AB], NFKC: [0xD268], NFKD: [0x1110, 0x1170, 0x11AB] },
+{ source: [0xD269], NFC: [0xD269], NFD: [0x1110, 0x1170, 0x11AC], NFKC: [0xD269], NFKD: [0x1110, 0x1170, 0x11AC] },
+{ source: [0xD26A], NFC: [0xD26A], NFD: [0x1110, 0x1170, 0x11AD], NFKC: [0xD26A], NFKD: [0x1110, 0x1170, 0x11AD] },
+{ source: [0xD26B], NFC: [0xD26B], NFD: [0x1110, 0x1170, 0x11AE], NFKC: [0xD26B], NFKD: [0x1110, 0x1170, 0x11AE] },
+{ source: [0xD26C], NFC: [0xD26C], NFD: [0x1110, 0x1170, 0x11AF], NFKC: [0xD26C], NFKD: [0x1110, 0x1170, 0x11AF] },
+{ source: [0xD26D], NFC: [0xD26D], NFD: [0x1110, 0x1170, 0x11B0], NFKC: [0xD26D], NFKD: [0x1110, 0x1170, 0x11B0] },
+{ source: [0xD26E], NFC: [0xD26E], NFD: [0x1110, 0x1170, 0x11B1], NFKC: [0xD26E], NFKD: [0x1110, 0x1170, 0x11B1] },
+{ source: [0xD26F], NFC: [0xD26F], NFD: [0x1110, 0x1170, 0x11B2], NFKC: [0xD26F], NFKD: [0x1110, 0x1170, 0x11B2] },
+{ source: [0xD270], NFC: [0xD270], NFD: [0x1110, 0x1170, 0x11B3], NFKC: [0xD270], NFKD: [0x1110, 0x1170, 0x11B3] },
+{ source: [0xD271], NFC: [0xD271], NFD: [0x1110, 0x1170, 0x11B4], NFKC: [0xD271], NFKD: [0x1110, 0x1170, 0x11B4] },
+{ source: [0xD272], NFC: [0xD272], NFD: [0x1110, 0x1170, 0x11B5], NFKC: [0xD272], NFKD: [0x1110, 0x1170, 0x11B5] },
+{ source: [0xD273], NFC: [0xD273], NFD: [0x1110, 0x1170, 0x11B6], NFKC: [0xD273], NFKD: [0x1110, 0x1170, 0x11B6] },
+{ source: [0xD274], NFC: [0xD274], NFD: [0x1110, 0x1170, 0x11B7], NFKC: [0xD274], NFKD: [0x1110, 0x1170, 0x11B7] },
+{ source: [0xD275], NFC: [0xD275], NFD: [0x1110, 0x1170, 0x11B8], NFKC: [0xD275], NFKD: [0x1110, 0x1170, 0x11B8] },
+{ source: [0xD276], NFC: [0xD276], NFD: [0x1110, 0x1170, 0x11B9], NFKC: [0xD276], NFKD: [0x1110, 0x1170, 0x11B9] },
+{ source: [0xD277], NFC: [0xD277], NFD: [0x1110, 0x1170, 0x11BA], NFKC: [0xD277], NFKD: [0x1110, 0x1170, 0x11BA] },
+{ source: [0xD278], NFC: [0xD278], NFD: [0x1110, 0x1170, 0x11BB], NFKC: [0xD278], NFKD: [0x1110, 0x1170, 0x11BB] },
+{ source: [0xD279], NFC: [0xD279], NFD: [0x1110, 0x1170, 0x11BC], NFKC: [0xD279], NFKD: [0x1110, 0x1170, 0x11BC] },
+{ source: [0xD27A], NFC: [0xD27A], NFD: [0x1110, 0x1170, 0x11BD], NFKC: [0xD27A], NFKD: [0x1110, 0x1170, 0x11BD] },
+{ source: [0xD27B], NFC: [0xD27B], NFD: [0x1110, 0x1170, 0x11BE], NFKC: [0xD27B], NFKD: [0x1110, 0x1170, 0x11BE] },
+{ source: [0xD27C], NFC: [0xD27C], NFD: [0x1110, 0x1170, 0x11BF], NFKC: [0xD27C], NFKD: [0x1110, 0x1170, 0x11BF] },
+{ source: [0xD27D], NFC: [0xD27D], NFD: [0x1110, 0x1170, 0x11C0], NFKC: [0xD27D], NFKD: [0x1110, 0x1170, 0x11C0] },
+{ source: [0xD27E], NFC: [0xD27E], NFD: [0x1110, 0x1170, 0x11C1], NFKC: [0xD27E], NFKD: [0x1110, 0x1170, 0x11C1] },
+{ source: [0xD27F], NFC: [0xD27F], NFD: [0x1110, 0x1170, 0x11C2], NFKC: [0xD27F], NFKD: [0x1110, 0x1170, 0x11C2] },
+{ source: [0xD280], NFC: [0xD280], NFD: [0x1110, 0x1171], NFKC: [0xD280], NFKD: [0x1110, 0x1171] },
+{ source: [0xD281], NFC: [0xD281], NFD: [0x1110, 0x1171, 0x11A8], NFKC: [0xD281], NFKD: [0x1110, 0x1171, 0x11A8] },
+{ source: [0xD282], NFC: [0xD282], NFD: [0x1110, 0x1171, 0x11A9], NFKC: [0xD282], NFKD: [0x1110, 0x1171, 0x11A9] },
+{ source: [0xD283], NFC: [0xD283], NFD: [0x1110, 0x1171, 0x11AA], NFKC: [0xD283], NFKD: [0x1110, 0x1171, 0x11AA] },
+{ source: [0xD284], NFC: [0xD284], NFD: [0x1110, 0x1171, 0x11AB], NFKC: [0xD284], NFKD: [0x1110, 0x1171, 0x11AB] },
+{ source: [0xD285], NFC: [0xD285], NFD: [0x1110, 0x1171, 0x11AC], NFKC: [0xD285], NFKD: [0x1110, 0x1171, 0x11AC] },
+{ source: [0xD286], NFC: [0xD286], NFD: [0x1110, 0x1171, 0x11AD], NFKC: [0xD286], NFKD: [0x1110, 0x1171, 0x11AD] },
+{ source: [0xD287], NFC: [0xD287], NFD: [0x1110, 0x1171, 0x11AE], NFKC: [0xD287], NFKD: [0x1110, 0x1171, 0x11AE] },
+{ source: [0xD288], NFC: [0xD288], NFD: [0x1110, 0x1171, 0x11AF], NFKC: [0xD288], NFKD: [0x1110, 0x1171, 0x11AF] },
+{ source: [0xD289], NFC: [0xD289], NFD: [0x1110, 0x1171, 0x11B0], NFKC: [0xD289], NFKD: [0x1110, 0x1171, 0x11B0] },
+{ source: [0xD28A], NFC: [0xD28A], NFD: [0x1110, 0x1171, 0x11B1], NFKC: [0xD28A], NFKD: [0x1110, 0x1171, 0x11B1] },
+{ source: [0xD28B], NFC: [0xD28B], NFD: [0x1110, 0x1171, 0x11B2], NFKC: [0xD28B], NFKD: [0x1110, 0x1171, 0x11B2] },
+{ source: [0xD28C], NFC: [0xD28C], NFD: [0x1110, 0x1171, 0x11B3], NFKC: [0xD28C], NFKD: [0x1110, 0x1171, 0x11B3] },
+{ source: [0xD28D], NFC: [0xD28D], NFD: [0x1110, 0x1171, 0x11B4], NFKC: [0xD28D], NFKD: [0x1110, 0x1171, 0x11B4] },
+{ source: [0xD28E], NFC: [0xD28E], NFD: [0x1110, 0x1171, 0x11B5], NFKC: [0xD28E], NFKD: [0x1110, 0x1171, 0x11B5] },
+{ source: [0xD28F], NFC: [0xD28F], NFD: [0x1110, 0x1171, 0x11B6], NFKC: [0xD28F], NFKD: [0x1110, 0x1171, 0x11B6] },
+{ source: [0xD290], NFC: [0xD290], NFD: [0x1110, 0x1171, 0x11B7], NFKC: [0xD290], NFKD: [0x1110, 0x1171, 0x11B7] },
+{ source: [0xD291], NFC: [0xD291], NFD: [0x1110, 0x1171, 0x11B8], NFKC: [0xD291], NFKD: [0x1110, 0x1171, 0x11B8] },
+{ source: [0xD292], NFC: [0xD292], NFD: [0x1110, 0x1171, 0x11B9], NFKC: [0xD292], NFKD: [0x1110, 0x1171, 0x11B9] },
+{ source: [0xD293], NFC: [0xD293], NFD: [0x1110, 0x1171, 0x11BA], NFKC: [0xD293], NFKD: [0x1110, 0x1171, 0x11BA] },
+{ source: [0xD294], NFC: [0xD294], NFD: [0x1110, 0x1171, 0x11BB], NFKC: [0xD294], NFKD: [0x1110, 0x1171, 0x11BB] },
+{ source: [0xD295], NFC: [0xD295], NFD: [0x1110, 0x1171, 0x11BC], NFKC: [0xD295], NFKD: [0x1110, 0x1171, 0x11BC] },
+{ source: [0xD296], NFC: [0xD296], NFD: [0x1110, 0x1171, 0x11BD], NFKC: [0xD296], NFKD: [0x1110, 0x1171, 0x11BD] },
+{ source: [0xD297], NFC: [0xD297], NFD: [0x1110, 0x1171, 0x11BE], NFKC: [0xD297], NFKD: [0x1110, 0x1171, 0x11BE] },
+{ source: [0xD298], NFC: [0xD298], NFD: [0x1110, 0x1171, 0x11BF], NFKC: [0xD298], NFKD: [0x1110, 0x1171, 0x11BF] },
+{ source: [0xD299], NFC: [0xD299], NFD: [0x1110, 0x1171, 0x11C0], NFKC: [0xD299], NFKD: [0x1110, 0x1171, 0x11C0] },
+{ source: [0xD29A], NFC: [0xD29A], NFD: [0x1110, 0x1171, 0x11C1], NFKC: [0xD29A], NFKD: [0x1110, 0x1171, 0x11C1] },
+{ source: [0xD29B], NFC: [0xD29B], NFD: [0x1110, 0x1171, 0x11C2], NFKC: [0xD29B], NFKD: [0x1110, 0x1171, 0x11C2] },
+{ source: [0xD29C], NFC: [0xD29C], NFD: [0x1110, 0x1172], NFKC: [0xD29C], NFKD: [0x1110, 0x1172] },
+{ source: [0xD29D], NFC: [0xD29D], NFD: [0x1110, 0x1172, 0x11A8], NFKC: [0xD29D], NFKD: [0x1110, 0x1172, 0x11A8] },
+{ source: [0xD29E], NFC: [0xD29E], NFD: [0x1110, 0x1172, 0x11A9], NFKC: [0xD29E], NFKD: [0x1110, 0x1172, 0x11A9] },
+{ source: [0xD29F], NFC: [0xD29F], NFD: [0x1110, 0x1172, 0x11AA], NFKC: [0xD29F], NFKD: [0x1110, 0x1172, 0x11AA] },
+{ source: [0xD2A0], NFC: [0xD2A0], NFD: [0x1110, 0x1172, 0x11AB], NFKC: [0xD2A0], NFKD: [0x1110, 0x1172, 0x11AB] },
+{ source: [0xD2A1], NFC: [0xD2A1], NFD: [0x1110, 0x1172, 0x11AC], NFKC: [0xD2A1], NFKD: [0x1110, 0x1172, 0x11AC] },
+{ source: [0xD2A2], NFC: [0xD2A2], NFD: [0x1110, 0x1172, 0x11AD], NFKC: [0xD2A2], NFKD: [0x1110, 0x1172, 0x11AD] },
+{ source: [0xD2A3], NFC: [0xD2A3], NFD: [0x1110, 0x1172, 0x11AE], NFKC: [0xD2A3], NFKD: [0x1110, 0x1172, 0x11AE] },
+{ source: [0xD2A4], NFC: [0xD2A4], NFD: [0x1110, 0x1172, 0x11AF], NFKC: [0xD2A4], NFKD: [0x1110, 0x1172, 0x11AF] },
+{ source: [0xD2A5], NFC: [0xD2A5], NFD: [0x1110, 0x1172, 0x11B0], NFKC: [0xD2A5], NFKD: [0x1110, 0x1172, 0x11B0] },
+{ source: [0xD2A6], NFC: [0xD2A6], NFD: [0x1110, 0x1172, 0x11B1], NFKC: [0xD2A6], NFKD: [0x1110, 0x1172, 0x11B1] },
+{ source: [0xD2A7], NFC: [0xD2A7], NFD: [0x1110, 0x1172, 0x11B2], NFKC: [0xD2A7], NFKD: [0x1110, 0x1172, 0x11B2] },
+{ source: [0xD2A8], NFC: [0xD2A8], NFD: [0x1110, 0x1172, 0x11B3], NFKC: [0xD2A8], NFKD: [0x1110, 0x1172, 0x11B3] },
+{ source: [0xD2A9], NFC: [0xD2A9], NFD: [0x1110, 0x1172, 0x11B4], NFKC: [0xD2A9], NFKD: [0x1110, 0x1172, 0x11B4] },
+{ source: [0xD2AA], NFC: [0xD2AA], NFD: [0x1110, 0x1172, 0x11B5], NFKC: [0xD2AA], NFKD: [0x1110, 0x1172, 0x11B5] },
+{ source: [0xD2AB], NFC: [0xD2AB], NFD: [0x1110, 0x1172, 0x11B6], NFKC: [0xD2AB], NFKD: [0x1110, 0x1172, 0x11B6] },
+{ source: [0xD2AC], NFC: [0xD2AC], NFD: [0x1110, 0x1172, 0x11B7], NFKC: [0xD2AC], NFKD: [0x1110, 0x1172, 0x11B7] },
+{ source: [0xD2AD], NFC: [0xD2AD], NFD: [0x1110, 0x1172, 0x11B8], NFKC: [0xD2AD], NFKD: [0x1110, 0x1172, 0x11B8] },
+{ source: [0xD2AE], NFC: [0xD2AE], NFD: [0x1110, 0x1172, 0x11B9], NFKC: [0xD2AE], NFKD: [0x1110, 0x1172, 0x11B9] },
+{ source: [0xD2AF], NFC: [0xD2AF], NFD: [0x1110, 0x1172, 0x11BA], NFKC: [0xD2AF], NFKD: [0x1110, 0x1172, 0x11BA] },
+{ source: [0xD2B0], NFC: [0xD2B0], NFD: [0x1110, 0x1172, 0x11BB], NFKC: [0xD2B0], NFKD: [0x1110, 0x1172, 0x11BB] },
+{ source: [0xD2B1], NFC: [0xD2B1], NFD: [0x1110, 0x1172, 0x11BC], NFKC: [0xD2B1], NFKD: [0x1110, 0x1172, 0x11BC] },
+{ source: [0xD2B2], NFC: [0xD2B2], NFD: [0x1110, 0x1172, 0x11BD], NFKC: [0xD2B2], NFKD: [0x1110, 0x1172, 0x11BD] },
+{ source: [0xD2B3], NFC: [0xD2B3], NFD: [0x1110, 0x1172, 0x11BE], NFKC: [0xD2B3], NFKD: [0x1110, 0x1172, 0x11BE] },
+{ source: [0xD2B4], NFC: [0xD2B4], NFD: [0x1110, 0x1172, 0x11BF], NFKC: [0xD2B4], NFKD: [0x1110, 0x1172, 0x11BF] },
+{ source: [0xD2B5], NFC: [0xD2B5], NFD: [0x1110, 0x1172, 0x11C0], NFKC: [0xD2B5], NFKD: [0x1110, 0x1172, 0x11C0] },
+{ source: [0xD2B6], NFC: [0xD2B6], NFD: [0x1110, 0x1172, 0x11C1], NFKC: [0xD2B6], NFKD: [0x1110, 0x1172, 0x11C1] },
+{ source: [0xD2B7], NFC: [0xD2B7], NFD: [0x1110, 0x1172, 0x11C2], NFKC: [0xD2B7], NFKD: [0x1110, 0x1172, 0x11C2] },
+{ source: [0xD2B8], NFC: [0xD2B8], NFD: [0x1110, 0x1173], NFKC: [0xD2B8], NFKD: [0x1110, 0x1173] },
+{ source: [0xD2B9], NFC: [0xD2B9], NFD: [0x1110, 0x1173, 0x11A8], NFKC: [0xD2B9], NFKD: [0x1110, 0x1173, 0x11A8] },
+{ source: [0xD2BA], NFC: [0xD2BA], NFD: [0x1110, 0x1173, 0x11A9], NFKC: [0xD2BA], NFKD: [0x1110, 0x1173, 0x11A9] },
+{ source: [0xD2BB], NFC: [0xD2BB], NFD: [0x1110, 0x1173, 0x11AA], NFKC: [0xD2BB], NFKD: [0x1110, 0x1173, 0x11AA] },
+{ source: [0xD2BC], NFC: [0xD2BC], NFD: [0x1110, 0x1173, 0x11AB], NFKC: [0xD2BC], NFKD: [0x1110, 0x1173, 0x11AB] },
+{ source: [0xD2BD], NFC: [0xD2BD], NFD: [0x1110, 0x1173, 0x11AC], NFKC: [0xD2BD], NFKD: [0x1110, 0x1173, 0x11AC] },
+{ source: [0xD2BE], NFC: [0xD2BE], NFD: [0x1110, 0x1173, 0x11AD], NFKC: [0xD2BE], NFKD: [0x1110, 0x1173, 0x11AD] },
+{ source: [0xD2BF], NFC: [0xD2BF], NFD: [0x1110, 0x1173, 0x11AE], NFKC: [0xD2BF], NFKD: [0x1110, 0x1173, 0x11AE] },
+{ source: [0xD2C0], NFC: [0xD2C0], NFD: [0x1110, 0x1173, 0x11AF], NFKC: [0xD2C0], NFKD: [0x1110, 0x1173, 0x11AF] },
+{ source: [0xD2C1], NFC: [0xD2C1], NFD: [0x1110, 0x1173, 0x11B0], NFKC: [0xD2C1], NFKD: [0x1110, 0x1173, 0x11B0] },
+{ source: [0xD2C2], NFC: [0xD2C2], NFD: [0x1110, 0x1173, 0x11B1], NFKC: [0xD2C2], NFKD: [0x1110, 0x1173, 0x11B1] },
+{ source: [0xD2C3], NFC: [0xD2C3], NFD: [0x1110, 0x1173, 0x11B2], NFKC: [0xD2C3], NFKD: [0x1110, 0x1173, 0x11B2] },
+{ source: [0xD2C4], NFC: [0xD2C4], NFD: [0x1110, 0x1173, 0x11B3], NFKC: [0xD2C4], NFKD: [0x1110, 0x1173, 0x11B3] },
+{ source: [0xD2C5], NFC: [0xD2C5], NFD: [0x1110, 0x1173, 0x11B4], NFKC: [0xD2C5], NFKD: [0x1110, 0x1173, 0x11B4] },
+{ source: [0xD2C6], NFC: [0xD2C6], NFD: [0x1110, 0x1173, 0x11B5], NFKC: [0xD2C6], NFKD: [0x1110, 0x1173, 0x11B5] },
+{ source: [0xD2C7], NFC: [0xD2C7], NFD: [0x1110, 0x1173, 0x11B6], NFKC: [0xD2C7], NFKD: [0x1110, 0x1173, 0x11B6] },
+{ source: [0xD2C8], NFC: [0xD2C8], NFD: [0x1110, 0x1173, 0x11B7], NFKC: [0xD2C8], NFKD: [0x1110, 0x1173, 0x11B7] },
+{ source: [0xD2C9], NFC: [0xD2C9], NFD: [0x1110, 0x1173, 0x11B8], NFKC: [0xD2C9], NFKD: [0x1110, 0x1173, 0x11B8] },
+{ source: [0xD2CA], NFC: [0xD2CA], NFD: [0x1110, 0x1173, 0x11B9], NFKC: [0xD2CA], NFKD: [0x1110, 0x1173, 0x11B9] },
+{ source: [0xD2CB], NFC: [0xD2CB], NFD: [0x1110, 0x1173, 0x11BA], NFKC: [0xD2CB], NFKD: [0x1110, 0x1173, 0x11BA] },
+{ source: [0xD2CC], NFC: [0xD2CC], NFD: [0x1110, 0x1173, 0x11BB], NFKC: [0xD2CC], NFKD: [0x1110, 0x1173, 0x11BB] },
+{ source: [0xD2CD], NFC: [0xD2CD], NFD: [0x1110, 0x1173, 0x11BC], NFKC: [0xD2CD], NFKD: [0x1110, 0x1173, 0x11BC] },
+{ source: [0xD2CE], NFC: [0xD2CE], NFD: [0x1110, 0x1173, 0x11BD], NFKC: [0xD2CE], NFKD: [0x1110, 0x1173, 0x11BD] },
+{ source: [0xD2CF], NFC: [0xD2CF], NFD: [0x1110, 0x1173, 0x11BE], NFKC: [0xD2CF], NFKD: [0x1110, 0x1173, 0x11BE] },
+{ source: [0xD2D0], NFC: [0xD2D0], NFD: [0x1110, 0x1173, 0x11BF], NFKC: [0xD2D0], NFKD: [0x1110, 0x1173, 0x11BF] },
+{ source: [0xD2D1], NFC: [0xD2D1], NFD: [0x1110, 0x1173, 0x11C0], NFKC: [0xD2D1], NFKD: [0x1110, 0x1173, 0x11C0] },
+{ source: [0xD2D2], NFC: [0xD2D2], NFD: [0x1110, 0x1173, 0x11C1], NFKC: [0xD2D2], NFKD: [0x1110, 0x1173, 0x11C1] },
+{ source: [0xD2D3], NFC: [0xD2D3], NFD: [0x1110, 0x1173, 0x11C2], NFKC: [0xD2D3], NFKD: [0x1110, 0x1173, 0x11C2] },
+{ source: [0xD2D4], NFC: [0xD2D4], NFD: [0x1110, 0x1174], NFKC: [0xD2D4], NFKD: [0x1110, 0x1174] },
+{ source: [0xD2D5], NFC: [0xD2D5], NFD: [0x1110, 0x1174, 0x11A8], NFKC: [0xD2D5], NFKD: [0x1110, 0x1174, 0x11A8] },
+{ source: [0xD2D6], NFC: [0xD2D6], NFD: [0x1110, 0x1174, 0x11A9], NFKC: [0xD2D6], NFKD: [0x1110, 0x1174, 0x11A9] },
+{ source: [0xD2D7], NFC: [0xD2D7], NFD: [0x1110, 0x1174, 0x11AA], NFKC: [0xD2D7], NFKD: [0x1110, 0x1174, 0x11AA] },
+{ source: [0xD2D8], NFC: [0xD2D8], NFD: [0x1110, 0x1174, 0x11AB], NFKC: [0xD2D8], NFKD: [0x1110, 0x1174, 0x11AB] },
+{ source: [0xD2D9], NFC: [0xD2D9], NFD: [0x1110, 0x1174, 0x11AC], NFKC: [0xD2D9], NFKD: [0x1110, 0x1174, 0x11AC] },
+{ source: [0xD2DA], NFC: [0xD2DA], NFD: [0x1110, 0x1174, 0x11AD], NFKC: [0xD2DA], NFKD: [0x1110, 0x1174, 0x11AD] },
+{ source: [0xD2DB], NFC: [0xD2DB], NFD: [0x1110, 0x1174, 0x11AE], NFKC: [0xD2DB], NFKD: [0x1110, 0x1174, 0x11AE] },
+{ source: [0xD2DC], NFC: [0xD2DC], NFD: [0x1110, 0x1174, 0x11AF], NFKC: [0xD2DC], NFKD: [0x1110, 0x1174, 0x11AF] },
+{ source: [0xD2DD], NFC: [0xD2DD], NFD: [0x1110, 0x1174, 0x11B0], NFKC: [0xD2DD], NFKD: [0x1110, 0x1174, 0x11B0] },
+{ source: [0xD2DE], NFC: [0xD2DE], NFD: [0x1110, 0x1174, 0x11B1], NFKC: [0xD2DE], NFKD: [0x1110, 0x1174, 0x11B1] },
+{ source: [0xD2DF], NFC: [0xD2DF], NFD: [0x1110, 0x1174, 0x11B2], NFKC: [0xD2DF], NFKD: [0x1110, 0x1174, 0x11B2] },
+{ source: [0xD2E0], NFC: [0xD2E0], NFD: [0x1110, 0x1174, 0x11B3], NFKC: [0xD2E0], NFKD: [0x1110, 0x1174, 0x11B3] },
+{ source: [0xD2E1], NFC: [0xD2E1], NFD: [0x1110, 0x1174, 0x11B4], NFKC: [0xD2E1], NFKD: [0x1110, 0x1174, 0x11B4] },
+{ source: [0xD2E2], NFC: [0xD2E2], NFD: [0x1110, 0x1174, 0x11B5], NFKC: [0xD2E2], NFKD: [0x1110, 0x1174, 0x11B5] },
+{ source: [0xD2E3], NFC: [0xD2E3], NFD: [0x1110, 0x1174, 0x11B6], NFKC: [0xD2E3], NFKD: [0x1110, 0x1174, 0x11B6] },
+{ source: [0xD2E4], NFC: [0xD2E4], NFD: [0x1110, 0x1174, 0x11B7], NFKC: [0xD2E4], NFKD: [0x1110, 0x1174, 0x11B7] },
+{ source: [0xD2E5], NFC: [0xD2E5], NFD: [0x1110, 0x1174, 0x11B8], NFKC: [0xD2E5], NFKD: [0x1110, 0x1174, 0x11B8] },
+{ source: [0xD2E6], NFC: [0xD2E6], NFD: [0x1110, 0x1174, 0x11B9], NFKC: [0xD2E6], NFKD: [0x1110, 0x1174, 0x11B9] },
+{ source: [0xD2E7], NFC: [0xD2E7], NFD: [0x1110, 0x1174, 0x11BA], NFKC: [0xD2E7], NFKD: [0x1110, 0x1174, 0x11BA] },
+{ source: [0xD2E8], NFC: [0xD2E8], NFD: [0x1110, 0x1174, 0x11BB], NFKC: [0xD2E8], NFKD: [0x1110, 0x1174, 0x11BB] },
+{ source: [0xD2E9], NFC: [0xD2E9], NFD: [0x1110, 0x1174, 0x11BC], NFKC: [0xD2E9], NFKD: [0x1110, 0x1174, 0x11BC] },
+{ source: [0xD2EA], NFC: [0xD2EA], NFD: [0x1110, 0x1174, 0x11BD], NFKC: [0xD2EA], NFKD: [0x1110, 0x1174, 0x11BD] },
+{ source: [0xD2EB], NFC: [0xD2EB], NFD: [0x1110, 0x1174, 0x11BE], NFKC: [0xD2EB], NFKD: [0x1110, 0x1174, 0x11BE] },
+{ source: [0xD2EC], NFC: [0xD2EC], NFD: [0x1110, 0x1174, 0x11BF], NFKC: [0xD2EC], NFKD: [0x1110, 0x1174, 0x11BF] },
+{ source: [0xD2ED], NFC: [0xD2ED], NFD: [0x1110, 0x1174, 0x11C0], NFKC: [0xD2ED], NFKD: [0x1110, 0x1174, 0x11C0] },
+{ source: [0xD2EE], NFC: [0xD2EE], NFD: [0x1110, 0x1174, 0x11C1], NFKC: [0xD2EE], NFKD: [0x1110, 0x1174, 0x11C1] },
+{ source: [0xD2EF], NFC: [0xD2EF], NFD: [0x1110, 0x1174, 0x11C2], NFKC: [0xD2EF], NFKD: [0x1110, 0x1174, 0x11C2] },
+{ source: [0xD2F0], NFC: [0xD2F0], NFD: [0x1110, 0x1175], NFKC: [0xD2F0], NFKD: [0x1110, 0x1175] },
+{ source: [0xD2F1], NFC: [0xD2F1], NFD: [0x1110, 0x1175, 0x11A8], NFKC: [0xD2F1], NFKD: [0x1110, 0x1175, 0x11A8] },
+{ source: [0xD2F2], NFC: [0xD2F2], NFD: [0x1110, 0x1175, 0x11A9], NFKC: [0xD2F2], NFKD: [0x1110, 0x1175, 0x11A9] },
+{ source: [0xD2F3], NFC: [0xD2F3], NFD: [0x1110, 0x1175, 0x11AA], NFKC: [0xD2F3], NFKD: [0x1110, 0x1175, 0x11AA] },
+{ source: [0xD2F4], NFC: [0xD2F4], NFD: [0x1110, 0x1175, 0x11AB], NFKC: [0xD2F4], NFKD: [0x1110, 0x1175, 0x11AB] },
+{ source: [0xD2F5], NFC: [0xD2F5], NFD: [0x1110, 0x1175, 0x11AC], NFKC: [0xD2F5], NFKD: [0x1110, 0x1175, 0x11AC] },
+{ source: [0xD2F6], NFC: [0xD2F6], NFD: [0x1110, 0x1175, 0x11AD], NFKC: [0xD2F6], NFKD: [0x1110, 0x1175, 0x11AD] },
+{ source: [0xD2F7], NFC: [0xD2F7], NFD: [0x1110, 0x1175, 0x11AE], NFKC: [0xD2F7], NFKD: [0x1110, 0x1175, 0x11AE] },
+{ source: [0xD2F8], NFC: [0xD2F8], NFD: [0x1110, 0x1175, 0x11AF], NFKC: [0xD2F8], NFKD: [0x1110, 0x1175, 0x11AF] },
+{ source: [0xD2F9], NFC: [0xD2F9], NFD: [0x1110, 0x1175, 0x11B0], NFKC: [0xD2F9], NFKD: [0x1110, 0x1175, 0x11B0] },
+{ source: [0xD2FA], NFC: [0xD2FA], NFD: [0x1110, 0x1175, 0x11B1], NFKC: [0xD2FA], NFKD: [0x1110, 0x1175, 0x11B1] },
+{ source: [0xD2FB], NFC: [0xD2FB], NFD: [0x1110, 0x1175, 0x11B2], NFKC: [0xD2FB], NFKD: [0x1110, 0x1175, 0x11B2] },
+{ source: [0xD2FC], NFC: [0xD2FC], NFD: [0x1110, 0x1175, 0x11B3], NFKC: [0xD2FC], NFKD: [0x1110, 0x1175, 0x11B3] },
+{ source: [0xD2FD], NFC: [0xD2FD], NFD: [0x1110, 0x1175, 0x11B4], NFKC: [0xD2FD], NFKD: [0x1110, 0x1175, 0x11B4] },
+{ source: [0xD2FE], NFC: [0xD2FE], NFD: [0x1110, 0x1175, 0x11B5], NFKC: [0xD2FE], NFKD: [0x1110, 0x1175, 0x11B5] },
+{ source: [0xD2FF], NFC: [0xD2FF], NFD: [0x1110, 0x1175, 0x11B6], NFKC: [0xD2FF], NFKD: [0x1110, 0x1175, 0x11B6] },
+{ source: [0xD300], NFC: [0xD300], NFD: [0x1110, 0x1175, 0x11B7], NFKC: [0xD300], NFKD: [0x1110, 0x1175, 0x11B7] },
+{ source: [0xD301], NFC: [0xD301], NFD: [0x1110, 0x1175, 0x11B8], NFKC: [0xD301], NFKD: [0x1110, 0x1175, 0x11B8] },
+{ source: [0xD302], NFC: [0xD302], NFD: [0x1110, 0x1175, 0x11B9], NFKC: [0xD302], NFKD: [0x1110, 0x1175, 0x11B9] },
+{ source: [0xD303], NFC: [0xD303], NFD: [0x1110, 0x1175, 0x11BA], NFKC: [0xD303], NFKD: [0x1110, 0x1175, 0x11BA] },
+{ source: [0xD304], NFC: [0xD304], NFD: [0x1110, 0x1175, 0x11BB], NFKC: [0xD304], NFKD: [0x1110, 0x1175, 0x11BB] },
+{ source: [0xD305], NFC: [0xD305], NFD: [0x1110, 0x1175, 0x11BC], NFKC: [0xD305], NFKD: [0x1110, 0x1175, 0x11BC] },
+{ source: [0xD306], NFC: [0xD306], NFD: [0x1110, 0x1175, 0x11BD], NFKC: [0xD306], NFKD: [0x1110, 0x1175, 0x11BD] },
+{ source: [0xD307], NFC: [0xD307], NFD: [0x1110, 0x1175, 0x11BE], NFKC: [0xD307], NFKD: [0x1110, 0x1175, 0x11BE] },
+{ source: [0xD308], NFC: [0xD308], NFD: [0x1110, 0x1175, 0x11BF], NFKC: [0xD308], NFKD: [0x1110, 0x1175, 0x11BF] },
+{ source: [0xD309], NFC: [0xD309], NFD: [0x1110, 0x1175, 0x11C0], NFKC: [0xD309], NFKD: [0x1110, 0x1175, 0x11C0] },
+{ source: [0xD30A], NFC: [0xD30A], NFD: [0x1110, 0x1175, 0x11C1], NFKC: [0xD30A], NFKD: [0x1110, 0x1175, 0x11C1] },
+{ source: [0xD30B], NFC: [0xD30B], NFD: [0x1110, 0x1175, 0x11C2], NFKC: [0xD30B], NFKD: [0x1110, 0x1175, 0x11C2] },
+{ source: [0xD30C], NFC: [0xD30C], NFD: [0x1111, 0x1161], NFKC: [0xD30C], NFKD: [0x1111, 0x1161] },
+{ source: [0xD30D], NFC: [0xD30D], NFD: [0x1111, 0x1161, 0x11A8], NFKC: [0xD30D], NFKD: [0x1111, 0x1161, 0x11A8] },
+{ source: [0xD30E], NFC: [0xD30E], NFD: [0x1111, 0x1161, 0x11A9], NFKC: [0xD30E], NFKD: [0x1111, 0x1161, 0x11A9] },
+{ source: [0xD30F], NFC: [0xD30F], NFD: [0x1111, 0x1161, 0x11AA], NFKC: [0xD30F], NFKD: [0x1111, 0x1161, 0x11AA] },
+{ source: [0xD310], NFC: [0xD310], NFD: [0x1111, 0x1161, 0x11AB], NFKC: [0xD310], NFKD: [0x1111, 0x1161, 0x11AB] },
+{ source: [0xD311], NFC: [0xD311], NFD: [0x1111, 0x1161, 0x11AC], NFKC: [0xD311], NFKD: [0x1111, 0x1161, 0x11AC] },
+{ source: [0xD312], NFC: [0xD312], NFD: [0x1111, 0x1161, 0x11AD], NFKC: [0xD312], NFKD: [0x1111, 0x1161, 0x11AD] },
+{ source: [0xD313], NFC: [0xD313], NFD: [0x1111, 0x1161, 0x11AE], NFKC: [0xD313], NFKD: [0x1111, 0x1161, 0x11AE] },
+{ source: [0xD314], NFC: [0xD314], NFD: [0x1111, 0x1161, 0x11AF], NFKC: [0xD314], NFKD: [0x1111, 0x1161, 0x11AF] },
+{ source: [0xD315], NFC: [0xD315], NFD: [0x1111, 0x1161, 0x11B0], NFKC: [0xD315], NFKD: [0x1111, 0x1161, 0x11B0] },
+{ source: [0xD316], NFC: [0xD316], NFD: [0x1111, 0x1161, 0x11B1], NFKC: [0xD316], NFKD: [0x1111, 0x1161, 0x11B1] },
+{ source: [0xD317], NFC: [0xD317], NFD: [0x1111, 0x1161, 0x11B2], NFKC: [0xD317], NFKD: [0x1111, 0x1161, 0x11B2] },
+{ source: [0xD318], NFC: [0xD318], NFD: [0x1111, 0x1161, 0x11B3], NFKC: [0xD318], NFKD: [0x1111, 0x1161, 0x11B3] },
+{ source: [0xD319], NFC: [0xD319], NFD: [0x1111, 0x1161, 0x11B4], NFKC: [0xD319], NFKD: [0x1111, 0x1161, 0x11B4] },
+{ source: [0xD31A], NFC: [0xD31A], NFD: [0x1111, 0x1161, 0x11B5], NFKC: [0xD31A], NFKD: [0x1111, 0x1161, 0x11B5] },
+{ source: [0xD31B], NFC: [0xD31B], NFD: [0x1111, 0x1161, 0x11B6], NFKC: [0xD31B], NFKD: [0x1111, 0x1161, 0x11B6] },
+{ source: [0xD31C], NFC: [0xD31C], NFD: [0x1111, 0x1161, 0x11B7], NFKC: [0xD31C], NFKD: [0x1111, 0x1161, 0x11B7] },
+{ source: [0xD31D], NFC: [0xD31D], NFD: [0x1111, 0x1161, 0x11B8], NFKC: [0xD31D], NFKD: [0x1111, 0x1161, 0x11B8] },
+{ source: [0xD31E], NFC: [0xD31E], NFD: [0x1111, 0x1161, 0x11B9], NFKC: [0xD31E], NFKD: [0x1111, 0x1161, 0x11B9] },
+{ source: [0xD31F], NFC: [0xD31F], NFD: [0x1111, 0x1161, 0x11BA], NFKC: [0xD31F], NFKD: [0x1111, 0x1161, 0x11BA] },
+{ source: [0xD320], NFC: [0xD320], NFD: [0x1111, 0x1161, 0x11BB], NFKC: [0xD320], NFKD: [0x1111, 0x1161, 0x11BB] },
+{ source: [0xD321], NFC: [0xD321], NFD: [0x1111, 0x1161, 0x11BC], NFKC: [0xD321], NFKD: [0x1111, 0x1161, 0x11BC] },
+{ source: [0xD322], NFC: [0xD322], NFD: [0x1111, 0x1161, 0x11BD], NFKC: [0xD322], NFKD: [0x1111, 0x1161, 0x11BD] },
+{ source: [0xD323], NFC: [0xD323], NFD: [0x1111, 0x1161, 0x11BE], NFKC: [0xD323], NFKD: [0x1111, 0x1161, 0x11BE] },
+{ source: [0xD324], NFC: [0xD324], NFD: [0x1111, 0x1161, 0x11BF], NFKC: [0xD324], NFKD: [0x1111, 0x1161, 0x11BF] },
+{ source: [0xD325], NFC: [0xD325], NFD: [0x1111, 0x1161, 0x11C0], NFKC: [0xD325], NFKD: [0x1111, 0x1161, 0x11C0] },
+{ source: [0xD326], NFC: [0xD326], NFD: [0x1111, 0x1161, 0x11C1], NFKC: [0xD326], NFKD: [0x1111, 0x1161, 0x11C1] },
+{ source: [0xD327], NFC: [0xD327], NFD: [0x1111, 0x1161, 0x11C2], NFKC: [0xD327], NFKD: [0x1111, 0x1161, 0x11C2] },
+{ source: [0xD328], NFC: [0xD328], NFD: [0x1111, 0x1162], NFKC: [0xD328], NFKD: [0x1111, 0x1162] },
+{ source: [0xD329], NFC: [0xD329], NFD: [0x1111, 0x1162, 0x11A8], NFKC: [0xD329], NFKD: [0x1111, 0x1162, 0x11A8] },
+{ source: [0xD32A], NFC: [0xD32A], NFD: [0x1111, 0x1162, 0x11A9], NFKC: [0xD32A], NFKD: [0x1111, 0x1162, 0x11A9] },
+{ source: [0xD32B], NFC: [0xD32B], NFD: [0x1111, 0x1162, 0x11AA], NFKC: [0xD32B], NFKD: [0x1111, 0x1162, 0x11AA] },
+{ source: [0xD32C], NFC: [0xD32C], NFD: [0x1111, 0x1162, 0x11AB], NFKC: [0xD32C], NFKD: [0x1111, 0x1162, 0x11AB] },
+{ source: [0xD32D], NFC: [0xD32D], NFD: [0x1111, 0x1162, 0x11AC], NFKC: [0xD32D], NFKD: [0x1111, 0x1162, 0x11AC] },
+{ source: [0xD32E], NFC: [0xD32E], NFD: [0x1111, 0x1162, 0x11AD], NFKC: [0xD32E], NFKD: [0x1111, 0x1162, 0x11AD] },
+{ source: [0xD32F], NFC: [0xD32F], NFD: [0x1111, 0x1162, 0x11AE], NFKC: [0xD32F], NFKD: [0x1111, 0x1162, 0x11AE] },
+{ source: [0xD330], NFC: [0xD330], NFD: [0x1111, 0x1162, 0x11AF], NFKC: [0xD330], NFKD: [0x1111, 0x1162, 0x11AF] },
+{ source: [0xD331], NFC: [0xD331], NFD: [0x1111, 0x1162, 0x11B0], NFKC: [0xD331], NFKD: [0x1111, 0x1162, 0x11B0] },
+{ source: [0xD332], NFC: [0xD332], NFD: [0x1111, 0x1162, 0x11B1], NFKC: [0xD332], NFKD: [0x1111, 0x1162, 0x11B1] },
+{ source: [0xD333], NFC: [0xD333], NFD: [0x1111, 0x1162, 0x11B2], NFKC: [0xD333], NFKD: [0x1111, 0x1162, 0x11B2] },
+{ source: [0xD334], NFC: [0xD334], NFD: [0x1111, 0x1162, 0x11B3], NFKC: [0xD334], NFKD: [0x1111, 0x1162, 0x11B3] },
+{ source: [0xD335], NFC: [0xD335], NFD: [0x1111, 0x1162, 0x11B4], NFKC: [0xD335], NFKD: [0x1111, 0x1162, 0x11B4] },
+{ source: [0xD336], NFC: [0xD336], NFD: [0x1111, 0x1162, 0x11B5], NFKC: [0xD336], NFKD: [0x1111, 0x1162, 0x11B5] },
+{ source: [0xD337], NFC: [0xD337], NFD: [0x1111, 0x1162, 0x11B6], NFKC: [0xD337], NFKD: [0x1111, 0x1162, 0x11B6] },
+{ source: [0xD338], NFC: [0xD338], NFD: [0x1111, 0x1162, 0x11B7], NFKC: [0xD338], NFKD: [0x1111, 0x1162, 0x11B7] },
+{ source: [0xD339], NFC: [0xD339], NFD: [0x1111, 0x1162, 0x11B8], NFKC: [0xD339], NFKD: [0x1111, 0x1162, 0x11B8] },
+{ source: [0xD33A], NFC: [0xD33A], NFD: [0x1111, 0x1162, 0x11B9], NFKC: [0xD33A], NFKD: [0x1111, 0x1162, 0x11B9] },
+{ source: [0xD33B], NFC: [0xD33B], NFD: [0x1111, 0x1162, 0x11BA], NFKC: [0xD33B], NFKD: [0x1111, 0x1162, 0x11BA] },
+{ source: [0xD33C], NFC: [0xD33C], NFD: [0x1111, 0x1162, 0x11BB], NFKC: [0xD33C], NFKD: [0x1111, 0x1162, 0x11BB] },
+{ source: [0xD33D], NFC: [0xD33D], NFD: [0x1111, 0x1162, 0x11BC], NFKC: [0xD33D], NFKD: [0x1111, 0x1162, 0x11BC] },
+{ source: [0xD33E], NFC: [0xD33E], NFD: [0x1111, 0x1162, 0x11BD], NFKC: [0xD33E], NFKD: [0x1111, 0x1162, 0x11BD] },
+{ source: [0xD33F], NFC: [0xD33F], NFD: [0x1111, 0x1162, 0x11BE], NFKC: [0xD33F], NFKD: [0x1111, 0x1162, 0x11BE] },
+{ source: [0xD340], NFC: [0xD340], NFD: [0x1111, 0x1162, 0x11BF], NFKC: [0xD340], NFKD: [0x1111, 0x1162, 0x11BF] },
+{ source: [0xD341], NFC: [0xD341], NFD: [0x1111, 0x1162, 0x11C0], NFKC: [0xD341], NFKD: [0x1111, 0x1162, 0x11C0] },
+{ source: [0xD342], NFC: [0xD342], NFD: [0x1111, 0x1162, 0x11C1], NFKC: [0xD342], NFKD: [0x1111, 0x1162, 0x11C1] },
+{ source: [0xD343], NFC: [0xD343], NFD: [0x1111, 0x1162, 0x11C2], NFKC: [0xD343], NFKD: [0x1111, 0x1162, 0x11C2] },
+{ source: [0xD344], NFC: [0xD344], NFD: [0x1111, 0x1163], NFKC: [0xD344], NFKD: [0x1111, 0x1163] },
+{ source: [0xD345], NFC: [0xD345], NFD: [0x1111, 0x1163, 0x11A8], NFKC: [0xD345], NFKD: [0x1111, 0x1163, 0x11A8] },
+{ source: [0xD346], NFC: [0xD346], NFD: [0x1111, 0x1163, 0x11A9], NFKC: [0xD346], NFKD: [0x1111, 0x1163, 0x11A9] },
+{ source: [0xD347], NFC: [0xD347], NFD: [0x1111, 0x1163, 0x11AA], NFKC: [0xD347], NFKD: [0x1111, 0x1163, 0x11AA] },
+{ source: [0xD348], NFC: [0xD348], NFD: [0x1111, 0x1163, 0x11AB], NFKC: [0xD348], NFKD: [0x1111, 0x1163, 0x11AB] },
+{ source: [0xD349], NFC: [0xD349], NFD: [0x1111, 0x1163, 0x11AC], NFKC: [0xD349], NFKD: [0x1111, 0x1163, 0x11AC] },
+{ source: [0xD34A], NFC: [0xD34A], NFD: [0x1111, 0x1163, 0x11AD], NFKC: [0xD34A], NFKD: [0x1111, 0x1163, 0x11AD] },
+{ source: [0xD34B], NFC: [0xD34B], NFD: [0x1111, 0x1163, 0x11AE], NFKC: [0xD34B], NFKD: [0x1111, 0x1163, 0x11AE] },
+{ source: [0xD34C], NFC: [0xD34C], NFD: [0x1111, 0x1163, 0x11AF], NFKC: [0xD34C], NFKD: [0x1111, 0x1163, 0x11AF] },
+{ source: [0xD34D], NFC: [0xD34D], NFD: [0x1111, 0x1163, 0x11B0], NFKC: [0xD34D], NFKD: [0x1111, 0x1163, 0x11B0] },
+{ source: [0xD34E], NFC: [0xD34E], NFD: [0x1111, 0x1163, 0x11B1], NFKC: [0xD34E], NFKD: [0x1111, 0x1163, 0x11B1] },
+{ source: [0xD34F], NFC: [0xD34F], NFD: [0x1111, 0x1163, 0x11B2], NFKC: [0xD34F], NFKD: [0x1111, 0x1163, 0x11B2] },
+{ source: [0xD350], NFC: [0xD350], NFD: [0x1111, 0x1163, 0x11B3], NFKC: [0xD350], NFKD: [0x1111, 0x1163, 0x11B3] },
+{ source: [0xD351], NFC: [0xD351], NFD: [0x1111, 0x1163, 0x11B4], NFKC: [0xD351], NFKD: [0x1111, 0x1163, 0x11B4] },
+{ source: [0xD352], NFC: [0xD352], NFD: [0x1111, 0x1163, 0x11B5], NFKC: [0xD352], NFKD: [0x1111, 0x1163, 0x11B5] },
+{ source: [0xD353], NFC: [0xD353], NFD: [0x1111, 0x1163, 0x11B6], NFKC: [0xD353], NFKD: [0x1111, 0x1163, 0x11B6] },
+{ source: [0xD354], NFC: [0xD354], NFD: [0x1111, 0x1163, 0x11B7], NFKC: [0xD354], NFKD: [0x1111, 0x1163, 0x11B7] },
+{ source: [0xD355], NFC: [0xD355], NFD: [0x1111, 0x1163, 0x11B8], NFKC: [0xD355], NFKD: [0x1111, 0x1163, 0x11B8] },
+{ source: [0xD356], NFC: [0xD356], NFD: [0x1111, 0x1163, 0x11B9], NFKC: [0xD356], NFKD: [0x1111, 0x1163, 0x11B9] },
+{ source: [0xD357], NFC: [0xD357], NFD: [0x1111, 0x1163, 0x11BA], NFKC: [0xD357], NFKD: [0x1111, 0x1163, 0x11BA] },
+{ source: [0xD358], NFC: [0xD358], NFD: [0x1111, 0x1163, 0x11BB], NFKC: [0xD358], NFKD: [0x1111, 0x1163, 0x11BB] },
+{ source: [0xD359], NFC: [0xD359], NFD: [0x1111, 0x1163, 0x11BC], NFKC: [0xD359], NFKD: [0x1111, 0x1163, 0x11BC] },
+{ source: [0xD35A], NFC: [0xD35A], NFD: [0x1111, 0x1163, 0x11BD], NFKC: [0xD35A], NFKD: [0x1111, 0x1163, 0x11BD] },
+{ source: [0xD35B], NFC: [0xD35B], NFD: [0x1111, 0x1163, 0x11BE], NFKC: [0xD35B], NFKD: [0x1111, 0x1163, 0x11BE] },
+{ source: [0xD35C], NFC: [0xD35C], NFD: [0x1111, 0x1163, 0x11BF], NFKC: [0xD35C], NFKD: [0x1111, 0x1163, 0x11BF] },
+{ source: [0xD35D], NFC: [0xD35D], NFD: [0x1111, 0x1163, 0x11C0], NFKC: [0xD35D], NFKD: [0x1111, 0x1163, 0x11C0] },
+{ source: [0xD35E], NFC: [0xD35E], NFD: [0x1111, 0x1163, 0x11C1], NFKC: [0xD35E], NFKD: [0x1111, 0x1163, 0x11C1] },
+{ source: [0xD35F], NFC: [0xD35F], NFD: [0x1111, 0x1163, 0x11C2], NFKC: [0xD35F], NFKD: [0x1111, 0x1163, 0x11C2] },
+{ source: [0xD360], NFC: [0xD360], NFD: [0x1111, 0x1164], NFKC: [0xD360], NFKD: [0x1111, 0x1164] },
+{ source: [0xD361], NFC: [0xD361], NFD: [0x1111, 0x1164, 0x11A8], NFKC: [0xD361], NFKD: [0x1111, 0x1164, 0x11A8] },
+{ source: [0xD362], NFC: [0xD362], NFD: [0x1111, 0x1164, 0x11A9], NFKC: [0xD362], NFKD: [0x1111, 0x1164, 0x11A9] },
+{ source: [0xD363], NFC: [0xD363], NFD: [0x1111, 0x1164, 0x11AA], NFKC: [0xD363], NFKD: [0x1111, 0x1164, 0x11AA] },
+{ source: [0xD364], NFC: [0xD364], NFD: [0x1111, 0x1164, 0x11AB], NFKC: [0xD364], NFKD: [0x1111, 0x1164, 0x11AB] },
+{ source: [0xD365], NFC: [0xD365], NFD: [0x1111, 0x1164, 0x11AC], NFKC: [0xD365], NFKD: [0x1111, 0x1164, 0x11AC] },
+{ source: [0xD366], NFC: [0xD366], NFD: [0x1111, 0x1164, 0x11AD], NFKC: [0xD366], NFKD: [0x1111, 0x1164, 0x11AD] },
+{ source: [0xD367], NFC: [0xD367], NFD: [0x1111, 0x1164, 0x11AE], NFKC: [0xD367], NFKD: [0x1111, 0x1164, 0x11AE] },
+{ source: [0xD368], NFC: [0xD368], NFD: [0x1111, 0x1164, 0x11AF], NFKC: [0xD368], NFKD: [0x1111, 0x1164, 0x11AF] },
+{ source: [0xD369], NFC: [0xD369], NFD: [0x1111, 0x1164, 0x11B0], NFKC: [0xD369], NFKD: [0x1111, 0x1164, 0x11B0] },
+{ source: [0xD36A], NFC: [0xD36A], NFD: [0x1111, 0x1164, 0x11B1], NFKC: [0xD36A], NFKD: [0x1111, 0x1164, 0x11B1] },
+{ source: [0xD36B], NFC: [0xD36B], NFD: [0x1111, 0x1164, 0x11B2], NFKC: [0xD36B], NFKD: [0x1111, 0x1164, 0x11B2] },
+{ source: [0xD36C], NFC: [0xD36C], NFD: [0x1111, 0x1164, 0x11B3], NFKC: [0xD36C], NFKD: [0x1111, 0x1164, 0x11B3] },
+{ source: [0xD36D], NFC: [0xD36D], NFD: [0x1111, 0x1164, 0x11B4], NFKC: [0xD36D], NFKD: [0x1111, 0x1164, 0x11B4] },
+{ source: [0xD36E], NFC: [0xD36E], NFD: [0x1111, 0x1164, 0x11B5], NFKC: [0xD36E], NFKD: [0x1111, 0x1164, 0x11B5] },
+{ source: [0xD36F], NFC: [0xD36F], NFD: [0x1111, 0x1164, 0x11B6], NFKC: [0xD36F], NFKD: [0x1111, 0x1164, 0x11B6] },
+{ source: [0xD370], NFC: [0xD370], NFD: [0x1111, 0x1164, 0x11B7], NFKC: [0xD370], NFKD: [0x1111, 0x1164, 0x11B7] },
+{ source: [0xD371], NFC: [0xD371], NFD: [0x1111, 0x1164, 0x11B8], NFKC: [0xD371], NFKD: [0x1111, 0x1164, 0x11B8] },
+{ source: [0xD372], NFC: [0xD372], NFD: [0x1111, 0x1164, 0x11B9], NFKC: [0xD372], NFKD: [0x1111, 0x1164, 0x11B9] },
+{ source: [0xD373], NFC: [0xD373], NFD: [0x1111, 0x1164, 0x11BA], NFKC: [0xD373], NFKD: [0x1111, 0x1164, 0x11BA] },
+{ source: [0xD374], NFC: [0xD374], NFD: [0x1111, 0x1164, 0x11BB], NFKC: [0xD374], NFKD: [0x1111, 0x1164, 0x11BB] },
+{ source: [0xD375], NFC: [0xD375], NFD: [0x1111, 0x1164, 0x11BC], NFKC: [0xD375], NFKD: [0x1111, 0x1164, 0x11BC] },
+{ source: [0xD376], NFC: [0xD376], NFD: [0x1111, 0x1164, 0x11BD], NFKC: [0xD376], NFKD: [0x1111, 0x1164, 0x11BD] },
+{ source: [0xD377], NFC: [0xD377], NFD: [0x1111, 0x1164, 0x11BE], NFKC: [0xD377], NFKD: [0x1111, 0x1164, 0x11BE] },
+{ source: [0xD378], NFC: [0xD378], NFD: [0x1111, 0x1164, 0x11BF], NFKC: [0xD378], NFKD: [0x1111, 0x1164, 0x11BF] },
+{ source: [0xD379], NFC: [0xD379], NFD: [0x1111, 0x1164, 0x11C0], NFKC: [0xD379], NFKD: [0x1111, 0x1164, 0x11C0] },
+{ source: [0xD37A], NFC: [0xD37A], NFD: [0x1111, 0x1164, 0x11C1], NFKC: [0xD37A], NFKD: [0x1111, 0x1164, 0x11C1] },
+{ source: [0xD37B], NFC: [0xD37B], NFD: [0x1111, 0x1164, 0x11C2], NFKC: [0xD37B], NFKD: [0x1111, 0x1164, 0x11C2] },
+{ source: [0xD37C], NFC: [0xD37C], NFD: [0x1111, 0x1165], NFKC: [0xD37C], NFKD: [0x1111, 0x1165] },
+{ source: [0xD37D], NFC: [0xD37D], NFD: [0x1111, 0x1165, 0x11A8], NFKC: [0xD37D], NFKD: [0x1111, 0x1165, 0x11A8] },
+{ source: [0xD37E], NFC: [0xD37E], NFD: [0x1111, 0x1165, 0x11A9], NFKC: [0xD37E], NFKD: [0x1111, 0x1165, 0x11A9] },
+{ source: [0xD37F], NFC: [0xD37F], NFD: [0x1111, 0x1165, 0x11AA], NFKC: [0xD37F], NFKD: [0x1111, 0x1165, 0x11AA] },
+{ source: [0xD380], NFC: [0xD380], NFD: [0x1111, 0x1165, 0x11AB], NFKC: [0xD380], NFKD: [0x1111, 0x1165, 0x11AB] },
+{ source: [0xD381], NFC: [0xD381], NFD: [0x1111, 0x1165, 0x11AC], NFKC: [0xD381], NFKD: [0x1111, 0x1165, 0x11AC] },
+{ source: [0xD382], NFC: [0xD382], NFD: [0x1111, 0x1165, 0x11AD], NFKC: [0xD382], NFKD: [0x1111, 0x1165, 0x11AD] },
+{ source: [0xD383], NFC: [0xD383], NFD: [0x1111, 0x1165, 0x11AE], NFKC: [0xD383], NFKD: [0x1111, 0x1165, 0x11AE] },
+{ source: [0xD384], NFC: [0xD384], NFD: [0x1111, 0x1165, 0x11AF], NFKC: [0xD384], NFKD: [0x1111, 0x1165, 0x11AF] },
+{ source: [0xD385], NFC: [0xD385], NFD: [0x1111, 0x1165, 0x11B0], NFKC: [0xD385], NFKD: [0x1111, 0x1165, 0x11B0] },
+{ source: [0xD386], NFC: [0xD386], NFD: [0x1111, 0x1165, 0x11B1], NFKC: [0xD386], NFKD: [0x1111, 0x1165, 0x11B1] },
+{ source: [0xD387], NFC: [0xD387], NFD: [0x1111, 0x1165, 0x11B2], NFKC: [0xD387], NFKD: [0x1111, 0x1165, 0x11B2] },
+{ source: [0xD388], NFC: [0xD388], NFD: [0x1111, 0x1165, 0x11B3], NFKC: [0xD388], NFKD: [0x1111, 0x1165, 0x11B3] },
+{ source: [0xD389], NFC: [0xD389], NFD: [0x1111, 0x1165, 0x11B4], NFKC: [0xD389], NFKD: [0x1111, 0x1165, 0x11B4] },
+{ source: [0xD38A], NFC: [0xD38A], NFD: [0x1111, 0x1165, 0x11B5], NFKC: [0xD38A], NFKD: [0x1111, 0x1165, 0x11B5] },
+{ source: [0xD38B], NFC: [0xD38B], NFD: [0x1111, 0x1165, 0x11B6], NFKC: [0xD38B], NFKD: [0x1111, 0x1165, 0x11B6] },
+{ source: [0xD38C], NFC: [0xD38C], NFD: [0x1111, 0x1165, 0x11B7], NFKC: [0xD38C], NFKD: [0x1111, 0x1165, 0x11B7] },
+{ source: [0xD38D], NFC: [0xD38D], NFD: [0x1111, 0x1165, 0x11B8], NFKC: [0xD38D], NFKD: [0x1111, 0x1165, 0x11B8] },
+{ source: [0xD38E], NFC: [0xD38E], NFD: [0x1111, 0x1165, 0x11B9], NFKC: [0xD38E], NFKD: [0x1111, 0x1165, 0x11B9] },
+{ source: [0xD38F], NFC: [0xD38F], NFD: [0x1111, 0x1165, 0x11BA], NFKC: [0xD38F], NFKD: [0x1111, 0x1165, 0x11BA] },
+{ source: [0xD390], NFC: [0xD390], NFD: [0x1111, 0x1165, 0x11BB], NFKC: [0xD390], NFKD: [0x1111, 0x1165, 0x11BB] },
+{ source: [0xD391], NFC: [0xD391], NFD: [0x1111, 0x1165, 0x11BC], NFKC: [0xD391], NFKD: [0x1111, 0x1165, 0x11BC] },
+{ source: [0xD392], NFC: [0xD392], NFD: [0x1111, 0x1165, 0x11BD], NFKC: [0xD392], NFKD: [0x1111, 0x1165, 0x11BD] },
+{ source: [0xD393], NFC: [0xD393], NFD: [0x1111, 0x1165, 0x11BE], NFKC: [0xD393], NFKD: [0x1111, 0x1165, 0x11BE] },
+{ source: [0xD394], NFC: [0xD394], NFD: [0x1111, 0x1165, 0x11BF], NFKC: [0xD394], NFKD: [0x1111, 0x1165, 0x11BF] },
+{ source: [0xD395], NFC: [0xD395], NFD: [0x1111, 0x1165, 0x11C0], NFKC: [0xD395], NFKD: [0x1111, 0x1165, 0x11C0] },
+{ source: [0xD396], NFC: [0xD396], NFD: [0x1111, 0x1165, 0x11C1], NFKC: [0xD396], NFKD: [0x1111, 0x1165, 0x11C1] },
+{ source: [0xD397], NFC: [0xD397], NFD: [0x1111, 0x1165, 0x11C2], NFKC: [0xD397], NFKD: [0x1111, 0x1165, 0x11C2] },
+{ source: [0xD398], NFC: [0xD398], NFD: [0x1111, 0x1166], NFKC: [0xD398], NFKD: [0x1111, 0x1166] },
+{ source: [0xD399], NFC: [0xD399], NFD: [0x1111, 0x1166, 0x11A8], NFKC: [0xD399], NFKD: [0x1111, 0x1166, 0x11A8] },
+{ source: [0xD39A], NFC: [0xD39A], NFD: [0x1111, 0x1166, 0x11A9], NFKC: [0xD39A], NFKD: [0x1111, 0x1166, 0x11A9] },
+{ source: [0xD39B], NFC: [0xD39B], NFD: [0x1111, 0x1166, 0x11AA], NFKC: [0xD39B], NFKD: [0x1111, 0x1166, 0x11AA] },
+{ source: [0xD39C], NFC: [0xD39C], NFD: [0x1111, 0x1166, 0x11AB], NFKC: [0xD39C], NFKD: [0x1111, 0x1166, 0x11AB] },
+{ source: [0xD39D], NFC: [0xD39D], NFD: [0x1111, 0x1166, 0x11AC], NFKC: [0xD39D], NFKD: [0x1111, 0x1166, 0x11AC] },
+{ source: [0xD39E], NFC: [0xD39E], NFD: [0x1111, 0x1166, 0x11AD], NFKC: [0xD39E], NFKD: [0x1111, 0x1166, 0x11AD] },
+{ source: [0xD39F], NFC: [0xD39F], NFD: [0x1111, 0x1166, 0x11AE], NFKC: [0xD39F], NFKD: [0x1111, 0x1166, 0x11AE] },
+{ source: [0xD3A0], NFC: [0xD3A0], NFD: [0x1111, 0x1166, 0x11AF], NFKC: [0xD3A0], NFKD: [0x1111, 0x1166, 0x11AF] },
+{ source: [0xD3A1], NFC: [0xD3A1], NFD: [0x1111, 0x1166, 0x11B0], NFKC: [0xD3A1], NFKD: [0x1111, 0x1166, 0x11B0] },
+{ source: [0xD3A2], NFC: [0xD3A2], NFD: [0x1111, 0x1166, 0x11B1], NFKC: [0xD3A2], NFKD: [0x1111, 0x1166, 0x11B1] },
+{ source: [0xD3A3], NFC: [0xD3A3], NFD: [0x1111, 0x1166, 0x11B2], NFKC: [0xD3A3], NFKD: [0x1111, 0x1166, 0x11B2] },
+{ source: [0xD3A4], NFC: [0xD3A4], NFD: [0x1111, 0x1166, 0x11B3], NFKC: [0xD3A4], NFKD: [0x1111, 0x1166, 0x11B3] },
+{ source: [0xD3A5], NFC: [0xD3A5], NFD: [0x1111, 0x1166, 0x11B4], NFKC: [0xD3A5], NFKD: [0x1111, 0x1166, 0x11B4] },
+{ source: [0xD3A6], NFC: [0xD3A6], NFD: [0x1111, 0x1166, 0x11B5], NFKC: [0xD3A6], NFKD: [0x1111, 0x1166, 0x11B5] },
+{ source: [0xD3A7], NFC: [0xD3A7], NFD: [0x1111, 0x1166, 0x11B6], NFKC: [0xD3A7], NFKD: [0x1111, 0x1166, 0x11B6] },
+{ source: [0xD3A8], NFC: [0xD3A8], NFD: [0x1111, 0x1166, 0x11B7], NFKC: [0xD3A8], NFKD: [0x1111, 0x1166, 0x11B7] },
+{ source: [0xD3A9], NFC: [0xD3A9], NFD: [0x1111, 0x1166, 0x11B8], NFKC: [0xD3A9], NFKD: [0x1111, 0x1166, 0x11B8] },
+{ source: [0xD3AA], NFC: [0xD3AA], NFD: [0x1111, 0x1166, 0x11B9], NFKC: [0xD3AA], NFKD: [0x1111, 0x1166, 0x11B9] },
+{ source: [0xD3AB], NFC: [0xD3AB], NFD: [0x1111, 0x1166, 0x11BA], NFKC: [0xD3AB], NFKD: [0x1111, 0x1166, 0x11BA] },
+{ source: [0xD3AC], NFC: [0xD3AC], NFD: [0x1111, 0x1166, 0x11BB], NFKC: [0xD3AC], NFKD: [0x1111, 0x1166, 0x11BB] },
+{ source: [0xD3AD], NFC: [0xD3AD], NFD: [0x1111, 0x1166, 0x11BC], NFKC: [0xD3AD], NFKD: [0x1111, 0x1166, 0x11BC] },
+{ source: [0xD3AE], NFC: [0xD3AE], NFD: [0x1111, 0x1166, 0x11BD], NFKC: [0xD3AE], NFKD: [0x1111, 0x1166, 0x11BD] },
+{ source: [0xD3AF], NFC: [0xD3AF], NFD: [0x1111, 0x1166, 0x11BE], NFKC: [0xD3AF], NFKD: [0x1111, 0x1166, 0x11BE] },
+{ source: [0xD3B0], NFC: [0xD3B0], NFD: [0x1111, 0x1166, 0x11BF], NFKC: [0xD3B0], NFKD: [0x1111, 0x1166, 0x11BF] },
+{ source: [0xD3B1], NFC: [0xD3B1], NFD: [0x1111, 0x1166, 0x11C0], NFKC: [0xD3B1], NFKD: [0x1111, 0x1166, 0x11C0] },
+{ source: [0xD3B2], NFC: [0xD3B2], NFD: [0x1111, 0x1166, 0x11C1], NFKC: [0xD3B2], NFKD: [0x1111, 0x1166, 0x11C1] },
+{ source: [0xD3B3], NFC: [0xD3B3], NFD: [0x1111, 0x1166, 0x11C2], NFKC: [0xD3B3], NFKD: [0x1111, 0x1166, 0x11C2] },
+{ source: [0xD3B4], NFC: [0xD3B4], NFD: [0x1111, 0x1167], NFKC: [0xD3B4], NFKD: [0x1111, 0x1167] },
+{ source: [0xD3B5], NFC: [0xD3B5], NFD: [0x1111, 0x1167, 0x11A8], NFKC: [0xD3B5], NFKD: [0x1111, 0x1167, 0x11A8] },
+{ source: [0xD3B6], NFC: [0xD3B6], NFD: [0x1111, 0x1167, 0x11A9], NFKC: [0xD3B6], NFKD: [0x1111, 0x1167, 0x11A9] },
+{ source: [0xD3B7], NFC: [0xD3B7], NFD: [0x1111, 0x1167, 0x11AA], NFKC: [0xD3B7], NFKD: [0x1111, 0x1167, 0x11AA] },
+{ source: [0xD3B8], NFC: [0xD3B8], NFD: [0x1111, 0x1167, 0x11AB], NFKC: [0xD3B8], NFKD: [0x1111, 0x1167, 0x11AB] },
+{ source: [0xD3B9], NFC: [0xD3B9], NFD: [0x1111, 0x1167, 0x11AC], NFKC: [0xD3B9], NFKD: [0x1111, 0x1167, 0x11AC] },
+{ source: [0xD3BA], NFC: [0xD3BA], NFD: [0x1111, 0x1167, 0x11AD], NFKC: [0xD3BA], NFKD: [0x1111, 0x1167, 0x11AD] },
+{ source: [0xD3BB], NFC: [0xD3BB], NFD: [0x1111, 0x1167, 0x11AE], NFKC: [0xD3BB], NFKD: [0x1111, 0x1167, 0x11AE] },
+{ source: [0xD3BC], NFC: [0xD3BC], NFD: [0x1111, 0x1167, 0x11AF], NFKC: [0xD3BC], NFKD: [0x1111, 0x1167, 0x11AF] },
+{ source: [0xD3BD], NFC: [0xD3BD], NFD: [0x1111, 0x1167, 0x11B0], NFKC: [0xD3BD], NFKD: [0x1111, 0x1167, 0x11B0] },
+{ source: [0xD3BE], NFC: [0xD3BE], NFD: [0x1111, 0x1167, 0x11B1], NFKC: [0xD3BE], NFKD: [0x1111, 0x1167, 0x11B1] },
+{ source: [0xD3BF], NFC: [0xD3BF], NFD: [0x1111, 0x1167, 0x11B2], NFKC: [0xD3BF], NFKD: [0x1111, 0x1167, 0x11B2] },
+{ source: [0xD3C0], NFC: [0xD3C0], NFD: [0x1111, 0x1167, 0x11B3], NFKC: [0xD3C0], NFKD: [0x1111, 0x1167, 0x11B3] },
+{ source: [0xD3C1], NFC: [0xD3C1], NFD: [0x1111, 0x1167, 0x11B4], NFKC: [0xD3C1], NFKD: [0x1111, 0x1167, 0x11B4] },
+{ source: [0xD3C2], NFC: [0xD3C2], NFD: [0x1111, 0x1167, 0x11B5], NFKC: [0xD3C2], NFKD: [0x1111, 0x1167, 0x11B5] },
+{ source: [0xD3C3], NFC: [0xD3C3], NFD: [0x1111, 0x1167, 0x11B6], NFKC: [0xD3C3], NFKD: [0x1111, 0x1167, 0x11B6] },
+{ source: [0xD3C4], NFC: [0xD3C4], NFD: [0x1111, 0x1167, 0x11B7], NFKC: [0xD3C4], NFKD: [0x1111, 0x1167, 0x11B7] },
+{ source: [0xD3C5], NFC: [0xD3C5], NFD: [0x1111, 0x1167, 0x11B8], NFKC: [0xD3C5], NFKD: [0x1111, 0x1167, 0x11B8] },
+{ source: [0xD3C6], NFC: [0xD3C6], NFD: [0x1111, 0x1167, 0x11B9], NFKC: [0xD3C6], NFKD: [0x1111, 0x1167, 0x11B9] },
+{ source: [0xD3C7], NFC: [0xD3C7], NFD: [0x1111, 0x1167, 0x11BA], NFKC: [0xD3C7], NFKD: [0x1111, 0x1167, 0x11BA] },
+{ source: [0xD3C8], NFC: [0xD3C8], NFD: [0x1111, 0x1167, 0x11BB], NFKC: [0xD3C8], NFKD: [0x1111, 0x1167, 0x11BB] },
+{ source: [0xD3C9], NFC: [0xD3C9], NFD: [0x1111, 0x1167, 0x11BC], NFKC: [0xD3C9], NFKD: [0x1111, 0x1167, 0x11BC] },
+{ source: [0xD3CA], NFC: [0xD3CA], NFD: [0x1111, 0x1167, 0x11BD], NFKC: [0xD3CA], NFKD: [0x1111, 0x1167, 0x11BD] },
+{ source: [0xD3CB], NFC: [0xD3CB], NFD: [0x1111, 0x1167, 0x11BE], NFKC: [0xD3CB], NFKD: [0x1111, 0x1167, 0x11BE] },
+{ source: [0xD3CC], NFC: [0xD3CC], NFD: [0x1111, 0x1167, 0x11BF], NFKC: [0xD3CC], NFKD: [0x1111, 0x1167, 0x11BF] },
+{ source: [0xD3CD], NFC: [0xD3CD], NFD: [0x1111, 0x1167, 0x11C0], NFKC: [0xD3CD], NFKD: [0x1111, 0x1167, 0x11C0] },
+{ source: [0xD3CE], NFC: [0xD3CE], NFD: [0x1111, 0x1167, 0x11C1], NFKC: [0xD3CE], NFKD: [0x1111, 0x1167, 0x11C1] },
+{ source: [0xD3CF], NFC: [0xD3CF], NFD: [0x1111, 0x1167, 0x11C2], NFKC: [0xD3CF], NFKD: [0x1111, 0x1167, 0x11C2] },
+{ source: [0xD3D0], NFC: [0xD3D0], NFD: [0x1111, 0x1168], NFKC: [0xD3D0], NFKD: [0x1111, 0x1168] },
+{ source: [0xD3D1], NFC: [0xD3D1], NFD: [0x1111, 0x1168, 0x11A8], NFKC: [0xD3D1], NFKD: [0x1111, 0x1168, 0x11A8] },
+{ source: [0xD3D2], NFC: [0xD3D2], NFD: [0x1111, 0x1168, 0x11A9], NFKC: [0xD3D2], NFKD: [0x1111, 0x1168, 0x11A9] },
+{ source: [0xD3D3], NFC: [0xD3D3], NFD: [0x1111, 0x1168, 0x11AA], NFKC: [0xD3D3], NFKD: [0x1111, 0x1168, 0x11AA] },
+{ source: [0xD3D4], NFC: [0xD3D4], NFD: [0x1111, 0x1168, 0x11AB], NFKC: [0xD3D4], NFKD: [0x1111, 0x1168, 0x11AB] },
+{ source: [0xD3D5], NFC: [0xD3D5], NFD: [0x1111, 0x1168, 0x11AC], NFKC: [0xD3D5], NFKD: [0x1111, 0x1168, 0x11AC] },
+{ source: [0xD3D6], NFC: [0xD3D6], NFD: [0x1111, 0x1168, 0x11AD], NFKC: [0xD3D6], NFKD: [0x1111, 0x1168, 0x11AD] },
+{ source: [0xD3D7], NFC: [0xD3D7], NFD: [0x1111, 0x1168, 0x11AE], NFKC: [0xD3D7], NFKD: [0x1111, 0x1168, 0x11AE] },
+{ source: [0xD3D8], NFC: [0xD3D8], NFD: [0x1111, 0x1168, 0x11AF], NFKC: [0xD3D8], NFKD: [0x1111, 0x1168, 0x11AF] },
+{ source: [0xD3D9], NFC: [0xD3D9], NFD: [0x1111, 0x1168, 0x11B0], NFKC: [0xD3D9], NFKD: [0x1111, 0x1168, 0x11B0] },
+{ source: [0xD3DA], NFC: [0xD3DA], NFD: [0x1111, 0x1168, 0x11B1], NFKC: [0xD3DA], NFKD: [0x1111, 0x1168, 0x11B1] },
+{ source: [0xD3DB], NFC: [0xD3DB], NFD: [0x1111, 0x1168, 0x11B2], NFKC: [0xD3DB], NFKD: [0x1111, 0x1168, 0x11B2] },
+{ source: [0xD3DC], NFC: [0xD3DC], NFD: [0x1111, 0x1168, 0x11B3], NFKC: [0xD3DC], NFKD: [0x1111, 0x1168, 0x11B3] },
+{ source: [0xD3DD], NFC: [0xD3DD], NFD: [0x1111, 0x1168, 0x11B4], NFKC: [0xD3DD], NFKD: [0x1111, 0x1168, 0x11B4] },
+{ source: [0xD3DE], NFC: [0xD3DE], NFD: [0x1111, 0x1168, 0x11B5], NFKC: [0xD3DE], NFKD: [0x1111, 0x1168, 0x11B5] },
+{ source: [0xD3DF], NFC: [0xD3DF], NFD: [0x1111, 0x1168, 0x11B6], NFKC: [0xD3DF], NFKD: [0x1111, 0x1168, 0x11B6] },
+{ source: [0xD3E0], NFC: [0xD3E0], NFD: [0x1111, 0x1168, 0x11B7], NFKC: [0xD3E0], NFKD: [0x1111, 0x1168, 0x11B7] },
+{ source: [0xD3E1], NFC: [0xD3E1], NFD: [0x1111, 0x1168, 0x11B8], NFKC: [0xD3E1], NFKD: [0x1111, 0x1168, 0x11B8] },
+{ source: [0xD3E2], NFC: [0xD3E2], NFD: [0x1111, 0x1168, 0x11B9], NFKC: [0xD3E2], NFKD: [0x1111, 0x1168, 0x11B9] },
+{ source: [0xD3E3], NFC: [0xD3E3], NFD: [0x1111, 0x1168, 0x11BA], NFKC: [0xD3E3], NFKD: [0x1111, 0x1168, 0x11BA] },
+{ source: [0xD3E4], NFC: [0xD3E4], NFD: [0x1111, 0x1168, 0x11BB], NFKC: [0xD3E4], NFKD: [0x1111, 0x1168, 0x11BB] },
+{ source: [0xD3E5], NFC: [0xD3E5], NFD: [0x1111, 0x1168, 0x11BC], NFKC: [0xD3E5], NFKD: [0x1111, 0x1168, 0x11BC] },
+{ source: [0xD3E6], NFC: [0xD3E6], NFD: [0x1111, 0x1168, 0x11BD], NFKC: [0xD3E6], NFKD: [0x1111, 0x1168, 0x11BD] },
+{ source: [0xD3E7], NFC: [0xD3E7], NFD: [0x1111, 0x1168, 0x11BE], NFKC: [0xD3E7], NFKD: [0x1111, 0x1168, 0x11BE] },
+{ source: [0xD3E8], NFC: [0xD3E8], NFD: [0x1111, 0x1168, 0x11BF], NFKC: [0xD3E8], NFKD: [0x1111, 0x1168, 0x11BF] },
+{ source: [0xD3E9], NFC: [0xD3E9], NFD: [0x1111, 0x1168, 0x11C0], NFKC: [0xD3E9], NFKD: [0x1111, 0x1168, 0x11C0] },
+{ source: [0xD3EA], NFC: [0xD3EA], NFD: [0x1111, 0x1168, 0x11C1], NFKC: [0xD3EA], NFKD: [0x1111, 0x1168, 0x11C1] },
+{ source: [0xD3EB], NFC: [0xD3EB], NFD: [0x1111, 0x1168, 0x11C2], NFKC: [0xD3EB], NFKD: [0x1111, 0x1168, 0x11C2] },
+{ source: [0xD3EC], NFC: [0xD3EC], NFD: [0x1111, 0x1169], NFKC: [0xD3EC], NFKD: [0x1111, 0x1169] },
+{ source: [0xD3ED], NFC: [0xD3ED], NFD: [0x1111, 0x1169, 0x11A8], NFKC: [0xD3ED], NFKD: [0x1111, 0x1169, 0x11A8] },
+{ source: [0xD3EE], NFC: [0xD3EE], NFD: [0x1111, 0x1169, 0x11A9], NFKC: [0xD3EE], NFKD: [0x1111, 0x1169, 0x11A9] },
+{ source: [0xD3EF], NFC: [0xD3EF], NFD: [0x1111, 0x1169, 0x11AA], NFKC: [0xD3EF], NFKD: [0x1111, 0x1169, 0x11AA] },
+{ source: [0xD3F0], NFC: [0xD3F0], NFD: [0x1111, 0x1169, 0x11AB], NFKC: [0xD3F0], NFKD: [0x1111, 0x1169, 0x11AB] },
+{ source: [0xD3F1], NFC: [0xD3F1], NFD: [0x1111, 0x1169, 0x11AC], NFKC: [0xD3F1], NFKD: [0x1111, 0x1169, 0x11AC] },
+{ source: [0xD3F2], NFC: [0xD3F2], NFD: [0x1111, 0x1169, 0x11AD], NFKC: [0xD3F2], NFKD: [0x1111, 0x1169, 0x11AD] },
+{ source: [0xD3F3], NFC: [0xD3F3], NFD: [0x1111, 0x1169, 0x11AE], NFKC: [0xD3F3], NFKD: [0x1111, 0x1169, 0x11AE] },
+{ source: [0xD3F4], NFC: [0xD3F4], NFD: [0x1111, 0x1169, 0x11AF], NFKC: [0xD3F4], NFKD: [0x1111, 0x1169, 0x11AF] },
+{ source: [0xD3F5], NFC: [0xD3F5], NFD: [0x1111, 0x1169, 0x11B0], NFKC: [0xD3F5], NFKD: [0x1111, 0x1169, 0x11B0] },
+{ source: [0xD3F6], NFC: [0xD3F6], NFD: [0x1111, 0x1169, 0x11B1], NFKC: [0xD3F6], NFKD: [0x1111, 0x1169, 0x11B1] },
+{ source: [0xD3F7], NFC: [0xD3F7], NFD: [0x1111, 0x1169, 0x11B2], NFKC: [0xD3F7], NFKD: [0x1111, 0x1169, 0x11B2] },
+{ source: [0xD3F8], NFC: [0xD3F8], NFD: [0x1111, 0x1169, 0x11B3], NFKC: [0xD3F8], NFKD: [0x1111, 0x1169, 0x11B3] },
+{ source: [0xD3F9], NFC: [0xD3F9], NFD: [0x1111, 0x1169, 0x11B4], NFKC: [0xD3F9], NFKD: [0x1111, 0x1169, 0x11B4] },
+{ source: [0xD3FA], NFC: [0xD3FA], NFD: [0x1111, 0x1169, 0x11B5], NFKC: [0xD3FA], NFKD: [0x1111, 0x1169, 0x11B5] },
+{ source: [0xD3FB], NFC: [0xD3FB], NFD: [0x1111, 0x1169, 0x11B6], NFKC: [0xD3FB], NFKD: [0x1111, 0x1169, 0x11B6] },
+{ source: [0xD3FC], NFC: [0xD3FC], NFD: [0x1111, 0x1169, 0x11B7], NFKC: [0xD3FC], NFKD: [0x1111, 0x1169, 0x11B7] },
+{ source: [0xD3FD], NFC: [0xD3FD], NFD: [0x1111, 0x1169, 0x11B8], NFKC: [0xD3FD], NFKD: [0x1111, 0x1169, 0x11B8] },
+{ source: [0xD3FE], NFC: [0xD3FE], NFD: [0x1111, 0x1169, 0x11B9], NFKC: [0xD3FE], NFKD: [0x1111, 0x1169, 0x11B9] },
+{ source: [0xD3FF], NFC: [0xD3FF], NFD: [0x1111, 0x1169, 0x11BA], NFKC: [0xD3FF], NFKD: [0x1111, 0x1169, 0x11BA] },
+{ source: [0xD400], NFC: [0xD400], NFD: [0x1111, 0x1169, 0x11BB], NFKC: [0xD400], NFKD: [0x1111, 0x1169, 0x11BB] },
+{ source: [0xD401], NFC: [0xD401], NFD: [0x1111, 0x1169, 0x11BC], NFKC: [0xD401], NFKD: [0x1111, 0x1169, 0x11BC] },
+{ source: [0xD402], NFC: [0xD402], NFD: [0x1111, 0x1169, 0x11BD], NFKC: [0xD402], NFKD: [0x1111, 0x1169, 0x11BD] },
+{ source: [0xD403], NFC: [0xD403], NFD: [0x1111, 0x1169, 0x11BE], NFKC: [0xD403], NFKD: [0x1111, 0x1169, 0x11BE] },
+{ source: [0xD404], NFC: [0xD404], NFD: [0x1111, 0x1169, 0x11BF], NFKC: [0xD404], NFKD: [0x1111, 0x1169, 0x11BF] },
+{ source: [0xD405], NFC: [0xD405], NFD: [0x1111, 0x1169, 0x11C0], NFKC: [0xD405], NFKD: [0x1111, 0x1169, 0x11C0] },
+{ source: [0xD406], NFC: [0xD406], NFD: [0x1111, 0x1169, 0x11C1], NFKC: [0xD406], NFKD: [0x1111, 0x1169, 0x11C1] },
+{ source: [0xD407], NFC: [0xD407], NFD: [0x1111, 0x1169, 0x11C2], NFKC: [0xD407], NFKD: [0x1111, 0x1169, 0x11C2] },
+{ source: [0xD408], NFC: [0xD408], NFD: [0x1111, 0x116A], NFKC: [0xD408], NFKD: [0x1111, 0x116A] },
+{ source: [0xD409], NFC: [0xD409], NFD: [0x1111, 0x116A, 0x11A8], NFKC: [0xD409], NFKD: [0x1111, 0x116A, 0x11A8] },
+{ source: [0xD40A], NFC: [0xD40A], NFD: [0x1111, 0x116A, 0x11A9], NFKC: [0xD40A], NFKD: [0x1111, 0x116A, 0x11A9] },
+{ source: [0xD40B], NFC: [0xD40B], NFD: [0x1111, 0x116A, 0x11AA], NFKC: [0xD40B], NFKD: [0x1111, 0x116A, 0x11AA] },
+{ source: [0xD40C], NFC: [0xD40C], NFD: [0x1111, 0x116A, 0x11AB], NFKC: [0xD40C], NFKD: [0x1111, 0x116A, 0x11AB] },
+{ source: [0xD40D], NFC: [0xD40D], NFD: [0x1111, 0x116A, 0x11AC], NFKC: [0xD40D], NFKD: [0x1111, 0x116A, 0x11AC] },
+{ source: [0xD40E], NFC: [0xD40E], NFD: [0x1111, 0x116A, 0x11AD], NFKC: [0xD40E], NFKD: [0x1111, 0x116A, 0x11AD] },
+{ source: [0xD40F], NFC: [0xD40F], NFD: [0x1111, 0x116A, 0x11AE], NFKC: [0xD40F], NFKD: [0x1111, 0x116A, 0x11AE] },
+{ source: [0xD410], NFC: [0xD410], NFD: [0x1111, 0x116A, 0x11AF], NFKC: [0xD410], NFKD: [0x1111, 0x116A, 0x11AF] },
+{ source: [0xD411], NFC: [0xD411], NFD: [0x1111, 0x116A, 0x11B0], NFKC: [0xD411], NFKD: [0x1111, 0x116A, 0x11B0] },
+{ source: [0xD412], NFC: [0xD412], NFD: [0x1111, 0x116A, 0x11B1], NFKC: [0xD412], NFKD: [0x1111, 0x116A, 0x11B1] },
+{ source: [0xD413], NFC: [0xD413], NFD: [0x1111, 0x116A, 0x11B2], NFKC: [0xD413], NFKD: [0x1111, 0x116A, 0x11B2] },
+{ source: [0xD414], NFC: [0xD414], NFD: [0x1111, 0x116A, 0x11B3], NFKC: [0xD414], NFKD: [0x1111, 0x116A, 0x11B3] },
+{ source: [0xD415], NFC: [0xD415], NFD: [0x1111, 0x116A, 0x11B4], NFKC: [0xD415], NFKD: [0x1111, 0x116A, 0x11B4] },
+{ source: [0xD416], NFC: [0xD416], NFD: [0x1111, 0x116A, 0x11B5], NFKC: [0xD416], NFKD: [0x1111, 0x116A, 0x11B5] },
+{ source: [0xD417], NFC: [0xD417], NFD: [0x1111, 0x116A, 0x11B6], NFKC: [0xD417], NFKD: [0x1111, 0x116A, 0x11B6] },
+{ source: [0xD418], NFC: [0xD418], NFD: [0x1111, 0x116A, 0x11B7], NFKC: [0xD418], NFKD: [0x1111, 0x116A, 0x11B7] },
+{ source: [0xD419], NFC: [0xD419], NFD: [0x1111, 0x116A, 0x11B8], NFKC: [0xD419], NFKD: [0x1111, 0x116A, 0x11B8] },
+{ source: [0xD41A], NFC: [0xD41A], NFD: [0x1111, 0x116A, 0x11B9], NFKC: [0xD41A], NFKD: [0x1111, 0x116A, 0x11B9] },
+{ source: [0xD41B], NFC: [0xD41B], NFD: [0x1111, 0x116A, 0x11BA], NFKC: [0xD41B], NFKD: [0x1111, 0x116A, 0x11BA] },
+{ source: [0xD41C], NFC: [0xD41C], NFD: [0x1111, 0x116A, 0x11BB], NFKC: [0xD41C], NFKD: [0x1111, 0x116A, 0x11BB] },
+{ source: [0xD41D], NFC: [0xD41D], NFD: [0x1111, 0x116A, 0x11BC], NFKC: [0xD41D], NFKD: [0x1111, 0x116A, 0x11BC] },
+{ source: [0xD41E], NFC: [0xD41E], NFD: [0x1111, 0x116A, 0x11BD], NFKC: [0xD41E], NFKD: [0x1111, 0x116A, 0x11BD] },
+{ source: [0xD41F], NFC: [0xD41F], NFD: [0x1111, 0x116A, 0x11BE], NFKC: [0xD41F], NFKD: [0x1111, 0x116A, 0x11BE] },
+{ source: [0xD420], NFC: [0xD420], NFD: [0x1111, 0x116A, 0x11BF], NFKC: [0xD420], NFKD: [0x1111, 0x116A, 0x11BF] },
+{ source: [0xD421], NFC: [0xD421], NFD: [0x1111, 0x116A, 0x11C0], NFKC: [0xD421], NFKD: [0x1111, 0x116A, 0x11C0] },
+{ source: [0xD422], NFC: [0xD422], NFD: [0x1111, 0x116A, 0x11C1], NFKC: [0xD422], NFKD: [0x1111, 0x116A, 0x11C1] },
+{ source: [0xD423], NFC: [0xD423], NFD: [0x1111, 0x116A, 0x11C2], NFKC: [0xD423], NFKD: [0x1111, 0x116A, 0x11C2] },
+{ source: [0xD424], NFC: [0xD424], NFD: [0x1111, 0x116B], NFKC: [0xD424], NFKD: [0x1111, 0x116B] },
+{ source: [0xD425], NFC: [0xD425], NFD: [0x1111, 0x116B, 0x11A8], NFKC: [0xD425], NFKD: [0x1111, 0x116B, 0x11A8] },
+{ source: [0xD426], NFC: [0xD426], NFD: [0x1111, 0x116B, 0x11A9], NFKC: [0xD426], NFKD: [0x1111, 0x116B, 0x11A9] },
+{ source: [0xD427], NFC: [0xD427], NFD: [0x1111, 0x116B, 0x11AA], NFKC: [0xD427], NFKD: [0x1111, 0x116B, 0x11AA] },
+{ source: [0xD428], NFC: [0xD428], NFD: [0x1111, 0x116B, 0x11AB], NFKC: [0xD428], NFKD: [0x1111, 0x116B, 0x11AB] },
+{ source: [0xD429], NFC: [0xD429], NFD: [0x1111, 0x116B, 0x11AC], NFKC: [0xD429], NFKD: [0x1111, 0x116B, 0x11AC] },
+{ source: [0xD42A], NFC: [0xD42A], NFD: [0x1111, 0x116B, 0x11AD], NFKC: [0xD42A], NFKD: [0x1111, 0x116B, 0x11AD] },
+{ source: [0xD42B], NFC: [0xD42B], NFD: [0x1111, 0x116B, 0x11AE], NFKC: [0xD42B], NFKD: [0x1111, 0x116B, 0x11AE] },
+{ source: [0xD42C], NFC: [0xD42C], NFD: [0x1111, 0x116B, 0x11AF], NFKC: [0xD42C], NFKD: [0x1111, 0x116B, 0x11AF] },
+{ source: [0xD42D], NFC: [0xD42D], NFD: [0x1111, 0x116B, 0x11B0], NFKC: [0xD42D], NFKD: [0x1111, 0x116B, 0x11B0] },
+{ source: [0xD42E], NFC: [0xD42E], NFD: [0x1111, 0x116B, 0x11B1], NFKC: [0xD42E], NFKD: [0x1111, 0x116B, 0x11B1] },
+{ source: [0xD42F], NFC: [0xD42F], NFD: [0x1111, 0x116B, 0x11B2], NFKC: [0xD42F], NFKD: [0x1111, 0x116B, 0x11B2] },
+{ source: [0xD430], NFC: [0xD430], NFD: [0x1111, 0x116B, 0x11B3], NFKC: [0xD430], NFKD: [0x1111, 0x116B, 0x11B3] },
+{ source: [0xD431], NFC: [0xD431], NFD: [0x1111, 0x116B, 0x11B4], NFKC: [0xD431], NFKD: [0x1111, 0x116B, 0x11B4] },
+{ source: [0xD432], NFC: [0xD432], NFD: [0x1111, 0x116B, 0x11B5], NFKC: [0xD432], NFKD: [0x1111, 0x116B, 0x11B5] },
+{ source: [0xD433], NFC: [0xD433], NFD: [0x1111, 0x116B, 0x11B6], NFKC: [0xD433], NFKD: [0x1111, 0x116B, 0x11B6] },
+{ source: [0xD434], NFC: [0xD434], NFD: [0x1111, 0x116B, 0x11B7], NFKC: [0xD434], NFKD: [0x1111, 0x116B, 0x11B7] },
+{ source: [0xD435], NFC: [0xD435], NFD: [0x1111, 0x116B, 0x11B8], NFKC: [0xD435], NFKD: [0x1111, 0x116B, 0x11B8] },
+{ source: [0xD436], NFC: [0xD436], NFD: [0x1111, 0x116B, 0x11B9], NFKC: [0xD436], NFKD: [0x1111, 0x116B, 0x11B9] },
+{ source: [0xD437], NFC: [0xD437], NFD: [0x1111, 0x116B, 0x11BA], NFKC: [0xD437], NFKD: [0x1111, 0x116B, 0x11BA] },
+{ source: [0xD438], NFC: [0xD438], NFD: [0x1111, 0x116B, 0x11BB], NFKC: [0xD438], NFKD: [0x1111, 0x116B, 0x11BB] },
+{ source: [0xD439], NFC: [0xD439], NFD: [0x1111, 0x116B, 0x11BC], NFKC: [0xD439], NFKD: [0x1111, 0x116B, 0x11BC] },
+{ source: [0xD43A], NFC: [0xD43A], NFD: [0x1111, 0x116B, 0x11BD], NFKC: [0xD43A], NFKD: [0x1111, 0x116B, 0x11BD] },
+{ source: [0xD43B], NFC: [0xD43B], NFD: [0x1111, 0x116B, 0x11BE], NFKC: [0xD43B], NFKD: [0x1111, 0x116B, 0x11BE] },
+{ source: [0xD43C], NFC: [0xD43C], NFD: [0x1111, 0x116B, 0x11BF], NFKC: [0xD43C], NFKD: [0x1111, 0x116B, 0x11BF] },
+{ source: [0xD43D], NFC: [0xD43D], NFD: [0x1111, 0x116B, 0x11C0], NFKC: [0xD43D], NFKD: [0x1111, 0x116B, 0x11C0] },
+{ source: [0xD43E], NFC: [0xD43E], NFD: [0x1111, 0x116B, 0x11C1], NFKC: [0xD43E], NFKD: [0x1111, 0x116B, 0x11C1] },
+{ source: [0xD43F], NFC: [0xD43F], NFD: [0x1111, 0x116B, 0x11C2], NFKC: [0xD43F], NFKD: [0x1111, 0x116B, 0x11C2] },
+{ source: [0xD440], NFC: [0xD440], NFD: [0x1111, 0x116C], NFKC: [0xD440], NFKD: [0x1111, 0x116C] },
+{ source: [0xD441], NFC: [0xD441], NFD: [0x1111, 0x116C, 0x11A8], NFKC: [0xD441], NFKD: [0x1111, 0x116C, 0x11A8] },
+{ source: [0xD442], NFC: [0xD442], NFD: [0x1111, 0x116C, 0x11A9], NFKC: [0xD442], NFKD: [0x1111, 0x116C, 0x11A9] },
+{ source: [0xD443], NFC: [0xD443], NFD: [0x1111, 0x116C, 0x11AA], NFKC: [0xD443], NFKD: [0x1111, 0x116C, 0x11AA] },
+{ source: [0xD444], NFC: [0xD444], NFD: [0x1111, 0x116C, 0x11AB], NFKC: [0xD444], NFKD: [0x1111, 0x116C, 0x11AB] },
+{ source: [0xD445], NFC: [0xD445], NFD: [0x1111, 0x116C, 0x11AC], NFKC: [0xD445], NFKD: [0x1111, 0x116C, 0x11AC] },
+{ source: [0xD446], NFC: [0xD446], NFD: [0x1111, 0x116C, 0x11AD], NFKC: [0xD446], NFKD: [0x1111, 0x116C, 0x11AD] },
+{ source: [0xD447], NFC: [0xD447], NFD: [0x1111, 0x116C, 0x11AE], NFKC: [0xD447], NFKD: [0x1111, 0x116C, 0x11AE] },
+{ source: [0xD448], NFC: [0xD448], NFD: [0x1111, 0x116C, 0x11AF], NFKC: [0xD448], NFKD: [0x1111, 0x116C, 0x11AF] },
+{ source: [0xD449], NFC: [0xD449], NFD: [0x1111, 0x116C, 0x11B0], NFKC: [0xD449], NFKD: [0x1111, 0x116C, 0x11B0] },
+{ source: [0xD44A], NFC: [0xD44A], NFD: [0x1111, 0x116C, 0x11B1], NFKC: [0xD44A], NFKD: [0x1111, 0x116C, 0x11B1] },
+{ source: [0xD44B], NFC: [0xD44B], NFD: [0x1111, 0x116C, 0x11B2], NFKC: [0xD44B], NFKD: [0x1111, 0x116C, 0x11B2] },
+{ source: [0xD44C], NFC: [0xD44C], NFD: [0x1111, 0x116C, 0x11B3], NFKC: [0xD44C], NFKD: [0x1111, 0x116C, 0x11B3] },
+{ source: [0xD44D], NFC: [0xD44D], NFD: [0x1111, 0x116C, 0x11B4], NFKC: [0xD44D], NFKD: [0x1111, 0x116C, 0x11B4] },
+{ source: [0xD44E], NFC: [0xD44E], NFD: [0x1111, 0x116C, 0x11B5], NFKC: [0xD44E], NFKD: [0x1111, 0x116C, 0x11B5] },
+{ source: [0xD44F], NFC: [0xD44F], NFD: [0x1111, 0x116C, 0x11B6], NFKC: [0xD44F], NFKD: [0x1111, 0x116C, 0x11B6] },
+{ source: [0xD450], NFC: [0xD450], NFD: [0x1111, 0x116C, 0x11B7], NFKC: [0xD450], NFKD: [0x1111, 0x116C, 0x11B7] },
+{ source: [0xD451], NFC: [0xD451], NFD: [0x1111, 0x116C, 0x11B8], NFKC: [0xD451], NFKD: [0x1111, 0x116C, 0x11B8] },
+{ source: [0xD452], NFC: [0xD452], NFD: [0x1111, 0x116C, 0x11B9], NFKC: [0xD452], NFKD: [0x1111, 0x116C, 0x11B9] },
+{ source: [0xD453], NFC: [0xD453], NFD: [0x1111, 0x116C, 0x11BA], NFKC: [0xD453], NFKD: [0x1111, 0x116C, 0x11BA] },
+{ source: [0xD454], NFC: [0xD454], NFD: [0x1111, 0x116C, 0x11BB], NFKC: [0xD454], NFKD: [0x1111, 0x116C, 0x11BB] },
+{ source: [0xD455], NFC: [0xD455], NFD: [0x1111, 0x116C, 0x11BC], NFKC: [0xD455], NFKD: [0x1111, 0x116C, 0x11BC] },
+{ source: [0xD456], NFC: [0xD456], NFD: [0x1111, 0x116C, 0x11BD], NFKC: [0xD456], NFKD: [0x1111, 0x116C, 0x11BD] },
+{ source: [0xD457], NFC: [0xD457], NFD: [0x1111, 0x116C, 0x11BE], NFKC: [0xD457], NFKD: [0x1111, 0x116C, 0x11BE] },
+{ source: [0xD458], NFC: [0xD458], NFD: [0x1111, 0x116C, 0x11BF], NFKC: [0xD458], NFKD: [0x1111, 0x116C, 0x11BF] },
+{ source: [0xD459], NFC: [0xD459], NFD: [0x1111, 0x116C, 0x11C0], NFKC: [0xD459], NFKD: [0x1111, 0x116C, 0x11C0] },
+{ source: [0xD45A], NFC: [0xD45A], NFD: [0x1111, 0x116C, 0x11C1], NFKC: [0xD45A], NFKD: [0x1111, 0x116C, 0x11C1] },
+{ source: [0xD45B], NFC: [0xD45B], NFD: [0x1111, 0x116C, 0x11C2], NFKC: [0xD45B], NFKD: [0x1111, 0x116C, 0x11C2] },
+{ source: [0xD45C], NFC: [0xD45C], NFD: [0x1111, 0x116D], NFKC: [0xD45C], NFKD: [0x1111, 0x116D] },
+{ source: [0xD45D], NFC: [0xD45D], NFD: [0x1111, 0x116D, 0x11A8], NFKC: [0xD45D], NFKD: [0x1111, 0x116D, 0x11A8] },
+{ source: [0xD45E], NFC: [0xD45E], NFD: [0x1111, 0x116D, 0x11A9], NFKC: [0xD45E], NFKD: [0x1111, 0x116D, 0x11A9] },
+{ source: [0xD45F], NFC: [0xD45F], NFD: [0x1111, 0x116D, 0x11AA], NFKC: [0xD45F], NFKD: [0x1111, 0x116D, 0x11AA] },
+{ source: [0xD460], NFC: [0xD460], NFD: [0x1111, 0x116D, 0x11AB], NFKC: [0xD460], NFKD: [0x1111, 0x116D, 0x11AB] },
+{ source: [0xD461], NFC: [0xD461], NFD: [0x1111, 0x116D, 0x11AC], NFKC: [0xD461], NFKD: [0x1111, 0x116D, 0x11AC] },
+{ source: [0xD462], NFC: [0xD462], NFD: [0x1111, 0x116D, 0x11AD], NFKC: [0xD462], NFKD: [0x1111, 0x116D, 0x11AD] },
+{ source: [0xD463], NFC: [0xD463], NFD: [0x1111, 0x116D, 0x11AE], NFKC: [0xD463], NFKD: [0x1111, 0x116D, 0x11AE] },
+{ source: [0xD464], NFC: [0xD464], NFD: [0x1111, 0x116D, 0x11AF], NFKC: [0xD464], NFKD: [0x1111, 0x116D, 0x11AF] },
+{ source: [0xD465], NFC: [0xD465], NFD: [0x1111, 0x116D, 0x11B0], NFKC: [0xD465], NFKD: [0x1111, 0x116D, 0x11B0] },
+{ source: [0xD466], NFC: [0xD466], NFD: [0x1111, 0x116D, 0x11B1], NFKC: [0xD466], NFKD: [0x1111, 0x116D, 0x11B1] },
+{ source: [0xD467], NFC: [0xD467], NFD: [0x1111, 0x116D, 0x11B2], NFKC: [0xD467], NFKD: [0x1111, 0x116D, 0x11B2] },
+{ source: [0xD468], NFC: [0xD468], NFD: [0x1111, 0x116D, 0x11B3], NFKC: [0xD468], NFKD: [0x1111, 0x116D, 0x11B3] },
+{ source: [0xD469], NFC: [0xD469], NFD: [0x1111, 0x116D, 0x11B4], NFKC: [0xD469], NFKD: [0x1111, 0x116D, 0x11B4] },
+{ source: [0xD46A], NFC: [0xD46A], NFD: [0x1111, 0x116D, 0x11B5], NFKC: [0xD46A], NFKD: [0x1111, 0x116D, 0x11B5] },
+{ source: [0xD46B], NFC: [0xD46B], NFD: [0x1111, 0x116D, 0x11B6], NFKC: [0xD46B], NFKD: [0x1111, 0x116D, 0x11B6] },
+{ source: [0xD46C], NFC: [0xD46C], NFD: [0x1111, 0x116D, 0x11B7], NFKC: [0xD46C], NFKD: [0x1111, 0x116D, 0x11B7] },
+{ source: [0xD46D], NFC: [0xD46D], NFD: [0x1111, 0x116D, 0x11B8], NFKC: [0xD46D], NFKD: [0x1111, 0x116D, 0x11B8] },
+{ source: [0xD46E], NFC: [0xD46E], NFD: [0x1111, 0x116D, 0x11B9], NFKC: [0xD46E], NFKD: [0x1111, 0x116D, 0x11B9] },
+{ source: [0xD46F], NFC: [0xD46F], NFD: [0x1111, 0x116D, 0x11BA], NFKC: [0xD46F], NFKD: [0x1111, 0x116D, 0x11BA] },
+{ source: [0xD470], NFC: [0xD470], NFD: [0x1111, 0x116D, 0x11BB], NFKC: [0xD470], NFKD: [0x1111, 0x116D, 0x11BB] },
+{ source: [0xD471], NFC: [0xD471], NFD: [0x1111, 0x116D, 0x11BC], NFKC: [0xD471], NFKD: [0x1111, 0x116D, 0x11BC] },
+{ source: [0xD472], NFC: [0xD472], NFD: [0x1111, 0x116D, 0x11BD], NFKC: [0xD472], NFKD: [0x1111, 0x116D, 0x11BD] },
+{ source: [0xD473], NFC: [0xD473], NFD: [0x1111, 0x116D, 0x11BE], NFKC: [0xD473], NFKD: [0x1111, 0x116D, 0x11BE] },
+{ source: [0xD474], NFC: [0xD474], NFD: [0x1111, 0x116D, 0x11BF], NFKC: [0xD474], NFKD: [0x1111, 0x116D, 0x11BF] },
+{ source: [0xD475], NFC: [0xD475], NFD: [0x1111, 0x116D, 0x11C0], NFKC: [0xD475], NFKD: [0x1111, 0x116D, 0x11C0] },
+{ source: [0xD476], NFC: [0xD476], NFD: [0x1111, 0x116D, 0x11C1], NFKC: [0xD476], NFKD: [0x1111, 0x116D, 0x11C1] },
+{ source: [0xD477], NFC: [0xD477], NFD: [0x1111, 0x116D, 0x11C2], NFKC: [0xD477], NFKD: [0x1111, 0x116D, 0x11C2] },
+{ source: [0xD478], NFC: [0xD478], NFD: [0x1111, 0x116E], NFKC: [0xD478], NFKD: [0x1111, 0x116E] },
+{ source: [0xD479], NFC: [0xD479], NFD: [0x1111, 0x116E, 0x11A8], NFKC: [0xD479], NFKD: [0x1111, 0x116E, 0x11A8] },
+{ source: [0xD47A], NFC: [0xD47A], NFD: [0x1111, 0x116E, 0x11A9], NFKC: [0xD47A], NFKD: [0x1111, 0x116E, 0x11A9] },
+{ source: [0xD47B], NFC: [0xD47B], NFD: [0x1111, 0x116E, 0x11AA], NFKC: [0xD47B], NFKD: [0x1111, 0x116E, 0x11AA] },
+{ source: [0xD47C], NFC: [0xD47C], NFD: [0x1111, 0x116E, 0x11AB], NFKC: [0xD47C], NFKD: [0x1111, 0x116E, 0x11AB] },
+{ source: [0xD47D], NFC: [0xD47D], NFD: [0x1111, 0x116E, 0x11AC], NFKC: [0xD47D], NFKD: [0x1111, 0x116E, 0x11AC] },
+{ source: [0xD47E], NFC: [0xD47E], NFD: [0x1111, 0x116E, 0x11AD], NFKC: [0xD47E], NFKD: [0x1111, 0x116E, 0x11AD] },
+{ source: [0xD47F], NFC: [0xD47F], NFD: [0x1111, 0x116E, 0x11AE], NFKC: [0xD47F], NFKD: [0x1111, 0x116E, 0x11AE] },
+{ source: [0xD480], NFC: [0xD480], NFD: [0x1111, 0x116E, 0x11AF], NFKC: [0xD480], NFKD: [0x1111, 0x116E, 0x11AF] },
+{ source: [0xD481], NFC: [0xD481], NFD: [0x1111, 0x116E, 0x11B0], NFKC: [0xD481], NFKD: [0x1111, 0x116E, 0x11B0] },
+{ source: [0xD482], NFC: [0xD482], NFD: [0x1111, 0x116E, 0x11B1], NFKC: [0xD482], NFKD: [0x1111, 0x116E, 0x11B1] },
+{ source: [0xD483], NFC: [0xD483], NFD: [0x1111, 0x116E, 0x11B2], NFKC: [0xD483], NFKD: [0x1111, 0x116E, 0x11B2] },
+{ source: [0xD484], NFC: [0xD484], NFD: [0x1111, 0x116E, 0x11B3], NFKC: [0xD484], NFKD: [0x1111, 0x116E, 0x11B3] },
+{ source: [0xD485], NFC: [0xD485], NFD: [0x1111, 0x116E, 0x11B4], NFKC: [0xD485], NFKD: [0x1111, 0x116E, 0x11B4] },
+{ source: [0xD486], NFC: [0xD486], NFD: [0x1111, 0x116E, 0x11B5], NFKC: [0xD486], NFKD: [0x1111, 0x116E, 0x11B5] },
+{ source: [0xD487], NFC: [0xD487], NFD: [0x1111, 0x116E, 0x11B6], NFKC: [0xD487], NFKD: [0x1111, 0x116E, 0x11B6] },
+{ source: [0xD488], NFC: [0xD488], NFD: [0x1111, 0x116E, 0x11B7], NFKC: [0xD488], NFKD: [0x1111, 0x116E, 0x11B7] },
+{ source: [0xD489], NFC: [0xD489], NFD: [0x1111, 0x116E, 0x11B8], NFKC: [0xD489], NFKD: [0x1111, 0x116E, 0x11B8] },
+{ source: [0xD48A], NFC: [0xD48A], NFD: [0x1111, 0x116E, 0x11B9], NFKC: [0xD48A], NFKD: [0x1111, 0x116E, 0x11B9] },
+{ source: [0xD48B], NFC: [0xD48B], NFD: [0x1111, 0x116E, 0x11BA], NFKC: [0xD48B], NFKD: [0x1111, 0x116E, 0x11BA] },
+{ source: [0xD48C], NFC: [0xD48C], NFD: [0x1111, 0x116E, 0x11BB], NFKC: [0xD48C], NFKD: [0x1111, 0x116E, 0x11BB] },
+{ source: [0xD48D], NFC: [0xD48D], NFD: [0x1111, 0x116E, 0x11BC], NFKC: [0xD48D], NFKD: [0x1111, 0x116E, 0x11BC] },
+{ source: [0xD48E], NFC: [0xD48E], NFD: [0x1111, 0x116E, 0x11BD], NFKC: [0xD48E], NFKD: [0x1111, 0x116E, 0x11BD] },
+{ source: [0xD48F], NFC: [0xD48F], NFD: [0x1111, 0x116E, 0x11BE], NFKC: [0xD48F], NFKD: [0x1111, 0x116E, 0x11BE] },
+{ source: [0xD490], NFC: [0xD490], NFD: [0x1111, 0x116E, 0x11BF], NFKC: [0xD490], NFKD: [0x1111, 0x116E, 0x11BF] },
+{ source: [0xD491], NFC: [0xD491], NFD: [0x1111, 0x116E, 0x11C0], NFKC: [0xD491], NFKD: [0x1111, 0x116E, 0x11C0] },
+{ source: [0xD492], NFC: [0xD492], NFD: [0x1111, 0x116E, 0x11C1], NFKC: [0xD492], NFKD: [0x1111, 0x116E, 0x11C1] },
+{ source: [0xD493], NFC: [0xD493], NFD: [0x1111, 0x116E, 0x11C2], NFKC: [0xD493], NFKD: [0x1111, 0x116E, 0x11C2] },
+{ source: [0xD494], NFC: [0xD494], NFD: [0x1111, 0x116F], NFKC: [0xD494], NFKD: [0x1111, 0x116F] },
+{ source: [0xD495], NFC: [0xD495], NFD: [0x1111, 0x116F, 0x11A8], NFKC: [0xD495], NFKD: [0x1111, 0x116F, 0x11A8] },
+{ source: [0xD496], NFC: [0xD496], NFD: [0x1111, 0x116F, 0x11A9], NFKC: [0xD496], NFKD: [0x1111, 0x116F, 0x11A9] },
+{ source: [0xD497], NFC: [0xD497], NFD: [0x1111, 0x116F, 0x11AA], NFKC: [0xD497], NFKD: [0x1111, 0x116F, 0x11AA] },
+{ source: [0xD498], NFC: [0xD498], NFD: [0x1111, 0x116F, 0x11AB], NFKC: [0xD498], NFKD: [0x1111, 0x116F, 0x11AB] },
+{ source: [0xD499], NFC: [0xD499], NFD: [0x1111, 0x116F, 0x11AC], NFKC: [0xD499], NFKD: [0x1111, 0x116F, 0x11AC] },
+{ source: [0xD49A], NFC: [0xD49A], NFD: [0x1111, 0x116F, 0x11AD], NFKC: [0xD49A], NFKD: [0x1111, 0x116F, 0x11AD] },
+{ source: [0xD49B], NFC: [0xD49B], NFD: [0x1111, 0x116F, 0x11AE], NFKC: [0xD49B], NFKD: [0x1111, 0x116F, 0x11AE] },
+{ source: [0xD49C], NFC: [0xD49C], NFD: [0x1111, 0x116F, 0x11AF], NFKC: [0xD49C], NFKD: [0x1111, 0x116F, 0x11AF] },
+{ source: [0xD49D], NFC: [0xD49D], NFD: [0x1111, 0x116F, 0x11B0], NFKC: [0xD49D], NFKD: [0x1111, 0x116F, 0x11B0] },
+{ source: [0xD49E], NFC: [0xD49E], NFD: [0x1111, 0x116F, 0x11B1], NFKC: [0xD49E], NFKD: [0x1111, 0x116F, 0x11B1] },
+{ source: [0xD49F], NFC: [0xD49F], NFD: [0x1111, 0x116F, 0x11B2], NFKC: [0xD49F], NFKD: [0x1111, 0x116F, 0x11B2] },
+{ source: [0xD4A0], NFC: [0xD4A0], NFD: [0x1111, 0x116F, 0x11B3], NFKC: [0xD4A0], NFKD: [0x1111, 0x116F, 0x11B3] },
+{ source: [0xD4A1], NFC: [0xD4A1], NFD: [0x1111, 0x116F, 0x11B4], NFKC: [0xD4A1], NFKD: [0x1111, 0x116F, 0x11B4] },
+{ source: [0xD4A2], NFC: [0xD4A2], NFD: [0x1111, 0x116F, 0x11B5], NFKC: [0xD4A2], NFKD: [0x1111, 0x116F, 0x11B5] },
+{ source: [0xD4A3], NFC: [0xD4A3], NFD: [0x1111, 0x116F, 0x11B6], NFKC: [0xD4A3], NFKD: [0x1111, 0x116F, 0x11B6] },
+{ source: [0xD4A4], NFC: [0xD4A4], NFD: [0x1111, 0x116F, 0x11B7], NFKC: [0xD4A4], NFKD: [0x1111, 0x116F, 0x11B7] },
+{ source: [0xD4A5], NFC: [0xD4A5], NFD: [0x1111, 0x116F, 0x11B8], NFKC: [0xD4A5], NFKD: [0x1111, 0x116F, 0x11B8] },
+{ source: [0xD4A6], NFC: [0xD4A6], NFD: [0x1111, 0x116F, 0x11B9], NFKC: [0xD4A6], NFKD: [0x1111, 0x116F, 0x11B9] },
+{ source: [0xD4A7], NFC: [0xD4A7], NFD: [0x1111, 0x116F, 0x11BA], NFKC: [0xD4A7], NFKD: [0x1111, 0x116F, 0x11BA] },
+{ source: [0xD4A8], NFC: [0xD4A8], NFD: [0x1111, 0x116F, 0x11BB], NFKC: [0xD4A8], NFKD: [0x1111, 0x116F, 0x11BB] },
+{ source: [0xD4A9], NFC: [0xD4A9], NFD: [0x1111, 0x116F, 0x11BC], NFKC: [0xD4A9], NFKD: [0x1111, 0x116F, 0x11BC] },
+{ source: [0xD4AA], NFC: [0xD4AA], NFD: [0x1111, 0x116F, 0x11BD], NFKC: [0xD4AA], NFKD: [0x1111, 0x116F, 0x11BD] },
+{ source: [0xD4AB], NFC: [0xD4AB], NFD: [0x1111, 0x116F, 0x11BE], NFKC: [0xD4AB], NFKD: [0x1111, 0x116F, 0x11BE] },
+{ source: [0xD4AC], NFC: [0xD4AC], NFD: [0x1111, 0x116F, 0x11BF], NFKC: [0xD4AC], NFKD: [0x1111, 0x116F, 0x11BF] },
+{ source: [0xD4AD], NFC: [0xD4AD], NFD: [0x1111, 0x116F, 0x11C0], NFKC: [0xD4AD], NFKD: [0x1111, 0x116F, 0x11C0] },
+{ source: [0xD4AE], NFC: [0xD4AE], NFD: [0x1111, 0x116F, 0x11C1], NFKC: [0xD4AE], NFKD: [0x1111, 0x116F, 0x11C1] },
+{ source: [0xD4AF], NFC: [0xD4AF], NFD: [0x1111, 0x116F, 0x11C2], NFKC: [0xD4AF], NFKD: [0x1111, 0x116F, 0x11C2] },
+{ source: [0xD4B0], NFC: [0xD4B0], NFD: [0x1111, 0x1170], NFKC: [0xD4B0], NFKD: [0x1111, 0x1170] },
+{ source: [0xD4B1], NFC: [0xD4B1], NFD: [0x1111, 0x1170, 0x11A8], NFKC: [0xD4B1], NFKD: [0x1111, 0x1170, 0x11A8] },
+{ source: [0xD4B2], NFC: [0xD4B2], NFD: [0x1111, 0x1170, 0x11A9], NFKC: [0xD4B2], NFKD: [0x1111, 0x1170, 0x11A9] },
+{ source: [0xD4B3], NFC: [0xD4B3], NFD: [0x1111, 0x1170, 0x11AA], NFKC: [0xD4B3], NFKD: [0x1111, 0x1170, 0x11AA] },
+{ source: [0xD4B4], NFC: [0xD4B4], NFD: [0x1111, 0x1170, 0x11AB], NFKC: [0xD4B4], NFKD: [0x1111, 0x1170, 0x11AB] },
+{ source: [0xD4B5], NFC: [0xD4B5], NFD: [0x1111, 0x1170, 0x11AC], NFKC: [0xD4B5], NFKD: [0x1111, 0x1170, 0x11AC] },
+{ source: [0xD4B6], NFC: [0xD4B6], NFD: [0x1111, 0x1170, 0x11AD], NFKC: [0xD4B6], NFKD: [0x1111, 0x1170, 0x11AD] },
+{ source: [0xD4B7], NFC: [0xD4B7], NFD: [0x1111, 0x1170, 0x11AE], NFKC: [0xD4B7], NFKD: [0x1111, 0x1170, 0x11AE] },
+{ source: [0xD4B8], NFC: [0xD4B8], NFD: [0x1111, 0x1170, 0x11AF], NFKC: [0xD4B8], NFKD: [0x1111, 0x1170, 0x11AF] },
+{ source: [0xD4B9], NFC: [0xD4B9], NFD: [0x1111, 0x1170, 0x11B0], NFKC: [0xD4B9], NFKD: [0x1111, 0x1170, 0x11B0] },
+{ source: [0xD4BA], NFC: [0xD4BA], NFD: [0x1111, 0x1170, 0x11B1], NFKC: [0xD4BA], NFKD: [0x1111, 0x1170, 0x11B1] },
+{ source: [0xD4BB], NFC: [0xD4BB], NFD: [0x1111, 0x1170, 0x11B2], NFKC: [0xD4BB], NFKD: [0x1111, 0x1170, 0x11B2] },
+{ source: [0xD4BC], NFC: [0xD4BC], NFD: [0x1111, 0x1170, 0x11B3], NFKC: [0xD4BC], NFKD: [0x1111, 0x1170, 0x11B3] },
+{ source: [0xD4BD], NFC: [0xD4BD], NFD: [0x1111, 0x1170, 0x11B4], NFKC: [0xD4BD], NFKD: [0x1111, 0x1170, 0x11B4] },
+{ source: [0xD4BE], NFC: [0xD4BE], NFD: [0x1111, 0x1170, 0x11B5], NFKC: [0xD4BE], NFKD: [0x1111, 0x1170, 0x11B5] },
+{ source: [0xD4BF], NFC: [0xD4BF], NFD: [0x1111, 0x1170, 0x11B6], NFKC: [0xD4BF], NFKD: [0x1111, 0x1170, 0x11B6] },
+{ source: [0xD4C0], NFC: [0xD4C0], NFD: [0x1111, 0x1170, 0x11B7], NFKC: [0xD4C0], NFKD: [0x1111, 0x1170, 0x11B7] },
+{ source: [0xD4C1], NFC: [0xD4C1], NFD: [0x1111, 0x1170, 0x11B8], NFKC: [0xD4C1], NFKD: [0x1111, 0x1170, 0x11B8] },
+{ source: [0xD4C2], NFC: [0xD4C2], NFD: [0x1111, 0x1170, 0x11B9], NFKC: [0xD4C2], NFKD: [0x1111, 0x1170, 0x11B9] },
+{ source: [0xD4C3], NFC: [0xD4C3], NFD: [0x1111, 0x1170, 0x11BA], NFKC: [0xD4C3], NFKD: [0x1111, 0x1170, 0x11BA] },
+{ source: [0xD4C4], NFC: [0xD4C4], NFD: [0x1111, 0x1170, 0x11BB], NFKC: [0xD4C4], NFKD: [0x1111, 0x1170, 0x11BB] },
+{ source: [0xD4C5], NFC: [0xD4C5], NFD: [0x1111, 0x1170, 0x11BC], NFKC: [0xD4C5], NFKD: [0x1111, 0x1170, 0x11BC] },
+{ source: [0xD4C6], NFC: [0xD4C6], NFD: [0x1111, 0x1170, 0x11BD], NFKC: [0xD4C6], NFKD: [0x1111, 0x1170, 0x11BD] },
+{ source: [0xD4C7], NFC: [0xD4C7], NFD: [0x1111, 0x1170, 0x11BE], NFKC: [0xD4C7], NFKD: [0x1111, 0x1170, 0x11BE] },
+{ source: [0xD4C8], NFC: [0xD4C8], NFD: [0x1111, 0x1170, 0x11BF], NFKC: [0xD4C8], NFKD: [0x1111, 0x1170, 0x11BF] },
+{ source: [0xD4C9], NFC: [0xD4C9], NFD: [0x1111, 0x1170, 0x11C0], NFKC: [0xD4C9], NFKD: [0x1111, 0x1170, 0x11C0] },
+{ source: [0xD4CA], NFC: [0xD4CA], NFD: [0x1111, 0x1170, 0x11C1], NFKC: [0xD4CA], NFKD: [0x1111, 0x1170, 0x11C1] },
+{ source: [0xD4CB], NFC: [0xD4CB], NFD: [0x1111, 0x1170, 0x11C2], NFKC: [0xD4CB], NFKD: [0x1111, 0x1170, 0x11C2] },
+{ source: [0xD4CC], NFC: [0xD4CC], NFD: [0x1111, 0x1171], NFKC: [0xD4CC], NFKD: [0x1111, 0x1171] },
+{ source: [0xD4CD], NFC: [0xD4CD], NFD: [0x1111, 0x1171, 0x11A8], NFKC: [0xD4CD], NFKD: [0x1111, 0x1171, 0x11A8] },
+{ source: [0xD4CE], NFC: [0xD4CE], NFD: [0x1111, 0x1171, 0x11A9], NFKC: [0xD4CE], NFKD: [0x1111, 0x1171, 0x11A9] },
+{ source: [0xD4CF], NFC: [0xD4CF], NFD: [0x1111, 0x1171, 0x11AA], NFKC: [0xD4CF], NFKD: [0x1111, 0x1171, 0x11AA] },
+{ source: [0xD4D0], NFC: [0xD4D0], NFD: [0x1111, 0x1171, 0x11AB], NFKC: [0xD4D0], NFKD: [0x1111, 0x1171, 0x11AB] },
+{ source: [0xD4D1], NFC: [0xD4D1], NFD: [0x1111, 0x1171, 0x11AC], NFKC: [0xD4D1], NFKD: [0x1111, 0x1171, 0x11AC] },
+{ source: [0xD4D2], NFC: [0xD4D2], NFD: [0x1111, 0x1171, 0x11AD], NFKC: [0xD4D2], NFKD: [0x1111, 0x1171, 0x11AD] },
+{ source: [0xD4D3], NFC: [0xD4D3], NFD: [0x1111, 0x1171, 0x11AE], NFKC: [0xD4D3], NFKD: [0x1111, 0x1171, 0x11AE] },
+{ source: [0xD4D4], NFC: [0xD4D4], NFD: [0x1111, 0x1171, 0x11AF], NFKC: [0xD4D4], NFKD: [0x1111, 0x1171, 0x11AF] },
+{ source: [0xD4D5], NFC: [0xD4D5], NFD: [0x1111, 0x1171, 0x11B0], NFKC: [0xD4D5], NFKD: [0x1111, 0x1171, 0x11B0] },
+{ source: [0xD4D6], NFC: [0xD4D6], NFD: [0x1111, 0x1171, 0x11B1], NFKC: [0xD4D6], NFKD: [0x1111, 0x1171, 0x11B1] },
+{ source: [0xD4D7], NFC: [0xD4D7], NFD: [0x1111, 0x1171, 0x11B2], NFKC: [0xD4D7], NFKD: [0x1111, 0x1171, 0x11B2] },
+{ source: [0xD4D8], NFC: [0xD4D8], NFD: [0x1111, 0x1171, 0x11B3], NFKC: [0xD4D8], NFKD: [0x1111, 0x1171, 0x11B3] },
+{ source: [0xD4D9], NFC: [0xD4D9], NFD: [0x1111, 0x1171, 0x11B4], NFKC: [0xD4D9], NFKD: [0x1111, 0x1171, 0x11B4] },
+{ source: [0xD4DA], NFC: [0xD4DA], NFD: [0x1111, 0x1171, 0x11B5], NFKC: [0xD4DA], NFKD: [0x1111, 0x1171, 0x11B5] },
+{ source: [0xD4DB], NFC: [0xD4DB], NFD: [0x1111, 0x1171, 0x11B6], NFKC: [0xD4DB], NFKD: [0x1111, 0x1171, 0x11B6] },
+{ source: [0xD4DC], NFC: [0xD4DC], NFD: [0x1111, 0x1171, 0x11B7], NFKC: [0xD4DC], NFKD: [0x1111, 0x1171, 0x11B7] },
+{ source: [0xD4DD], NFC: [0xD4DD], NFD: [0x1111, 0x1171, 0x11B8], NFKC: [0xD4DD], NFKD: [0x1111, 0x1171, 0x11B8] },
+{ source: [0xD4DE], NFC: [0xD4DE], NFD: [0x1111, 0x1171, 0x11B9], NFKC: [0xD4DE], NFKD: [0x1111, 0x1171, 0x11B9] },
+{ source: [0xD4DF], NFC: [0xD4DF], NFD: [0x1111, 0x1171, 0x11BA], NFKC: [0xD4DF], NFKD: [0x1111, 0x1171, 0x11BA] },
+{ source: [0xD4E0], NFC: [0xD4E0], NFD: [0x1111, 0x1171, 0x11BB], NFKC: [0xD4E0], NFKD: [0x1111, 0x1171, 0x11BB] },
+{ source: [0xD4E1], NFC: [0xD4E1], NFD: [0x1111, 0x1171, 0x11BC], NFKC: [0xD4E1], NFKD: [0x1111, 0x1171, 0x11BC] },
+{ source: [0xD4E2], NFC: [0xD4E2], NFD: [0x1111, 0x1171, 0x11BD], NFKC: [0xD4E2], NFKD: [0x1111, 0x1171, 0x11BD] },
+{ source: [0xD4E3], NFC: [0xD4E3], NFD: [0x1111, 0x1171, 0x11BE], NFKC: [0xD4E3], NFKD: [0x1111, 0x1171, 0x11BE] },
+{ source: [0xD4E4], NFC: [0xD4E4], NFD: [0x1111, 0x1171, 0x11BF], NFKC: [0xD4E4], NFKD: [0x1111, 0x1171, 0x11BF] },
+{ source: [0xD4E5], NFC: [0xD4E5], NFD: [0x1111, 0x1171, 0x11C0], NFKC: [0xD4E5], NFKD: [0x1111, 0x1171, 0x11C0] },
+{ source: [0xD4E6], NFC: [0xD4E6], NFD: [0x1111, 0x1171, 0x11C1], NFKC: [0xD4E6], NFKD: [0x1111, 0x1171, 0x11C1] },
+{ source: [0xD4E7], NFC: [0xD4E7], NFD: [0x1111, 0x1171, 0x11C2], NFKC: [0xD4E7], NFKD: [0x1111, 0x1171, 0x11C2] },
+{ source: [0xD4E8], NFC: [0xD4E8], NFD: [0x1111, 0x1172], NFKC: [0xD4E8], NFKD: [0x1111, 0x1172] },
+{ source: [0xD4E9], NFC: [0xD4E9], NFD: [0x1111, 0x1172, 0x11A8], NFKC: [0xD4E9], NFKD: [0x1111, 0x1172, 0x11A8] },
+{ source: [0xD4EA], NFC: [0xD4EA], NFD: [0x1111, 0x1172, 0x11A9], NFKC: [0xD4EA], NFKD: [0x1111, 0x1172, 0x11A9] },
+{ source: [0xD4EB], NFC: [0xD4EB], NFD: [0x1111, 0x1172, 0x11AA], NFKC: [0xD4EB], NFKD: [0x1111, 0x1172, 0x11AA] },
+{ source: [0xD4EC], NFC: [0xD4EC], NFD: [0x1111, 0x1172, 0x11AB], NFKC: [0xD4EC], NFKD: [0x1111, 0x1172, 0x11AB] },
+{ source: [0xD4ED], NFC: [0xD4ED], NFD: [0x1111, 0x1172, 0x11AC], NFKC: [0xD4ED], NFKD: [0x1111, 0x1172, 0x11AC] },
+{ source: [0xD4EE], NFC: [0xD4EE], NFD: [0x1111, 0x1172, 0x11AD], NFKC: [0xD4EE], NFKD: [0x1111, 0x1172, 0x11AD] },
+{ source: [0xD4EF], NFC: [0xD4EF], NFD: [0x1111, 0x1172, 0x11AE], NFKC: [0xD4EF], NFKD: [0x1111, 0x1172, 0x11AE] },
+{ source: [0xD4F0], NFC: [0xD4F0], NFD: [0x1111, 0x1172, 0x11AF], NFKC: [0xD4F0], NFKD: [0x1111, 0x1172, 0x11AF] },
+{ source: [0xD4F1], NFC: [0xD4F1], NFD: [0x1111, 0x1172, 0x11B0], NFKC: [0xD4F1], NFKD: [0x1111, 0x1172, 0x11B0] },
+{ source: [0xD4F2], NFC: [0xD4F2], NFD: [0x1111, 0x1172, 0x11B1], NFKC: [0xD4F2], NFKD: [0x1111, 0x1172, 0x11B1] },
+{ source: [0xD4F3], NFC: [0xD4F3], NFD: [0x1111, 0x1172, 0x11B2], NFKC: [0xD4F3], NFKD: [0x1111, 0x1172, 0x11B2] },
+{ source: [0xD4F4], NFC: [0xD4F4], NFD: [0x1111, 0x1172, 0x11B3], NFKC: [0xD4F4], NFKD: [0x1111, 0x1172, 0x11B3] },
+{ source: [0xD4F5], NFC: [0xD4F5], NFD: [0x1111, 0x1172, 0x11B4], NFKC: [0xD4F5], NFKD: [0x1111, 0x1172, 0x11B4] },
+{ source: [0xD4F6], NFC: [0xD4F6], NFD: [0x1111, 0x1172, 0x11B5], NFKC: [0xD4F6], NFKD: [0x1111, 0x1172, 0x11B5] },
+{ source: [0xD4F7], NFC: [0xD4F7], NFD: [0x1111, 0x1172, 0x11B6], NFKC: [0xD4F7], NFKD: [0x1111, 0x1172, 0x11B6] },
+{ source: [0xD4F8], NFC: [0xD4F8], NFD: [0x1111, 0x1172, 0x11B7], NFKC: [0xD4F8], NFKD: [0x1111, 0x1172, 0x11B7] },
+{ source: [0xD4F9], NFC: [0xD4F9], NFD: [0x1111, 0x1172, 0x11B8], NFKC: [0xD4F9], NFKD: [0x1111, 0x1172, 0x11B8] },
+{ source: [0xD4FA], NFC: [0xD4FA], NFD: [0x1111, 0x1172, 0x11B9], NFKC: [0xD4FA], NFKD: [0x1111, 0x1172, 0x11B9] },
+{ source: [0xD4FB], NFC: [0xD4FB], NFD: [0x1111, 0x1172, 0x11BA], NFKC: [0xD4FB], NFKD: [0x1111, 0x1172, 0x11BA] },
+{ source: [0xD4FC], NFC: [0xD4FC], NFD: [0x1111, 0x1172, 0x11BB], NFKC: [0xD4FC], NFKD: [0x1111, 0x1172, 0x11BB] },
+{ source: [0xD4FD], NFC: [0xD4FD], NFD: [0x1111, 0x1172, 0x11BC], NFKC: [0xD4FD], NFKD: [0x1111, 0x1172, 0x11BC] },
+{ source: [0xD4FE], NFC: [0xD4FE], NFD: [0x1111, 0x1172, 0x11BD], NFKC: [0xD4FE], NFKD: [0x1111, 0x1172, 0x11BD] },
+{ source: [0xD4FF], NFC: [0xD4FF], NFD: [0x1111, 0x1172, 0x11BE], NFKC: [0xD4FF], NFKD: [0x1111, 0x1172, 0x11BE] },
+{ source: [0xD500], NFC: [0xD500], NFD: [0x1111, 0x1172, 0x11BF], NFKC: [0xD500], NFKD: [0x1111, 0x1172, 0x11BF] },
+{ source: [0xD501], NFC: [0xD501], NFD: [0x1111, 0x1172, 0x11C0], NFKC: [0xD501], NFKD: [0x1111, 0x1172, 0x11C0] },
+{ source: [0xD502], NFC: [0xD502], NFD: [0x1111, 0x1172, 0x11C1], NFKC: [0xD502], NFKD: [0x1111, 0x1172, 0x11C1] },
+{ source: [0xD503], NFC: [0xD503], NFD: [0x1111, 0x1172, 0x11C2], NFKC: [0xD503], NFKD: [0x1111, 0x1172, 0x11C2] },
+{ source: [0xD504], NFC: [0xD504], NFD: [0x1111, 0x1173], NFKC: [0xD504], NFKD: [0x1111, 0x1173] },
+{ source: [0xD505], NFC: [0xD505], NFD: [0x1111, 0x1173, 0x11A8], NFKC: [0xD505], NFKD: [0x1111, 0x1173, 0x11A8] },
+{ source: [0xD506], NFC: [0xD506], NFD: [0x1111, 0x1173, 0x11A9], NFKC: [0xD506], NFKD: [0x1111, 0x1173, 0x11A9] },
+{ source: [0xD507], NFC: [0xD507], NFD: [0x1111, 0x1173, 0x11AA], NFKC: [0xD507], NFKD: [0x1111, 0x1173, 0x11AA] },
+{ source: [0xD508], NFC: [0xD508], NFD: [0x1111, 0x1173, 0x11AB], NFKC: [0xD508], NFKD: [0x1111, 0x1173, 0x11AB] },
+{ source: [0xD509], NFC: [0xD509], NFD: [0x1111, 0x1173, 0x11AC], NFKC: [0xD509], NFKD: [0x1111, 0x1173, 0x11AC] },
+{ source: [0xD50A], NFC: [0xD50A], NFD: [0x1111, 0x1173, 0x11AD], NFKC: [0xD50A], NFKD: [0x1111, 0x1173, 0x11AD] },
+{ source: [0xD50B], NFC: [0xD50B], NFD: [0x1111, 0x1173, 0x11AE], NFKC: [0xD50B], NFKD: [0x1111, 0x1173, 0x11AE] },
+{ source: [0xD50C], NFC: [0xD50C], NFD: [0x1111, 0x1173, 0x11AF], NFKC: [0xD50C], NFKD: [0x1111, 0x1173, 0x11AF] },
+{ source: [0xD50D], NFC: [0xD50D], NFD: [0x1111, 0x1173, 0x11B0], NFKC: [0xD50D], NFKD: [0x1111, 0x1173, 0x11B0] },
+{ source: [0xD50E], NFC: [0xD50E], NFD: [0x1111, 0x1173, 0x11B1], NFKC: [0xD50E], NFKD: [0x1111, 0x1173, 0x11B1] },
+{ source: [0xD50F], NFC: [0xD50F], NFD: [0x1111, 0x1173, 0x11B2], NFKC: [0xD50F], NFKD: [0x1111, 0x1173, 0x11B2] },
+{ source: [0xD510], NFC: [0xD510], NFD: [0x1111, 0x1173, 0x11B3], NFKC: [0xD510], NFKD: [0x1111, 0x1173, 0x11B3] },
+{ source: [0xD511], NFC: [0xD511], NFD: [0x1111, 0x1173, 0x11B4], NFKC: [0xD511], NFKD: [0x1111, 0x1173, 0x11B4] },
+{ source: [0xD512], NFC: [0xD512], NFD: [0x1111, 0x1173, 0x11B5], NFKC: [0xD512], NFKD: [0x1111, 0x1173, 0x11B5] },
+{ source: [0xD513], NFC: [0xD513], NFD: [0x1111, 0x1173, 0x11B6], NFKC: [0xD513], NFKD: [0x1111, 0x1173, 0x11B6] },
+{ source: [0xD514], NFC: [0xD514], NFD: [0x1111, 0x1173, 0x11B7], NFKC: [0xD514], NFKD: [0x1111, 0x1173, 0x11B7] },
+{ source: [0xD515], NFC: [0xD515], NFD: [0x1111, 0x1173, 0x11B8], NFKC: [0xD515], NFKD: [0x1111, 0x1173, 0x11B8] },
+{ source: [0xD516], NFC: [0xD516], NFD: [0x1111, 0x1173, 0x11B9], NFKC: [0xD516], NFKD: [0x1111, 0x1173, 0x11B9] },
+{ source: [0xD517], NFC: [0xD517], NFD: [0x1111, 0x1173, 0x11BA], NFKC: [0xD517], NFKD: [0x1111, 0x1173, 0x11BA] },
+{ source: [0xD518], NFC: [0xD518], NFD: [0x1111, 0x1173, 0x11BB], NFKC: [0xD518], NFKD: [0x1111, 0x1173, 0x11BB] },
+{ source: [0xD519], NFC: [0xD519], NFD: [0x1111, 0x1173, 0x11BC], NFKC: [0xD519], NFKD: [0x1111, 0x1173, 0x11BC] },
+{ source: [0xD51A], NFC: [0xD51A], NFD: [0x1111, 0x1173, 0x11BD], NFKC: [0xD51A], NFKD: [0x1111, 0x1173, 0x11BD] },
+{ source: [0xD51B], NFC: [0xD51B], NFD: [0x1111, 0x1173, 0x11BE], NFKC: [0xD51B], NFKD: [0x1111, 0x1173, 0x11BE] },
+{ source: [0xD51C], NFC: [0xD51C], NFD: [0x1111, 0x1173, 0x11BF], NFKC: [0xD51C], NFKD: [0x1111, 0x1173, 0x11BF] },
+{ source: [0xD51D], NFC: [0xD51D], NFD: [0x1111, 0x1173, 0x11C0], NFKC: [0xD51D], NFKD: [0x1111, 0x1173, 0x11C0] },
+{ source: [0xD51E], NFC: [0xD51E], NFD: [0x1111, 0x1173, 0x11C1], NFKC: [0xD51E], NFKD: [0x1111, 0x1173, 0x11C1] },
+{ source: [0xD51F], NFC: [0xD51F], NFD: [0x1111, 0x1173, 0x11C2], NFKC: [0xD51F], NFKD: [0x1111, 0x1173, 0x11C2] },
+{ source: [0xD520], NFC: [0xD520], NFD: [0x1111, 0x1174], NFKC: [0xD520], NFKD: [0x1111, 0x1174] },
+{ source: [0xD521], NFC: [0xD521], NFD: [0x1111, 0x1174, 0x11A8], NFKC: [0xD521], NFKD: [0x1111, 0x1174, 0x11A8] },
+{ source: [0xD522], NFC: [0xD522], NFD: [0x1111, 0x1174, 0x11A9], NFKC: [0xD522], NFKD: [0x1111, 0x1174, 0x11A9] },
+{ source: [0xD523], NFC: [0xD523], NFD: [0x1111, 0x1174, 0x11AA], NFKC: [0xD523], NFKD: [0x1111, 0x1174, 0x11AA] },
+{ source: [0xD524], NFC: [0xD524], NFD: [0x1111, 0x1174, 0x11AB], NFKC: [0xD524], NFKD: [0x1111, 0x1174, 0x11AB] },
+{ source: [0xD525], NFC: [0xD525], NFD: [0x1111, 0x1174, 0x11AC], NFKC: [0xD525], NFKD: [0x1111, 0x1174, 0x11AC] },
+{ source: [0xD526], NFC: [0xD526], NFD: [0x1111, 0x1174, 0x11AD], NFKC: [0xD526], NFKD: [0x1111, 0x1174, 0x11AD] },
+{ source: [0xD527], NFC: [0xD527], NFD: [0x1111, 0x1174, 0x11AE], NFKC: [0xD527], NFKD: [0x1111, 0x1174, 0x11AE] },
+{ source: [0xD528], NFC: [0xD528], NFD: [0x1111, 0x1174, 0x11AF], NFKC: [0xD528], NFKD: [0x1111, 0x1174, 0x11AF] },
+{ source: [0xD529], NFC: [0xD529], NFD: [0x1111, 0x1174, 0x11B0], NFKC: [0xD529], NFKD: [0x1111, 0x1174, 0x11B0] },
+{ source: [0xD52A], NFC: [0xD52A], NFD: [0x1111, 0x1174, 0x11B1], NFKC: [0xD52A], NFKD: [0x1111, 0x1174, 0x11B1] },
+{ source: [0xD52B], NFC: [0xD52B], NFD: [0x1111, 0x1174, 0x11B2], NFKC: [0xD52B], NFKD: [0x1111, 0x1174, 0x11B2] },
+{ source: [0xD52C], NFC: [0xD52C], NFD: [0x1111, 0x1174, 0x11B3], NFKC: [0xD52C], NFKD: [0x1111, 0x1174, 0x11B3] },
+{ source: [0xD52D], NFC: [0xD52D], NFD: [0x1111, 0x1174, 0x11B4], NFKC: [0xD52D], NFKD: [0x1111, 0x1174, 0x11B4] },
+{ source: [0xD52E], NFC: [0xD52E], NFD: [0x1111, 0x1174, 0x11B5], NFKC: [0xD52E], NFKD: [0x1111, 0x1174, 0x11B5] },
+{ source: [0xD52F], NFC: [0xD52F], NFD: [0x1111, 0x1174, 0x11B6], NFKC: [0xD52F], NFKD: [0x1111, 0x1174, 0x11B6] },
+{ source: [0xD530], NFC: [0xD530], NFD: [0x1111, 0x1174, 0x11B7], NFKC: [0xD530], NFKD: [0x1111, 0x1174, 0x11B7] },
+{ source: [0xD531], NFC: [0xD531], NFD: [0x1111, 0x1174, 0x11B8], NFKC: [0xD531], NFKD: [0x1111, 0x1174, 0x11B8] },
+{ source: [0xD532], NFC: [0xD532], NFD: [0x1111, 0x1174, 0x11B9], NFKC: [0xD532], NFKD: [0x1111, 0x1174, 0x11B9] },
+{ source: [0xD533], NFC: [0xD533], NFD: [0x1111, 0x1174, 0x11BA], NFKC: [0xD533], NFKD: [0x1111, 0x1174, 0x11BA] },
+{ source: [0xD534], NFC: [0xD534], NFD: [0x1111, 0x1174, 0x11BB], NFKC: [0xD534], NFKD: [0x1111, 0x1174, 0x11BB] },
+{ source: [0xD535], NFC: [0xD535], NFD: [0x1111, 0x1174, 0x11BC], NFKC: [0xD535], NFKD: [0x1111, 0x1174, 0x11BC] },
+{ source: [0xD536], NFC: [0xD536], NFD: [0x1111, 0x1174, 0x11BD], NFKC: [0xD536], NFKD: [0x1111, 0x1174, 0x11BD] },
+{ source: [0xD537], NFC: [0xD537], NFD: [0x1111, 0x1174, 0x11BE], NFKC: [0xD537], NFKD: [0x1111, 0x1174, 0x11BE] },
+{ source: [0xD538], NFC: [0xD538], NFD: [0x1111, 0x1174, 0x11BF], NFKC: [0xD538], NFKD: [0x1111, 0x1174, 0x11BF] },
+{ source: [0xD539], NFC: [0xD539], NFD: [0x1111, 0x1174, 0x11C0], NFKC: [0xD539], NFKD: [0x1111, 0x1174, 0x11C0] },
+{ source: [0xD53A], NFC: [0xD53A], NFD: [0x1111, 0x1174, 0x11C1], NFKC: [0xD53A], NFKD: [0x1111, 0x1174, 0x11C1] },
+{ source: [0xD53B], NFC: [0xD53B], NFD: [0x1111, 0x1174, 0x11C2], NFKC: [0xD53B], NFKD: [0x1111, 0x1174, 0x11C2] },
+{ source: [0xD53C], NFC: [0xD53C], NFD: [0x1111, 0x1175], NFKC: [0xD53C], NFKD: [0x1111, 0x1175] },
+{ source: [0xD53D], NFC: [0xD53D], NFD: [0x1111, 0x1175, 0x11A8], NFKC: [0xD53D], NFKD: [0x1111, 0x1175, 0x11A8] },
+{ source: [0xD53E], NFC: [0xD53E], NFD: [0x1111, 0x1175, 0x11A9], NFKC: [0xD53E], NFKD: [0x1111, 0x1175, 0x11A9] },
+{ source: [0xD53F], NFC: [0xD53F], NFD: [0x1111, 0x1175, 0x11AA], NFKC: [0xD53F], NFKD: [0x1111, 0x1175, 0x11AA] },
+{ source: [0xD540], NFC: [0xD540], NFD: [0x1111, 0x1175, 0x11AB], NFKC: [0xD540], NFKD: [0x1111, 0x1175, 0x11AB] },
+{ source: [0xD541], NFC: [0xD541], NFD: [0x1111, 0x1175, 0x11AC], NFKC: [0xD541], NFKD: [0x1111, 0x1175, 0x11AC] },
+{ source: [0xD542], NFC: [0xD542], NFD: [0x1111, 0x1175, 0x11AD], NFKC: [0xD542], NFKD: [0x1111, 0x1175, 0x11AD] },
+{ source: [0xD543], NFC: [0xD543], NFD: [0x1111, 0x1175, 0x11AE], NFKC: [0xD543], NFKD: [0x1111, 0x1175, 0x11AE] },
+{ source: [0xD544], NFC: [0xD544], NFD: [0x1111, 0x1175, 0x11AF], NFKC: [0xD544], NFKD: [0x1111, 0x1175, 0x11AF] },
+{ source: [0xD545], NFC: [0xD545], NFD: [0x1111, 0x1175, 0x11B0], NFKC: [0xD545], NFKD: [0x1111, 0x1175, 0x11B0] },
+{ source: [0xD546], NFC: [0xD546], NFD: [0x1111, 0x1175, 0x11B1], NFKC: [0xD546], NFKD: [0x1111, 0x1175, 0x11B1] },
+{ source: [0xD547], NFC: [0xD547], NFD: [0x1111, 0x1175, 0x11B2], NFKC: [0xD547], NFKD: [0x1111, 0x1175, 0x11B2] },
+{ source: [0xD548], NFC: [0xD548], NFD: [0x1111, 0x1175, 0x11B3], NFKC: [0xD548], NFKD: [0x1111, 0x1175, 0x11B3] },
+{ source: [0xD549], NFC: [0xD549], NFD: [0x1111, 0x1175, 0x11B4], NFKC: [0xD549], NFKD: [0x1111, 0x1175, 0x11B4] },
+{ source: [0xD54A], NFC: [0xD54A], NFD: [0x1111, 0x1175, 0x11B5], NFKC: [0xD54A], NFKD: [0x1111, 0x1175, 0x11B5] },
+{ source: [0xD54B], NFC: [0xD54B], NFD: [0x1111, 0x1175, 0x11B6], NFKC: [0xD54B], NFKD: [0x1111, 0x1175, 0x11B6] },
+{ source: [0xD54C], NFC: [0xD54C], NFD: [0x1111, 0x1175, 0x11B7], NFKC: [0xD54C], NFKD: [0x1111, 0x1175, 0x11B7] },
+{ source: [0xD54D], NFC: [0xD54D], NFD: [0x1111, 0x1175, 0x11B8], NFKC: [0xD54D], NFKD: [0x1111, 0x1175, 0x11B8] },
+{ source: [0xD54E], NFC: [0xD54E], NFD: [0x1111, 0x1175, 0x11B9], NFKC: [0xD54E], NFKD: [0x1111, 0x1175, 0x11B9] },
+{ source: [0xD54F], NFC: [0xD54F], NFD: [0x1111, 0x1175, 0x11BA], NFKC: [0xD54F], NFKD: [0x1111, 0x1175, 0x11BA] },
+{ source: [0xD550], NFC: [0xD550], NFD: [0x1111, 0x1175, 0x11BB], NFKC: [0xD550], NFKD: [0x1111, 0x1175, 0x11BB] },
+{ source: [0xD551], NFC: [0xD551], NFD: [0x1111, 0x1175, 0x11BC], NFKC: [0xD551], NFKD: [0x1111, 0x1175, 0x11BC] },
+{ source: [0xD552], NFC: [0xD552], NFD: [0x1111, 0x1175, 0x11BD], NFKC: [0xD552], NFKD: [0x1111, 0x1175, 0x11BD] },
+{ source: [0xD553], NFC: [0xD553], NFD: [0x1111, 0x1175, 0x11BE], NFKC: [0xD553], NFKD: [0x1111, 0x1175, 0x11BE] },
+{ source: [0xD554], NFC: [0xD554], NFD: [0x1111, 0x1175, 0x11BF], NFKC: [0xD554], NFKD: [0x1111, 0x1175, 0x11BF] },
+{ source: [0xD555], NFC: [0xD555], NFD: [0x1111, 0x1175, 0x11C0], NFKC: [0xD555], NFKD: [0x1111, 0x1175, 0x11C0] },
+{ source: [0xD556], NFC: [0xD556], NFD: [0x1111, 0x1175, 0x11C1], NFKC: [0xD556], NFKD: [0x1111, 0x1175, 0x11C1] },
+{ source: [0xD557], NFC: [0xD557], NFD: [0x1111, 0x1175, 0x11C2], NFKC: [0xD557], NFKD: [0x1111, 0x1175, 0x11C2] },
+{ source: [0xD558], NFC: [0xD558], NFD: [0x1112, 0x1161], NFKC: [0xD558], NFKD: [0x1112, 0x1161] },
+{ source: [0xD559], NFC: [0xD559], NFD: [0x1112, 0x1161, 0x11A8], NFKC: [0xD559], NFKD: [0x1112, 0x1161, 0x11A8] },
+{ source: [0xD55A], NFC: [0xD55A], NFD: [0x1112, 0x1161, 0x11A9], NFKC: [0xD55A], NFKD: [0x1112, 0x1161, 0x11A9] },
+{ source: [0xD55B], NFC: [0xD55B], NFD: [0x1112, 0x1161, 0x11AA], NFKC: [0xD55B], NFKD: [0x1112, 0x1161, 0x11AA] },
+{ source: [0xD55C], NFC: [0xD55C], NFD: [0x1112, 0x1161, 0x11AB], NFKC: [0xD55C], NFKD: [0x1112, 0x1161, 0x11AB] },
+{ source: [0xD55D], NFC: [0xD55D], NFD: [0x1112, 0x1161, 0x11AC], NFKC: [0xD55D], NFKD: [0x1112, 0x1161, 0x11AC] },
+{ source: [0xD55E], NFC: [0xD55E], NFD: [0x1112, 0x1161, 0x11AD], NFKC: [0xD55E], NFKD: [0x1112, 0x1161, 0x11AD] },
+{ source: [0xD55F], NFC: [0xD55F], NFD: [0x1112, 0x1161, 0x11AE], NFKC: [0xD55F], NFKD: [0x1112, 0x1161, 0x11AE] },
+{ source: [0xD560], NFC: [0xD560], NFD: [0x1112, 0x1161, 0x11AF], NFKC: [0xD560], NFKD: [0x1112, 0x1161, 0x11AF] },
+{ source: [0xD561], NFC: [0xD561], NFD: [0x1112, 0x1161, 0x11B0], NFKC: [0xD561], NFKD: [0x1112, 0x1161, 0x11B0] },
+{ source: [0xD562], NFC: [0xD562], NFD: [0x1112, 0x1161, 0x11B1], NFKC: [0xD562], NFKD: [0x1112, 0x1161, 0x11B1] },
+{ source: [0xD563], NFC: [0xD563], NFD: [0x1112, 0x1161, 0x11B2], NFKC: [0xD563], NFKD: [0x1112, 0x1161, 0x11B2] },
+{ source: [0xD564], NFC: [0xD564], NFD: [0x1112, 0x1161, 0x11B3], NFKC: [0xD564], NFKD: [0x1112, 0x1161, 0x11B3] },
+{ source: [0xD565], NFC: [0xD565], NFD: [0x1112, 0x1161, 0x11B4], NFKC: [0xD565], NFKD: [0x1112, 0x1161, 0x11B4] },
+{ source: [0xD566], NFC: [0xD566], NFD: [0x1112, 0x1161, 0x11B5], NFKC: [0xD566], NFKD: [0x1112, 0x1161, 0x11B5] },
+{ source: [0xD567], NFC: [0xD567], NFD: [0x1112, 0x1161, 0x11B6], NFKC: [0xD567], NFKD: [0x1112, 0x1161, 0x11B6] },
+{ source: [0xD568], NFC: [0xD568], NFD: [0x1112, 0x1161, 0x11B7], NFKC: [0xD568], NFKD: [0x1112, 0x1161, 0x11B7] },
+{ source: [0xD569], NFC: [0xD569], NFD: [0x1112, 0x1161, 0x11B8], NFKC: [0xD569], NFKD: [0x1112, 0x1161, 0x11B8] },
+{ source: [0xD56A], NFC: [0xD56A], NFD: [0x1112, 0x1161, 0x11B9], NFKC: [0xD56A], NFKD: [0x1112, 0x1161, 0x11B9] },
+{ source: [0xD56B], NFC: [0xD56B], NFD: [0x1112, 0x1161, 0x11BA], NFKC: [0xD56B], NFKD: [0x1112, 0x1161, 0x11BA] },
+{ source: [0xD56C], NFC: [0xD56C], NFD: [0x1112, 0x1161, 0x11BB], NFKC: [0xD56C], NFKD: [0x1112, 0x1161, 0x11BB] },
+{ source: [0xD56D], NFC: [0xD56D], NFD: [0x1112, 0x1161, 0x11BC], NFKC: [0xD56D], NFKD: [0x1112, 0x1161, 0x11BC] },
+{ source: [0xD56E], NFC: [0xD56E], NFD: [0x1112, 0x1161, 0x11BD], NFKC: [0xD56E], NFKD: [0x1112, 0x1161, 0x11BD] },
+{ source: [0xD56F], NFC: [0xD56F], NFD: [0x1112, 0x1161, 0x11BE], NFKC: [0xD56F], NFKD: [0x1112, 0x1161, 0x11BE] },
+{ source: [0xD570], NFC: [0xD570], NFD: [0x1112, 0x1161, 0x11BF], NFKC: [0xD570], NFKD: [0x1112, 0x1161, 0x11BF] },
+{ source: [0xD571], NFC: [0xD571], NFD: [0x1112, 0x1161, 0x11C0], NFKC: [0xD571], NFKD: [0x1112, 0x1161, 0x11C0] },
+{ source: [0xD572], NFC: [0xD572], NFD: [0x1112, 0x1161, 0x11C1], NFKC: [0xD572], NFKD: [0x1112, 0x1161, 0x11C1] },
+{ source: [0xD573], NFC: [0xD573], NFD: [0x1112, 0x1161, 0x11C2], NFKC: [0xD573], NFKD: [0x1112, 0x1161, 0x11C2] },
+{ source: [0xD574], NFC: [0xD574], NFD: [0x1112, 0x1162], NFKC: [0xD574], NFKD: [0x1112, 0x1162] },
+{ source: [0xD575], NFC: [0xD575], NFD: [0x1112, 0x1162, 0x11A8], NFKC: [0xD575], NFKD: [0x1112, 0x1162, 0x11A8] },
+{ source: [0xD576], NFC: [0xD576], NFD: [0x1112, 0x1162, 0x11A9], NFKC: [0xD576], NFKD: [0x1112, 0x1162, 0x11A9] },
+{ source: [0xD577], NFC: [0xD577], NFD: [0x1112, 0x1162, 0x11AA], NFKC: [0xD577], NFKD: [0x1112, 0x1162, 0x11AA] },
+{ source: [0xD578], NFC: [0xD578], NFD: [0x1112, 0x1162, 0x11AB], NFKC: [0xD578], NFKD: [0x1112, 0x1162, 0x11AB] },
+{ source: [0xD579], NFC: [0xD579], NFD: [0x1112, 0x1162, 0x11AC], NFKC: [0xD579], NFKD: [0x1112, 0x1162, 0x11AC] },
+{ source: [0xD57A], NFC: [0xD57A], NFD: [0x1112, 0x1162, 0x11AD], NFKC: [0xD57A], NFKD: [0x1112, 0x1162, 0x11AD] },
+{ source: [0xD57B], NFC: [0xD57B], NFD: [0x1112, 0x1162, 0x11AE], NFKC: [0xD57B], NFKD: [0x1112, 0x1162, 0x11AE] },
+{ source: [0xD57C], NFC: [0xD57C], NFD: [0x1112, 0x1162, 0x11AF], NFKC: [0xD57C], NFKD: [0x1112, 0x1162, 0x11AF] },
+{ source: [0xD57D], NFC: [0xD57D], NFD: [0x1112, 0x1162, 0x11B0], NFKC: [0xD57D], NFKD: [0x1112, 0x1162, 0x11B0] },
+{ source: [0xD57E], NFC: [0xD57E], NFD: [0x1112, 0x1162, 0x11B1], NFKC: [0xD57E], NFKD: [0x1112, 0x1162, 0x11B1] },
+{ source: [0xD57F], NFC: [0xD57F], NFD: [0x1112, 0x1162, 0x11B2], NFKC: [0xD57F], NFKD: [0x1112, 0x1162, 0x11B2] },
+{ source: [0xD580], NFC: [0xD580], NFD: [0x1112, 0x1162, 0x11B3], NFKC: [0xD580], NFKD: [0x1112, 0x1162, 0x11B3] },
+{ source: [0xD581], NFC: [0xD581], NFD: [0x1112, 0x1162, 0x11B4], NFKC: [0xD581], NFKD: [0x1112, 0x1162, 0x11B4] },
+{ source: [0xD582], NFC: [0xD582], NFD: [0x1112, 0x1162, 0x11B5], NFKC: [0xD582], NFKD: [0x1112, 0x1162, 0x11B5] },
+{ source: [0xD583], NFC: [0xD583], NFD: [0x1112, 0x1162, 0x11B6], NFKC: [0xD583], NFKD: [0x1112, 0x1162, 0x11B6] },
+{ source: [0xD584], NFC: [0xD584], NFD: [0x1112, 0x1162, 0x11B7], NFKC: [0xD584], NFKD: [0x1112, 0x1162, 0x11B7] },
+{ source: [0xD585], NFC: [0xD585], NFD: [0x1112, 0x1162, 0x11B8], NFKC: [0xD585], NFKD: [0x1112, 0x1162, 0x11B8] },
+{ source: [0xD586], NFC: [0xD586], NFD: [0x1112, 0x1162, 0x11B9], NFKC: [0xD586], NFKD: [0x1112, 0x1162, 0x11B9] },
+{ source: [0xD587], NFC: [0xD587], NFD: [0x1112, 0x1162, 0x11BA], NFKC: [0xD587], NFKD: [0x1112, 0x1162, 0x11BA] },
+{ source: [0xD588], NFC: [0xD588], NFD: [0x1112, 0x1162, 0x11BB], NFKC: [0xD588], NFKD: [0x1112, 0x1162, 0x11BB] },
+{ source: [0xD589], NFC: [0xD589], NFD: [0x1112, 0x1162, 0x11BC], NFKC: [0xD589], NFKD: [0x1112, 0x1162, 0x11BC] },
+{ source: [0xD58A], NFC: [0xD58A], NFD: [0x1112, 0x1162, 0x11BD], NFKC: [0xD58A], NFKD: [0x1112, 0x1162, 0x11BD] },
+{ source: [0xD58B], NFC: [0xD58B], NFD: [0x1112, 0x1162, 0x11BE], NFKC: [0xD58B], NFKD: [0x1112, 0x1162, 0x11BE] },
+{ source: [0xD58C], NFC: [0xD58C], NFD: [0x1112, 0x1162, 0x11BF], NFKC: [0xD58C], NFKD: [0x1112, 0x1162, 0x11BF] },
+{ source: [0xD58D], NFC: [0xD58D], NFD: [0x1112, 0x1162, 0x11C0], NFKC: [0xD58D], NFKD: [0x1112, 0x1162, 0x11C0] },
+{ source: [0xD58E], NFC: [0xD58E], NFD: [0x1112, 0x1162, 0x11C1], NFKC: [0xD58E], NFKD: [0x1112, 0x1162, 0x11C1] },
+{ source: [0xD58F], NFC: [0xD58F], NFD: [0x1112, 0x1162, 0x11C2], NFKC: [0xD58F], NFKD: [0x1112, 0x1162, 0x11C2] },
+{ source: [0xD590], NFC: [0xD590], NFD: [0x1112, 0x1163], NFKC: [0xD590], NFKD: [0x1112, 0x1163] },
+{ source: [0xD591], NFC: [0xD591], NFD: [0x1112, 0x1163, 0x11A8], NFKC: [0xD591], NFKD: [0x1112, 0x1163, 0x11A8] },
+{ source: [0xD592], NFC: [0xD592], NFD: [0x1112, 0x1163, 0x11A9], NFKC: [0xD592], NFKD: [0x1112, 0x1163, 0x11A9] },
+{ source: [0xD593], NFC: [0xD593], NFD: [0x1112, 0x1163, 0x11AA], NFKC: [0xD593], NFKD: [0x1112, 0x1163, 0x11AA] },
+{ source: [0xD594], NFC: [0xD594], NFD: [0x1112, 0x1163, 0x11AB], NFKC: [0xD594], NFKD: [0x1112, 0x1163, 0x11AB] },
+{ source: [0xD595], NFC: [0xD595], NFD: [0x1112, 0x1163, 0x11AC], NFKC: [0xD595], NFKD: [0x1112, 0x1163, 0x11AC] },
+{ source: [0xD596], NFC: [0xD596], NFD: [0x1112, 0x1163, 0x11AD], NFKC: [0xD596], NFKD: [0x1112, 0x1163, 0x11AD] },
+{ source: [0xD597], NFC: [0xD597], NFD: [0x1112, 0x1163, 0x11AE], NFKC: [0xD597], NFKD: [0x1112, 0x1163, 0x11AE] },
+{ source: [0xD598], NFC: [0xD598], NFD: [0x1112, 0x1163, 0x11AF], NFKC: [0xD598], NFKD: [0x1112, 0x1163, 0x11AF] },
+{ source: [0xD599], NFC: [0xD599], NFD: [0x1112, 0x1163, 0x11B0], NFKC: [0xD599], NFKD: [0x1112, 0x1163, 0x11B0] },
+{ source: [0xD59A], NFC: [0xD59A], NFD: [0x1112, 0x1163, 0x11B1], NFKC: [0xD59A], NFKD: [0x1112, 0x1163, 0x11B1] },
+{ source: [0xD59B], NFC: [0xD59B], NFD: [0x1112, 0x1163, 0x11B2], NFKC: [0xD59B], NFKD: [0x1112, 0x1163, 0x11B2] },
+{ source: [0xD59C], NFC: [0xD59C], NFD: [0x1112, 0x1163, 0x11B3], NFKC: [0xD59C], NFKD: [0x1112, 0x1163, 0x11B3] },
+{ source: [0xD59D], NFC: [0xD59D], NFD: [0x1112, 0x1163, 0x11B4], NFKC: [0xD59D], NFKD: [0x1112, 0x1163, 0x11B4] },
+{ source: [0xD59E], NFC: [0xD59E], NFD: [0x1112, 0x1163, 0x11B5], NFKC: [0xD59E], NFKD: [0x1112, 0x1163, 0x11B5] },
+{ source: [0xD59F], NFC: [0xD59F], NFD: [0x1112, 0x1163, 0x11B6], NFKC: [0xD59F], NFKD: [0x1112, 0x1163, 0x11B6] },
+{ source: [0xD5A0], NFC: [0xD5A0], NFD: [0x1112, 0x1163, 0x11B7], NFKC: [0xD5A0], NFKD: [0x1112, 0x1163, 0x11B7] },
+{ source: [0xD5A1], NFC: [0xD5A1], NFD: [0x1112, 0x1163, 0x11B8], NFKC: [0xD5A1], NFKD: [0x1112, 0x1163, 0x11B8] },
+{ source: [0xD5A2], NFC: [0xD5A2], NFD: [0x1112, 0x1163, 0x11B9], NFKC: [0xD5A2], NFKD: [0x1112, 0x1163, 0x11B9] },
+{ source: [0xD5A3], NFC: [0xD5A3], NFD: [0x1112, 0x1163, 0x11BA], NFKC: [0xD5A3], NFKD: [0x1112, 0x1163, 0x11BA] },
+{ source: [0xD5A4], NFC: [0xD5A4], NFD: [0x1112, 0x1163, 0x11BB], NFKC: [0xD5A4], NFKD: [0x1112, 0x1163, 0x11BB] },
+{ source: [0xD5A5], NFC: [0xD5A5], NFD: [0x1112, 0x1163, 0x11BC], NFKC: [0xD5A5], NFKD: [0x1112, 0x1163, 0x11BC] },
+{ source: [0xD5A6], NFC: [0xD5A6], NFD: [0x1112, 0x1163, 0x11BD], NFKC: [0xD5A6], NFKD: [0x1112, 0x1163, 0x11BD] },
+{ source: [0xD5A7], NFC: [0xD5A7], NFD: [0x1112, 0x1163, 0x11BE], NFKC: [0xD5A7], NFKD: [0x1112, 0x1163, 0x11BE] },
+{ source: [0xD5A8], NFC: [0xD5A8], NFD: [0x1112, 0x1163, 0x11BF], NFKC: [0xD5A8], NFKD: [0x1112, 0x1163, 0x11BF] },
+{ source: [0xD5A9], NFC: [0xD5A9], NFD: [0x1112, 0x1163, 0x11C0], NFKC: [0xD5A9], NFKD: [0x1112, 0x1163, 0x11C0] },
+{ source: [0xD5AA], NFC: [0xD5AA], NFD: [0x1112, 0x1163, 0x11C1], NFKC: [0xD5AA], NFKD: [0x1112, 0x1163, 0x11C1] },
+{ source: [0xD5AB], NFC: [0xD5AB], NFD: [0x1112, 0x1163, 0x11C2], NFKC: [0xD5AB], NFKD: [0x1112, 0x1163, 0x11C2] },
+{ source: [0xD5AC], NFC: [0xD5AC], NFD: [0x1112, 0x1164], NFKC: [0xD5AC], NFKD: [0x1112, 0x1164] },
+{ source: [0xD5AD], NFC: [0xD5AD], NFD: [0x1112, 0x1164, 0x11A8], NFKC: [0xD5AD], NFKD: [0x1112, 0x1164, 0x11A8] },
+{ source: [0xD5AE], NFC: [0xD5AE], NFD: [0x1112, 0x1164, 0x11A9], NFKC: [0xD5AE], NFKD: [0x1112, 0x1164, 0x11A9] },
+{ source: [0xD5AF], NFC: [0xD5AF], NFD: [0x1112, 0x1164, 0x11AA], NFKC: [0xD5AF], NFKD: [0x1112, 0x1164, 0x11AA] },
+{ source: [0xD5B0], NFC: [0xD5B0], NFD: [0x1112, 0x1164, 0x11AB], NFKC: [0xD5B0], NFKD: [0x1112, 0x1164, 0x11AB] },
+{ source: [0xD5B1], NFC: [0xD5B1], NFD: [0x1112, 0x1164, 0x11AC], NFKC: [0xD5B1], NFKD: [0x1112, 0x1164, 0x11AC] },
+{ source: [0xD5B2], NFC: [0xD5B2], NFD: [0x1112, 0x1164, 0x11AD], NFKC: [0xD5B2], NFKD: [0x1112, 0x1164, 0x11AD] },
+{ source: [0xD5B3], NFC: [0xD5B3], NFD: [0x1112, 0x1164, 0x11AE], NFKC: [0xD5B3], NFKD: [0x1112, 0x1164, 0x11AE] },
+{ source: [0xD5B4], NFC: [0xD5B4], NFD: [0x1112, 0x1164, 0x11AF], NFKC: [0xD5B4], NFKD: [0x1112, 0x1164, 0x11AF] },
+{ source: [0xD5B5], NFC: [0xD5B5], NFD: [0x1112, 0x1164, 0x11B0], NFKC: [0xD5B5], NFKD: [0x1112, 0x1164, 0x11B0] },
+{ source: [0xD5B6], NFC: [0xD5B6], NFD: [0x1112, 0x1164, 0x11B1], NFKC: [0xD5B6], NFKD: [0x1112, 0x1164, 0x11B1] },
+{ source: [0xD5B7], NFC: [0xD5B7], NFD: [0x1112, 0x1164, 0x11B2], NFKC: [0xD5B7], NFKD: [0x1112, 0x1164, 0x11B2] },
+{ source: [0xD5B8], NFC: [0xD5B8], NFD: [0x1112, 0x1164, 0x11B3], NFKC: [0xD5B8], NFKD: [0x1112, 0x1164, 0x11B3] },
+{ source: [0xD5B9], NFC: [0xD5B9], NFD: [0x1112, 0x1164, 0x11B4], NFKC: [0xD5B9], NFKD: [0x1112, 0x1164, 0x11B4] },
+{ source: [0xD5BA], NFC: [0xD5BA], NFD: [0x1112, 0x1164, 0x11B5], NFKC: [0xD5BA], NFKD: [0x1112, 0x1164, 0x11B5] },
+{ source: [0xD5BB], NFC: [0xD5BB], NFD: [0x1112, 0x1164, 0x11B6], NFKC: [0xD5BB], NFKD: [0x1112, 0x1164, 0x11B6] },
+{ source: [0xD5BC], NFC: [0xD5BC], NFD: [0x1112, 0x1164, 0x11B7], NFKC: [0xD5BC], NFKD: [0x1112, 0x1164, 0x11B7] },
+{ source: [0xD5BD], NFC: [0xD5BD], NFD: [0x1112, 0x1164, 0x11B8], NFKC: [0xD5BD], NFKD: [0x1112, 0x1164, 0x11B8] },
+{ source: [0xD5BE], NFC: [0xD5BE], NFD: [0x1112, 0x1164, 0x11B9], NFKC: [0xD5BE], NFKD: [0x1112, 0x1164, 0x11B9] },
+{ source: [0xD5BF], NFC: [0xD5BF], NFD: [0x1112, 0x1164, 0x11BA], NFKC: [0xD5BF], NFKD: [0x1112, 0x1164, 0x11BA] },
+{ source: [0xD5C0], NFC: [0xD5C0], NFD: [0x1112, 0x1164, 0x11BB], NFKC: [0xD5C0], NFKD: [0x1112, 0x1164, 0x11BB] },
+{ source: [0xD5C1], NFC: [0xD5C1], NFD: [0x1112, 0x1164, 0x11BC], NFKC: [0xD5C1], NFKD: [0x1112, 0x1164, 0x11BC] },
+{ source: [0xD5C2], NFC: [0xD5C2], NFD: [0x1112, 0x1164, 0x11BD], NFKC: [0xD5C2], NFKD: [0x1112, 0x1164, 0x11BD] },
+{ source: [0xD5C3], NFC: [0xD5C3], NFD: [0x1112, 0x1164, 0x11BE], NFKC: [0xD5C3], NFKD: [0x1112, 0x1164, 0x11BE] },
+{ source: [0xD5C4], NFC: [0xD5C4], NFD: [0x1112, 0x1164, 0x11BF], NFKC: [0xD5C4], NFKD: [0x1112, 0x1164, 0x11BF] },
+{ source: [0xD5C5], NFC: [0xD5C5], NFD: [0x1112, 0x1164, 0x11C0], NFKC: [0xD5C5], NFKD: [0x1112, 0x1164, 0x11C0] },
+{ source: [0xD5C6], NFC: [0xD5C6], NFD: [0x1112, 0x1164, 0x11C1], NFKC: [0xD5C6], NFKD: [0x1112, 0x1164, 0x11C1] },
+{ source: [0xD5C7], NFC: [0xD5C7], NFD: [0x1112, 0x1164, 0x11C2], NFKC: [0xD5C7], NFKD: [0x1112, 0x1164, 0x11C2] },
+{ source: [0xD5C8], NFC: [0xD5C8], NFD: [0x1112, 0x1165], NFKC: [0xD5C8], NFKD: [0x1112, 0x1165] },
+{ source: [0xD5C9], NFC: [0xD5C9], NFD: [0x1112, 0x1165, 0x11A8], NFKC: [0xD5C9], NFKD: [0x1112, 0x1165, 0x11A8] },
+{ source: [0xD5CA], NFC: [0xD5CA], NFD: [0x1112, 0x1165, 0x11A9], NFKC: [0xD5CA], NFKD: [0x1112, 0x1165, 0x11A9] },
+{ source: [0xD5CB], NFC: [0xD5CB], NFD: [0x1112, 0x1165, 0x11AA], NFKC: [0xD5CB], NFKD: [0x1112, 0x1165, 0x11AA] },
+{ source: [0xD5CC], NFC: [0xD5CC], NFD: [0x1112, 0x1165, 0x11AB], NFKC: [0xD5CC], NFKD: [0x1112, 0x1165, 0x11AB] },
+{ source: [0xD5CD], NFC: [0xD5CD], NFD: [0x1112, 0x1165, 0x11AC], NFKC: [0xD5CD], NFKD: [0x1112, 0x1165, 0x11AC] },
+{ source: [0xD5CE], NFC: [0xD5CE], NFD: [0x1112, 0x1165, 0x11AD], NFKC: [0xD5CE], NFKD: [0x1112, 0x1165, 0x11AD] },
+{ source: [0xD5CF], NFC: [0xD5CF], NFD: [0x1112, 0x1165, 0x11AE], NFKC: [0xD5CF], NFKD: [0x1112, 0x1165, 0x11AE] },
+{ source: [0xD5D0], NFC: [0xD5D0], NFD: [0x1112, 0x1165, 0x11AF], NFKC: [0xD5D0], NFKD: [0x1112, 0x1165, 0x11AF] },
+{ source: [0xD5D1], NFC: [0xD5D1], NFD: [0x1112, 0x1165, 0x11B0], NFKC: [0xD5D1], NFKD: [0x1112, 0x1165, 0x11B0] },
+{ source: [0xD5D2], NFC: [0xD5D2], NFD: [0x1112, 0x1165, 0x11B1], NFKC: [0xD5D2], NFKD: [0x1112, 0x1165, 0x11B1] },
+{ source: [0xD5D3], NFC: [0xD5D3], NFD: [0x1112, 0x1165, 0x11B2], NFKC: [0xD5D3], NFKD: [0x1112, 0x1165, 0x11B2] },
+{ source: [0xD5D4], NFC: [0xD5D4], NFD: [0x1112, 0x1165, 0x11B3], NFKC: [0xD5D4], NFKD: [0x1112, 0x1165, 0x11B3] },
+{ source: [0xD5D5], NFC: [0xD5D5], NFD: [0x1112, 0x1165, 0x11B4], NFKC: [0xD5D5], NFKD: [0x1112, 0x1165, 0x11B4] },
+{ source: [0xD5D6], NFC: [0xD5D6], NFD: [0x1112, 0x1165, 0x11B5], NFKC: [0xD5D6], NFKD: [0x1112, 0x1165, 0x11B5] },
+{ source: [0xD5D7], NFC: [0xD5D7], NFD: [0x1112, 0x1165, 0x11B6], NFKC: [0xD5D7], NFKD: [0x1112, 0x1165, 0x11B6] },
+{ source: [0xD5D8], NFC: [0xD5D8], NFD: [0x1112, 0x1165, 0x11B7], NFKC: [0xD5D8], NFKD: [0x1112, 0x1165, 0x11B7] },
+{ source: [0xD5D9], NFC: [0xD5D9], NFD: [0x1112, 0x1165, 0x11B8], NFKC: [0xD5D9], NFKD: [0x1112, 0x1165, 0x11B8] },
+{ source: [0xD5DA], NFC: [0xD5DA], NFD: [0x1112, 0x1165, 0x11B9], NFKC: [0xD5DA], NFKD: [0x1112, 0x1165, 0x11B9] },
+{ source: [0xD5DB], NFC: [0xD5DB], NFD: [0x1112, 0x1165, 0x11BA], NFKC: [0xD5DB], NFKD: [0x1112, 0x1165, 0x11BA] },
+{ source: [0xD5DC], NFC: [0xD5DC], NFD: [0x1112, 0x1165, 0x11BB], NFKC: [0xD5DC], NFKD: [0x1112, 0x1165, 0x11BB] },
+{ source: [0xD5DD], NFC: [0xD5DD], NFD: [0x1112, 0x1165, 0x11BC], NFKC: [0xD5DD], NFKD: [0x1112, 0x1165, 0x11BC] },
+{ source: [0xD5DE], NFC: [0xD5DE], NFD: [0x1112, 0x1165, 0x11BD], NFKC: [0xD5DE], NFKD: [0x1112, 0x1165, 0x11BD] },
+{ source: [0xD5DF], NFC: [0xD5DF], NFD: [0x1112, 0x1165, 0x11BE], NFKC: [0xD5DF], NFKD: [0x1112, 0x1165, 0x11BE] },
+{ source: [0xD5E0], NFC: [0xD5E0], NFD: [0x1112, 0x1165, 0x11BF], NFKC: [0xD5E0], NFKD: [0x1112, 0x1165, 0x11BF] },
+{ source: [0xD5E1], NFC: [0xD5E1], NFD: [0x1112, 0x1165, 0x11C0], NFKC: [0xD5E1], NFKD: [0x1112, 0x1165, 0x11C0] },
+{ source: [0xD5E2], NFC: [0xD5E2], NFD: [0x1112, 0x1165, 0x11C1], NFKC: [0xD5E2], NFKD: [0x1112, 0x1165, 0x11C1] },
+{ source: [0xD5E3], NFC: [0xD5E3], NFD: [0x1112, 0x1165, 0x11C2], NFKC: [0xD5E3], NFKD: [0x1112, 0x1165, 0x11C2] },
+{ source: [0xD5E4], NFC: [0xD5E4], NFD: [0x1112, 0x1166], NFKC: [0xD5E4], NFKD: [0x1112, 0x1166] },
+{ source: [0xD5E5], NFC: [0xD5E5], NFD: [0x1112, 0x1166, 0x11A8], NFKC: [0xD5E5], NFKD: [0x1112, 0x1166, 0x11A8] },
+{ source: [0xD5E6], NFC: [0xD5E6], NFD: [0x1112, 0x1166, 0x11A9], NFKC: [0xD5E6], NFKD: [0x1112, 0x1166, 0x11A9] },
+{ source: [0xD5E7], NFC: [0xD5E7], NFD: [0x1112, 0x1166, 0x11AA], NFKC: [0xD5E7], NFKD: [0x1112, 0x1166, 0x11AA] },
+{ source: [0xD5E8], NFC: [0xD5E8], NFD: [0x1112, 0x1166, 0x11AB], NFKC: [0xD5E8], NFKD: [0x1112, 0x1166, 0x11AB] },
+{ source: [0xD5E9], NFC: [0xD5E9], NFD: [0x1112, 0x1166, 0x11AC], NFKC: [0xD5E9], NFKD: [0x1112, 0x1166, 0x11AC] },
+{ source: [0xD5EA], NFC: [0xD5EA], NFD: [0x1112, 0x1166, 0x11AD], NFKC: [0xD5EA], NFKD: [0x1112, 0x1166, 0x11AD] },
+{ source: [0xD5EB], NFC: [0xD5EB], NFD: [0x1112, 0x1166, 0x11AE], NFKC: [0xD5EB], NFKD: [0x1112, 0x1166, 0x11AE] },
+{ source: [0xD5EC], NFC: [0xD5EC], NFD: [0x1112, 0x1166, 0x11AF], NFKC: [0xD5EC], NFKD: [0x1112, 0x1166, 0x11AF] },
+{ source: [0xD5ED], NFC: [0xD5ED], NFD: [0x1112, 0x1166, 0x11B0], NFKC: [0xD5ED], NFKD: [0x1112, 0x1166, 0x11B0] },
+{ source: [0xD5EE], NFC: [0xD5EE], NFD: [0x1112, 0x1166, 0x11B1], NFKC: [0xD5EE], NFKD: [0x1112, 0x1166, 0x11B1] },
+{ source: [0xD5EF], NFC: [0xD5EF], NFD: [0x1112, 0x1166, 0x11B2], NFKC: [0xD5EF], NFKD: [0x1112, 0x1166, 0x11B2] },
+{ source: [0xD5F0], NFC: [0xD5F0], NFD: [0x1112, 0x1166, 0x11B3], NFKC: [0xD5F0], NFKD: [0x1112, 0x1166, 0x11B3] },
+{ source: [0xD5F1], NFC: [0xD5F1], NFD: [0x1112, 0x1166, 0x11B4], NFKC: [0xD5F1], NFKD: [0x1112, 0x1166, 0x11B4] },
+{ source: [0xD5F2], NFC: [0xD5F2], NFD: [0x1112, 0x1166, 0x11B5], NFKC: [0xD5F2], NFKD: [0x1112, 0x1166, 0x11B5] },
+{ source: [0xD5F3], NFC: [0xD5F3], NFD: [0x1112, 0x1166, 0x11B6], NFKC: [0xD5F3], NFKD: [0x1112, 0x1166, 0x11B6] },
+{ source: [0xD5F4], NFC: [0xD5F4], NFD: [0x1112, 0x1166, 0x11B7], NFKC: [0xD5F4], NFKD: [0x1112, 0x1166, 0x11B7] },
+{ source: [0xD5F5], NFC: [0xD5F5], NFD: [0x1112, 0x1166, 0x11B8], NFKC: [0xD5F5], NFKD: [0x1112, 0x1166, 0x11B8] },
+{ source: [0xD5F6], NFC: [0xD5F6], NFD: [0x1112, 0x1166, 0x11B9], NFKC: [0xD5F6], NFKD: [0x1112, 0x1166, 0x11B9] },
+{ source: [0xD5F7], NFC: [0xD5F7], NFD: [0x1112, 0x1166, 0x11BA], NFKC: [0xD5F7], NFKD: [0x1112, 0x1166, 0x11BA] },
+{ source: [0xD5F8], NFC: [0xD5F8], NFD: [0x1112, 0x1166, 0x11BB], NFKC: [0xD5F8], NFKD: [0x1112, 0x1166, 0x11BB] },
+{ source: [0xD5F9], NFC: [0xD5F9], NFD: [0x1112, 0x1166, 0x11BC], NFKC: [0xD5F9], NFKD: [0x1112, 0x1166, 0x11BC] },
+{ source: [0xD5FA], NFC: [0xD5FA], NFD: [0x1112, 0x1166, 0x11BD], NFKC: [0xD5FA], NFKD: [0x1112, 0x1166, 0x11BD] },
+{ source: [0xD5FB], NFC: [0xD5FB], NFD: [0x1112, 0x1166, 0x11BE], NFKC: [0xD5FB], NFKD: [0x1112, 0x1166, 0x11BE] },
+{ source: [0xD5FC], NFC: [0xD5FC], NFD: [0x1112, 0x1166, 0x11BF], NFKC: [0xD5FC], NFKD: [0x1112, 0x1166, 0x11BF] },
+{ source: [0xD5FD], NFC: [0xD5FD], NFD: [0x1112, 0x1166, 0x11C0], NFKC: [0xD5FD], NFKD: [0x1112, 0x1166, 0x11C0] },
+{ source: [0xD5FE], NFC: [0xD5FE], NFD: [0x1112, 0x1166, 0x11C1], NFKC: [0xD5FE], NFKD: [0x1112, 0x1166, 0x11C1] },
+{ source: [0xD5FF], NFC: [0xD5FF], NFD: [0x1112, 0x1166, 0x11C2], NFKC: [0xD5FF], NFKD: [0x1112, 0x1166, 0x11C2] },
+{ source: [0xD600], NFC: [0xD600], NFD: [0x1112, 0x1167], NFKC: [0xD600], NFKD: [0x1112, 0x1167] },
+{ source: [0xD601], NFC: [0xD601], NFD: [0x1112, 0x1167, 0x11A8], NFKC: [0xD601], NFKD: [0x1112, 0x1167, 0x11A8] },
+{ source: [0xD602], NFC: [0xD602], NFD: [0x1112, 0x1167, 0x11A9], NFKC: [0xD602], NFKD: [0x1112, 0x1167, 0x11A9] },
+{ source: [0xD603], NFC: [0xD603], NFD: [0x1112, 0x1167, 0x11AA], NFKC: [0xD603], NFKD: [0x1112, 0x1167, 0x11AA] },
+{ source: [0xD604], NFC: [0xD604], NFD: [0x1112, 0x1167, 0x11AB], NFKC: [0xD604], NFKD: [0x1112, 0x1167, 0x11AB] },
+{ source: [0xD605], NFC: [0xD605], NFD: [0x1112, 0x1167, 0x11AC], NFKC: [0xD605], NFKD: [0x1112, 0x1167, 0x11AC] },
+{ source: [0xD606], NFC: [0xD606], NFD: [0x1112, 0x1167, 0x11AD], NFKC: [0xD606], NFKD: [0x1112, 0x1167, 0x11AD] },
+{ source: [0xD607], NFC: [0xD607], NFD: [0x1112, 0x1167, 0x11AE], NFKC: [0xD607], NFKD: [0x1112, 0x1167, 0x11AE] },
+{ source: [0xD608], NFC: [0xD608], NFD: [0x1112, 0x1167, 0x11AF], NFKC: [0xD608], NFKD: [0x1112, 0x1167, 0x11AF] },
+{ source: [0xD609], NFC: [0xD609], NFD: [0x1112, 0x1167, 0x11B0], NFKC: [0xD609], NFKD: [0x1112, 0x1167, 0x11B0] },
+{ source: [0xD60A], NFC: [0xD60A], NFD: [0x1112, 0x1167, 0x11B1], NFKC: [0xD60A], NFKD: [0x1112, 0x1167, 0x11B1] },
+{ source: [0xD60B], NFC: [0xD60B], NFD: [0x1112, 0x1167, 0x11B2], NFKC: [0xD60B], NFKD: [0x1112, 0x1167, 0x11B2] },
+{ source: [0xD60C], NFC: [0xD60C], NFD: [0x1112, 0x1167, 0x11B3], NFKC: [0xD60C], NFKD: [0x1112, 0x1167, 0x11B3] },
+{ source: [0xD60D], NFC: [0xD60D], NFD: [0x1112, 0x1167, 0x11B4], NFKC: [0xD60D], NFKD: [0x1112, 0x1167, 0x11B4] },
+{ source: [0xD60E], NFC: [0xD60E], NFD: [0x1112, 0x1167, 0x11B5], NFKC: [0xD60E], NFKD: [0x1112, 0x1167, 0x11B5] },
+{ source: [0xD60F], NFC: [0xD60F], NFD: [0x1112, 0x1167, 0x11B6], NFKC: [0xD60F], NFKD: [0x1112, 0x1167, 0x11B6] },
+{ source: [0xD610], NFC: [0xD610], NFD: [0x1112, 0x1167, 0x11B7], NFKC: [0xD610], NFKD: [0x1112, 0x1167, 0x11B7] },
+{ source: [0xD611], NFC: [0xD611], NFD: [0x1112, 0x1167, 0x11B8], NFKC: [0xD611], NFKD: [0x1112, 0x1167, 0x11B8] },
+{ source: [0xD612], NFC: [0xD612], NFD: [0x1112, 0x1167, 0x11B9], NFKC: [0xD612], NFKD: [0x1112, 0x1167, 0x11B9] },
+{ source: [0xD613], NFC: [0xD613], NFD: [0x1112, 0x1167, 0x11BA], NFKC: [0xD613], NFKD: [0x1112, 0x1167, 0x11BA] },
+{ source: [0xD614], NFC: [0xD614], NFD: [0x1112, 0x1167, 0x11BB], NFKC: [0xD614], NFKD: [0x1112, 0x1167, 0x11BB] },
+{ source: [0xD615], NFC: [0xD615], NFD: [0x1112, 0x1167, 0x11BC], NFKC: [0xD615], NFKD: [0x1112, 0x1167, 0x11BC] },
+{ source: [0xD616], NFC: [0xD616], NFD: [0x1112, 0x1167, 0x11BD], NFKC: [0xD616], NFKD: [0x1112, 0x1167, 0x11BD] },
+{ source: [0xD617], NFC: [0xD617], NFD: [0x1112, 0x1167, 0x11BE], NFKC: [0xD617], NFKD: [0x1112, 0x1167, 0x11BE] },
+{ source: [0xD618], NFC: [0xD618], NFD: [0x1112, 0x1167, 0x11BF], NFKC: [0xD618], NFKD: [0x1112, 0x1167, 0x11BF] },
+{ source: [0xD619], NFC: [0xD619], NFD: [0x1112, 0x1167, 0x11C0], NFKC: [0xD619], NFKD: [0x1112, 0x1167, 0x11C0] },
+{ source: [0xD61A], NFC: [0xD61A], NFD: [0x1112, 0x1167, 0x11C1], NFKC: [0xD61A], NFKD: [0x1112, 0x1167, 0x11C1] },
+{ source: [0xD61B], NFC: [0xD61B], NFD: [0x1112, 0x1167, 0x11C2], NFKC: [0xD61B], NFKD: [0x1112, 0x1167, 0x11C2] },
+{ source: [0xD61C], NFC: [0xD61C], NFD: [0x1112, 0x1168], NFKC: [0xD61C], NFKD: [0x1112, 0x1168] },
+{ source: [0xD61D], NFC: [0xD61D], NFD: [0x1112, 0x1168, 0x11A8], NFKC: [0xD61D], NFKD: [0x1112, 0x1168, 0x11A8] },
+{ source: [0xD61E], NFC: [0xD61E], NFD: [0x1112, 0x1168, 0x11A9], NFKC: [0xD61E], NFKD: [0x1112, 0x1168, 0x11A9] },
+{ source: [0xD61F], NFC: [0xD61F], NFD: [0x1112, 0x1168, 0x11AA], NFKC: [0xD61F], NFKD: [0x1112, 0x1168, 0x11AA] },
+{ source: [0xD620], NFC: [0xD620], NFD: [0x1112, 0x1168, 0x11AB], NFKC: [0xD620], NFKD: [0x1112, 0x1168, 0x11AB] },
+{ source: [0xD621], NFC: [0xD621], NFD: [0x1112, 0x1168, 0x11AC], NFKC: [0xD621], NFKD: [0x1112, 0x1168, 0x11AC] },
+{ source: [0xD622], NFC: [0xD622], NFD: [0x1112, 0x1168, 0x11AD], NFKC: [0xD622], NFKD: [0x1112, 0x1168, 0x11AD] },
+{ source: [0xD623], NFC: [0xD623], NFD: [0x1112, 0x1168, 0x11AE], NFKC: [0xD623], NFKD: [0x1112, 0x1168, 0x11AE] },
+{ source: [0xD624], NFC: [0xD624], NFD: [0x1112, 0x1168, 0x11AF], NFKC: [0xD624], NFKD: [0x1112, 0x1168, 0x11AF] },
+{ source: [0xD625], NFC: [0xD625], NFD: [0x1112, 0x1168, 0x11B0], NFKC: [0xD625], NFKD: [0x1112, 0x1168, 0x11B0] },
+{ source: [0xD626], NFC: [0xD626], NFD: [0x1112, 0x1168, 0x11B1], NFKC: [0xD626], NFKD: [0x1112, 0x1168, 0x11B1] },
+{ source: [0xD627], NFC: [0xD627], NFD: [0x1112, 0x1168, 0x11B2], NFKC: [0xD627], NFKD: [0x1112, 0x1168, 0x11B2] },
+{ source: [0xD628], NFC: [0xD628], NFD: [0x1112, 0x1168, 0x11B3], NFKC: [0xD628], NFKD: [0x1112, 0x1168, 0x11B3] },
+{ source: [0xD629], NFC: [0xD629], NFD: [0x1112, 0x1168, 0x11B4], NFKC: [0xD629], NFKD: [0x1112, 0x1168, 0x11B4] },
+{ source: [0xD62A], NFC: [0xD62A], NFD: [0x1112, 0x1168, 0x11B5], NFKC: [0xD62A], NFKD: [0x1112, 0x1168, 0x11B5] },
+{ source: [0xD62B], NFC: [0xD62B], NFD: [0x1112, 0x1168, 0x11B6], NFKC: [0xD62B], NFKD: [0x1112, 0x1168, 0x11B6] },
+{ source: [0xD62C], NFC: [0xD62C], NFD: [0x1112, 0x1168, 0x11B7], NFKC: [0xD62C], NFKD: [0x1112, 0x1168, 0x11B7] },
+{ source: [0xD62D], NFC: [0xD62D], NFD: [0x1112, 0x1168, 0x11B8], NFKC: [0xD62D], NFKD: [0x1112, 0x1168, 0x11B8] },
+{ source: [0xD62E], NFC: [0xD62E], NFD: [0x1112, 0x1168, 0x11B9], NFKC: [0xD62E], NFKD: [0x1112, 0x1168, 0x11B9] },
+{ source: [0xD62F], NFC: [0xD62F], NFD: [0x1112, 0x1168, 0x11BA], NFKC: [0xD62F], NFKD: [0x1112, 0x1168, 0x11BA] },
+{ source: [0xD630], NFC: [0xD630], NFD: [0x1112, 0x1168, 0x11BB], NFKC: [0xD630], NFKD: [0x1112, 0x1168, 0x11BB] },
+{ source: [0xD631], NFC: [0xD631], NFD: [0x1112, 0x1168, 0x11BC], NFKC: [0xD631], NFKD: [0x1112, 0x1168, 0x11BC] },
+{ source: [0xD632], NFC: [0xD632], NFD: [0x1112, 0x1168, 0x11BD], NFKC: [0xD632], NFKD: [0x1112, 0x1168, 0x11BD] },
+{ source: [0xD633], NFC: [0xD633], NFD: [0x1112, 0x1168, 0x11BE], NFKC: [0xD633], NFKD: [0x1112, 0x1168, 0x11BE] },
+{ source: [0xD634], NFC: [0xD634], NFD: [0x1112, 0x1168, 0x11BF], NFKC: [0xD634], NFKD: [0x1112, 0x1168, 0x11BF] },
+{ source: [0xD635], NFC: [0xD635], NFD: [0x1112, 0x1168, 0x11C0], NFKC: [0xD635], NFKD: [0x1112, 0x1168, 0x11C0] },
+{ source: [0xD636], NFC: [0xD636], NFD: [0x1112, 0x1168, 0x11C1], NFKC: [0xD636], NFKD: [0x1112, 0x1168, 0x11C1] },
+{ source: [0xD637], NFC: [0xD637], NFD: [0x1112, 0x1168, 0x11C2], NFKC: [0xD637], NFKD: [0x1112, 0x1168, 0x11C2] },
+{ source: [0xD638], NFC: [0xD638], NFD: [0x1112, 0x1169], NFKC: [0xD638], NFKD: [0x1112, 0x1169] },
+{ source: [0xD639], NFC: [0xD639], NFD: [0x1112, 0x1169, 0x11A8], NFKC: [0xD639], NFKD: [0x1112, 0x1169, 0x11A8] },
+{ source: [0xD63A], NFC: [0xD63A], NFD: [0x1112, 0x1169, 0x11A9], NFKC: [0xD63A], NFKD: [0x1112, 0x1169, 0x11A9] },
+{ source: [0xD63B], NFC: [0xD63B], NFD: [0x1112, 0x1169, 0x11AA], NFKC: [0xD63B], NFKD: [0x1112, 0x1169, 0x11AA] },
+{ source: [0xD63C], NFC: [0xD63C], NFD: [0x1112, 0x1169, 0x11AB], NFKC: [0xD63C], NFKD: [0x1112, 0x1169, 0x11AB] },
+{ source: [0xD63D], NFC: [0xD63D], NFD: [0x1112, 0x1169, 0x11AC], NFKC: [0xD63D], NFKD: [0x1112, 0x1169, 0x11AC] },
+{ source: [0xD63E], NFC: [0xD63E], NFD: [0x1112, 0x1169, 0x11AD], NFKC: [0xD63E], NFKD: [0x1112, 0x1169, 0x11AD] },
+{ source: [0xD63F], NFC: [0xD63F], NFD: [0x1112, 0x1169, 0x11AE], NFKC: [0xD63F], NFKD: [0x1112, 0x1169, 0x11AE] },
+{ source: [0xD640], NFC: [0xD640], NFD: [0x1112, 0x1169, 0x11AF], NFKC: [0xD640], NFKD: [0x1112, 0x1169, 0x11AF] },
+{ source: [0xD641], NFC: [0xD641], NFD: [0x1112, 0x1169, 0x11B0], NFKC: [0xD641], NFKD: [0x1112, 0x1169, 0x11B0] },
+{ source: [0xD642], NFC: [0xD642], NFD: [0x1112, 0x1169, 0x11B1], NFKC: [0xD642], NFKD: [0x1112, 0x1169, 0x11B1] },
+{ source: [0xD643], NFC: [0xD643], NFD: [0x1112, 0x1169, 0x11B2], NFKC: [0xD643], NFKD: [0x1112, 0x1169, 0x11B2] },
+{ source: [0xD644], NFC: [0xD644], NFD: [0x1112, 0x1169, 0x11B3], NFKC: [0xD644], NFKD: [0x1112, 0x1169, 0x11B3] },
+{ source: [0xD645], NFC: [0xD645], NFD: [0x1112, 0x1169, 0x11B4], NFKC: [0xD645], NFKD: [0x1112, 0x1169, 0x11B4] },
+{ source: [0xD646], NFC: [0xD646], NFD: [0x1112, 0x1169, 0x11B5], NFKC: [0xD646], NFKD: [0x1112, 0x1169, 0x11B5] },
+{ source: [0xD647], NFC: [0xD647], NFD: [0x1112, 0x1169, 0x11B6], NFKC: [0xD647], NFKD: [0x1112, 0x1169, 0x11B6] },
+{ source: [0xD648], NFC: [0xD648], NFD: [0x1112, 0x1169, 0x11B7], NFKC: [0xD648], NFKD: [0x1112, 0x1169, 0x11B7] },
+{ source: [0xD649], NFC: [0xD649], NFD: [0x1112, 0x1169, 0x11B8], NFKC: [0xD649], NFKD: [0x1112, 0x1169, 0x11B8] },
+{ source: [0xD64A], NFC: [0xD64A], NFD: [0x1112, 0x1169, 0x11B9], NFKC: [0xD64A], NFKD: [0x1112, 0x1169, 0x11B9] },
+{ source: [0xD64B], NFC: [0xD64B], NFD: [0x1112, 0x1169, 0x11BA], NFKC: [0xD64B], NFKD: [0x1112, 0x1169, 0x11BA] },
+{ source: [0xD64C], NFC: [0xD64C], NFD: [0x1112, 0x1169, 0x11BB], NFKC: [0xD64C], NFKD: [0x1112, 0x1169, 0x11BB] },
+{ source: [0xD64D], NFC: [0xD64D], NFD: [0x1112, 0x1169, 0x11BC], NFKC: [0xD64D], NFKD: [0x1112, 0x1169, 0x11BC] },
+{ source: [0xD64E], NFC: [0xD64E], NFD: [0x1112, 0x1169, 0x11BD], NFKC: [0xD64E], NFKD: [0x1112, 0x1169, 0x11BD] },
+{ source: [0xD64F], NFC: [0xD64F], NFD: [0x1112, 0x1169, 0x11BE], NFKC: [0xD64F], NFKD: [0x1112, 0x1169, 0x11BE] },
+{ source: [0xD650], NFC: [0xD650], NFD: [0x1112, 0x1169, 0x11BF], NFKC: [0xD650], NFKD: [0x1112, 0x1169, 0x11BF] },
+{ source: [0xD651], NFC: [0xD651], NFD: [0x1112, 0x1169, 0x11C0], NFKC: [0xD651], NFKD: [0x1112, 0x1169, 0x11C0] },
+{ source: [0xD652], NFC: [0xD652], NFD: [0x1112, 0x1169, 0x11C1], NFKC: [0xD652], NFKD: [0x1112, 0x1169, 0x11C1] },
+{ source: [0xD653], NFC: [0xD653], NFD: [0x1112, 0x1169, 0x11C2], NFKC: [0xD653], NFKD: [0x1112, 0x1169, 0x11C2] },
+{ source: [0xD654], NFC: [0xD654], NFD: [0x1112, 0x116A], NFKC: [0xD654], NFKD: [0x1112, 0x116A] },
+{ source: [0xD655], NFC: [0xD655], NFD: [0x1112, 0x116A, 0x11A8], NFKC: [0xD655], NFKD: [0x1112, 0x116A, 0x11A8] },
+{ source: [0xD656], NFC: [0xD656], NFD: [0x1112, 0x116A, 0x11A9], NFKC: [0xD656], NFKD: [0x1112, 0x116A, 0x11A9] },
+{ source: [0xD657], NFC: [0xD657], NFD: [0x1112, 0x116A, 0x11AA], NFKC: [0xD657], NFKD: [0x1112, 0x116A, 0x11AA] },
+{ source: [0xD658], NFC: [0xD658], NFD: [0x1112, 0x116A, 0x11AB], NFKC: [0xD658], NFKD: [0x1112, 0x116A, 0x11AB] },
+{ source: [0xD659], NFC: [0xD659], NFD: [0x1112, 0x116A, 0x11AC], NFKC: [0xD659], NFKD: [0x1112, 0x116A, 0x11AC] },
+{ source: [0xD65A], NFC: [0xD65A], NFD: [0x1112, 0x116A, 0x11AD], NFKC: [0xD65A], NFKD: [0x1112, 0x116A, 0x11AD] },
+{ source: [0xD65B], NFC: [0xD65B], NFD: [0x1112, 0x116A, 0x11AE], NFKC: [0xD65B], NFKD: [0x1112, 0x116A, 0x11AE] },
+{ source: [0xD65C], NFC: [0xD65C], NFD: [0x1112, 0x116A, 0x11AF], NFKC: [0xD65C], NFKD: [0x1112, 0x116A, 0x11AF] },
+{ source: [0xD65D], NFC: [0xD65D], NFD: [0x1112, 0x116A, 0x11B0], NFKC: [0xD65D], NFKD: [0x1112, 0x116A, 0x11B0] },
+{ source: [0xD65E], NFC: [0xD65E], NFD: [0x1112, 0x116A, 0x11B1], NFKC: [0xD65E], NFKD: [0x1112, 0x116A, 0x11B1] },
+{ source: [0xD65F], NFC: [0xD65F], NFD: [0x1112, 0x116A, 0x11B2], NFKC: [0xD65F], NFKD: [0x1112, 0x116A, 0x11B2] },
+{ source: [0xD660], NFC: [0xD660], NFD: [0x1112, 0x116A, 0x11B3], NFKC: [0xD660], NFKD: [0x1112, 0x116A, 0x11B3] },
+{ source: [0xD661], NFC: [0xD661], NFD: [0x1112, 0x116A, 0x11B4], NFKC: [0xD661], NFKD: [0x1112, 0x116A, 0x11B4] },
+{ source: [0xD662], NFC: [0xD662], NFD: [0x1112, 0x116A, 0x11B5], NFKC: [0xD662], NFKD: [0x1112, 0x116A, 0x11B5] },
+{ source: [0xD663], NFC: [0xD663], NFD: [0x1112, 0x116A, 0x11B6], NFKC: [0xD663], NFKD: [0x1112, 0x116A, 0x11B6] },
+{ source: [0xD664], NFC: [0xD664], NFD: [0x1112, 0x116A, 0x11B7], NFKC: [0xD664], NFKD: [0x1112, 0x116A, 0x11B7] },
+{ source: [0xD665], NFC: [0xD665], NFD: [0x1112, 0x116A, 0x11B8], NFKC: [0xD665], NFKD: [0x1112, 0x116A, 0x11B8] },
+{ source: [0xD666], NFC: [0xD666], NFD: [0x1112, 0x116A, 0x11B9], NFKC: [0xD666], NFKD: [0x1112, 0x116A, 0x11B9] },
+{ source: [0xD667], NFC: [0xD667], NFD: [0x1112, 0x116A, 0x11BA], NFKC: [0xD667], NFKD: [0x1112, 0x116A, 0x11BA] },
+{ source: [0xD668], NFC: [0xD668], NFD: [0x1112, 0x116A, 0x11BB], NFKC: [0xD668], NFKD: [0x1112, 0x116A, 0x11BB] },
+{ source: [0xD669], NFC: [0xD669], NFD: [0x1112, 0x116A, 0x11BC], NFKC: [0xD669], NFKD: [0x1112, 0x116A, 0x11BC] },
+{ source: [0xD66A], NFC: [0xD66A], NFD: [0x1112, 0x116A, 0x11BD], NFKC: [0xD66A], NFKD: [0x1112, 0x116A, 0x11BD] },
+{ source: [0xD66B], NFC: [0xD66B], NFD: [0x1112, 0x116A, 0x11BE], NFKC: [0xD66B], NFKD: [0x1112, 0x116A, 0x11BE] },
+{ source: [0xD66C], NFC: [0xD66C], NFD: [0x1112, 0x116A, 0x11BF], NFKC: [0xD66C], NFKD: [0x1112, 0x116A, 0x11BF] },
+{ source: [0xD66D], NFC: [0xD66D], NFD: [0x1112, 0x116A, 0x11C0], NFKC: [0xD66D], NFKD: [0x1112, 0x116A, 0x11C0] },
+{ source: [0xD66E], NFC: [0xD66E], NFD: [0x1112, 0x116A, 0x11C1], NFKC: [0xD66E], NFKD: [0x1112, 0x116A, 0x11C1] },
+{ source: [0xD66F], NFC: [0xD66F], NFD: [0x1112, 0x116A, 0x11C2], NFKC: [0xD66F], NFKD: [0x1112, 0x116A, 0x11C2] },
+{ source: [0xD670], NFC: [0xD670], NFD: [0x1112, 0x116B], NFKC: [0xD670], NFKD: [0x1112, 0x116B] },
+{ source: [0xD671], NFC: [0xD671], NFD: [0x1112, 0x116B, 0x11A8], NFKC: [0xD671], NFKD: [0x1112, 0x116B, 0x11A8] },
+{ source: [0xD672], NFC: [0xD672], NFD: [0x1112, 0x116B, 0x11A9], NFKC: [0xD672], NFKD: [0x1112, 0x116B, 0x11A9] },
+{ source: [0xD673], NFC: [0xD673], NFD: [0x1112, 0x116B, 0x11AA], NFKC: [0xD673], NFKD: [0x1112, 0x116B, 0x11AA] },
+{ source: [0xD674], NFC: [0xD674], NFD: [0x1112, 0x116B, 0x11AB], NFKC: [0xD674], NFKD: [0x1112, 0x116B, 0x11AB] },
+{ source: [0xD675], NFC: [0xD675], NFD: [0x1112, 0x116B, 0x11AC], NFKC: [0xD675], NFKD: [0x1112, 0x116B, 0x11AC] },
+{ source: [0xD676], NFC: [0xD676], NFD: [0x1112, 0x116B, 0x11AD], NFKC: [0xD676], NFKD: [0x1112, 0x116B, 0x11AD] },
+{ source: [0xD677], NFC: [0xD677], NFD: [0x1112, 0x116B, 0x11AE], NFKC: [0xD677], NFKD: [0x1112, 0x116B, 0x11AE] },
+{ source: [0xD678], NFC: [0xD678], NFD: [0x1112, 0x116B, 0x11AF], NFKC: [0xD678], NFKD: [0x1112, 0x116B, 0x11AF] },
+{ source: [0xD679], NFC: [0xD679], NFD: [0x1112, 0x116B, 0x11B0], NFKC: [0xD679], NFKD: [0x1112, 0x116B, 0x11B0] },
+{ source: [0xD67A], NFC: [0xD67A], NFD: [0x1112, 0x116B, 0x11B1], NFKC: [0xD67A], NFKD: [0x1112, 0x116B, 0x11B1] },
+{ source: [0xD67B], NFC: [0xD67B], NFD: [0x1112, 0x116B, 0x11B2], NFKC: [0xD67B], NFKD: [0x1112, 0x116B, 0x11B2] },
+{ source: [0xD67C], NFC: [0xD67C], NFD: [0x1112, 0x116B, 0x11B3], NFKC: [0xD67C], NFKD: [0x1112, 0x116B, 0x11B3] },
+{ source: [0xD67D], NFC: [0xD67D], NFD: [0x1112, 0x116B, 0x11B4], NFKC: [0xD67D], NFKD: [0x1112, 0x116B, 0x11B4] },
+{ source: [0xD67E], NFC: [0xD67E], NFD: [0x1112, 0x116B, 0x11B5], NFKC: [0xD67E], NFKD: [0x1112, 0x116B, 0x11B5] },
+{ source: [0xD67F], NFC: [0xD67F], NFD: [0x1112, 0x116B, 0x11B6], NFKC: [0xD67F], NFKD: [0x1112, 0x116B, 0x11B6] },
+{ source: [0xD680], NFC: [0xD680], NFD: [0x1112, 0x116B, 0x11B7], NFKC: [0xD680], NFKD: [0x1112, 0x116B, 0x11B7] },
+{ source: [0xD681], NFC: [0xD681], NFD: [0x1112, 0x116B, 0x11B8], NFKC: [0xD681], NFKD: [0x1112, 0x116B, 0x11B8] },
+{ source: [0xD682], NFC: [0xD682], NFD: [0x1112, 0x116B, 0x11B9], NFKC: [0xD682], NFKD: [0x1112, 0x116B, 0x11B9] },
+{ source: [0xD683], NFC: [0xD683], NFD: [0x1112, 0x116B, 0x11BA], NFKC: [0xD683], NFKD: [0x1112, 0x116B, 0x11BA] },
+{ source: [0xD684], NFC: [0xD684], NFD: [0x1112, 0x116B, 0x11BB], NFKC: [0xD684], NFKD: [0x1112, 0x116B, 0x11BB] },
+{ source: [0xD685], NFC: [0xD685], NFD: [0x1112, 0x116B, 0x11BC], NFKC: [0xD685], NFKD: [0x1112, 0x116B, 0x11BC] },
+{ source: [0xD686], NFC: [0xD686], NFD: [0x1112, 0x116B, 0x11BD], NFKC: [0xD686], NFKD: [0x1112, 0x116B, 0x11BD] },
+{ source: [0xD687], NFC: [0xD687], NFD: [0x1112, 0x116B, 0x11BE], NFKC: [0xD687], NFKD: [0x1112, 0x116B, 0x11BE] },
+{ source: [0xD688], NFC: [0xD688], NFD: [0x1112, 0x116B, 0x11BF], NFKC: [0xD688], NFKD: [0x1112, 0x116B, 0x11BF] },
+{ source: [0xD689], NFC: [0xD689], NFD: [0x1112, 0x116B, 0x11C0], NFKC: [0xD689], NFKD: [0x1112, 0x116B, 0x11C0] },
+{ source: [0xD68A], NFC: [0xD68A], NFD: [0x1112, 0x116B, 0x11C1], NFKC: [0xD68A], NFKD: [0x1112, 0x116B, 0x11C1] },
+{ source: [0xD68B], NFC: [0xD68B], NFD: [0x1112, 0x116B, 0x11C2], NFKC: [0xD68B], NFKD: [0x1112, 0x116B, 0x11C2] },
+{ source: [0xD68C], NFC: [0xD68C], NFD: [0x1112, 0x116C], NFKC: [0xD68C], NFKD: [0x1112, 0x116C] },
+{ source: [0xD68D], NFC: [0xD68D], NFD: [0x1112, 0x116C, 0x11A8], NFKC: [0xD68D], NFKD: [0x1112, 0x116C, 0x11A8] },
+{ source: [0xD68E], NFC: [0xD68E], NFD: [0x1112, 0x116C, 0x11A9], NFKC: [0xD68E], NFKD: [0x1112, 0x116C, 0x11A9] },
+{ source: [0xD68F], NFC: [0xD68F], NFD: [0x1112, 0x116C, 0x11AA], NFKC: [0xD68F], NFKD: [0x1112, 0x116C, 0x11AA] },
+{ source: [0xD690], NFC: [0xD690], NFD: [0x1112, 0x116C, 0x11AB], NFKC: [0xD690], NFKD: [0x1112, 0x116C, 0x11AB] },
+{ source: [0xD691], NFC: [0xD691], NFD: [0x1112, 0x116C, 0x11AC], NFKC: [0xD691], NFKD: [0x1112, 0x116C, 0x11AC] },
+{ source: [0xD692], NFC: [0xD692], NFD: [0x1112, 0x116C, 0x11AD], NFKC: [0xD692], NFKD: [0x1112, 0x116C, 0x11AD] },
+{ source: [0xD693], NFC: [0xD693], NFD: [0x1112, 0x116C, 0x11AE], NFKC: [0xD693], NFKD: [0x1112, 0x116C, 0x11AE] },
+{ source: [0xD694], NFC: [0xD694], NFD: [0x1112, 0x116C, 0x11AF], NFKC: [0xD694], NFKD: [0x1112, 0x116C, 0x11AF] },
+{ source: [0xD695], NFC: [0xD695], NFD: [0x1112, 0x116C, 0x11B0], NFKC: [0xD695], NFKD: [0x1112, 0x116C, 0x11B0] },
+{ source: [0xD696], NFC: [0xD696], NFD: [0x1112, 0x116C, 0x11B1], NFKC: [0xD696], NFKD: [0x1112, 0x116C, 0x11B1] },
+{ source: [0xD697], NFC: [0xD697], NFD: [0x1112, 0x116C, 0x11B2], NFKC: [0xD697], NFKD: [0x1112, 0x116C, 0x11B2] },
+{ source: [0xD698], NFC: [0xD698], NFD: [0x1112, 0x116C, 0x11B3], NFKC: [0xD698], NFKD: [0x1112, 0x116C, 0x11B3] },
+{ source: [0xD699], NFC: [0xD699], NFD: [0x1112, 0x116C, 0x11B4], NFKC: [0xD699], NFKD: [0x1112, 0x116C, 0x11B4] },
+{ source: [0xD69A], NFC: [0xD69A], NFD: [0x1112, 0x116C, 0x11B5], NFKC: [0xD69A], NFKD: [0x1112, 0x116C, 0x11B5] },
+{ source: [0xD69B], NFC: [0xD69B], NFD: [0x1112, 0x116C, 0x11B6], NFKC: [0xD69B], NFKD: [0x1112, 0x116C, 0x11B6] },
+{ source: [0xD69C], NFC: [0xD69C], NFD: [0x1112, 0x116C, 0x11B7], NFKC: [0xD69C], NFKD: [0x1112, 0x116C, 0x11B7] },
+{ source: [0xD69D], NFC: [0xD69D], NFD: [0x1112, 0x116C, 0x11B8], NFKC: [0xD69D], NFKD: [0x1112, 0x116C, 0x11B8] },
+{ source: [0xD69E], NFC: [0xD69E], NFD: [0x1112, 0x116C, 0x11B9], NFKC: [0xD69E], NFKD: [0x1112, 0x116C, 0x11B9] },
+{ source: [0xD69F], NFC: [0xD69F], NFD: [0x1112, 0x116C, 0x11BA], NFKC: [0xD69F], NFKD: [0x1112, 0x116C, 0x11BA] },
+{ source: [0xD6A0], NFC: [0xD6A0], NFD: [0x1112, 0x116C, 0x11BB], NFKC: [0xD6A0], NFKD: [0x1112, 0x116C, 0x11BB] },
+{ source: [0xD6A1], NFC: [0xD6A1], NFD: [0x1112, 0x116C, 0x11BC], NFKC: [0xD6A1], NFKD: [0x1112, 0x116C, 0x11BC] },
+{ source: [0xD6A2], NFC: [0xD6A2], NFD: [0x1112, 0x116C, 0x11BD], NFKC: [0xD6A2], NFKD: [0x1112, 0x116C, 0x11BD] },
+{ source: [0xD6A3], NFC: [0xD6A3], NFD: [0x1112, 0x116C, 0x11BE], NFKC: [0xD6A3], NFKD: [0x1112, 0x116C, 0x11BE] },
+{ source: [0xD6A4], NFC: [0xD6A4], NFD: [0x1112, 0x116C, 0x11BF], NFKC: [0xD6A4], NFKD: [0x1112, 0x116C, 0x11BF] },
+{ source: [0xD6A5], NFC: [0xD6A5], NFD: [0x1112, 0x116C, 0x11C0], NFKC: [0xD6A5], NFKD: [0x1112, 0x116C, 0x11C0] },
+{ source: [0xD6A6], NFC: [0xD6A6], NFD: [0x1112, 0x116C, 0x11C1], NFKC: [0xD6A6], NFKD: [0x1112, 0x116C, 0x11C1] },
+{ source: [0xD6A7], NFC: [0xD6A7], NFD: [0x1112, 0x116C, 0x11C2], NFKC: [0xD6A7], NFKD: [0x1112, 0x116C, 0x11C2] },
+{ source: [0xD6A8], NFC: [0xD6A8], NFD: [0x1112, 0x116D], NFKC: [0xD6A8], NFKD: [0x1112, 0x116D] },
+{ source: [0xD6A9], NFC: [0xD6A9], NFD: [0x1112, 0x116D, 0x11A8], NFKC: [0xD6A9], NFKD: [0x1112, 0x116D, 0x11A8] },
+{ source: [0xD6AA], NFC: [0xD6AA], NFD: [0x1112, 0x116D, 0x11A9], NFKC: [0xD6AA], NFKD: [0x1112, 0x116D, 0x11A9] },
+{ source: [0xD6AB], NFC: [0xD6AB], NFD: [0x1112, 0x116D, 0x11AA], NFKC: [0xD6AB], NFKD: [0x1112, 0x116D, 0x11AA] },
+{ source: [0xD6AC], NFC: [0xD6AC], NFD: [0x1112, 0x116D, 0x11AB], NFKC: [0xD6AC], NFKD: [0x1112, 0x116D, 0x11AB] },
+{ source: [0xD6AD], NFC: [0xD6AD], NFD: [0x1112, 0x116D, 0x11AC], NFKC: [0xD6AD], NFKD: [0x1112, 0x116D, 0x11AC] },
+{ source: [0xD6AE], NFC: [0xD6AE], NFD: [0x1112, 0x116D, 0x11AD], NFKC: [0xD6AE], NFKD: [0x1112, 0x116D, 0x11AD] },
+{ source: [0xD6AF], NFC: [0xD6AF], NFD: [0x1112, 0x116D, 0x11AE], NFKC: [0xD6AF], NFKD: [0x1112, 0x116D, 0x11AE] },
+{ source: [0xD6B0], NFC: [0xD6B0], NFD: [0x1112, 0x116D, 0x11AF], NFKC: [0xD6B0], NFKD: [0x1112, 0x116D, 0x11AF] },
+{ source: [0xD6B1], NFC: [0xD6B1], NFD: [0x1112, 0x116D, 0x11B0], NFKC: [0xD6B1], NFKD: [0x1112, 0x116D, 0x11B0] },
+{ source: [0xD6B2], NFC: [0xD6B2], NFD: [0x1112, 0x116D, 0x11B1], NFKC: [0xD6B2], NFKD: [0x1112, 0x116D, 0x11B1] },
+{ source: [0xD6B3], NFC: [0xD6B3], NFD: [0x1112, 0x116D, 0x11B2], NFKC: [0xD6B3], NFKD: [0x1112, 0x116D, 0x11B2] },
+{ source: [0xD6B4], NFC: [0xD6B4], NFD: [0x1112, 0x116D, 0x11B3], NFKC: [0xD6B4], NFKD: [0x1112, 0x116D, 0x11B3] },
+{ source: [0xD6B5], NFC: [0xD6B5], NFD: [0x1112, 0x116D, 0x11B4], NFKC: [0xD6B5], NFKD: [0x1112, 0x116D, 0x11B4] },
+{ source: [0xD6B6], NFC: [0xD6B6], NFD: [0x1112, 0x116D, 0x11B5], NFKC: [0xD6B6], NFKD: [0x1112, 0x116D, 0x11B5] },
+{ source: [0xD6B7], NFC: [0xD6B7], NFD: [0x1112, 0x116D, 0x11B6], NFKC: [0xD6B7], NFKD: [0x1112, 0x116D, 0x11B6] },
+{ source: [0xD6B8], NFC: [0xD6B8], NFD: [0x1112, 0x116D, 0x11B7], NFKC: [0xD6B8], NFKD: [0x1112, 0x116D, 0x11B7] },
+{ source: [0xD6B9], NFC: [0xD6B9], NFD: [0x1112, 0x116D, 0x11B8], NFKC: [0xD6B9], NFKD: [0x1112, 0x116D, 0x11B8] },
+{ source: [0xD6BA], NFC: [0xD6BA], NFD: [0x1112, 0x116D, 0x11B9], NFKC: [0xD6BA], NFKD: [0x1112, 0x116D, 0x11B9] },
+{ source: [0xD6BB], NFC: [0xD6BB], NFD: [0x1112, 0x116D, 0x11BA], NFKC: [0xD6BB], NFKD: [0x1112, 0x116D, 0x11BA] },
+{ source: [0xD6BC], NFC: [0xD6BC], NFD: [0x1112, 0x116D, 0x11BB], NFKC: [0xD6BC], NFKD: [0x1112, 0x116D, 0x11BB] },
+{ source: [0xD6BD], NFC: [0xD6BD], NFD: [0x1112, 0x116D, 0x11BC], NFKC: [0xD6BD], NFKD: [0x1112, 0x116D, 0x11BC] },
+{ source: [0xD6BE], NFC: [0xD6BE], NFD: [0x1112, 0x116D, 0x11BD], NFKC: [0xD6BE], NFKD: [0x1112, 0x116D, 0x11BD] },
+{ source: [0xD6BF], NFC: [0xD6BF], NFD: [0x1112, 0x116D, 0x11BE], NFKC: [0xD6BF], NFKD: [0x1112, 0x116D, 0x11BE] },
+{ source: [0xD6C0], NFC: [0xD6C0], NFD: [0x1112, 0x116D, 0x11BF], NFKC: [0xD6C0], NFKD: [0x1112, 0x116D, 0x11BF] },
+{ source: [0xD6C1], NFC: [0xD6C1], NFD: [0x1112, 0x116D, 0x11C0], NFKC: [0xD6C1], NFKD: [0x1112, 0x116D, 0x11C0] },
+{ source: [0xD6C2], NFC: [0xD6C2], NFD: [0x1112, 0x116D, 0x11C1], NFKC: [0xD6C2], NFKD: [0x1112, 0x116D, 0x11C1] },
+{ source: [0xD6C3], NFC: [0xD6C3], NFD: [0x1112, 0x116D, 0x11C2], NFKC: [0xD6C3], NFKD: [0x1112, 0x116D, 0x11C2] },
+{ source: [0xD6C4], NFC: [0xD6C4], NFD: [0x1112, 0x116E], NFKC: [0xD6C4], NFKD: [0x1112, 0x116E] },
+{ source: [0xD6C5], NFC: [0xD6C5], NFD: [0x1112, 0x116E, 0x11A8], NFKC: [0xD6C5], NFKD: [0x1112, 0x116E, 0x11A8] },
+{ source: [0xD6C6], NFC: [0xD6C6], NFD: [0x1112, 0x116E, 0x11A9], NFKC: [0xD6C6], NFKD: [0x1112, 0x116E, 0x11A9] },
+{ source: [0xD6C7], NFC: [0xD6C7], NFD: [0x1112, 0x116E, 0x11AA], NFKC: [0xD6C7], NFKD: [0x1112, 0x116E, 0x11AA] },
+{ source: [0xD6C8], NFC: [0xD6C8], NFD: [0x1112, 0x116E, 0x11AB], NFKC: [0xD6C8], NFKD: [0x1112, 0x116E, 0x11AB] },
+{ source: [0xD6C9], NFC: [0xD6C9], NFD: [0x1112, 0x116E, 0x11AC], NFKC: [0xD6C9], NFKD: [0x1112, 0x116E, 0x11AC] },
+{ source: [0xD6CA], NFC: [0xD6CA], NFD: [0x1112, 0x116E, 0x11AD], NFKC: [0xD6CA], NFKD: [0x1112, 0x116E, 0x11AD] },
+{ source: [0xD6CB], NFC: [0xD6CB], NFD: [0x1112, 0x116E, 0x11AE], NFKC: [0xD6CB], NFKD: [0x1112, 0x116E, 0x11AE] },
+{ source: [0xD6CC], NFC: [0xD6CC], NFD: [0x1112, 0x116E, 0x11AF], NFKC: [0xD6CC], NFKD: [0x1112, 0x116E, 0x11AF] },
+{ source: [0xD6CD], NFC: [0xD6CD], NFD: [0x1112, 0x116E, 0x11B0], NFKC: [0xD6CD], NFKD: [0x1112, 0x116E, 0x11B0] },
+{ source: [0xD6CE], NFC: [0xD6CE], NFD: [0x1112, 0x116E, 0x11B1], NFKC: [0xD6CE], NFKD: [0x1112, 0x116E, 0x11B1] },
+{ source: [0xD6CF], NFC: [0xD6CF], NFD: [0x1112, 0x116E, 0x11B2], NFKC: [0xD6CF], NFKD: [0x1112, 0x116E, 0x11B2] },
+{ source: [0xD6D0], NFC: [0xD6D0], NFD: [0x1112, 0x116E, 0x11B3], NFKC: [0xD6D0], NFKD: [0x1112, 0x116E, 0x11B3] },
+{ source: [0xD6D1], NFC: [0xD6D1], NFD: [0x1112, 0x116E, 0x11B4], NFKC: [0xD6D1], NFKD: [0x1112, 0x116E, 0x11B4] },
+{ source: [0xD6D2], NFC: [0xD6D2], NFD: [0x1112, 0x116E, 0x11B5], NFKC: [0xD6D2], NFKD: [0x1112, 0x116E, 0x11B5] },
+{ source: [0xD6D3], NFC: [0xD6D3], NFD: [0x1112, 0x116E, 0x11B6], NFKC: [0xD6D3], NFKD: [0x1112, 0x116E, 0x11B6] },
+{ source: [0xD6D4], NFC: [0xD6D4], NFD: [0x1112, 0x116E, 0x11B7], NFKC: [0xD6D4], NFKD: [0x1112, 0x116E, 0x11B7] },
+{ source: [0xD6D5], NFC: [0xD6D5], NFD: [0x1112, 0x116E, 0x11B8], NFKC: [0xD6D5], NFKD: [0x1112, 0x116E, 0x11B8] },
+{ source: [0xD6D6], NFC: [0xD6D6], NFD: [0x1112, 0x116E, 0x11B9], NFKC: [0xD6D6], NFKD: [0x1112, 0x116E, 0x11B9] },
+{ source: [0xD6D7], NFC: [0xD6D7], NFD: [0x1112, 0x116E, 0x11BA], NFKC: [0xD6D7], NFKD: [0x1112, 0x116E, 0x11BA] },
+{ source: [0xD6D8], NFC: [0xD6D8], NFD: [0x1112, 0x116E, 0x11BB], NFKC: [0xD6D8], NFKD: [0x1112, 0x116E, 0x11BB] },
+{ source: [0xD6D9], NFC: [0xD6D9], NFD: [0x1112, 0x116E, 0x11BC], NFKC: [0xD6D9], NFKD: [0x1112, 0x116E, 0x11BC] },
+{ source: [0xD6DA], NFC: [0xD6DA], NFD: [0x1112, 0x116E, 0x11BD], NFKC: [0xD6DA], NFKD: [0x1112, 0x116E, 0x11BD] },
+{ source: [0xD6DB], NFC: [0xD6DB], NFD: [0x1112, 0x116E, 0x11BE], NFKC: [0xD6DB], NFKD: [0x1112, 0x116E, 0x11BE] },
+{ source: [0xD6DC], NFC: [0xD6DC], NFD: [0x1112, 0x116E, 0x11BF], NFKC: [0xD6DC], NFKD: [0x1112, 0x116E, 0x11BF] },
+{ source: [0xD6DD], NFC: [0xD6DD], NFD: [0x1112, 0x116E, 0x11C0], NFKC: [0xD6DD], NFKD: [0x1112, 0x116E, 0x11C0] },
+{ source: [0xD6DE], NFC: [0xD6DE], NFD: [0x1112, 0x116E, 0x11C1], NFKC: [0xD6DE], NFKD: [0x1112, 0x116E, 0x11C1] },
+{ source: [0xD6DF], NFC: [0xD6DF], NFD: [0x1112, 0x116E, 0x11C2], NFKC: [0xD6DF], NFKD: [0x1112, 0x116E, 0x11C2] },
+{ source: [0xD6E0], NFC: [0xD6E0], NFD: [0x1112, 0x116F], NFKC: [0xD6E0], NFKD: [0x1112, 0x116F] },
+{ source: [0xD6E1], NFC: [0xD6E1], NFD: [0x1112, 0x116F, 0x11A8], NFKC: [0xD6E1], NFKD: [0x1112, 0x116F, 0x11A8] },
+{ source: [0xD6E2], NFC: [0xD6E2], NFD: [0x1112, 0x116F, 0x11A9], NFKC: [0xD6E2], NFKD: [0x1112, 0x116F, 0x11A9] },
+{ source: [0xD6E3], NFC: [0xD6E3], NFD: [0x1112, 0x116F, 0x11AA], NFKC: [0xD6E3], NFKD: [0x1112, 0x116F, 0x11AA] },
+{ source: [0xD6E4], NFC: [0xD6E4], NFD: [0x1112, 0x116F, 0x11AB], NFKC: [0xD6E4], NFKD: [0x1112, 0x116F, 0x11AB] },
+{ source: [0xD6E5], NFC: [0xD6E5], NFD: [0x1112, 0x116F, 0x11AC], NFKC: [0xD6E5], NFKD: [0x1112, 0x116F, 0x11AC] },
+{ source: [0xD6E6], NFC: [0xD6E6], NFD: [0x1112, 0x116F, 0x11AD], NFKC: [0xD6E6], NFKD: [0x1112, 0x116F, 0x11AD] },
+{ source: [0xD6E7], NFC: [0xD6E7], NFD: [0x1112, 0x116F, 0x11AE], NFKC: [0xD6E7], NFKD: [0x1112, 0x116F, 0x11AE] },
+{ source: [0xD6E8], NFC: [0xD6E8], NFD: [0x1112, 0x116F, 0x11AF], NFKC: [0xD6E8], NFKD: [0x1112, 0x116F, 0x11AF] },
+{ source: [0xD6E9], NFC: [0xD6E9], NFD: [0x1112, 0x116F, 0x11B0], NFKC: [0xD6E9], NFKD: [0x1112, 0x116F, 0x11B0] },
+{ source: [0xD6EA], NFC: [0xD6EA], NFD: [0x1112, 0x116F, 0x11B1], NFKC: [0xD6EA], NFKD: [0x1112, 0x116F, 0x11B1] },
+{ source: [0xD6EB], NFC: [0xD6EB], NFD: [0x1112, 0x116F, 0x11B2], NFKC: [0xD6EB], NFKD: [0x1112, 0x116F, 0x11B2] },
+{ source: [0xD6EC], NFC: [0xD6EC], NFD: [0x1112, 0x116F, 0x11B3], NFKC: [0xD6EC], NFKD: [0x1112, 0x116F, 0x11B3] },
+{ source: [0xD6ED], NFC: [0xD6ED], NFD: [0x1112, 0x116F, 0x11B4], NFKC: [0xD6ED], NFKD: [0x1112, 0x116F, 0x11B4] },
+{ source: [0xD6EE], NFC: [0xD6EE], NFD: [0x1112, 0x116F, 0x11B5], NFKC: [0xD6EE], NFKD: [0x1112, 0x116F, 0x11B5] },
+{ source: [0xD6EF], NFC: [0xD6EF], NFD: [0x1112, 0x116F, 0x11B6], NFKC: [0xD6EF], NFKD: [0x1112, 0x116F, 0x11B6] },
+{ source: [0xD6F0], NFC: [0xD6F0], NFD: [0x1112, 0x116F, 0x11B7], NFKC: [0xD6F0], NFKD: [0x1112, 0x116F, 0x11B7] },
+{ source: [0xD6F1], NFC: [0xD6F1], NFD: [0x1112, 0x116F, 0x11B8], NFKC: [0xD6F1], NFKD: [0x1112, 0x116F, 0x11B8] },
+{ source: [0xD6F2], NFC: [0xD6F2], NFD: [0x1112, 0x116F, 0x11B9], NFKC: [0xD6F2], NFKD: [0x1112, 0x116F, 0x11B9] },
+{ source: [0xD6F3], NFC: [0xD6F3], NFD: [0x1112, 0x116F, 0x11BA], NFKC: [0xD6F3], NFKD: [0x1112, 0x116F, 0x11BA] },
+{ source: [0xD6F4], NFC: [0xD6F4], NFD: [0x1112, 0x116F, 0x11BB], NFKC: [0xD6F4], NFKD: [0x1112, 0x116F, 0x11BB] },
+{ source: [0xD6F5], NFC: [0xD6F5], NFD: [0x1112, 0x116F, 0x11BC], NFKC: [0xD6F5], NFKD: [0x1112, 0x116F, 0x11BC] },
+{ source: [0xD6F6], NFC: [0xD6F6], NFD: [0x1112, 0x116F, 0x11BD], NFKC: [0xD6F6], NFKD: [0x1112, 0x116F, 0x11BD] },
+{ source: [0xD6F7], NFC: [0xD6F7], NFD: [0x1112, 0x116F, 0x11BE], NFKC: [0xD6F7], NFKD: [0x1112, 0x116F, 0x11BE] },
+{ source: [0xD6F8], NFC: [0xD6F8], NFD: [0x1112, 0x116F, 0x11BF], NFKC: [0xD6F8], NFKD: [0x1112, 0x116F, 0x11BF] },
+{ source: [0xD6F9], NFC: [0xD6F9], NFD: [0x1112, 0x116F, 0x11C0], NFKC: [0xD6F9], NFKD: [0x1112, 0x116F, 0x11C0] },
+{ source: [0xD6FA], NFC: [0xD6FA], NFD: [0x1112, 0x116F, 0x11C1], NFKC: [0xD6FA], NFKD: [0x1112, 0x116F, 0x11C1] },
+{ source: [0xD6FB], NFC: [0xD6FB], NFD: [0x1112, 0x116F, 0x11C2], NFKC: [0xD6FB], NFKD: [0x1112, 0x116F, 0x11C2] },
+{ source: [0xD6FC], NFC: [0xD6FC], NFD: [0x1112, 0x1170], NFKC: [0xD6FC], NFKD: [0x1112, 0x1170] },
+{ source: [0xD6FD], NFC: [0xD6FD], NFD: [0x1112, 0x1170, 0x11A8], NFKC: [0xD6FD], NFKD: [0x1112, 0x1170, 0x11A8] },
+{ source: [0xD6FE], NFC: [0xD6FE], NFD: [0x1112, 0x1170, 0x11A9], NFKC: [0xD6FE], NFKD: [0x1112, 0x1170, 0x11A9] },
+{ source: [0xD6FF], NFC: [0xD6FF], NFD: [0x1112, 0x1170, 0x11AA], NFKC: [0xD6FF], NFKD: [0x1112, 0x1170, 0x11AA] },
+{ source: [0xD700], NFC: [0xD700], NFD: [0x1112, 0x1170, 0x11AB], NFKC: [0xD700], NFKD: [0x1112, 0x1170, 0x11AB] },
+{ source: [0xD701], NFC: [0xD701], NFD: [0x1112, 0x1170, 0x11AC], NFKC: [0xD701], NFKD: [0x1112, 0x1170, 0x11AC] },
+{ source: [0xD702], NFC: [0xD702], NFD: [0x1112, 0x1170, 0x11AD], NFKC: [0xD702], NFKD: [0x1112, 0x1170, 0x11AD] },
+{ source: [0xD703], NFC: [0xD703], NFD: [0x1112, 0x1170, 0x11AE], NFKC: [0xD703], NFKD: [0x1112, 0x1170, 0x11AE] },
+{ source: [0xD704], NFC: [0xD704], NFD: [0x1112, 0x1170, 0x11AF], NFKC: [0xD704], NFKD: [0x1112, 0x1170, 0x11AF] },
+{ source: [0xD705], NFC: [0xD705], NFD: [0x1112, 0x1170, 0x11B0], NFKC: [0xD705], NFKD: [0x1112, 0x1170, 0x11B0] },
+{ source: [0xD706], NFC: [0xD706], NFD: [0x1112, 0x1170, 0x11B1], NFKC: [0xD706], NFKD: [0x1112, 0x1170, 0x11B1] },
+{ source: [0xD707], NFC: [0xD707], NFD: [0x1112, 0x1170, 0x11B2], NFKC: [0xD707], NFKD: [0x1112, 0x1170, 0x11B2] },
+{ source: [0xD708], NFC: [0xD708], NFD: [0x1112, 0x1170, 0x11B3], NFKC: [0xD708], NFKD: [0x1112, 0x1170, 0x11B3] },
+{ source: [0xD709], NFC: [0xD709], NFD: [0x1112, 0x1170, 0x11B4], NFKC: [0xD709], NFKD: [0x1112, 0x1170, 0x11B4] },
+{ source: [0xD70A], NFC: [0xD70A], NFD: [0x1112, 0x1170, 0x11B5], NFKC: [0xD70A], NFKD: [0x1112, 0x1170, 0x11B5] },
+{ source: [0xD70B], NFC: [0xD70B], NFD: [0x1112, 0x1170, 0x11B6], NFKC: [0xD70B], NFKD: [0x1112, 0x1170, 0x11B6] },
+{ source: [0xD70C], NFC: [0xD70C], NFD: [0x1112, 0x1170, 0x11B7], NFKC: [0xD70C], NFKD: [0x1112, 0x1170, 0x11B7] },
+{ source: [0xD70D], NFC: [0xD70D], NFD: [0x1112, 0x1170, 0x11B8], NFKC: [0xD70D], NFKD: [0x1112, 0x1170, 0x11B8] },
+{ source: [0xD70E], NFC: [0xD70E], NFD: [0x1112, 0x1170, 0x11B9], NFKC: [0xD70E], NFKD: [0x1112, 0x1170, 0x11B9] },
+{ source: [0xD70F], NFC: [0xD70F], NFD: [0x1112, 0x1170, 0x11BA], NFKC: [0xD70F], NFKD: [0x1112, 0x1170, 0x11BA] },
+{ source: [0xD710], NFC: [0xD710], NFD: [0x1112, 0x1170, 0x11BB], NFKC: [0xD710], NFKD: [0x1112, 0x1170, 0x11BB] },
+{ source: [0xD711], NFC: [0xD711], NFD: [0x1112, 0x1170, 0x11BC], NFKC: [0xD711], NFKD: [0x1112, 0x1170, 0x11BC] },
+{ source: [0xD712], NFC: [0xD712], NFD: [0x1112, 0x1170, 0x11BD], NFKC: [0xD712], NFKD: [0x1112, 0x1170, 0x11BD] },
+{ source: [0xD713], NFC: [0xD713], NFD: [0x1112, 0x1170, 0x11BE], NFKC: [0xD713], NFKD: [0x1112, 0x1170, 0x11BE] },
+{ source: [0xD714], NFC: [0xD714], NFD: [0x1112, 0x1170, 0x11BF], NFKC: [0xD714], NFKD: [0x1112, 0x1170, 0x11BF] },
+{ source: [0xD715], NFC: [0xD715], NFD: [0x1112, 0x1170, 0x11C0], NFKC: [0xD715], NFKD: [0x1112, 0x1170, 0x11C0] },
+{ source: [0xD716], NFC: [0xD716], NFD: [0x1112, 0x1170, 0x11C1], NFKC: [0xD716], NFKD: [0x1112, 0x1170, 0x11C1] },
+{ source: [0xD717], NFC: [0xD717], NFD: [0x1112, 0x1170, 0x11C2], NFKC: [0xD717], NFKD: [0x1112, 0x1170, 0x11C2] },
+{ source: [0xD718], NFC: [0xD718], NFD: [0x1112, 0x1171], NFKC: [0xD718], NFKD: [0x1112, 0x1171] },
+{ source: [0xD719], NFC: [0xD719], NFD: [0x1112, 0x1171, 0x11A8], NFKC: [0xD719], NFKD: [0x1112, 0x1171, 0x11A8] },
+{ source: [0xD71A], NFC: [0xD71A], NFD: [0x1112, 0x1171, 0x11A9], NFKC: [0xD71A], NFKD: [0x1112, 0x1171, 0x11A9] },
+{ source: [0xD71B], NFC: [0xD71B], NFD: [0x1112, 0x1171, 0x11AA], NFKC: [0xD71B], NFKD: [0x1112, 0x1171, 0x11AA] },
+{ source: [0xD71C], NFC: [0xD71C], NFD: [0x1112, 0x1171, 0x11AB], NFKC: [0xD71C], NFKD: [0x1112, 0x1171, 0x11AB] },
+{ source: [0xD71D], NFC: [0xD71D], NFD: [0x1112, 0x1171, 0x11AC], NFKC: [0xD71D], NFKD: [0x1112, 0x1171, 0x11AC] },
+{ source: [0xD71E], NFC: [0xD71E], NFD: [0x1112, 0x1171, 0x11AD], NFKC: [0xD71E], NFKD: [0x1112, 0x1171, 0x11AD] },
+{ source: [0xD71F], NFC: [0xD71F], NFD: [0x1112, 0x1171, 0x11AE], NFKC: [0xD71F], NFKD: [0x1112, 0x1171, 0x11AE] },
+{ source: [0xD720], NFC: [0xD720], NFD: [0x1112, 0x1171, 0x11AF], NFKC: [0xD720], NFKD: [0x1112, 0x1171, 0x11AF] },
+{ source: [0xD721], NFC: [0xD721], NFD: [0x1112, 0x1171, 0x11B0], NFKC: [0xD721], NFKD: [0x1112, 0x1171, 0x11B0] },
+{ source: [0xD722], NFC: [0xD722], NFD: [0x1112, 0x1171, 0x11B1], NFKC: [0xD722], NFKD: [0x1112, 0x1171, 0x11B1] },
+{ source: [0xD723], NFC: [0xD723], NFD: [0x1112, 0x1171, 0x11B2], NFKC: [0xD723], NFKD: [0x1112, 0x1171, 0x11B2] },
+{ source: [0xD724], NFC: [0xD724], NFD: [0x1112, 0x1171, 0x11B3], NFKC: [0xD724], NFKD: [0x1112, 0x1171, 0x11B3] },
+{ source: [0xD725], NFC: [0xD725], NFD: [0x1112, 0x1171, 0x11B4], NFKC: [0xD725], NFKD: [0x1112, 0x1171, 0x11B4] },
+{ source: [0xD726], NFC: [0xD726], NFD: [0x1112, 0x1171, 0x11B5], NFKC: [0xD726], NFKD: [0x1112, 0x1171, 0x11B5] },
+{ source: [0xD727], NFC: [0xD727], NFD: [0x1112, 0x1171, 0x11B6], NFKC: [0xD727], NFKD: [0x1112, 0x1171, 0x11B6] },
+{ source: [0xD728], NFC: [0xD728], NFD: [0x1112, 0x1171, 0x11B7], NFKC: [0xD728], NFKD: [0x1112, 0x1171, 0x11B7] },
+{ source: [0xD729], NFC: [0xD729], NFD: [0x1112, 0x1171, 0x11B8], NFKC: [0xD729], NFKD: [0x1112, 0x1171, 0x11B8] },
+{ source: [0xD72A], NFC: [0xD72A], NFD: [0x1112, 0x1171, 0x11B9], NFKC: [0xD72A], NFKD: [0x1112, 0x1171, 0x11B9] },
+{ source: [0xD72B], NFC: [0xD72B], NFD: [0x1112, 0x1171, 0x11BA], NFKC: [0xD72B], NFKD: [0x1112, 0x1171, 0x11BA] },
+{ source: [0xD72C], NFC: [0xD72C], NFD: [0x1112, 0x1171, 0x11BB], NFKC: [0xD72C], NFKD: [0x1112, 0x1171, 0x11BB] },
+{ source: [0xD72D], NFC: [0xD72D], NFD: [0x1112, 0x1171, 0x11BC], NFKC: [0xD72D], NFKD: [0x1112, 0x1171, 0x11BC] },
+{ source: [0xD72E], NFC: [0xD72E], NFD: [0x1112, 0x1171, 0x11BD], NFKC: [0xD72E], NFKD: [0x1112, 0x1171, 0x11BD] },
+{ source: [0xD72F], NFC: [0xD72F], NFD: [0x1112, 0x1171, 0x11BE], NFKC: [0xD72F], NFKD: [0x1112, 0x1171, 0x11BE] },
+{ source: [0xD730], NFC: [0xD730], NFD: [0x1112, 0x1171, 0x11BF], NFKC: [0xD730], NFKD: [0x1112, 0x1171, 0x11BF] },
+{ source: [0xD731], NFC: [0xD731], NFD: [0x1112, 0x1171, 0x11C0], NFKC: [0xD731], NFKD: [0x1112, 0x1171, 0x11C0] },
+{ source: [0xD732], NFC: [0xD732], NFD: [0x1112, 0x1171, 0x11C1], NFKC: [0xD732], NFKD: [0x1112, 0x1171, 0x11C1] },
+{ source: [0xD733], NFC: [0xD733], NFD: [0x1112, 0x1171, 0x11C2], NFKC: [0xD733], NFKD: [0x1112, 0x1171, 0x11C2] },
+{ source: [0xD734], NFC: [0xD734], NFD: [0x1112, 0x1172], NFKC: [0xD734], NFKD: [0x1112, 0x1172] },
+{ source: [0xD735], NFC: [0xD735], NFD: [0x1112, 0x1172, 0x11A8], NFKC: [0xD735], NFKD: [0x1112, 0x1172, 0x11A8] },
+{ source: [0xD736], NFC: [0xD736], NFD: [0x1112, 0x1172, 0x11A9], NFKC: [0xD736], NFKD: [0x1112, 0x1172, 0x11A9] },
+{ source: [0xD737], NFC: [0xD737], NFD: [0x1112, 0x1172, 0x11AA], NFKC: [0xD737], NFKD: [0x1112, 0x1172, 0x11AA] },
+{ source: [0xD738], NFC: [0xD738], NFD: [0x1112, 0x1172, 0x11AB], NFKC: [0xD738], NFKD: [0x1112, 0x1172, 0x11AB] },
+{ source: [0xD739], NFC: [0xD739], NFD: [0x1112, 0x1172, 0x11AC], NFKC: [0xD739], NFKD: [0x1112, 0x1172, 0x11AC] },
+{ source: [0xD73A], NFC: [0xD73A], NFD: [0x1112, 0x1172, 0x11AD], NFKC: [0xD73A], NFKD: [0x1112, 0x1172, 0x11AD] },
+{ source: [0xD73B], NFC: [0xD73B], NFD: [0x1112, 0x1172, 0x11AE], NFKC: [0xD73B], NFKD: [0x1112, 0x1172, 0x11AE] },
+{ source: [0xD73C], NFC: [0xD73C], NFD: [0x1112, 0x1172, 0x11AF], NFKC: [0xD73C], NFKD: [0x1112, 0x1172, 0x11AF] },
+{ source: [0xD73D], NFC: [0xD73D], NFD: [0x1112, 0x1172, 0x11B0], NFKC: [0xD73D], NFKD: [0x1112, 0x1172, 0x11B0] },
+{ source: [0xD73E], NFC: [0xD73E], NFD: [0x1112, 0x1172, 0x11B1], NFKC: [0xD73E], NFKD: [0x1112, 0x1172, 0x11B1] },
+{ source: [0xD73F], NFC: [0xD73F], NFD: [0x1112, 0x1172, 0x11B2], NFKC: [0xD73F], NFKD: [0x1112, 0x1172, 0x11B2] },
+{ source: [0xD740], NFC: [0xD740], NFD: [0x1112, 0x1172, 0x11B3], NFKC: [0xD740], NFKD: [0x1112, 0x1172, 0x11B3] },
+{ source: [0xD741], NFC: [0xD741], NFD: [0x1112, 0x1172, 0x11B4], NFKC: [0xD741], NFKD: [0x1112, 0x1172, 0x11B4] },
+{ source: [0xD742], NFC: [0xD742], NFD: [0x1112, 0x1172, 0x11B5], NFKC: [0xD742], NFKD: [0x1112, 0x1172, 0x11B5] },
+{ source: [0xD743], NFC: [0xD743], NFD: [0x1112, 0x1172, 0x11B6], NFKC: [0xD743], NFKD: [0x1112, 0x1172, 0x11B6] },
+{ source: [0xD744], NFC: [0xD744], NFD: [0x1112, 0x1172, 0x11B7], NFKC: [0xD744], NFKD: [0x1112, 0x1172, 0x11B7] },
+{ source: [0xD745], NFC: [0xD745], NFD: [0x1112, 0x1172, 0x11B8], NFKC: [0xD745], NFKD: [0x1112, 0x1172, 0x11B8] },
+{ source: [0xD746], NFC: [0xD746], NFD: [0x1112, 0x1172, 0x11B9], NFKC: [0xD746], NFKD: [0x1112, 0x1172, 0x11B9] },
+{ source: [0xD747], NFC: [0xD747], NFD: [0x1112, 0x1172, 0x11BA], NFKC: [0xD747], NFKD: [0x1112, 0x1172, 0x11BA] },
+{ source: [0xD748], NFC: [0xD748], NFD: [0x1112, 0x1172, 0x11BB], NFKC: [0xD748], NFKD: [0x1112, 0x1172, 0x11BB] },
+{ source: [0xD749], NFC: [0xD749], NFD: [0x1112, 0x1172, 0x11BC], NFKC: [0xD749], NFKD: [0x1112, 0x1172, 0x11BC] },
+{ source: [0xD74A], NFC: [0xD74A], NFD: [0x1112, 0x1172, 0x11BD], NFKC: [0xD74A], NFKD: [0x1112, 0x1172, 0x11BD] },
+{ source: [0xD74B], NFC: [0xD74B], NFD: [0x1112, 0x1172, 0x11BE], NFKC: [0xD74B], NFKD: [0x1112, 0x1172, 0x11BE] },
+{ source: [0xD74C], NFC: [0xD74C], NFD: [0x1112, 0x1172, 0x11BF], NFKC: [0xD74C], NFKD: [0x1112, 0x1172, 0x11BF] },
+{ source: [0xD74D], NFC: [0xD74D], NFD: [0x1112, 0x1172, 0x11C0], NFKC: [0xD74D], NFKD: [0x1112, 0x1172, 0x11C0] },
+{ source: [0xD74E], NFC: [0xD74E], NFD: [0x1112, 0x1172, 0x11C1], NFKC: [0xD74E], NFKD: [0x1112, 0x1172, 0x11C1] },
+{ source: [0xD74F], NFC: [0xD74F], NFD: [0x1112, 0x1172, 0x11C2], NFKC: [0xD74F], NFKD: [0x1112, 0x1172, 0x11C2] },
+{ source: [0xD750], NFC: [0xD750], NFD: [0x1112, 0x1173], NFKC: [0xD750], NFKD: [0x1112, 0x1173] },
+{ source: [0xD751], NFC: [0xD751], NFD: [0x1112, 0x1173, 0x11A8], NFKC: [0xD751], NFKD: [0x1112, 0x1173, 0x11A8] },
+{ source: [0xD752], NFC: [0xD752], NFD: [0x1112, 0x1173, 0x11A9], NFKC: [0xD752], NFKD: [0x1112, 0x1173, 0x11A9] },
+{ source: [0xD753], NFC: [0xD753], NFD: [0x1112, 0x1173, 0x11AA], NFKC: [0xD753], NFKD: [0x1112, 0x1173, 0x11AA] },
+{ source: [0xD754], NFC: [0xD754], NFD: [0x1112, 0x1173, 0x11AB], NFKC: [0xD754], NFKD: [0x1112, 0x1173, 0x11AB] },
+{ source: [0xD755], NFC: [0xD755], NFD: [0x1112, 0x1173, 0x11AC], NFKC: [0xD755], NFKD: [0x1112, 0x1173, 0x11AC] },
+{ source: [0xD756], NFC: [0xD756], NFD: [0x1112, 0x1173, 0x11AD], NFKC: [0xD756], NFKD: [0x1112, 0x1173, 0x11AD] },
+{ source: [0xD757], NFC: [0xD757], NFD: [0x1112, 0x1173, 0x11AE], NFKC: [0xD757], NFKD: [0x1112, 0x1173, 0x11AE] },
+{ source: [0xD758], NFC: [0xD758], NFD: [0x1112, 0x1173, 0x11AF], NFKC: [0xD758], NFKD: [0x1112, 0x1173, 0x11AF] },
+{ source: [0xD759], NFC: [0xD759], NFD: [0x1112, 0x1173, 0x11B0], NFKC: [0xD759], NFKD: [0x1112, 0x1173, 0x11B0] },
+{ source: [0xD75A], NFC: [0xD75A], NFD: [0x1112, 0x1173, 0x11B1], NFKC: [0xD75A], NFKD: [0x1112, 0x1173, 0x11B1] },
+{ source: [0xD75B], NFC: [0xD75B], NFD: [0x1112, 0x1173, 0x11B2], NFKC: [0xD75B], NFKD: [0x1112, 0x1173, 0x11B2] },
+{ source: [0xD75C], NFC: [0xD75C], NFD: [0x1112, 0x1173, 0x11B3], NFKC: [0xD75C], NFKD: [0x1112, 0x1173, 0x11B3] },
+{ source: [0xD75D], NFC: [0xD75D], NFD: [0x1112, 0x1173, 0x11B4], NFKC: [0xD75D], NFKD: [0x1112, 0x1173, 0x11B4] },
+{ source: [0xD75E], NFC: [0xD75E], NFD: [0x1112, 0x1173, 0x11B5], NFKC: [0xD75E], NFKD: [0x1112, 0x1173, 0x11B5] },
+{ source: [0xD75F], NFC: [0xD75F], NFD: [0x1112, 0x1173, 0x11B6], NFKC: [0xD75F], NFKD: [0x1112, 0x1173, 0x11B6] },
+{ source: [0xD760], NFC: [0xD760], NFD: [0x1112, 0x1173, 0x11B7], NFKC: [0xD760], NFKD: [0x1112, 0x1173, 0x11B7] },
+{ source: [0xD761], NFC: [0xD761], NFD: [0x1112, 0x1173, 0x11B8], NFKC: [0xD761], NFKD: [0x1112, 0x1173, 0x11B8] },
+{ source: [0xD762], NFC: [0xD762], NFD: [0x1112, 0x1173, 0x11B9], NFKC: [0xD762], NFKD: [0x1112, 0x1173, 0x11B9] },
+{ source: [0xD763], NFC: [0xD763], NFD: [0x1112, 0x1173, 0x11BA], NFKC: [0xD763], NFKD: [0x1112, 0x1173, 0x11BA] },
+{ source: [0xD764], NFC: [0xD764], NFD: [0x1112, 0x1173, 0x11BB], NFKC: [0xD764], NFKD: [0x1112, 0x1173, 0x11BB] },
+{ source: [0xD765], NFC: [0xD765], NFD: [0x1112, 0x1173, 0x11BC], NFKC: [0xD765], NFKD: [0x1112, 0x1173, 0x11BC] },
+{ source: [0xD766], NFC: [0xD766], NFD: [0x1112, 0x1173, 0x11BD], NFKC: [0xD766], NFKD: [0x1112, 0x1173, 0x11BD] },
+{ source: [0xD767], NFC: [0xD767], NFD: [0x1112, 0x1173, 0x11BE], NFKC: [0xD767], NFKD: [0x1112, 0x1173, 0x11BE] },
+{ source: [0xD768], NFC: [0xD768], NFD: [0x1112, 0x1173, 0x11BF], NFKC: [0xD768], NFKD: [0x1112, 0x1173, 0x11BF] },
+{ source: [0xD769], NFC: [0xD769], NFD: [0x1112, 0x1173, 0x11C0], NFKC: [0xD769], NFKD: [0x1112, 0x1173, 0x11C0] },
+{ source: [0xD76A], NFC: [0xD76A], NFD: [0x1112, 0x1173, 0x11C1], NFKC: [0xD76A], NFKD: [0x1112, 0x1173, 0x11C1] },
+{ source: [0xD76B], NFC: [0xD76B], NFD: [0x1112, 0x1173, 0x11C2], NFKC: [0xD76B], NFKD: [0x1112, 0x1173, 0x11C2] },
+{ source: [0xD76C], NFC: [0xD76C], NFD: [0x1112, 0x1174], NFKC: [0xD76C], NFKD: [0x1112, 0x1174] },
+{ source: [0xD76D], NFC: [0xD76D], NFD: [0x1112, 0x1174, 0x11A8], NFKC: [0xD76D], NFKD: [0x1112, 0x1174, 0x11A8] },
+{ source: [0xD76E], NFC: [0xD76E], NFD: [0x1112, 0x1174, 0x11A9], NFKC: [0xD76E], NFKD: [0x1112, 0x1174, 0x11A9] },
+{ source: [0xD76F], NFC: [0xD76F], NFD: [0x1112, 0x1174, 0x11AA], NFKC: [0xD76F], NFKD: [0x1112, 0x1174, 0x11AA] },
+{ source: [0xD770], NFC: [0xD770], NFD: [0x1112, 0x1174, 0x11AB], NFKC: [0xD770], NFKD: [0x1112, 0x1174, 0x11AB] },
+{ source: [0xD771], NFC: [0xD771], NFD: [0x1112, 0x1174, 0x11AC], NFKC: [0xD771], NFKD: [0x1112, 0x1174, 0x11AC] },
+{ source: [0xD772], NFC: [0xD772], NFD: [0x1112, 0x1174, 0x11AD], NFKC: [0xD772], NFKD: [0x1112, 0x1174, 0x11AD] },
+{ source: [0xD773], NFC: [0xD773], NFD: [0x1112, 0x1174, 0x11AE], NFKC: [0xD773], NFKD: [0x1112, 0x1174, 0x11AE] },
+{ source: [0xD774], NFC: [0xD774], NFD: [0x1112, 0x1174, 0x11AF], NFKC: [0xD774], NFKD: [0x1112, 0x1174, 0x11AF] },
+{ source: [0xD775], NFC: [0xD775], NFD: [0x1112, 0x1174, 0x11B0], NFKC: [0xD775], NFKD: [0x1112, 0x1174, 0x11B0] },
+{ source: [0xD776], NFC: [0xD776], NFD: [0x1112, 0x1174, 0x11B1], NFKC: [0xD776], NFKD: [0x1112, 0x1174, 0x11B1] },
+{ source: [0xD777], NFC: [0xD777], NFD: [0x1112, 0x1174, 0x11B2], NFKC: [0xD777], NFKD: [0x1112, 0x1174, 0x11B2] },
+{ source: [0xD778], NFC: [0xD778], NFD: [0x1112, 0x1174, 0x11B3], NFKC: [0xD778], NFKD: [0x1112, 0x1174, 0x11B3] },
+{ source: [0xD779], NFC: [0xD779], NFD: [0x1112, 0x1174, 0x11B4], NFKC: [0xD779], NFKD: [0x1112, 0x1174, 0x11B4] },
+{ source: [0xD77A], NFC: [0xD77A], NFD: [0x1112, 0x1174, 0x11B5], NFKC: [0xD77A], NFKD: [0x1112, 0x1174, 0x11B5] },
+{ source: [0xD77B], NFC: [0xD77B], NFD: [0x1112, 0x1174, 0x11B6], NFKC: [0xD77B], NFKD: [0x1112, 0x1174, 0x11B6] },
+{ source: [0xD77C], NFC: [0xD77C], NFD: [0x1112, 0x1174, 0x11B7], NFKC: [0xD77C], NFKD: [0x1112, 0x1174, 0x11B7] },
+{ source: [0xD77D], NFC: [0xD77D], NFD: [0x1112, 0x1174, 0x11B8], NFKC: [0xD77D], NFKD: [0x1112, 0x1174, 0x11B8] },
+{ source: [0xD77E], NFC: [0xD77E], NFD: [0x1112, 0x1174, 0x11B9], NFKC: [0xD77E], NFKD: [0x1112, 0x1174, 0x11B9] },
+{ source: [0xD77F], NFC: [0xD77F], NFD: [0x1112, 0x1174, 0x11BA], NFKC: [0xD77F], NFKD: [0x1112, 0x1174, 0x11BA] },
+{ source: [0xD780], NFC: [0xD780], NFD: [0x1112, 0x1174, 0x11BB], NFKC: [0xD780], NFKD: [0x1112, 0x1174, 0x11BB] },
+{ source: [0xD781], NFC: [0xD781], NFD: [0x1112, 0x1174, 0x11BC], NFKC: [0xD781], NFKD: [0x1112, 0x1174, 0x11BC] },
+{ source: [0xD782], NFC: [0xD782], NFD: [0x1112, 0x1174, 0x11BD], NFKC: [0xD782], NFKD: [0x1112, 0x1174, 0x11BD] },
+{ source: [0xD783], NFC: [0xD783], NFD: [0x1112, 0x1174, 0x11BE], NFKC: [0xD783], NFKD: [0x1112, 0x1174, 0x11BE] },
+{ source: [0xD784], NFC: [0xD784], NFD: [0x1112, 0x1174, 0x11BF], NFKC: [0xD784], NFKD: [0x1112, 0x1174, 0x11BF] },
+{ source: [0xD785], NFC: [0xD785], NFD: [0x1112, 0x1174, 0x11C0], NFKC: [0xD785], NFKD: [0x1112, 0x1174, 0x11C0] },
+{ source: [0xD786], NFC: [0xD786], NFD: [0x1112, 0x1174, 0x11C1], NFKC: [0xD786], NFKD: [0x1112, 0x1174, 0x11C1] },
+{ source: [0xD787], NFC: [0xD787], NFD: [0x1112, 0x1174, 0x11C2], NFKC: [0xD787], NFKD: [0x1112, 0x1174, 0x11C2] },
+{ source: [0xD788], NFC: [0xD788], NFD: [0x1112, 0x1175], NFKC: [0xD788], NFKD: [0x1112, 0x1175] },
+{ source: [0xD789], NFC: [0xD789], NFD: [0x1112, 0x1175, 0x11A8], NFKC: [0xD789], NFKD: [0x1112, 0x1175, 0x11A8] },
+{ source: [0xD78A], NFC: [0xD78A], NFD: [0x1112, 0x1175, 0x11A9], NFKC: [0xD78A], NFKD: [0x1112, 0x1175, 0x11A9] },
+{ source: [0xD78B], NFC: [0xD78B], NFD: [0x1112, 0x1175, 0x11AA], NFKC: [0xD78B], NFKD: [0x1112, 0x1175, 0x11AA] },
+{ source: [0xD78C], NFC: [0xD78C], NFD: [0x1112, 0x1175, 0x11AB], NFKC: [0xD78C], NFKD: [0x1112, 0x1175, 0x11AB] },
+{ source: [0xD78D], NFC: [0xD78D], NFD: [0x1112, 0x1175, 0x11AC], NFKC: [0xD78D], NFKD: [0x1112, 0x1175, 0x11AC] },
+{ source: [0xD78E], NFC: [0xD78E], NFD: [0x1112, 0x1175, 0x11AD], NFKC: [0xD78E], NFKD: [0x1112, 0x1175, 0x11AD] },
+{ source: [0xD78F], NFC: [0xD78F], NFD: [0x1112, 0x1175, 0x11AE], NFKC: [0xD78F], NFKD: [0x1112, 0x1175, 0x11AE] },
+{ source: [0xD790], NFC: [0xD790], NFD: [0x1112, 0x1175, 0x11AF], NFKC: [0xD790], NFKD: [0x1112, 0x1175, 0x11AF] },
+{ source: [0xD791], NFC: [0xD791], NFD: [0x1112, 0x1175, 0x11B0], NFKC: [0xD791], NFKD: [0x1112, 0x1175, 0x11B0] },
+{ source: [0xD792], NFC: [0xD792], NFD: [0x1112, 0x1175, 0x11B1], NFKC: [0xD792], NFKD: [0x1112, 0x1175, 0x11B1] },
+{ source: [0xD793], NFC: [0xD793], NFD: [0x1112, 0x1175, 0x11B2], NFKC: [0xD793], NFKD: [0x1112, 0x1175, 0x11B2] },
+{ source: [0xD794], NFC: [0xD794], NFD: [0x1112, 0x1175, 0x11B3], NFKC: [0xD794], NFKD: [0x1112, 0x1175, 0x11B3] },
+{ source: [0xD795], NFC: [0xD795], NFD: [0x1112, 0x1175, 0x11B4], NFKC: [0xD795], NFKD: [0x1112, 0x1175, 0x11B4] },
+{ source: [0xD796], NFC: [0xD796], NFD: [0x1112, 0x1175, 0x11B5], NFKC: [0xD796], NFKD: [0x1112, 0x1175, 0x11B5] },
+{ source: [0xD797], NFC: [0xD797], NFD: [0x1112, 0x1175, 0x11B6], NFKC: [0xD797], NFKD: [0x1112, 0x1175, 0x11B6] },
+{ source: [0xD798], NFC: [0xD798], NFD: [0x1112, 0x1175, 0x11B7], NFKC: [0xD798], NFKD: [0x1112, 0x1175, 0x11B7] },
+{ source: [0xD799], NFC: [0xD799], NFD: [0x1112, 0x1175, 0x11B8], NFKC: [0xD799], NFKD: [0x1112, 0x1175, 0x11B8] },
+{ source: [0xD79A], NFC: [0xD79A], NFD: [0x1112, 0x1175, 0x11B9], NFKC: [0xD79A], NFKD: [0x1112, 0x1175, 0x11B9] },
+{ source: [0xD79B], NFC: [0xD79B], NFD: [0x1112, 0x1175, 0x11BA], NFKC: [0xD79B], NFKD: [0x1112, 0x1175, 0x11BA] },
+{ source: [0xD79C], NFC: [0xD79C], NFD: [0x1112, 0x1175, 0x11BB], NFKC: [0xD79C], NFKD: [0x1112, 0x1175, 0x11BB] },
+{ source: [0xD79D], NFC: [0xD79D], NFD: [0x1112, 0x1175, 0x11BC], NFKC: [0xD79D], NFKD: [0x1112, 0x1175, 0x11BC] },
+{ source: [0xD79E], NFC: [0xD79E], NFD: [0x1112, 0x1175, 0x11BD], NFKC: [0xD79E], NFKD: [0x1112, 0x1175, 0x11BD] },
+{ source: [0xD79F], NFC: [0xD79F], NFD: [0x1112, 0x1175, 0x11BE], NFKC: [0xD79F], NFKD: [0x1112, 0x1175, 0x11BE] },
+{ source: [0xD7A0], NFC: [0xD7A0], NFD: [0x1112, 0x1175, 0x11BF], NFKC: [0xD7A0], NFKD: [0x1112, 0x1175, 0x11BF] },
+{ source: [0xD7A1], NFC: [0xD7A1], NFD: [0x1112, 0x1175, 0x11C0], NFKC: [0xD7A1], NFKD: [0x1112, 0x1175, 0x11C0] },
+{ source: [0xD7A2], NFC: [0xD7A2], NFD: [0x1112, 0x1175, 0x11C1], NFKC: [0xD7A2], NFKD: [0x1112, 0x1175, 0x11C1] },
+{ source: [0xD7A3], NFC: [0xD7A3], NFD: [0x1112, 0x1175, 0x11C2], NFKC: [0xD7A3], NFKD: [0x1112, 0x1175, 0x11C2] },
+{ source: [0xF900], NFC: [0x8C48], NFD: [0x8C48], NFKC: [0x8C48], NFKD: [0x8C48] },
+{ source: [0xF901], NFC: [0x66F4], NFD: [0x66F4], NFKC: [0x66F4], NFKD: [0x66F4] },
+{ source: [0xF902], NFC: [0x8ECA], NFD: [0x8ECA], NFKC: [0x8ECA], NFKD: [0x8ECA] },
+{ source: [0xF903], NFC: [0x8CC8], NFD: [0x8CC8], NFKC: [0x8CC8], NFKD: [0x8CC8] },
+{ source: [0xF904], NFC: [0x6ED1], NFD: [0x6ED1], NFKC: [0x6ED1], NFKD: [0x6ED1] },
+{ source: [0xF905], NFC: [0x4E32], NFD: [0x4E32], NFKC: [0x4E32], NFKD: [0x4E32] },
+{ source: [0xF906], NFC: [0x53E5], NFD: [0x53E5], NFKC: [0x53E5], NFKD: [0x53E5] },
+{ source: [0xF907], NFC: [0x9F9C], NFD: [0x9F9C], NFKC: [0x9F9C], NFKD: [0x9F9C] },
+{ source: [0xF908], NFC: [0x9F9C], NFD: [0x9F9C], NFKC: [0x9F9C], NFKD: [0x9F9C] },
+{ source: [0xF909], NFC: [0x5951], NFD: [0x5951], NFKC: [0x5951], NFKD: [0x5951] },
+{ source: [0xF90A], NFC: [0x91D1], NFD: [0x91D1], NFKC: [0x91D1], NFKD: [0x91D1] },
+{ source: [0xF90B], NFC: [0x5587], NFD: [0x5587], NFKC: [0x5587], NFKD: [0x5587] },
+{ source: [0xF90C], NFC: [0x5948], NFD: [0x5948], NFKC: [0x5948], NFKD: [0x5948] },
+{ source: [0xF90D], NFC: [0x61F6], NFD: [0x61F6], NFKC: [0x61F6], NFKD: [0x61F6] },
+{ source: [0xF90E], NFC: [0x7669], NFD: [0x7669], NFKC: [0x7669], NFKD: [0x7669] },
+{ source: [0xF90F], NFC: [0x7F85], NFD: [0x7F85], NFKC: [0x7F85], NFKD: [0x7F85] },
+{ source: [0xF910], NFC: [0x863F], NFD: [0x863F], NFKC: [0x863F], NFKD: [0x863F] },
+{ source: [0xF911], NFC: [0x87BA], NFD: [0x87BA], NFKC: [0x87BA], NFKD: [0x87BA] },
+{ source: [0xF912], NFC: [0x88F8], NFD: [0x88F8], NFKC: [0x88F8], NFKD: [0x88F8] },
+{ source: [0xF913], NFC: [0x908F], NFD: [0x908F], NFKC: [0x908F], NFKD: [0x908F] },
+{ source: [0xF914], NFC: [0x6A02], NFD: [0x6A02], NFKC: [0x6A02], NFKD: [0x6A02] },
+{ source: [0xF915], NFC: [0x6D1B], NFD: [0x6D1B], NFKC: [0x6D1B], NFKD: [0x6D1B] },
+{ source: [0xF916], NFC: [0x70D9], NFD: [0x70D9], NFKC: [0x70D9], NFKD: [0x70D9] },
+{ source: [0xF917], NFC: [0x73DE], NFD: [0x73DE], NFKC: [0x73DE], NFKD: [0x73DE] },
+{ source: [0xF918], NFC: [0x843D], NFD: [0x843D], NFKC: [0x843D], NFKD: [0x843D] },
+{ source: [0xF919], NFC: [0x916A], NFD: [0x916A], NFKC: [0x916A], NFKD: [0x916A] },
+{ source: [0xF91A], NFC: [0x99F1], NFD: [0x99F1], NFKC: [0x99F1], NFKD: [0x99F1] },
+{ source: [0xF91B], NFC: [0x4E82], NFD: [0x4E82], NFKC: [0x4E82], NFKD: [0x4E82] },
+{ source: [0xF91C], NFC: [0x5375], NFD: [0x5375], NFKC: [0x5375], NFKD: [0x5375] },
+{ source: [0xF91D], NFC: [0x6B04], NFD: [0x6B04], NFKC: [0x6B04], NFKD: [0x6B04] },
+{ source: [0xF91E], NFC: [0x721B], NFD: [0x721B], NFKC: [0x721B], NFKD: [0x721B] },
+{ source: [0xF91F], NFC: [0x862D], NFD: [0x862D], NFKC: [0x862D], NFKD: [0x862D] },
+{ source: [0xF920], NFC: [0x9E1E], NFD: [0x9E1E], NFKC: [0x9E1E], NFKD: [0x9E1E] },
+{ source: [0xF921], NFC: [0x5D50], NFD: [0x5D50], NFKC: [0x5D50], NFKD: [0x5D50] },
+{ source: [0xF922], NFC: [0x6FEB], NFD: [0x6FEB], NFKC: [0x6FEB], NFKD: [0x6FEB] },
+{ source: [0xF923], NFC: [0x85CD], NFD: [0x85CD], NFKC: [0x85CD], NFKD: [0x85CD] },
+{ source: [0xF924], NFC: [0x8964], NFD: [0x8964], NFKC: [0x8964], NFKD: [0x8964] },
+{ source: [0xF925], NFC: [0x62C9], NFD: [0x62C9], NFKC: [0x62C9], NFKD: [0x62C9] },
+{ source: [0xF926], NFC: [0x81D8], NFD: [0x81D8], NFKC: [0x81D8], NFKD: [0x81D8] },
+{ source: [0xF927], NFC: [0x881F], NFD: [0x881F], NFKC: [0x881F], NFKD: [0x881F] },
+{ source: [0xF928], NFC: [0x5ECA], NFD: [0x5ECA], NFKC: [0x5ECA], NFKD: [0x5ECA] },
+{ source: [0xF929], NFC: [0x6717], NFD: [0x6717], NFKC: [0x6717], NFKD: [0x6717] },
+{ source: [0xF92A], NFC: [0x6D6A], NFD: [0x6D6A], NFKC: [0x6D6A], NFKD: [0x6D6A] },
+{ source: [0xF92B], NFC: [0x72FC], NFD: [0x72FC], NFKC: [0x72FC], NFKD: [0x72FC] },
+{ source: [0xF92C], NFC: [0x90CE], NFD: [0x90CE], NFKC: [0x90CE], NFKD: [0x90CE] },
+{ source: [0xF92D], NFC: [0x4F86], NFD: [0x4F86], NFKC: [0x4F86], NFKD: [0x4F86] },
+{ source: [0xF92E], NFC: [0x51B7], NFD: [0x51B7], NFKC: [0x51B7], NFKD: [0x51B7] },
+{ source: [0xF92F], NFC: [0x52DE], NFD: [0x52DE], NFKC: [0x52DE], NFKD: [0x52DE] },
+{ source: [0xF930], NFC: [0x64C4], NFD: [0x64C4], NFKC: [0x64C4], NFKD: [0x64C4] },
+{ source: [0xF931], NFC: [0x6AD3], NFD: [0x6AD3], NFKC: [0x6AD3], NFKD: [0x6AD3] },
+{ source: [0xF932], NFC: [0x7210], NFD: [0x7210], NFKC: [0x7210], NFKD: [0x7210] },
+{ source: [0xF933], NFC: [0x76E7], NFD: [0x76E7], NFKC: [0x76E7], NFKD: [0x76E7] },
+{ source: [0xF934], NFC: [0x8001], NFD: [0x8001], NFKC: [0x8001], NFKD: [0x8001] },
+{ source: [0xF935], NFC: [0x8606], NFD: [0x8606], NFKC: [0x8606], NFKD: [0x8606] },
+{ source: [0xF936], NFC: [0x865C], NFD: [0x865C], NFKC: [0x865C], NFKD: [0x865C] },
+{ source: [0xF937], NFC: [0x8DEF], NFD: [0x8DEF], NFKC: [0x8DEF], NFKD: [0x8DEF] },
+{ source: [0xF938], NFC: [0x9732], NFD: [0x9732], NFKC: [0x9732], NFKD: [0x9732] },
+{ source: [0xF939], NFC: [0x9B6F], NFD: [0x9B6F], NFKC: [0x9B6F], NFKD: [0x9B6F] },
+{ source: [0xF93A], NFC: [0x9DFA], NFD: [0x9DFA], NFKC: [0x9DFA], NFKD: [0x9DFA] },
+{ source: [0xF93B], NFC: [0x788C], NFD: [0x788C], NFKC: [0x788C], NFKD: [0x788C] },
+{ source: [0xF93C], NFC: [0x797F], NFD: [0x797F], NFKC: [0x797F], NFKD: [0x797F] },
+{ source: [0xF93D], NFC: [0x7DA0], NFD: [0x7DA0], NFKC: [0x7DA0], NFKD: [0x7DA0] },
+{ source: [0xF93E], NFC: [0x83C9], NFD: [0x83C9], NFKC: [0x83C9], NFKD: [0x83C9] },
+{ source: [0xF93F], NFC: [0x9304], NFD: [0x9304], NFKC: [0x9304], NFKD: [0x9304] },
+{ source: [0xF940], NFC: [0x9E7F], NFD: [0x9E7F], NFKC: [0x9E7F], NFKD: [0x9E7F] },
+{ source: [0xF941], NFC: [0x8AD6], NFD: [0x8AD6], NFKC: [0x8AD6], NFKD: [0x8AD6] },
+{ source: [0xF942], NFC: [0x58DF], NFD: [0x58DF], NFKC: [0x58DF], NFKD: [0x58DF] },
+{ source: [0xF943], NFC: [0x5F04], NFD: [0x5F04], NFKC: [0x5F04], NFKD: [0x5F04] },
+{ source: [0xF944], NFC: [0x7C60], NFD: [0x7C60], NFKC: [0x7C60], NFKD: [0x7C60] },
+{ source: [0xF945], NFC: [0x807E], NFD: [0x807E], NFKC: [0x807E], NFKD: [0x807E] },
+{ source: [0xF946], NFC: [0x7262], NFD: [0x7262], NFKC: [0x7262], NFKD: [0x7262] },
+{ source: [0xF947], NFC: [0x78CA], NFD: [0x78CA], NFKC: [0x78CA], NFKD: [0x78CA] },
+{ source: [0xF948], NFC: [0x8CC2], NFD: [0x8CC2], NFKC: [0x8CC2], NFKD: [0x8CC2] },
+{ source: [0xF949], NFC: [0x96F7], NFD: [0x96F7], NFKC: [0x96F7], NFKD: [0x96F7] },
+{ source: [0xF94A], NFC: [0x58D8], NFD: [0x58D8], NFKC: [0x58D8], NFKD: [0x58D8] },
+{ source: [0xF94B], NFC: [0x5C62], NFD: [0x5C62], NFKC: [0x5C62], NFKD: [0x5C62] },
+{ source: [0xF94C], NFC: [0x6A13], NFD: [0x6A13], NFKC: [0x6A13], NFKD: [0x6A13] },
+{ source: [0xF94D], NFC: [0x6DDA], NFD: [0x6DDA], NFKC: [0x6DDA], NFKD: [0x6DDA] },
+{ source: [0xF94E], NFC: [0x6F0F], NFD: [0x6F0F], NFKC: [0x6F0F], NFKD: [0x6F0F] },
+{ source: [0xF94F], NFC: [0x7D2F], NFD: [0x7D2F], NFKC: [0x7D2F], NFKD: [0x7D2F] },
+{ source: [0xF950], NFC: [0x7E37], NFD: [0x7E37], NFKC: [0x7E37], NFKD: [0x7E37] },
+{ source: [0xF951], NFC: [0x964B], NFD: [0x964B], NFKC: [0x964B], NFKD: [0x964B] },
+{ source: [0xF952], NFC: [0x52D2], NFD: [0x52D2], NFKC: [0x52D2], NFKD: [0x52D2] },
+{ source: [0xF953], NFC: [0x808B], NFD: [0x808B], NFKC: [0x808B], NFKD: [0x808B] },
+{ source: [0xF954], NFC: [0x51DC], NFD: [0x51DC], NFKC: [0x51DC], NFKD: [0x51DC] },
+{ source: [0xF955], NFC: [0x51CC], NFD: [0x51CC], NFKC: [0x51CC], NFKD: [0x51CC] },
+{ source: [0xF956], NFC: [0x7A1C], NFD: [0x7A1C], NFKC: [0x7A1C], NFKD: [0x7A1C] },
+{ source: [0xF957], NFC: [0x7DBE], NFD: [0x7DBE], NFKC: [0x7DBE], NFKD: [0x7DBE] },
+{ source: [0xF958], NFC: [0x83F1], NFD: [0x83F1], NFKC: [0x83F1], NFKD: [0x83F1] },
+{ source: [0xF959], NFC: [0x9675], NFD: [0x9675], NFKC: [0x9675], NFKD: [0x9675] },
+{ source: [0xF95A], NFC: [0x8B80], NFD: [0x8B80], NFKC: [0x8B80], NFKD: [0x8B80] },
+{ source: [0xF95B], NFC: [0x62CF], NFD: [0x62CF], NFKC: [0x62CF], NFKD: [0x62CF] },
+{ source: [0xF95C], NFC: [0x6A02], NFD: [0x6A02], NFKC: [0x6A02], NFKD: [0x6A02] },
+{ source: [0xF95D], NFC: [0x8AFE], NFD: [0x8AFE], NFKC: [0x8AFE], NFKD: [0x8AFE] },
+{ source: [0xF95E], NFC: [0x4E39], NFD: [0x4E39], NFKC: [0x4E39], NFKD: [0x4E39] },
+{ source: [0xF95F], NFC: [0x5BE7], NFD: [0x5BE7], NFKC: [0x5BE7], NFKD: [0x5BE7] },
+{ source: [0xF960], NFC: [0x6012], NFD: [0x6012], NFKC: [0x6012], NFKD: [0x6012] },
+{ source: [0xF961], NFC: [0x7387], NFD: [0x7387], NFKC: [0x7387], NFKD: [0x7387] },
+{ source: [0xF962], NFC: [0x7570], NFD: [0x7570], NFKC: [0x7570], NFKD: [0x7570] },
+{ source: [0xF963], NFC: [0x5317], NFD: [0x5317], NFKC: [0x5317], NFKD: [0x5317] },
+{ source: [0xF964], NFC: [0x78FB], NFD: [0x78FB], NFKC: [0x78FB], NFKD: [0x78FB] },
+{ source: [0xF965], NFC: [0x4FBF], NFD: [0x4FBF], NFKC: [0x4FBF], NFKD: [0x4FBF] },
+{ source: [0xF966], NFC: [0x5FA9], NFD: [0x5FA9], NFKC: [0x5FA9], NFKD: [0x5FA9] },
+{ source: [0xF967], NFC: [0x4E0D], NFD: [0x4E0D], NFKC: [0x4E0D], NFKD: [0x4E0D] },
+{ source: [0xF968], NFC: [0x6CCC], NFD: [0x6CCC], NFKC: [0x6CCC], NFKD: [0x6CCC] },
+{ source: [0xF969], NFC: [0x6578], NFD: [0x6578], NFKC: [0x6578], NFKD: [0x6578] },
+{ source: [0xF96A], NFC: [0x7D22], NFD: [0x7D22], NFKC: [0x7D22], NFKD: [0x7D22] },
+{ source: [0xF96B], NFC: [0x53C3], NFD: [0x53C3], NFKC: [0x53C3], NFKD: [0x53C3] },
+{ source: [0xF96C], NFC: [0x585E], NFD: [0x585E], NFKC: [0x585E], NFKD: [0x585E] },
+{ source: [0xF96D], NFC: [0x7701], NFD: [0x7701], NFKC: [0x7701], NFKD: [0x7701] },
+{ source: [0xF96E], NFC: [0x8449], NFD: [0x8449], NFKC: [0x8449], NFKD: [0x8449] },
+{ source: [0xF96F], NFC: [0x8AAA], NFD: [0x8AAA], NFKC: [0x8AAA], NFKD: [0x8AAA] },
+{ source: [0xF970], NFC: [0x6BBA], NFD: [0x6BBA], NFKC: [0x6BBA], NFKD: [0x6BBA] },
+{ source: [0xF971], NFC: [0x8FB0], NFD: [0x8FB0], NFKC: [0x8FB0], NFKD: [0x8FB0] },
+{ source: [0xF972], NFC: [0x6C88], NFD: [0x6C88], NFKC: [0x6C88], NFKD: [0x6C88] },
+{ source: [0xF973], NFC: [0x62FE], NFD: [0x62FE], NFKC: [0x62FE], NFKD: [0x62FE] },
+{ source: [0xF974], NFC: [0x82E5], NFD: [0x82E5], NFKC: [0x82E5], NFKD: [0x82E5] },
+{ source: [0xF975], NFC: [0x63A0], NFD: [0x63A0], NFKC: [0x63A0], NFKD: [0x63A0] },
+{ source: [0xF976], NFC: [0x7565], NFD: [0x7565], NFKC: [0x7565], NFKD: [0x7565] },
+{ source: [0xF977], NFC: [0x4EAE], NFD: [0x4EAE], NFKC: [0x4EAE], NFKD: [0x4EAE] },
+{ source: [0xF978], NFC: [0x5169], NFD: [0x5169], NFKC: [0x5169], NFKD: [0x5169] },
+{ source: [0xF979], NFC: [0x51C9], NFD: [0x51C9], NFKC: [0x51C9], NFKD: [0x51C9] },
+{ source: [0xF97A], NFC: [0x6881], NFD: [0x6881], NFKC: [0x6881], NFKD: [0x6881] },
+{ source: [0xF97B], NFC: [0x7CE7], NFD: [0x7CE7], NFKC: [0x7CE7], NFKD: [0x7CE7] },
+{ source: [0xF97C], NFC: [0x826F], NFD: [0x826F], NFKC: [0x826F], NFKD: [0x826F] },
+{ source: [0xF97D], NFC: [0x8AD2], NFD: [0x8AD2], NFKC: [0x8AD2], NFKD: [0x8AD2] },
+{ source: [0xF97E], NFC: [0x91CF], NFD: [0x91CF], NFKC: [0x91CF], NFKD: [0x91CF] },
+{ source: [0xF97F], NFC: [0x52F5], NFD: [0x52F5], NFKC: [0x52F5], NFKD: [0x52F5] },
+{ source: [0xF980], NFC: [0x5442], NFD: [0x5442], NFKC: [0x5442], NFKD: [0x5442] },
+{ source: [0xF981], NFC: [0x5973], NFD: [0x5973], NFKC: [0x5973], NFKD: [0x5973] },
+{ source: [0xF982], NFC: [0x5EEC], NFD: [0x5EEC], NFKC: [0x5EEC], NFKD: [0x5EEC] },
+{ source: [0xF983], NFC: [0x65C5], NFD: [0x65C5], NFKC: [0x65C5], NFKD: [0x65C5] },
+{ source: [0xF984], NFC: [0x6FFE], NFD: [0x6FFE], NFKC: [0x6FFE], NFKD: [0x6FFE] },
+{ source: [0xF985], NFC: [0x792A], NFD: [0x792A], NFKC: [0x792A], NFKD: [0x792A] },
+{ source: [0xF986], NFC: [0x95AD], NFD: [0x95AD], NFKC: [0x95AD], NFKD: [0x95AD] },
+{ source: [0xF987], NFC: [0x9A6A], NFD: [0x9A6A], NFKC: [0x9A6A], NFKD: [0x9A6A] },
+{ source: [0xF988], NFC: [0x9E97], NFD: [0x9E97], NFKC: [0x9E97], NFKD: [0x9E97] },
+{ source: [0xF989], NFC: [0x9ECE], NFD: [0x9ECE], NFKC: [0x9ECE], NFKD: [0x9ECE] },
+{ source: [0xF98A], NFC: [0x529B], NFD: [0x529B], NFKC: [0x529B], NFKD: [0x529B] },
+{ source: [0xF98B], NFC: [0x66C6], NFD: [0x66C6], NFKC: [0x66C6], NFKD: [0x66C6] },
+{ source: [0xF98C], NFC: [0x6B77], NFD: [0x6B77], NFKC: [0x6B77], NFKD: [0x6B77] },
+{ source: [0xF98D], NFC: [0x8F62], NFD: [0x8F62], NFKC: [0x8F62], NFKD: [0x8F62] },
+{ source: [0xF98E], NFC: [0x5E74], NFD: [0x5E74], NFKC: [0x5E74], NFKD: [0x5E74] },
+{ source: [0xF98F], NFC: [0x6190], NFD: [0x6190], NFKC: [0x6190], NFKD: [0x6190] },
+{ source: [0xF990], NFC: [0x6200], NFD: [0x6200], NFKC: [0x6200], NFKD: [0x6200] },
+{ source: [0xF991], NFC: [0x649A], NFD: [0x649A], NFKC: [0x649A], NFKD: [0x649A] },
+{ source: [0xF992], NFC: [0x6F23], NFD: [0x6F23], NFKC: [0x6F23], NFKD: [0x6F23] },
+{ source: [0xF993], NFC: [0x7149], NFD: [0x7149], NFKC: [0x7149], NFKD: [0x7149] },
+{ source: [0xF994], NFC: [0x7489], NFD: [0x7489], NFKC: [0x7489], NFKD: [0x7489] },
+{ source: [0xF995], NFC: [0x79CA], NFD: [0x79CA], NFKC: [0x79CA], NFKD: [0x79CA] },
+{ source: [0xF996], NFC: [0x7DF4], NFD: [0x7DF4], NFKC: [0x7DF4], NFKD: [0x7DF4] },
+{ source: [0xF997], NFC: [0x806F], NFD: [0x806F], NFKC: [0x806F], NFKD: [0x806F] },
+{ source: [0xF998], NFC: [0x8F26], NFD: [0x8F26], NFKC: [0x8F26], NFKD: [0x8F26] },
+{ source: [0xF999], NFC: [0x84EE], NFD: [0x84EE], NFKC: [0x84EE], NFKD: [0x84EE] },
+{ source: [0xF99A], NFC: [0x9023], NFD: [0x9023], NFKC: [0x9023], NFKD: [0x9023] },
+{ source: [0xF99B], NFC: [0x934A], NFD: [0x934A], NFKC: [0x934A], NFKD: [0x934A] },
+{ source: [0xF99C], NFC: [0x5217], NFD: [0x5217], NFKC: [0x5217], NFKD: [0x5217] },
+{ source: [0xF99D], NFC: [0x52A3], NFD: [0x52A3], NFKC: [0x52A3], NFKD: [0x52A3] },
+{ source: [0xF99E], NFC: [0x54BD], NFD: [0x54BD], NFKC: [0x54BD], NFKD: [0x54BD] },
+{ source: [0xF99F], NFC: [0x70C8], NFD: [0x70C8], NFKC: [0x70C8], NFKD: [0x70C8] },
+{ source: [0xF9A0], NFC: [0x88C2], NFD: [0x88C2], NFKC: [0x88C2], NFKD: [0x88C2] },
+{ source: [0xF9A1], NFC: [0x8AAA], NFD: [0x8AAA], NFKC: [0x8AAA], NFKD: [0x8AAA] },
+{ source: [0xF9A2], NFC: [0x5EC9], NFD: [0x5EC9], NFKC: [0x5EC9], NFKD: [0x5EC9] },
+{ source: [0xF9A3], NFC: [0x5FF5], NFD: [0x5FF5], NFKC: [0x5FF5], NFKD: [0x5FF5] },
+{ source: [0xF9A4], NFC: [0x637B], NFD: [0x637B], NFKC: [0x637B], NFKD: [0x637B] },
+{ source: [0xF9A5], NFC: [0x6BAE], NFD: [0x6BAE], NFKC: [0x6BAE], NFKD: [0x6BAE] },
+{ source: [0xF9A6], NFC: [0x7C3E], NFD: [0x7C3E], NFKC: [0x7C3E], NFKD: [0x7C3E] },
+{ source: [0xF9A7], NFC: [0x7375], NFD: [0x7375], NFKC: [0x7375], NFKD: [0x7375] },
+{ source: [0xF9A8], NFC: [0x4EE4], NFD: [0x4EE4], NFKC: [0x4EE4], NFKD: [0x4EE4] },
+{ source: [0xF9A9], NFC: [0x56F9], NFD: [0x56F9], NFKC: [0x56F9], NFKD: [0x56F9] },
+{ source: [0xF9AA], NFC: [0x5BE7], NFD: [0x5BE7], NFKC: [0x5BE7], NFKD: [0x5BE7] },
+{ source: [0xF9AB], NFC: [0x5DBA], NFD: [0x5DBA], NFKC: [0x5DBA], NFKD: [0x5DBA] },
+{ source: [0xF9AC], NFC: [0x601C], NFD: [0x601C], NFKC: [0x601C], NFKD: [0x601C] },
+{ source: [0xF9AD], NFC: [0x73B2], NFD: [0x73B2], NFKC: [0x73B2], NFKD: [0x73B2] },
+{ source: [0xF9AE], NFC: [0x7469], NFD: [0x7469], NFKC: [0x7469], NFKD: [0x7469] },
+{ source: [0xF9AF], NFC: [0x7F9A], NFD: [0x7F9A], NFKC: [0x7F9A], NFKD: [0x7F9A] },
+{ source: [0xF9B0], NFC: [0x8046], NFD: [0x8046], NFKC: [0x8046], NFKD: [0x8046] },
+{ source: [0xF9B1], NFC: [0x9234], NFD: [0x9234], NFKC: [0x9234], NFKD: [0x9234] },
+{ source: [0xF9B2], NFC: [0x96F6], NFD: [0x96F6], NFKC: [0x96F6], NFKD: [0x96F6] },
+{ source: [0xF9B3], NFC: [0x9748], NFD: [0x9748], NFKC: [0x9748], NFKD: [0x9748] },
+{ source: [0xF9B4], NFC: [0x9818], NFD: [0x9818], NFKC: [0x9818], NFKD: [0x9818] },
+{ source: [0xF9B5], NFC: [0x4F8B], NFD: [0x4F8B], NFKC: [0x4F8B], NFKD: [0x4F8B] },
+{ source: [0xF9B6], NFC: [0x79AE], NFD: [0x79AE], NFKC: [0x79AE], NFKD: [0x79AE] },
+{ source: [0xF9B7], NFC: [0x91B4], NFD: [0x91B4], NFKC: [0x91B4], NFKD: [0x91B4] },
+{ source: [0xF9B8], NFC: [0x96B8], NFD: [0x96B8], NFKC: [0x96B8], NFKD: [0x96B8] },
+{ source: [0xF9B9], NFC: [0x60E1], NFD: [0x60E1], NFKC: [0x60E1], NFKD: [0x60E1] },
+{ source: [0xF9BA], NFC: [0x4E86], NFD: [0x4E86], NFKC: [0x4E86], NFKD: [0x4E86] },
+{ source: [0xF9BB], NFC: [0x50DA], NFD: [0x50DA], NFKC: [0x50DA], NFKD: [0x50DA] },
+{ source: [0xF9BC], NFC: [0x5BEE], NFD: [0x5BEE], NFKC: [0x5BEE], NFKD: [0x5BEE] },
+{ source: [0xF9BD], NFC: [0x5C3F], NFD: [0x5C3F], NFKC: [0x5C3F], NFKD: [0x5C3F] },
+{ source: [0xF9BE], NFC: [0x6599], NFD: [0x6599], NFKC: [0x6599], NFKD: [0x6599] },
+{ source: [0xF9BF], NFC: [0x6A02], NFD: [0x6A02], NFKC: [0x6A02], NFKD: [0x6A02] },
+{ source: [0xF9C0], NFC: [0x71CE], NFD: [0x71CE], NFKC: [0x71CE], NFKD: [0x71CE] },
+{ source: [0xF9C1], NFC: [0x7642], NFD: [0x7642], NFKC: [0x7642], NFKD: [0x7642] },
+{ source: [0xF9C2], NFC: [0x84FC], NFD: [0x84FC], NFKC: [0x84FC], NFKD: [0x84FC] },
+{ source: [0xF9C3], NFC: [0x907C], NFD: [0x907C], NFKC: [0x907C], NFKD: [0x907C] },
+{ source: [0xF9C4], NFC: [0x9F8D], NFD: [0x9F8D], NFKC: [0x9F8D], NFKD: [0x9F8D] },
+{ source: [0xF9C5], NFC: [0x6688], NFD: [0x6688], NFKC: [0x6688], NFKD: [0x6688] },
+{ source: [0xF9C6], NFC: [0x962E], NFD: [0x962E], NFKC: [0x962E], NFKD: [0x962E] },
+{ source: [0xF9C7], NFC: [0x5289], NFD: [0x5289], NFKC: [0x5289], NFKD: [0x5289] },
+{ source: [0xF9C8], NFC: [0x677B], NFD: [0x677B], NFKC: [0x677B], NFKD: [0x677B] },
+{ source: [0xF9C9], NFC: [0x67F3], NFD: [0x67F3], NFKC: [0x67F3], NFKD: [0x67F3] },
+{ source: [0xF9CA], NFC: [0x6D41], NFD: [0x6D41], NFKC: [0x6D41], NFKD: [0x6D41] },
+{ source: [0xF9CB], NFC: [0x6E9C], NFD: [0x6E9C], NFKC: [0x6E9C], NFKD: [0x6E9C] },
+{ source: [0xF9CC], NFC: [0x7409], NFD: [0x7409], NFKC: [0x7409], NFKD: [0x7409] },
+{ source: [0xF9CD], NFC: [0x7559], NFD: [0x7559], NFKC: [0x7559], NFKD: [0x7559] },
+{ source: [0xF9CE], NFC: [0x786B], NFD: [0x786B], NFKC: [0x786B], NFKD: [0x786B] },
+{ source: [0xF9CF], NFC: [0x7D10], NFD: [0x7D10], NFKC: [0x7D10], NFKD: [0x7D10] },
+{ source: [0xF9D0], NFC: [0x985E], NFD: [0x985E], NFKC: [0x985E], NFKD: [0x985E] },
+{ source: [0xF9D1], NFC: [0x516D], NFD: [0x516D], NFKC: [0x516D], NFKD: [0x516D] },
+{ source: [0xF9D2], NFC: [0x622E], NFD: [0x622E], NFKC: [0x622E], NFKD: [0x622E] },
+{ source: [0xF9D3], NFC: [0x9678], NFD: [0x9678], NFKC: [0x9678], NFKD: [0x9678] },
+{ source: [0xF9D4], NFC: [0x502B], NFD: [0x502B], NFKC: [0x502B], NFKD: [0x502B] },
+{ source: [0xF9D5], NFC: [0x5D19], NFD: [0x5D19], NFKC: [0x5D19], NFKD: [0x5D19] },
+{ source: [0xF9D6], NFC: [0x6DEA], NFD: [0x6DEA], NFKC: [0x6DEA], NFKD: [0x6DEA] },
+{ source: [0xF9D7], NFC: [0x8F2A], NFD: [0x8F2A], NFKC: [0x8F2A], NFKD: [0x8F2A] },
+{ source: [0xF9D8], NFC: [0x5F8B], NFD: [0x5F8B], NFKC: [0x5F8B], NFKD: [0x5F8B] },
+{ source: [0xF9D9], NFC: [0x6144], NFD: [0x6144], NFKC: [0x6144], NFKD: [0x6144] },
+{ source: [0xF9DA], NFC: [0x6817], NFD: [0x6817], NFKC: [0x6817], NFKD: [0x6817] },
+{ source: [0xF9DB], NFC: [0x7387], NFD: [0x7387], NFKC: [0x7387], NFKD: [0x7387] },
+{ source: [0xF9DC], NFC: [0x9686], NFD: [0x9686], NFKC: [0x9686], NFKD: [0x9686] },
+{ source: [0xF9DD], NFC: [0x5229], NFD: [0x5229], NFKC: [0x5229], NFKD: [0x5229] },
+{ source: [0xF9DE], NFC: [0x540F], NFD: [0x540F], NFKC: [0x540F], NFKD: [0x540F] },
+{ source: [0xF9DF], NFC: [0x5C65], NFD: [0x5C65], NFKC: [0x5C65], NFKD: [0x5C65] },
+{ source: [0xF9E0], NFC: [0x6613], NFD: [0x6613], NFKC: [0x6613], NFKD: [0x6613] },
+{ source: [0xF9E1], NFC: [0x674E], NFD: [0x674E], NFKC: [0x674E], NFKD: [0x674E] },
+{ source: [0xF9E2], NFC: [0x68A8], NFD: [0x68A8], NFKC: [0x68A8], NFKD: [0x68A8] },
+{ source: [0xF9E3], NFC: [0x6CE5], NFD: [0x6CE5], NFKC: [0x6CE5], NFKD: [0x6CE5] },
+{ source: [0xF9E4], NFC: [0x7406], NFD: [0x7406], NFKC: [0x7406], NFKD: [0x7406] },
+{ source: [0xF9E5], NFC: [0x75E2], NFD: [0x75E2], NFKC: [0x75E2], NFKD: [0x75E2] },
+{ source: [0xF9E6], NFC: [0x7F79], NFD: [0x7F79], NFKC: [0x7F79], NFKD: [0x7F79] },
+{ source: [0xF9E7], NFC: [0x88CF], NFD: [0x88CF], NFKC: [0x88CF], NFKD: [0x88CF] },
+{ source: [0xF9E8], NFC: [0x88E1], NFD: [0x88E1], NFKC: [0x88E1], NFKD: [0x88E1] },
+{ source: [0xF9E9], NFC: [0x91CC], NFD: [0x91CC], NFKC: [0x91CC], NFKD: [0x91CC] },
+{ source: [0xF9EA], NFC: [0x96E2], NFD: [0x96E2], NFKC: [0x96E2], NFKD: [0x96E2] },
+{ source: [0xF9EB], NFC: [0x533F], NFD: [0x533F], NFKC: [0x533F], NFKD: [0x533F] },
+{ source: [0xF9EC], NFC: [0x6EBA], NFD: [0x6EBA], NFKC: [0x6EBA], NFKD: [0x6EBA] },
+{ source: [0xF9ED], NFC: [0x541D], NFD: [0x541D], NFKC: [0x541D], NFKD: [0x541D] },
+{ source: [0xF9EE], NFC: [0x71D0], NFD: [0x71D0], NFKC: [0x71D0], NFKD: [0x71D0] },
+{ source: [0xF9EF], NFC: [0x7498], NFD: [0x7498], NFKC: [0x7498], NFKD: [0x7498] },
+{ source: [0xF9F0], NFC: [0x85FA], NFD: [0x85FA], NFKC: [0x85FA], NFKD: [0x85FA] },
+{ source: [0xF9F1], NFC: [0x96A3], NFD: [0x96A3], NFKC: [0x96A3], NFKD: [0x96A3] },
+{ source: [0xF9F2], NFC: [0x9C57], NFD: [0x9C57], NFKC: [0x9C57], NFKD: [0x9C57] },
+{ source: [0xF9F3], NFC: [0x9E9F], NFD: [0x9E9F], NFKC: [0x9E9F], NFKD: [0x9E9F] },
+{ source: [0xF9F4], NFC: [0x6797], NFD: [0x6797], NFKC: [0x6797], NFKD: [0x6797] },
+{ source: [0xF9F5], NFC: [0x6DCB], NFD: [0x6DCB], NFKC: [0x6DCB], NFKD: [0x6DCB] },
+{ source: [0xF9F6], NFC: [0x81E8], NFD: [0x81E8], NFKC: [0x81E8], NFKD: [0x81E8] },
+{ source: [0xF9F7], NFC: [0x7ACB], NFD: [0x7ACB], NFKC: [0x7ACB], NFKD: [0x7ACB] },
+{ source: [0xF9F8], NFC: [0x7B20], NFD: [0x7B20], NFKC: [0x7B20], NFKD: [0x7B20] },
+{ source: [0xF9F9], NFC: [0x7C92], NFD: [0x7C92], NFKC: [0x7C92], NFKD: [0x7C92] },
+{ source: [0xF9FA], NFC: [0x72C0], NFD: [0x72C0], NFKC: [0x72C0], NFKD: [0x72C0] },
+{ source: [0xF9FB], NFC: [0x7099], NFD: [0x7099], NFKC: [0x7099], NFKD: [0x7099] },
+{ source: [0xF9FC], NFC: [0x8B58], NFD: [0x8B58], NFKC: [0x8B58], NFKD: [0x8B58] },
+{ source: [0xF9FD], NFC: [0x4EC0], NFD: [0x4EC0], NFKC: [0x4EC0], NFKD: [0x4EC0] },
+{ source: [0xF9FE], NFC: [0x8336], NFD: [0x8336], NFKC: [0x8336], NFKD: [0x8336] },
+{ source: [0xF9FF], NFC: [0x523A], NFD: [0x523A], NFKC: [0x523A], NFKD: [0x523A] },
+{ source: [0xFA00], NFC: [0x5207], NFD: [0x5207], NFKC: [0x5207], NFKD: [0x5207] },
+{ source: [0xFA01], NFC: [0x5EA6], NFD: [0x5EA6], NFKC: [0x5EA6], NFKD: [0x5EA6] },
+{ source: [0xFA02], NFC: [0x62D3], NFD: [0x62D3], NFKC: [0x62D3], NFKD: [0x62D3] },
+{ source: [0xFA03], NFC: [0x7CD6], NFD: [0x7CD6], NFKC: [0x7CD6], NFKD: [0x7CD6] },
+{ source: [0xFA04], NFC: [0x5B85], NFD: [0x5B85], NFKC: [0x5B85], NFKD: [0x5B85] },
+{ source: [0xFA05], NFC: [0x6D1E], NFD: [0x6D1E], NFKC: [0x6D1E], NFKD: [0x6D1E] },
+{ source: [0xFA06], NFC: [0x66B4], NFD: [0x66B4], NFKC: [0x66B4], NFKD: [0x66B4] },
+{ source: [0xFA07], NFC: [0x8F3B], NFD: [0x8F3B], NFKC: [0x8F3B], NFKD: [0x8F3B] },
+{ source: [0xFA08], NFC: [0x884C], NFD: [0x884C], NFKC: [0x884C], NFKD: [0x884C] },
+{ source: [0xFA09], NFC: [0x964D], NFD: [0x964D], NFKC: [0x964D], NFKD: [0x964D] },
+{ source: [0xFA0A], NFC: [0x898B], NFD: [0x898B], NFKC: [0x898B], NFKD: [0x898B] },
+{ source: [0xFA0B], NFC: [0x5ED3], NFD: [0x5ED3], NFKC: [0x5ED3], NFKD: [0x5ED3] },
+{ source: [0xFA0C], NFC: [0x5140], NFD: [0x5140], NFKC: [0x5140], NFKD: [0x5140] },
+{ source: [0xFA0D], NFC: [0x55C0], NFD: [0x55C0], NFKC: [0x55C0], NFKD: [0x55C0] },
+{ source: [0xFA10], NFC: [0x585A], NFD: [0x585A], NFKC: [0x585A], NFKD: [0x585A] },
+{ source: [0xFA12], NFC: [0x6674], NFD: [0x6674], NFKC: [0x6674], NFKD: [0x6674] },
+{ source: [0xFA15], NFC: [0x51DE], NFD: [0x51DE], NFKC: [0x51DE], NFKD: [0x51DE] },
+{ source: [0xFA16], NFC: [0x732A], NFD: [0x732A], NFKC: [0x732A], NFKD: [0x732A] },
+{ source: [0xFA17], NFC: [0x76CA], NFD: [0x76CA], NFKC: [0x76CA], NFKD: [0x76CA] },
+{ source: [0xFA18], NFC: [0x793C], NFD: [0x793C], NFKC: [0x793C], NFKD: [0x793C] },
+{ source: [0xFA19], NFC: [0x795E], NFD: [0x795E], NFKC: [0x795E], NFKD: [0x795E] },
+{ source: [0xFA1A], NFC: [0x7965], NFD: [0x7965], NFKC: [0x7965], NFKD: [0x7965] },
+{ source: [0xFA1B], NFC: [0x798F], NFD: [0x798F], NFKC: [0x798F], NFKD: [0x798F] },
+{ source: [0xFA1C], NFC: [0x9756], NFD: [0x9756], NFKC: [0x9756], NFKD: [0x9756] },
+{ source: [0xFA1D], NFC: [0x7CBE], NFD: [0x7CBE], NFKC: [0x7CBE], NFKD: [0x7CBE] },
+{ source: [0xFA1E], NFC: [0x7FBD], NFD: [0x7FBD], NFKC: [0x7FBD], NFKD: [0x7FBD] },
+{ source: [0xFA20], NFC: [0x8612], NFD: [0x8612], NFKC: [0x8612], NFKD: [0x8612] },
+{ source: [0xFA22], NFC: [0x8AF8], NFD: [0x8AF8], NFKC: [0x8AF8], NFKD: [0x8AF8] },
+{ source: [0xFA25], NFC: [0x9038], NFD: [0x9038], NFKC: [0x9038], NFKD: [0x9038] },
+{ source: [0xFA26], NFC: [0x90FD], NFD: [0x90FD], NFKC: [0x90FD], NFKD: [0x90FD] },
+{ source: [0xFA2A], NFC: [0x98EF], NFD: [0x98EF], NFKC: [0x98EF], NFKD: [0x98EF] },
+{ source: [0xFA2B], NFC: [0x98FC], NFD: [0x98FC], NFKC: [0x98FC], NFKD: [0x98FC] },
+{ source: [0xFA2C], NFC: [0x9928], NFD: [0x9928], NFKC: [0x9928], NFKD: [0x9928] },
+{ source: [0xFA2D], NFC: [0x9DB4], NFD: [0x9DB4], NFKC: [0x9DB4], NFKD: [0x9DB4] },
+{ source: [0xFA2E], NFC: [0x90DE], NFD: [0x90DE], NFKC: [0x90DE], NFKD: [0x90DE] },
+{ source: [0xFA2F], NFC: [0x96B7], NFD: [0x96B7], NFKC: [0x96B7], NFKD: [0x96B7] },
+{ source: [0xFA30], NFC: [0x4FAE], NFD: [0x4FAE], NFKC: [0x4FAE], NFKD: [0x4FAE] },
+{ source: [0xFA31], NFC: [0x50E7], NFD: [0x50E7], NFKC: [0x50E7], NFKD: [0x50E7] },
+{ source: [0xFA32], NFC: [0x514D], NFD: [0x514D], NFKC: [0x514D], NFKD: [0x514D] },
+{ source: [0xFA33], NFC: [0x52C9], NFD: [0x52C9], NFKC: [0x52C9], NFKD: [0x52C9] },
+{ source: [0xFA34], NFC: [0x52E4], NFD: [0x52E4], NFKC: [0x52E4], NFKD: [0x52E4] },
+{ source: [0xFA35], NFC: [0x5351], NFD: [0x5351], NFKC: [0x5351], NFKD: [0x5351] },
+{ source: [0xFA36], NFC: [0x559D], NFD: [0x559D], NFKC: [0x559D], NFKD: [0x559D] },
+{ source: [0xFA37], NFC: [0x5606], NFD: [0x5606], NFKC: [0x5606], NFKD: [0x5606] },
+{ source: [0xFA38], NFC: [0x5668], NFD: [0x5668], NFKC: [0x5668], NFKD: [0x5668] },
+{ source: [0xFA39], NFC: [0x5840], NFD: [0x5840], NFKC: [0x5840], NFKD: [0x5840] },
+{ source: [0xFA3A], NFC: [0x58A8], NFD: [0x58A8], NFKC: [0x58A8], NFKD: [0x58A8] },
+{ source: [0xFA3B], NFC: [0x5C64], NFD: [0x5C64], NFKC: [0x5C64], NFKD: [0x5C64] },
+{ source: [0xFA3C], NFC: [0x5C6E], NFD: [0x5C6E], NFKC: [0x5C6E], NFKD: [0x5C6E] },
+{ source: [0xFA3D], NFC: [0x6094], NFD: [0x6094], NFKC: [0x6094], NFKD: [0x6094] },
+{ source: [0xFA3E], NFC: [0x6168], NFD: [0x6168], NFKC: [0x6168], NFKD: [0x6168] },
+{ source: [0xFA3F], NFC: [0x618E], NFD: [0x618E], NFKC: [0x618E], NFKD: [0x618E] },
+{ source: [0xFA40], NFC: [0x61F2], NFD: [0x61F2], NFKC: [0x61F2], NFKD: [0x61F2] },
+{ source: [0xFA41], NFC: [0x654F], NFD: [0x654F], NFKC: [0x654F], NFKD: [0x654F] },
+{ source: [0xFA42], NFC: [0x65E2], NFD: [0x65E2], NFKC: [0x65E2], NFKD: [0x65E2] },
+{ source: [0xFA43], NFC: [0x6691], NFD: [0x6691], NFKC: [0x6691], NFKD: [0x6691] },
+{ source: [0xFA44], NFC: [0x6885], NFD: [0x6885], NFKC: [0x6885], NFKD: [0x6885] },
+{ source: [0xFA45], NFC: [0x6D77], NFD: [0x6D77], NFKC: [0x6D77], NFKD: [0x6D77] },
+{ source: [0xFA46], NFC: [0x6E1A], NFD: [0x6E1A], NFKC: [0x6E1A], NFKD: [0x6E1A] },
+{ source: [0xFA47], NFC: [0x6F22], NFD: [0x6F22], NFKC: [0x6F22], NFKD: [0x6F22] },
+{ source: [0xFA48], NFC: [0x716E], NFD: [0x716E], NFKC: [0x716E], NFKD: [0x716E] },
+{ source: [0xFA49], NFC: [0x722B], NFD: [0x722B], NFKC: [0x722B], NFKD: [0x722B] },
+{ source: [0xFA4A], NFC: [0x7422], NFD: [0x7422], NFKC: [0x7422], NFKD: [0x7422] },
+{ source: [0xFA4B], NFC: [0x7891], NFD: [0x7891], NFKC: [0x7891], NFKD: [0x7891] },
+{ source: [0xFA4C], NFC: [0x793E], NFD: [0x793E], NFKC: [0x793E], NFKD: [0x793E] },
+{ source: [0xFA4D], NFC: [0x7949], NFD: [0x7949], NFKC: [0x7949], NFKD: [0x7949] },
+{ source: [0xFA4E], NFC: [0x7948], NFD: [0x7948], NFKC: [0x7948], NFKD: [0x7948] },
+{ source: [0xFA4F], NFC: [0x7950], NFD: [0x7950], NFKC: [0x7950], NFKD: [0x7950] },
+{ source: [0xFA50], NFC: [0x7956], NFD: [0x7956], NFKC: [0x7956], NFKD: [0x7956] },
+{ source: [0xFA51], NFC: [0x795D], NFD: [0x795D], NFKC: [0x795D], NFKD: [0x795D] },
+{ source: [0xFA52], NFC: [0x798D], NFD: [0x798D], NFKC: [0x798D], NFKD: [0x798D] },
+{ source: [0xFA53], NFC: [0x798E], NFD: [0x798E], NFKC: [0x798E], NFKD: [0x798E] },
+{ source: [0xFA54], NFC: [0x7A40], NFD: [0x7A40], NFKC: [0x7A40], NFKD: [0x7A40] },
+{ source: [0xFA55], NFC: [0x7A81], NFD: [0x7A81], NFKC: [0x7A81], NFKD: [0x7A81] },
+{ source: [0xFA56], NFC: [0x7BC0], NFD: [0x7BC0], NFKC: [0x7BC0], NFKD: [0x7BC0] },
+{ source: [0xFA57], NFC: [0x7DF4], NFD: [0x7DF4], NFKC: [0x7DF4], NFKD: [0x7DF4] },
+{ source: [0xFA58], NFC: [0x7E09], NFD: [0x7E09], NFKC: [0x7E09], NFKD: [0x7E09] },
+{ source: [0xFA59], NFC: [0x7E41], NFD: [0x7E41], NFKC: [0x7E41], NFKD: [0x7E41] },
+{ source: [0xFA5A], NFC: [0x7F72], NFD: [0x7F72], NFKC: [0x7F72], NFKD: [0x7F72] },
+{ source: [0xFA5B], NFC: [0x8005], NFD: [0x8005], NFKC: [0x8005], NFKD: [0x8005] },
+{ source: [0xFA5C], NFC: [0x81ED], NFD: [0x81ED], NFKC: [0x81ED], NFKD: [0x81ED] },
+{ source: [0xFA5D], NFC: [0x8279], NFD: [0x8279], NFKC: [0x8279], NFKD: [0x8279] },
+{ source: [0xFA5E], NFC: [0x8279], NFD: [0x8279], NFKC: [0x8279], NFKD: [0x8279] },
+{ source: [0xFA5F], NFC: [0x8457], NFD: [0x8457], NFKC: [0x8457], NFKD: [0x8457] },
+{ source: [0xFA60], NFC: [0x8910], NFD: [0x8910], NFKC: [0x8910], NFKD: [0x8910] },
+{ source: [0xFA61], NFC: [0x8996], NFD: [0x8996], NFKC: [0x8996], NFKD: [0x8996] },
+{ source: [0xFA62], NFC: [0x8B01], NFD: [0x8B01], NFKC: [0x8B01], NFKD: [0x8B01] },
+{ source: [0xFA63], NFC: [0x8B39], NFD: [0x8B39], NFKC: [0x8B39], NFKD: [0x8B39] },
+{ source: [0xFA64], NFC: [0x8CD3], NFD: [0x8CD3], NFKC: [0x8CD3], NFKD: [0x8CD3] },
+{ source: [0xFA65], NFC: [0x8D08], NFD: [0x8D08], NFKC: [0x8D08], NFKD: [0x8D08] },
+{ source: [0xFA66], NFC: [0x8FB6], NFD: [0x8FB6], NFKC: [0x8FB6], NFKD: [0x8FB6] },
+{ source: [0xFA67], NFC: [0x9038], NFD: [0x9038], NFKC: [0x9038], NFKD: [0x9038] },
+{ source: [0xFA68], NFC: [0x96E3], NFD: [0x96E3], NFKC: [0x96E3], NFKD: [0x96E3] },
+{ source: [0xFA69], NFC: [0x97FF], NFD: [0x97FF], NFKC: [0x97FF], NFKD: [0x97FF] },
+{ source: [0xFA6A], NFC: [0x983B], NFD: [0x983B], NFKC: [0x983B], NFKD: [0x983B] },
+{ source: [0xFA6B], NFC: [0x6075], NFD: [0x6075], NFKC: [0x6075], NFKD: [0x6075] },
+{ source: [0xFA6C], NFC: [0x242EE], NFD: [0x242EE], NFKC: [0x242EE], NFKD: [0x242EE] },
+{ source: [0xFA6D], NFC: [0x8218], NFD: [0x8218], NFKC: [0x8218], NFKD: [0x8218] },
+{ source: [0xFA70], NFC: [0x4E26], NFD: [0x4E26], NFKC: [0x4E26], NFKD: [0x4E26] },
+{ source: [0xFA71], NFC: [0x51B5], NFD: [0x51B5], NFKC: [0x51B5], NFKD: [0x51B5] },
+{ source: [0xFA72], NFC: [0x5168], NFD: [0x5168], NFKC: [0x5168], NFKD: [0x5168] },
+{ source: [0xFA73], NFC: [0x4F80], NFD: [0x4F80], NFKC: [0x4F80], NFKD: [0x4F80] },
+{ source: [0xFA74], NFC: [0x5145], NFD: [0x5145], NFKC: [0x5145], NFKD: [0x5145] },
+{ source: [0xFA75], NFC: [0x5180], NFD: [0x5180], NFKC: [0x5180], NFKD: [0x5180] },
+{ source: [0xFA76], NFC: [0x52C7], NFD: [0x52C7], NFKC: [0x52C7], NFKD: [0x52C7] },
+{ source: [0xFA77], NFC: [0x52FA], NFD: [0x52FA], NFKC: [0x52FA], NFKD: [0x52FA] },
+{ source: [0xFA78], NFC: [0x559D], NFD: [0x559D], NFKC: [0x559D], NFKD: [0x559D] },
+{ source: [0xFA79], NFC: [0x5555], NFD: [0x5555], NFKC: [0x5555], NFKD: [0x5555] },
+{ source: [0xFA7A], NFC: [0x5599], NFD: [0x5599], NFKC: [0x5599], NFKD: [0x5599] },
+{ source: [0xFA7B], NFC: [0x55E2], NFD: [0x55E2], NFKC: [0x55E2], NFKD: [0x55E2] },
+{ source: [0xFA7C], NFC: [0x585A], NFD: [0x585A], NFKC: [0x585A], NFKD: [0x585A] },
+{ source: [0xFA7D], NFC: [0x58B3], NFD: [0x58B3], NFKC: [0x58B3], NFKD: [0x58B3] },
+{ source: [0xFA7E], NFC: [0x5944], NFD: [0x5944], NFKC: [0x5944], NFKD: [0x5944] },
+{ source: [0xFA7F], NFC: [0x5954], NFD: [0x5954], NFKC: [0x5954], NFKD: [0x5954] },
+{ source: [0xFA80], NFC: [0x5A62], NFD: [0x5A62], NFKC: [0x5A62], NFKD: [0x5A62] },
+{ source: [0xFA81], NFC: [0x5B28], NFD: [0x5B28], NFKC: [0x5B28], NFKD: [0x5B28] },
+{ source: [0xFA82], NFC: [0x5ED2], NFD: [0x5ED2], NFKC: [0x5ED2], NFKD: [0x5ED2] },
+{ source: [0xFA83], NFC: [0x5ED9], NFD: [0x5ED9], NFKC: [0x5ED9], NFKD: [0x5ED9] },
+{ source: [0xFA84], NFC: [0x5F69], NFD: [0x5F69], NFKC: [0x5F69], NFKD: [0x5F69] },
+{ source: [0xFA85], NFC: [0x5FAD], NFD: [0x5FAD], NFKC: [0x5FAD], NFKD: [0x5FAD] },
+{ source: [0xFA86], NFC: [0x60D8], NFD: [0x60D8], NFKC: [0x60D8], NFKD: [0x60D8] },
+{ source: [0xFA87], NFC: [0x614E], NFD: [0x614E], NFKC: [0x614E], NFKD: [0x614E] },
+{ source: [0xFA88], NFC: [0x6108], NFD: [0x6108], NFKC: [0x6108], NFKD: [0x6108] },
+{ source: [0xFA89], NFC: [0x618E], NFD: [0x618E], NFKC: [0x618E], NFKD: [0x618E] },
+{ source: [0xFA8A], NFC: [0x6160], NFD: [0x6160], NFKC: [0x6160], NFKD: [0x6160] },
+{ source: [0xFA8B], NFC: [0x61F2], NFD: [0x61F2], NFKC: [0x61F2], NFKD: [0x61F2] },
+{ source: [0xFA8C], NFC: [0x6234], NFD: [0x6234], NFKC: [0x6234], NFKD: [0x6234] },
+{ source: [0xFA8D], NFC: [0x63C4], NFD: [0x63C4], NFKC: [0x63C4], NFKD: [0x63C4] },
+{ source: [0xFA8E], NFC: [0x641C], NFD: [0x641C], NFKC: [0x641C], NFKD: [0x641C] },
+{ source: [0xFA8F], NFC: [0x6452], NFD: [0x6452], NFKC: [0x6452], NFKD: [0x6452] },
+{ source: [0xFA90], NFC: [0x6556], NFD: [0x6556], NFKC: [0x6556], NFKD: [0x6556] },
+{ source: [0xFA91], NFC: [0x6674], NFD: [0x6674], NFKC: [0x6674], NFKD: [0x6674] },
+{ source: [0xFA92], NFC: [0x6717], NFD: [0x6717], NFKC: [0x6717], NFKD: [0x6717] },
+{ source: [0xFA93], NFC: [0x671B], NFD: [0x671B], NFKC: [0x671B], NFKD: [0x671B] },
+{ source: [0xFA94], NFC: [0x6756], NFD: [0x6756], NFKC: [0x6756], NFKD: [0x6756] },
+{ source: [0xFA95], NFC: [0x6B79], NFD: [0x6B79], NFKC: [0x6B79], NFKD: [0x6B79] },
+{ source: [0xFA96], NFC: [0x6BBA], NFD: [0x6BBA], NFKC: [0x6BBA], NFKD: [0x6BBA] },
+{ source: [0xFA97], NFC: [0x6D41], NFD: [0x6D41], NFKC: [0x6D41], NFKD: [0x6D41] },
+{ source: [0xFA98], NFC: [0x6EDB], NFD: [0x6EDB], NFKC: [0x6EDB], NFKD: [0x6EDB] },
+{ source: [0xFA99], NFC: [0x6ECB], NFD: [0x6ECB], NFKC: [0x6ECB], NFKD: [0x6ECB] },
+{ source: [0xFA9A], NFC: [0x6F22], NFD: [0x6F22], NFKC: [0x6F22], NFKD: [0x6F22] },
+{ source: [0xFA9B], NFC: [0x701E], NFD: [0x701E], NFKC: [0x701E], NFKD: [0x701E] },
+{ source: [0xFA9C], NFC: [0x716E], NFD: [0x716E], NFKC: [0x716E], NFKD: [0x716E] },
+{ source: [0xFA9D], NFC: [0x77A7], NFD: [0x77A7], NFKC: [0x77A7], NFKD: [0x77A7] },
+{ source: [0xFA9E], NFC: [0x7235], NFD: [0x7235], NFKC: [0x7235], NFKD: [0x7235] },
+{ source: [0xFA9F], NFC: [0x72AF], NFD: [0x72AF], NFKC: [0x72AF], NFKD: [0x72AF] },
+{ source: [0xFAA0], NFC: [0x732A], NFD: [0x732A], NFKC: [0x732A], NFKD: [0x732A] },
+{ source: [0xFAA1], NFC: [0x7471], NFD: [0x7471], NFKC: [0x7471], NFKD: [0x7471] },
+{ source: [0xFAA2], NFC: [0x7506], NFD: [0x7506], NFKC: [0x7506], NFKD: [0x7506] },
+{ source: [0xFAA3], NFC: [0x753B], NFD: [0x753B], NFKC: [0x753B], NFKD: [0x753B] },
+{ source: [0xFAA4], NFC: [0x761D], NFD: [0x761D], NFKC: [0x761D], NFKD: [0x761D] },
+{ source: [0xFAA5], NFC: [0x761F], NFD: [0x761F], NFKC: [0x761F], NFKD: [0x761F] },
+{ source: [0xFAA6], NFC: [0x76CA], NFD: [0x76CA], NFKC: [0x76CA], NFKD: [0x76CA] },
+{ source: [0xFAA7], NFC: [0x76DB], NFD: [0x76DB], NFKC: [0x76DB], NFKD: [0x76DB] },
+{ source: [0xFAA8], NFC: [0x76F4], NFD: [0x76F4], NFKC: [0x76F4], NFKD: [0x76F4] },
+{ source: [0xFAA9], NFC: [0x774A], NFD: [0x774A], NFKC: [0x774A], NFKD: [0x774A] },
+{ source: [0xFAAA], NFC: [0x7740], NFD: [0x7740], NFKC: [0x7740], NFKD: [0x7740] },
+{ source: [0xFAAB], NFC: [0x78CC], NFD: [0x78CC], NFKC: [0x78CC], NFKD: [0x78CC] },
+{ source: [0xFAAC], NFC: [0x7AB1], NFD: [0x7AB1], NFKC: [0x7AB1], NFKD: [0x7AB1] },
+{ source: [0xFAAD], NFC: [0x7BC0], NFD: [0x7BC0], NFKC: [0x7BC0], NFKD: [0x7BC0] },
+{ source: [0xFAAE], NFC: [0x7C7B], NFD: [0x7C7B], NFKC: [0x7C7B], NFKD: [0x7C7B] },
+{ source: [0xFAAF], NFC: [0x7D5B], NFD: [0x7D5B], NFKC: [0x7D5B], NFKD: [0x7D5B] },
+{ source: [0xFAB0], NFC: [0x7DF4], NFD: [0x7DF4], NFKC: [0x7DF4], NFKD: [0x7DF4] },
+{ source: [0xFAB1], NFC: [0x7F3E], NFD: [0x7F3E], NFKC: [0x7F3E], NFKD: [0x7F3E] },
+{ source: [0xFAB2], NFC: [0x8005], NFD: [0x8005], NFKC: [0x8005], NFKD: [0x8005] },
+{ source: [0xFAB3], NFC: [0x8352], NFD: [0x8352], NFKC: [0x8352], NFKD: [0x8352] },
+{ source: [0xFAB4], NFC: [0x83EF], NFD: [0x83EF], NFKC: [0x83EF], NFKD: [0x83EF] },
+{ source: [0xFAB5], NFC: [0x8779], NFD: [0x8779], NFKC: [0x8779], NFKD: [0x8779] },
+{ source: [0xFAB6], NFC: [0x8941], NFD: [0x8941], NFKC: [0x8941], NFKD: [0x8941] },
+{ source: [0xFAB7], NFC: [0x8986], NFD: [0x8986], NFKC: [0x8986], NFKD: [0x8986] },
+{ source: [0xFAB8], NFC: [0x8996], NFD: [0x8996], NFKC: [0x8996], NFKD: [0x8996] },
+{ source: [0xFAB9], NFC: [0x8ABF], NFD: [0x8ABF], NFKC: [0x8ABF], NFKD: [0x8ABF] },
+{ source: [0xFABA], NFC: [0x8AF8], NFD: [0x8AF8], NFKC: [0x8AF8], NFKD: [0x8AF8] },
+{ source: [0xFABB], NFC: [0x8ACB], NFD: [0x8ACB], NFKC: [0x8ACB], NFKD: [0x8ACB] },
+{ source: [0xFABC], NFC: [0x8B01], NFD: [0x8B01], NFKC: [0x8B01], NFKD: [0x8B01] },
+{ source: [0xFABD], NFC: [0x8AFE], NFD: [0x8AFE], NFKC: [0x8AFE], NFKD: [0x8AFE] },
+{ source: [0xFABE], NFC: [0x8AED], NFD: [0x8AED], NFKC: [0x8AED], NFKD: [0x8AED] },
+{ source: [0xFABF], NFC: [0x8B39], NFD: [0x8B39], NFKC: [0x8B39], NFKD: [0x8B39] },
+{ source: [0xFAC0], NFC: [0x8B8A], NFD: [0x8B8A], NFKC: [0x8B8A], NFKD: [0x8B8A] },
+{ source: [0xFAC1], NFC: [0x8D08], NFD: [0x8D08], NFKC: [0x8D08], NFKD: [0x8D08] },
+{ source: [0xFAC2], NFC: [0x8F38], NFD: [0x8F38], NFKC: [0x8F38], NFKD: [0x8F38] },
+{ source: [0xFAC3], NFC: [0x9072], NFD: [0x9072], NFKC: [0x9072], NFKD: [0x9072] },
+{ source: [0xFAC4], NFC: [0x9199], NFD: [0x9199], NFKC: [0x9199], NFKD: [0x9199] },
+{ source: [0xFAC5], NFC: [0x9276], NFD: [0x9276], NFKC: [0x9276], NFKD: [0x9276] },
+{ source: [0xFAC6], NFC: [0x967C], NFD: [0x967C], NFKC: [0x967C], NFKD: [0x967C] },
+{ source: [0xFAC7], NFC: [0x96E3], NFD: [0x96E3], NFKC: [0x96E3], NFKD: [0x96E3] },
+{ source: [0xFAC8], NFC: [0x9756], NFD: [0x9756], NFKC: [0x9756], NFKD: [0x9756] },
+{ source: [0xFAC9], NFC: [0x97DB], NFD: [0x97DB], NFKC: [0x97DB], NFKD: [0x97DB] },
+{ source: [0xFACA], NFC: [0x97FF], NFD: [0x97FF], NFKC: [0x97FF], NFKD: [0x97FF] },
+{ source: [0xFACB], NFC: [0x980B], NFD: [0x980B], NFKC: [0x980B], NFKD: [0x980B] },
+{ source: [0xFACC], NFC: [0x983B], NFD: [0x983B], NFKC: [0x983B], NFKD: [0x983B] },
+{ source: [0xFACD], NFC: [0x9B12], NFD: [0x9B12], NFKC: [0x9B12], NFKD: [0x9B12] },
+{ source: [0xFACE], NFC: [0x9F9C], NFD: [0x9F9C], NFKC: [0x9F9C], NFKD: [0x9F9C] },
+{ source: [0xFACF], NFC: [0x2284A], NFD: [0x2284A], NFKC: [0x2284A], NFKD: [0x2284A] },
+{ source: [0xFAD0], NFC: [0x22844], NFD: [0x22844], NFKC: [0x22844], NFKD: [0x22844] },
+{ source: [0xFAD1], NFC: [0x233D5], NFD: [0x233D5], NFKC: [0x233D5], NFKD: [0x233D5] },
+{ source: [0xFAD2], NFC: [0x3B9D], NFD: [0x3B9D], NFKC: [0x3B9D], NFKD: [0x3B9D] },
+{ source: [0xFAD3], NFC: [0x4018], NFD: [0x4018], NFKC: [0x4018], NFKD: [0x4018] },
+{ source: [0xFAD4], NFC: [0x4039], NFD: [0x4039], NFKC: [0x4039], NFKD: [0x4039] },
+{ source: [0xFAD5], NFC: [0x25249], NFD: [0x25249], NFKC: [0x25249], NFKD: [0x25249] },
+{ source: [0xFAD6], NFC: [0x25CD0], NFD: [0x25CD0], NFKC: [0x25CD0], NFKD: [0x25CD0] },
+{ source: [0xFAD7], NFC: [0x27ED3], NFD: [0x27ED3], NFKC: [0x27ED3], NFKD: [0x27ED3] },
+{ source: [0xFAD8], NFC: [0x9F43], NFD: [0x9F43], NFKC: [0x9F43], NFKD: [0x9F43] },
+{ source: [0xFAD9], NFC: [0x9F8E], NFD: [0x9F8E], NFKC: [0x9F8E], NFKD: [0x9F8E] },
+{ source: [0xFB00], NFC: [0xFB00], NFD: [0xFB00], NFKC: [0x0066, 0x0066], NFKD: [0x0066, 0x0066] },
+{ source: [0xFB01], NFC: [0xFB01], NFD: [0xFB01], NFKC: [0x0066, 0x0069], NFKD: [0x0066, 0x0069] },
+{ source: [0xFB02], NFC: [0xFB02], NFD: [0xFB02], NFKC: [0x0066, 0x006C], NFKD: [0x0066, 0x006C] },
+{ source: [0xFB03], NFC: [0xFB03], NFD: [0xFB03], NFKC: [0x0066, 0x0066, 0x0069], NFKD: [0x0066, 0x0066, 0x0069] },
+{ source: [0xFB04], NFC: [0xFB04], NFD: [0xFB04], NFKC: [0x0066, 0x0066, 0x006C], NFKD: [0x0066, 0x0066, 0x006C] },
+{ source: [0xFB05], NFC: [0xFB05], NFD: [0xFB05], NFKC: [0x0073, 0x0074], NFKD: [0x0073, 0x0074] },
+{ source: [0xFB06], NFC: [0xFB06], NFD: [0xFB06], NFKC: [0x0073, 0x0074], NFKD: [0x0073, 0x0074] },
+{ source: [0xFB13], NFC: [0xFB13], NFD: [0xFB13], NFKC: [0x0574, 0x0576], NFKD: [0x0574, 0x0576] },
+{ source: [0xFB14], NFC: [0xFB14], NFD: [0xFB14], NFKC: [0x0574, 0x0565], NFKD: [0x0574, 0x0565] },
+{ source: [0xFB15], NFC: [0xFB15], NFD: [0xFB15], NFKC: [0x0574, 0x056B], NFKD: [0x0574, 0x056B] },
+{ source: [0xFB16], NFC: [0xFB16], NFD: [0xFB16], NFKC: [0x057E, 0x0576], NFKD: [0x057E, 0x0576] },
+{ source: [0xFB17], NFC: [0xFB17], NFD: [0xFB17], NFKC: [0x0574, 0x056D], NFKD: [0x0574, 0x056D] },
+{ source: [0xFB1D], NFC: [0x05D9, 0x05B4], NFD: [0x05D9, 0x05B4], NFKC: [0x05D9, 0x05B4], NFKD: [0x05D9, 0x05B4] },
+{ source: [0xFB1F], NFC: [0x05F2, 0x05B7], NFD: [0x05F2, 0x05B7], NFKC: [0x05F2, 0x05B7], NFKD: [0x05F2, 0x05B7] },
+{ source: [0xFB20], NFC: [0xFB20], NFD: [0xFB20], NFKC: [0x05E2], NFKD: [0x05E2] },
+{ source: [0xFB21], NFC: [0xFB21], NFD: [0xFB21], NFKC: [0x05D0], NFKD: [0x05D0] },
+{ source: [0xFB22], NFC: [0xFB22], NFD: [0xFB22], NFKC: [0x05D3], NFKD: [0x05D3] },
+{ source: [0xFB23], NFC: [0xFB23], NFD: [0xFB23], NFKC: [0x05D4], NFKD: [0x05D4] },
+{ source: [0xFB24], NFC: [0xFB24], NFD: [0xFB24], NFKC: [0x05DB], NFKD: [0x05DB] },
+{ source: [0xFB25], NFC: [0xFB25], NFD: [0xFB25], NFKC: [0x05DC], NFKD: [0x05DC] },
+{ source: [0xFB26], NFC: [0xFB26], NFD: [0xFB26], NFKC: [0x05DD], NFKD: [0x05DD] },
+{ source: [0xFB27], NFC: [0xFB27], NFD: [0xFB27], NFKC: [0x05E8], NFKD: [0x05E8] },
+{ source: [0xFB28], NFC: [0xFB28], NFD: [0xFB28], NFKC: [0x05EA], NFKD: [0x05EA] },
+{ source: [0xFB29], NFC: [0xFB29], NFD: [0xFB29], NFKC: [0x002B], NFKD: [0x002B] },
+{ source: [0xFB2A], NFC: [0x05E9, 0x05C1], NFD: [0x05E9, 0x05C1], NFKC: [0x05E9, 0x05C1], NFKD: [0x05E9, 0x05C1] },
+{ source: [0xFB2B], NFC: [0x05E9, 0x05C2], NFD: [0x05E9, 0x05C2], NFKC: [0x05E9, 0x05C2], NFKD: [0x05E9, 0x05C2] },
+{ source: [0xFB2C], NFC: [0x05E9, 0x05BC, 0x05C1], NFD: [0x05E9, 0x05BC, 0x05C1], NFKC: [0x05E9, 0x05BC, 0x05C1], NFKD: [0x05E9, 0x05BC, 0x05C1] },
+{ source: [0xFB2D], NFC: [0x05E9, 0x05BC, 0x05C2], NFD: [0x05E9, 0x05BC, 0x05C2], NFKC: [0x05E9, 0x05BC, 0x05C2], NFKD: [0x05E9, 0x05BC, 0x05C2] },
+{ source: [0xFB2E], NFC: [0x05D0, 0x05B7], NFD: [0x05D0, 0x05B7], NFKC: [0x05D0, 0x05B7], NFKD: [0x05D0, 0x05B7] },
+{ source: [0xFB2F], NFC: [0x05D0, 0x05B8], NFD: [0x05D0, 0x05B8], NFKC: [0x05D0, 0x05B8], NFKD: [0x05D0, 0x05B8] },
+{ source: [0xFB30], NFC: [0x05D0, 0x05BC], NFD: [0x05D0, 0x05BC], NFKC: [0x05D0, 0x05BC], NFKD: [0x05D0, 0x05BC] },
+{ source: [0xFB31], NFC: [0x05D1, 0x05BC], NFD: [0x05D1, 0x05BC], NFKC: [0x05D1, 0x05BC], NFKD: [0x05D1, 0x05BC] },
+{ source: [0xFB32], NFC: [0x05D2, 0x05BC], NFD: [0x05D2, 0x05BC], NFKC: [0x05D2, 0x05BC], NFKD: [0x05D2, 0x05BC] },
+{ source: [0xFB33], NFC: [0x05D3, 0x05BC], NFD: [0x05D3, 0x05BC], NFKC: [0x05D3, 0x05BC], NFKD: [0x05D3, 0x05BC] },
+{ source: [0xFB34], NFC: [0x05D4, 0x05BC], NFD: [0x05D4, 0x05BC], NFKC: [0x05D4, 0x05BC], NFKD: [0x05D4, 0x05BC] },
+{ source: [0xFB35], NFC: [0x05D5, 0x05BC], NFD: [0x05D5, 0x05BC], NFKC: [0x05D5, 0x05BC], NFKD: [0x05D5, 0x05BC] },
+{ source: [0xFB36], NFC: [0x05D6, 0x05BC], NFD: [0x05D6, 0x05BC], NFKC: [0x05D6, 0x05BC], NFKD: [0x05D6, 0x05BC] },
+{ source: [0xFB38], NFC: [0x05D8, 0x05BC], NFD: [0x05D8, 0x05BC], NFKC: [0x05D8, 0x05BC], NFKD: [0x05D8, 0x05BC] },
+{ source: [0xFB39], NFC: [0x05D9, 0x05BC], NFD: [0x05D9, 0x05BC], NFKC: [0x05D9, 0x05BC], NFKD: [0x05D9, 0x05BC] },
+{ source: [0xFB3A], NFC: [0x05DA, 0x05BC], NFD: [0x05DA, 0x05BC], NFKC: [0x05DA, 0x05BC], NFKD: [0x05DA, 0x05BC] },
+{ source: [0xFB3B], NFC: [0x05DB, 0x05BC], NFD: [0x05DB, 0x05BC], NFKC: [0x05DB, 0x05BC], NFKD: [0x05DB, 0x05BC] },
+{ source: [0xFB3C], NFC: [0x05DC, 0x05BC], NFD: [0x05DC, 0x05BC], NFKC: [0x05DC, 0x05BC], NFKD: [0x05DC, 0x05BC] },
+{ source: [0xFB3E], NFC: [0x05DE, 0x05BC], NFD: [0x05DE, 0x05BC], NFKC: [0x05DE, 0x05BC], NFKD: [0x05DE, 0x05BC] },
+{ source: [0xFB40], NFC: [0x05E0, 0x05BC], NFD: [0x05E0, 0x05BC], NFKC: [0x05E0, 0x05BC], NFKD: [0x05E0, 0x05BC] },
+{ source: [0xFB41], NFC: [0x05E1, 0x05BC], NFD: [0x05E1, 0x05BC], NFKC: [0x05E1, 0x05BC], NFKD: [0x05E1, 0x05BC] },
+{ source: [0xFB43], NFC: [0x05E3, 0x05BC], NFD: [0x05E3, 0x05BC], NFKC: [0x05E3, 0x05BC], NFKD: [0x05E3, 0x05BC] },
+{ source: [0xFB44], NFC: [0x05E4, 0x05BC], NFD: [0x05E4, 0x05BC], NFKC: [0x05E4, 0x05BC], NFKD: [0x05E4, 0x05BC] },
+{ source: [0xFB46], NFC: [0x05E6, 0x05BC], NFD: [0x05E6, 0x05BC], NFKC: [0x05E6, 0x05BC], NFKD: [0x05E6, 0x05BC] },
+{ source: [0xFB47], NFC: [0x05E7, 0x05BC], NFD: [0x05E7, 0x05BC], NFKC: [0x05E7, 0x05BC], NFKD: [0x05E7, 0x05BC] },
+{ source: [0xFB48], NFC: [0x05E8, 0x05BC], NFD: [0x05E8, 0x05BC], NFKC: [0x05E8, 0x05BC], NFKD: [0x05E8, 0x05BC] },
+{ source: [0xFB49], NFC: [0x05E9, 0x05BC], NFD: [0x05E9, 0x05BC], NFKC: [0x05E9, 0x05BC], NFKD: [0x05E9, 0x05BC] },
+{ source: [0xFB4A], NFC: [0x05EA, 0x05BC], NFD: [0x05EA, 0x05BC], NFKC: [0x05EA, 0x05BC], NFKD: [0x05EA, 0x05BC] },
+{ source: [0xFB4B], NFC: [0x05D5, 0x05B9], NFD: [0x05D5, 0x05B9], NFKC: [0x05D5, 0x05B9], NFKD: [0x05D5, 0x05B9] },
+{ source: [0xFB4C], NFC: [0x05D1, 0x05BF], NFD: [0x05D1, 0x05BF], NFKC: [0x05D1, 0x05BF], NFKD: [0x05D1, 0x05BF] },
+{ source: [0xFB4D], NFC: [0x05DB, 0x05BF], NFD: [0x05DB, 0x05BF], NFKC: [0x05DB, 0x05BF], NFKD: [0x05DB, 0x05BF] },
+{ source: [0xFB4E], NFC: [0x05E4, 0x05BF], NFD: [0x05E4, 0x05BF], NFKC: [0x05E4, 0x05BF], NFKD: [0x05E4, 0x05BF] },
+{ source: [0xFB4F], NFC: [0xFB4F], NFD: [0xFB4F], NFKC: [0x05D0, 0x05DC], NFKD: [0x05D0, 0x05DC] },
+{ source: [0xFB50], NFC: [0xFB50], NFD: [0xFB50], NFKC: [0x0671], NFKD: [0x0671] },
+{ source: [0xFB51], NFC: [0xFB51], NFD: [0xFB51], NFKC: [0x0671], NFKD: [0x0671] },
+{ source: [0xFB52], NFC: [0xFB52], NFD: [0xFB52], NFKC: [0x067B], NFKD: [0x067B] },
+{ source: [0xFB53], NFC: [0xFB53], NFD: [0xFB53], NFKC: [0x067B], NFKD: [0x067B] },
+{ source: [0xFB54], NFC: [0xFB54], NFD: [0xFB54], NFKC: [0x067B], NFKD: [0x067B] },
+{ source: [0xFB55], NFC: [0xFB55], NFD: [0xFB55], NFKC: [0x067B], NFKD: [0x067B] },
+{ source: [0xFB56], NFC: [0xFB56], NFD: [0xFB56], NFKC: [0x067E], NFKD: [0x067E] },
+{ source: [0xFB57], NFC: [0xFB57], NFD: [0xFB57], NFKC: [0x067E], NFKD: [0x067E] },
+{ source: [0xFB58], NFC: [0xFB58], NFD: [0xFB58], NFKC: [0x067E], NFKD: [0x067E] },
+{ source: [0xFB59], NFC: [0xFB59], NFD: [0xFB59], NFKC: [0x067E], NFKD: [0x067E] },
+{ source: [0xFB5A], NFC: [0xFB5A], NFD: [0xFB5A], NFKC: [0x0680], NFKD: [0x0680] },
+{ source: [0xFB5B], NFC: [0xFB5B], NFD: [0xFB5B], NFKC: [0x0680], NFKD: [0x0680] },
+{ source: [0xFB5C], NFC: [0xFB5C], NFD: [0xFB5C], NFKC: [0x0680], NFKD: [0x0680] },
+{ source: [0xFB5D], NFC: [0xFB5D], NFD: [0xFB5D], NFKC: [0x0680], NFKD: [0x0680] },
+{ source: [0xFB5E], NFC: [0xFB5E], NFD: [0xFB5E], NFKC: [0x067A], NFKD: [0x067A] },
+{ source: [0xFB5F], NFC: [0xFB5F], NFD: [0xFB5F], NFKC: [0x067A], NFKD: [0x067A] },
+{ source: [0xFB60], NFC: [0xFB60], NFD: [0xFB60], NFKC: [0x067A], NFKD: [0x067A] },
+{ source: [0xFB61], NFC: [0xFB61], NFD: [0xFB61], NFKC: [0x067A], NFKD: [0x067A] },
+{ source: [0xFB62], NFC: [0xFB62], NFD: [0xFB62], NFKC: [0x067F], NFKD: [0x067F] },
+{ source: [0xFB63], NFC: [0xFB63], NFD: [0xFB63], NFKC: [0x067F], NFKD: [0x067F] },
+{ source: [0xFB64], NFC: [0xFB64], NFD: [0xFB64], NFKC: [0x067F], NFKD: [0x067F] },
+{ source: [0xFB65], NFC: [0xFB65], NFD: [0xFB65], NFKC: [0x067F], NFKD: [0x067F] },
+{ source: [0xFB66], NFC: [0xFB66], NFD: [0xFB66], NFKC: [0x0679], NFKD: [0x0679] },
+{ source: [0xFB67], NFC: [0xFB67], NFD: [0xFB67], NFKC: [0x0679], NFKD: [0x0679] },
+{ source: [0xFB68], NFC: [0xFB68], NFD: [0xFB68], NFKC: [0x0679], NFKD: [0x0679] },
+{ source: [0xFB69], NFC: [0xFB69], NFD: [0xFB69], NFKC: [0x0679], NFKD: [0x0679] },
+{ source: [0xFB6A], NFC: [0xFB6A], NFD: [0xFB6A], NFKC: [0x06A4], NFKD: [0x06A4] },
+{ source: [0xFB6B], NFC: [0xFB6B], NFD: [0xFB6B], NFKC: [0x06A4], NFKD: [0x06A4] },
+{ source: [0xFB6C], NFC: [0xFB6C], NFD: [0xFB6C], NFKC: [0x06A4], NFKD: [0x06A4] },
+{ source: [0xFB6D], NFC: [0xFB6D], NFD: [0xFB6D], NFKC: [0x06A4], NFKD: [0x06A4] },
+{ source: [0xFB6E], NFC: [0xFB6E], NFD: [0xFB6E], NFKC: [0x06A6], NFKD: [0x06A6] },
+{ source: [0xFB6F], NFC: [0xFB6F], NFD: [0xFB6F], NFKC: [0x06A6], NFKD: [0x06A6] },
+{ source: [0xFB70], NFC: [0xFB70], NFD: [0xFB70], NFKC: [0x06A6], NFKD: [0x06A6] },
+{ source: [0xFB71], NFC: [0xFB71], NFD: [0xFB71], NFKC: [0x06A6], NFKD: [0x06A6] },
+{ source: [0xFB72], NFC: [0xFB72], NFD: [0xFB72], NFKC: [0x0684], NFKD: [0x0684] },
+{ source: [0xFB73], NFC: [0xFB73], NFD: [0xFB73], NFKC: [0x0684], NFKD: [0x0684] },
+{ source: [0xFB74], NFC: [0xFB74], NFD: [0xFB74], NFKC: [0x0684], NFKD: [0x0684] },
+{ source: [0xFB75], NFC: [0xFB75], NFD: [0xFB75], NFKC: [0x0684], NFKD: [0x0684] },
+{ source: [0xFB76], NFC: [0xFB76], NFD: [0xFB76], NFKC: [0x0683], NFKD: [0x0683] },
+{ source: [0xFB77], NFC: [0xFB77], NFD: [0xFB77], NFKC: [0x0683], NFKD: [0x0683] },
+{ source: [0xFB78], NFC: [0xFB78], NFD: [0xFB78], NFKC: [0x0683], NFKD: [0x0683] },
+{ source: [0xFB79], NFC: [0xFB79], NFD: [0xFB79], NFKC: [0x0683], NFKD: [0x0683] },
+{ source: [0xFB7A], NFC: [0xFB7A], NFD: [0xFB7A], NFKC: [0x0686], NFKD: [0x0686] },
+{ source: [0xFB7B], NFC: [0xFB7B], NFD: [0xFB7B], NFKC: [0x0686], NFKD: [0x0686] },
+{ source: [0xFB7C], NFC: [0xFB7C], NFD: [0xFB7C], NFKC: [0x0686], NFKD: [0x0686] },
+{ source: [0xFB7D], NFC: [0xFB7D], NFD: [0xFB7D], NFKC: [0x0686], NFKD: [0x0686] },
+{ source: [0xFB7E], NFC: [0xFB7E], NFD: [0xFB7E], NFKC: [0x0687], NFKD: [0x0687] },
+{ source: [0xFB7F], NFC: [0xFB7F], NFD: [0xFB7F], NFKC: [0x0687], NFKD: [0x0687] },
+{ source: [0xFB80], NFC: [0xFB80], NFD: [0xFB80], NFKC: [0x0687], NFKD: [0x0687] },
+{ source: [0xFB81], NFC: [0xFB81], NFD: [0xFB81], NFKC: [0x0687], NFKD: [0x0687] },
+{ source: [0xFB82], NFC: [0xFB82], NFD: [0xFB82], NFKC: [0x068D], NFKD: [0x068D] },
+{ source: [0xFB83], NFC: [0xFB83], NFD: [0xFB83], NFKC: [0x068D], NFKD: [0x068D] },
+{ source: [0xFB84], NFC: [0xFB84], NFD: [0xFB84], NFKC: [0x068C], NFKD: [0x068C] },
+{ source: [0xFB85], NFC: [0xFB85], NFD: [0xFB85], NFKC: [0x068C], NFKD: [0x068C] },
+{ source: [0xFB86], NFC: [0xFB86], NFD: [0xFB86], NFKC: [0x068E], NFKD: [0x068E] },
+{ source: [0xFB87], NFC: [0xFB87], NFD: [0xFB87], NFKC: [0x068E], NFKD: [0x068E] },
+{ source: [0xFB88], NFC: [0xFB88], NFD: [0xFB88], NFKC: [0x0688], NFKD: [0x0688] },
+{ source: [0xFB89], NFC: [0xFB89], NFD: [0xFB89], NFKC: [0x0688], NFKD: [0x0688] },
+{ source: [0xFB8A], NFC: [0xFB8A], NFD: [0xFB8A], NFKC: [0x0698], NFKD: [0x0698] },
+{ source: [0xFB8B], NFC: [0xFB8B], NFD: [0xFB8B], NFKC: [0x0698], NFKD: [0x0698] },
+{ source: [0xFB8C], NFC: [0xFB8C], NFD: [0xFB8C], NFKC: [0x0691], NFKD: [0x0691] },
+{ source: [0xFB8D], NFC: [0xFB8D], NFD: [0xFB8D], NFKC: [0x0691], NFKD: [0x0691] },
+{ source: [0xFB8E], NFC: [0xFB8E], NFD: [0xFB8E], NFKC: [0x06A9], NFKD: [0x06A9] },
+{ source: [0xFB8F], NFC: [0xFB8F], NFD: [0xFB8F], NFKC: [0x06A9], NFKD: [0x06A9] },
+{ source: [0xFB90], NFC: [0xFB90], NFD: [0xFB90], NFKC: [0x06A9], NFKD: [0x06A9] },
+{ source: [0xFB91], NFC: [0xFB91], NFD: [0xFB91], NFKC: [0x06A9], NFKD: [0x06A9] },
+{ source: [0xFB92], NFC: [0xFB92], NFD: [0xFB92], NFKC: [0x06AF], NFKD: [0x06AF] },
+{ source: [0xFB93], NFC: [0xFB93], NFD: [0xFB93], NFKC: [0x06AF], NFKD: [0x06AF] },
+{ source: [0xFB94], NFC: [0xFB94], NFD: [0xFB94], NFKC: [0x06AF], NFKD: [0x06AF] },
+{ source: [0xFB95], NFC: [0xFB95], NFD: [0xFB95], NFKC: [0x06AF], NFKD: [0x06AF] },
+{ source: [0xFB96], NFC: [0xFB96], NFD: [0xFB96], NFKC: [0x06B3], NFKD: [0x06B3] },
+{ source: [0xFB97], NFC: [0xFB97], NFD: [0xFB97], NFKC: [0x06B3], NFKD: [0x06B3] },
+{ source: [0xFB98], NFC: [0xFB98], NFD: [0xFB98], NFKC: [0x06B3], NFKD: [0x06B3] },
+{ source: [0xFB99], NFC: [0xFB99], NFD: [0xFB99], NFKC: [0x06B3], NFKD: [0x06B3] },
+{ source: [0xFB9A], NFC: [0xFB9A], NFD: [0xFB9A], NFKC: [0x06B1], NFKD: [0x06B1] },
+{ source: [0xFB9B], NFC: [0xFB9B], NFD: [0xFB9B], NFKC: [0x06B1], NFKD: [0x06B1] },
+{ source: [0xFB9C], NFC: [0xFB9C], NFD: [0xFB9C], NFKC: [0x06B1], NFKD: [0x06B1] },
+{ source: [0xFB9D], NFC: [0xFB9D], NFD: [0xFB9D], NFKC: [0x06B1], NFKD: [0x06B1] },
+{ source: [0xFB9E], NFC: [0xFB9E], NFD: [0xFB9E], NFKC: [0x06BA], NFKD: [0x06BA] },
+{ source: [0xFB9F], NFC: [0xFB9F], NFD: [0xFB9F], NFKC: [0x06BA], NFKD: [0x06BA] },
+{ source: [0xFBA0], NFC: [0xFBA0], NFD: [0xFBA0], NFKC: [0x06BB], NFKD: [0x06BB] },
+{ source: [0xFBA1], NFC: [0xFBA1], NFD: [0xFBA1], NFKC: [0x06BB], NFKD: [0x06BB] },
+{ source: [0xFBA2], NFC: [0xFBA2], NFD: [0xFBA2], NFKC: [0x06BB], NFKD: [0x06BB] },
+{ source: [0xFBA3], NFC: [0xFBA3], NFD: [0xFBA3], NFKC: [0x06BB], NFKD: [0x06BB] },
+{ source: [0xFBA4], NFC: [0xFBA4], NFD: [0xFBA4], NFKC: [0x06C0], NFKD: [0x06D5, 0x0654] },
+{ source: [0xFBA5], NFC: [0xFBA5], NFD: [0xFBA5], NFKC: [0x06C0], NFKD: [0x06D5, 0x0654] },
+{ source: [0xFBA6], NFC: [0xFBA6], NFD: [0xFBA6], NFKC: [0x06C1], NFKD: [0x06C1] },
+{ source: [0xFBA7], NFC: [0xFBA7], NFD: [0xFBA7], NFKC: [0x06C1], NFKD: [0x06C1] },
+{ source: [0xFBA8], NFC: [0xFBA8], NFD: [0xFBA8], NFKC: [0x06C1], NFKD: [0x06C1] },
+{ source: [0xFBA9], NFC: [0xFBA9], NFD: [0xFBA9], NFKC: [0x06C1], NFKD: [0x06C1] },
+{ source: [0xFBAA], NFC: [0xFBAA], NFD: [0xFBAA], NFKC: [0x06BE], NFKD: [0x06BE] },
+{ source: [0xFBAB], NFC: [0xFBAB], NFD: [0xFBAB], NFKC: [0x06BE], NFKD: [0x06BE] },
+{ source: [0xFBAC], NFC: [0xFBAC], NFD: [0xFBAC], NFKC: [0x06BE], NFKD: [0x06BE] },
+{ source: [0xFBAD], NFC: [0xFBAD], NFD: [0xFBAD], NFKC: [0x06BE], NFKD: [0x06BE] },
+{ source: [0xFBAE], NFC: [0xFBAE], NFD: [0xFBAE], NFKC: [0x06D2], NFKD: [0x06D2] },
+{ source: [0xFBAF], NFC: [0xFBAF], NFD: [0xFBAF], NFKC: [0x06D2], NFKD: [0x06D2] },
+{ source: [0xFBB0], NFC: [0xFBB0], NFD: [0xFBB0], NFKC: [0x06D3], NFKD: [0x06D2, 0x0654] },
+{ source: [0xFBB1], NFC: [0xFBB1], NFD: [0xFBB1], NFKC: [0x06D3], NFKD: [0x06D2, 0x0654] },
+{ source: [0xFBD3], NFC: [0xFBD3], NFD: [0xFBD3], NFKC: [0x06AD], NFKD: [0x06AD] },
+{ source: [0xFBD4], NFC: [0xFBD4], NFD: [0xFBD4], NFKC: [0x06AD], NFKD: [0x06AD] },
+{ source: [0xFBD5], NFC: [0xFBD5], NFD: [0xFBD5], NFKC: [0x06AD], NFKD: [0x06AD] },
+{ source: [0xFBD6], NFC: [0xFBD6], NFD: [0xFBD6], NFKC: [0x06AD], NFKD: [0x06AD] },
+{ source: [0xFBD7], NFC: [0xFBD7], NFD: [0xFBD7], NFKC: [0x06C7], NFKD: [0x06C7] },
+{ source: [0xFBD8], NFC: [0xFBD8], NFD: [0xFBD8], NFKC: [0x06C7], NFKD: [0x06C7] },
+{ source: [0xFBD9], NFC: [0xFBD9], NFD: [0xFBD9], NFKC: [0x06C6], NFKD: [0x06C6] },
+{ source: [0xFBDA], NFC: [0xFBDA], NFD: [0xFBDA], NFKC: [0x06C6], NFKD: [0x06C6] },
+{ source: [0xFBDB], NFC: [0xFBDB], NFD: [0xFBDB], NFKC: [0x06C8], NFKD: [0x06C8] },
+{ source: [0xFBDC], NFC: [0xFBDC], NFD: [0xFBDC], NFKC: [0x06C8], NFKD: [0x06C8] },
+{ source: [0xFBDD], NFC: [0xFBDD], NFD: [0xFBDD], NFKC: [0x06C7, 0x0674], NFKD: [0x06C7, 0x0674] },
+{ source: [0xFBDE], NFC: [0xFBDE], NFD: [0xFBDE], NFKC: [0x06CB], NFKD: [0x06CB] },
+{ source: [0xFBDF], NFC: [0xFBDF], NFD: [0xFBDF], NFKC: [0x06CB], NFKD: [0x06CB] },
+{ source: [0xFBE0], NFC: [0xFBE0], NFD: [0xFBE0], NFKC: [0x06C5], NFKD: [0x06C5] },
+{ source: [0xFBE1], NFC: [0xFBE1], NFD: [0xFBE1], NFKC: [0x06C5], NFKD: [0x06C5] },
+{ source: [0xFBE2], NFC: [0xFBE2], NFD: [0xFBE2], NFKC: [0x06C9], NFKD: [0x06C9] },
+{ source: [0xFBE3], NFC: [0xFBE3], NFD: [0xFBE3], NFKC: [0x06C9], NFKD: [0x06C9] },
+{ source: [0xFBE4], NFC: [0xFBE4], NFD: [0xFBE4], NFKC: [0x06D0], NFKD: [0x06D0] },
+{ source: [0xFBE5], NFC: [0xFBE5], NFD: [0xFBE5], NFKC: [0x06D0], NFKD: [0x06D0] },
+{ source: [0xFBE6], NFC: [0xFBE6], NFD: [0xFBE6], NFKC: [0x06D0], NFKD: [0x06D0] },
+{ source: [0xFBE7], NFC: [0xFBE7], NFD: [0xFBE7], NFKC: [0x06D0], NFKD: [0x06D0] },
+{ source: [0xFBE8], NFC: [0xFBE8], NFD: [0xFBE8], NFKC: [0x0649], NFKD: [0x0649] },
+{ source: [0xFBE9], NFC: [0xFBE9], NFD: [0xFBE9], NFKC: [0x0649], NFKD: [0x0649] },
+{ source: [0xFBEA], NFC: [0xFBEA], NFD: [0xFBEA], NFKC: [0x0626, 0x0627], NFKD: [0x064A, 0x0654, 0x0627] },
+{ source: [0xFBEB], NFC: [0xFBEB], NFD: [0xFBEB], NFKC: [0x0626, 0x0627], NFKD: [0x064A, 0x0654, 0x0627] },
+{ source: [0xFBEC], NFC: [0xFBEC], NFD: [0xFBEC], NFKC: [0x0626, 0x06D5], NFKD: [0x064A, 0x0654, 0x06D5] },
+{ source: [0xFBED], NFC: [0xFBED], NFD: [0xFBED], NFKC: [0x0626, 0x06D5], NFKD: [0x064A, 0x0654, 0x06D5] },
+{ source: [0xFBEE], NFC: [0xFBEE], NFD: [0xFBEE], NFKC: [0x0626, 0x0648], NFKD: [0x064A, 0x0654, 0x0648] },
+{ source: [0xFBEF], NFC: [0xFBEF], NFD: [0xFBEF], NFKC: [0x0626, 0x0648], NFKD: [0x064A, 0x0654, 0x0648] },
+{ source: [0xFBF0], NFC: [0xFBF0], NFD: [0xFBF0], NFKC: [0x0626, 0x06C7], NFKD: [0x064A, 0x0654, 0x06C7] },
+{ source: [0xFBF1], NFC: [0xFBF1], NFD: [0xFBF1], NFKC: [0x0626, 0x06C7], NFKD: [0x064A, 0x0654, 0x06C7] },
+{ source: [0xFBF2], NFC: [0xFBF2], NFD: [0xFBF2], NFKC: [0x0626, 0x06C6], NFKD: [0x064A, 0x0654, 0x06C6] },
+{ source: [0xFBF3], NFC: [0xFBF3], NFD: [0xFBF3], NFKC: [0x0626, 0x06C6], NFKD: [0x064A, 0x0654, 0x06C6] },
+{ source: [0xFBF4], NFC: [0xFBF4], NFD: [0xFBF4], NFKC: [0x0626, 0x06C8], NFKD: [0x064A, 0x0654, 0x06C8] },
+{ source: [0xFBF5], NFC: [0xFBF5], NFD: [0xFBF5], NFKC: [0x0626, 0x06C8], NFKD: [0x064A, 0x0654, 0x06C8] },
+{ source: [0xFBF6], NFC: [0xFBF6], NFD: [0xFBF6], NFKC: [0x0626, 0x06D0], NFKD: [0x064A, 0x0654, 0x06D0] },
+{ source: [0xFBF7], NFC: [0xFBF7], NFD: [0xFBF7], NFKC: [0x0626, 0x06D0], NFKD: [0x064A, 0x0654, 0x06D0] },
+{ source: [0xFBF8], NFC: [0xFBF8], NFD: [0xFBF8], NFKC: [0x0626, 0x06D0], NFKD: [0x064A, 0x0654, 0x06D0] },
+{ source: [0xFBF9], NFC: [0xFBF9], NFD: [0xFBF9], NFKC: [0x0626, 0x0649], NFKD: [0x064A, 0x0654, 0x0649] },
+{ source: [0xFBFA], NFC: [0xFBFA], NFD: [0xFBFA], NFKC: [0x0626, 0x0649], NFKD: [0x064A, 0x0654, 0x0649] },
+{ source: [0xFBFB], NFC: [0xFBFB], NFD: [0xFBFB], NFKC: [0x0626, 0x0649], NFKD: [0x064A, 0x0654, 0x0649] },
+{ source: [0xFBFC], NFC: [0xFBFC], NFD: [0xFBFC], NFKC: [0x06CC], NFKD: [0x06CC] },
+{ source: [0xFBFD], NFC: [0xFBFD], NFD: [0xFBFD], NFKC: [0x06CC], NFKD: [0x06CC] },
+{ source: [0xFBFE], NFC: [0xFBFE], NFD: [0xFBFE], NFKC: [0x06CC], NFKD: [0x06CC] },
+{ source: [0xFBFF], NFC: [0xFBFF], NFD: [0xFBFF], NFKC: [0x06CC], NFKD: [0x06CC] },
+{ source: [0xFC00], NFC: [0xFC00], NFD: [0xFC00], NFKC: [0x0626, 0x062C], NFKD: [0x064A, 0x0654, 0x062C] },
+{ source: [0xFC01], NFC: [0xFC01], NFD: [0xFC01], NFKC: [0x0626, 0x062D], NFKD: [0x064A, 0x0654, 0x062D] },
+{ source: [0xFC02], NFC: [0xFC02], NFD: [0xFC02], NFKC: [0x0626, 0x0645], NFKD: [0x064A, 0x0654, 0x0645] },
+{ source: [0xFC03], NFC: [0xFC03], NFD: [0xFC03], NFKC: [0x0626, 0x0649], NFKD: [0x064A, 0x0654, 0x0649] },
+{ source: [0xFC04], NFC: [0xFC04], NFD: [0xFC04], NFKC: [0x0626, 0x064A], NFKD: [0x064A, 0x0654, 0x064A] },
+{ source: [0xFC05], NFC: [0xFC05], NFD: [0xFC05], NFKC: [0x0628, 0x062C], NFKD: [0x0628, 0x062C] },
+{ source: [0xFC06], NFC: [0xFC06], NFD: [0xFC06], NFKC: [0x0628, 0x062D], NFKD: [0x0628, 0x062D] },
+{ source: [0xFC07], NFC: [0xFC07], NFD: [0xFC07], NFKC: [0x0628, 0x062E], NFKD: [0x0628, 0x062E] },
+{ source: [0xFC08], NFC: [0xFC08], NFD: [0xFC08], NFKC: [0x0628, 0x0645], NFKD: [0x0628, 0x0645] },
+{ source: [0xFC09], NFC: [0xFC09], NFD: [0xFC09], NFKC: [0x0628, 0x0649], NFKD: [0x0628, 0x0649] },
+{ source: [0xFC0A], NFC: [0xFC0A], NFD: [0xFC0A], NFKC: [0x0628, 0x064A], NFKD: [0x0628, 0x064A] },
+{ source: [0xFC0B], NFC: [0xFC0B], NFD: [0xFC0B], NFKC: [0x062A, 0x062C], NFKD: [0x062A, 0x062C] },
+{ source: [0xFC0C], NFC: [0xFC0C], NFD: [0xFC0C], NFKC: [0x062A, 0x062D], NFKD: [0x062A, 0x062D] },
+{ source: [0xFC0D], NFC: [0xFC0D], NFD: [0xFC0D], NFKC: [0x062A, 0x062E], NFKD: [0x062A, 0x062E] },
+{ source: [0xFC0E], NFC: [0xFC0E], NFD: [0xFC0E], NFKC: [0x062A, 0x0645], NFKD: [0x062A, 0x0645] },
+{ source: [0xFC0F], NFC: [0xFC0F], NFD: [0xFC0F], NFKC: [0x062A, 0x0649], NFKD: [0x062A, 0x0649] },
+{ source: [0xFC10], NFC: [0xFC10], NFD: [0xFC10], NFKC: [0x062A, 0x064A], NFKD: [0x062A, 0x064A] },
+{ source: [0xFC11], NFC: [0xFC11], NFD: [0xFC11], NFKC: [0x062B, 0x062C], NFKD: [0x062B, 0x062C] },
+{ source: [0xFC12], NFC: [0xFC12], NFD: [0xFC12], NFKC: [0x062B, 0x0645], NFKD: [0x062B, 0x0645] },
+{ source: [0xFC13], NFC: [0xFC13], NFD: [0xFC13], NFKC: [0x062B, 0x0649], NFKD: [0x062B, 0x0649] },
+{ source: [0xFC14], NFC: [0xFC14], NFD: [0xFC14], NFKC: [0x062B, 0x064A], NFKD: [0x062B, 0x064A] },
+{ source: [0xFC15], NFC: [0xFC15], NFD: [0xFC15], NFKC: [0x062C, 0x062D], NFKD: [0x062C, 0x062D] },
+{ source: [0xFC16], NFC: [0xFC16], NFD: [0xFC16], NFKC: [0x062C, 0x0645], NFKD: [0x062C, 0x0645] },
+{ source: [0xFC17], NFC: [0xFC17], NFD: [0xFC17], NFKC: [0x062D, 0x062C], NFKD: [0x062D, 0x062C] },
+{ source: [0xFC18], NFC: [0xFC18], NFD: [0xFC18], NFKC: [0x062D, 0x0645], NFKD: [0x062D, 0x0645] },
+{ source: [0xFC19], NFC: [0xFC19], NFD: [0xFC19], NFKC: [0x062E, 0x062C], NFKD: [0x062E, 0x062C] },
+{ source: [0xFC1A], NFC: [0xFC1A], NFD: [0xFC1A], NFKC: [0x062E, 0x062D], NFKD: [0x062E, 0x062D] },
+{ source: [0xFC1B], NFC: [0xFC1B], NFD: [0xFC1B], NFKC: [0x062E, 0x0645], NFKD: [0x062E, 0x0645] },
+{ source: [0xFC1C], NFC: [0xFC1C], NFD: [0xFC1C], NFKC: [0x0633, 0x062C], NFKD: [0x0633, 0x062C] },
+{ source: [0xFC1D], NFC: [0xFC1D], NFD: [0xFC1D], NFKC: [0x0633, 0x062D], NFKD: [0x0633, 0x062D] },
+{ source: [0xFC1E], NFC: [0xFC1E], NFD: [0xFC1E], NFKC: [0x0633, 0x062E], NFKD: [0x0633, 0x062E] },
+{ source: [0xFC1F], NFC: [0xFC1F], NFD: [0xFC1F], NFKC: [0x0633, 0x0645], NFKD: [0x0633, 0x0645] },
+{ source: [0xFC20], NFC: [0xFC20], NFD: [0xFC20], NFKC: [0x0635, 0x062D], NFKD: [0x0635, 0x062D] },
+{ source: [0xFC21], NFC: [0xFC21], NFD: [0xFC21], NFKC: [0x0635, 0x0645], NFKD: [0x0635, 0x0645] },
+{ source: [0xFC22], NFC: [0xFC22], NFD: [0xFC22], NFKC: [0x0636, 0x062C], NFKD: [0x0636, 0x062C] },
+{ source: [0xFC23], NFC: [0xFC23], NFD: [0xFC23], NFKC: [0x0636, 0x062D], NFKD: [0x0636, 0x062D] },
+{ source: [0xFC24], NFC: [0xFC24], NFD: [0xFC24], NFKC: [0x0636, 0x062E], NFKD: [0x0636, 0x062E] },
+{ source: [0xFC25], NFC: [0xFC25], NFD: [0xFC25], NFKC: [0x0636, 0x0645], NFKD: [0x0636, 0x0645] },
+{ source: [0xFC26], NFC: [0xFC26], NFD: [0xFC26], NFKC: [0x0637, 0x062D], NFKD: [0x0637, 0x062D] },
+{ source: [0xFC27], NFC: [0xFC27], NFD: [0xFC27], NFKC: [0x0637, 0x0645], NFKD: [0x0637, 0x0645] },
+{ source: [0xFC28], NFC: [0xFC28], NFD: [0xFC28], NFKC: [0x0638, 0x0645], NFKD: [0x0638, 0x0645] },
+{ source: [0xFC29], NFC: [0xFC29], NFD: [0xFC29], NFKC: [0x0639, 0x062C], NFKD: [0x0639, 0x062C] },
+{ source: [0xFC2A], NFC: [0xFC2A], NFD: [0xFC2A], NFKC: [0x0639, 0x0645], NFKD: [0x0639, 0x0645] },
+{ source: [0xFC2B], NFC: [0xFC2B], NFD: [0xFC2B], NFKC: [0x063A, 0x062C], NFKD: [0x063A, 0x062C] },
+{ source: [0xFC2C], NFC: [0xFC2C], NFD: [0xFC2C], NFKC: [0x063A, 0x0645], NFKD: [0x063A, 0x0645] },
+{ source: [0xFC2D], NFC: [0xFC2D], NFD: [0xFC2D], NFKC: [0x0641, 0x062C], NFKD: [0x0641, 0x062C] },
+{ source: [0xFC2E], NFC: [0xFC2E], NFD: [0xFC2E], NFKC: [0x0641, 0x062D], NFKD: [0x0641, 0x062D] },
+{ source: [0xFC2F], NFC: [0xFC2F], NFD: [0xFC2F], NFKC: [0x0641, 0x062E], NFKD: [0x0641, 0x062E] },
+{ source: [0xFC30], NFC: [0xFC30], NFD: [0xFC30], NFKC: [0x0641, 0x0645], NFKD: [0x0641, 0x0645] },
+{ source: [0xFC31], NFC: [0xFC31], NFD: [0xFC31], NFKC: [0x0641, 0x0649], NFKD: [0x0641, 0x0649] },
+{ source: [0xFC32], NFC: [0xFC32], NFD: [0xFC32], NFKC: [0x0641, 0x064A], NFKD: [0x0641, 0x064A] },
+{ source: [0xFC33], NFC: [0xFC33], NFD: [0xFC33], NFKC: [0x0642, 0x062D], NFKD: [0x0642, 0x062D] },
+{ source: [0xFC34], NFC: [0xFC34], NFD: [0xFC34], NFKC: [0x0642, 0x0645], NFKD: [0x0642, 0x0645] },
+{ source: [0xFC35], NFC: [0xFC35], NFD: [0xFC35], NFKC: [0x0642, 0x0649], NFKD: [0x0642, 0x0649] },
+{ source: [0xFC36], NFC: [0xFC36], NFD: [0xFC36], NFKC: [0x0642, 0x064A], NFKD: [0x0642, 0x064A] },
+{ source: [0xFC37], NFC: [0xFC37], NFD: [0xFC37], NFKC: [0x0643, 0x0627], NFKD: [0x0643, 0x0627] },
+{ source: [0xFC38], NFC: [0xFC38], NFD: [0xFC38], NFKC: [0x0643, 0x062C], NFKD: [0x0643, 0x062C] },
+{ source: [0xFC39], NFC: [0xFC39], NFD: [0xFC39], NFKC: [0x0643, 0x062D], NFKD: [0x0643, 0x062D] },
+{ source: [0xFC3A], NFC: [0xFC3A], NFD: [0xFC3A], NFKC: [0x0643, 0x062E], NFKD: [0x0643, 0x062E] },
+{ source: [0xFC3B], NFC: [0xFC3B], NFD: [0xFC3B], NFKC: [0x0643, 0x0644], NFKD: [0x0643, 0x0644] },
+{ source: [0xFC3C], NFC: [0xFC3C], NFD: [0xFC3C], NFKC: [0x0643, 0x0645], NFKD: [0x0643, 0x0645] },
+{ source: [0xFC3D], NFC: [0xFC3D], NFD: [0xFC3D], NFKC: [0x0643, 0x0649], NFKD: [0x0643, 0x0649] },
+{ source: [0xFC3E], NFC: [0xFC3E], NFD: [0xFC3E], NFKC: [0x0643, 0x064A], NFKD: [0x0643, 0x064A] },
+{ source: [0xFC3F], NFC: [0xFC3F], NFD: [0xFC3F], NFKC: [0x0644, 0x062C], NFKD: [0x0644, 0x062C] },
+{ source: [0xFC40], NFC: [0xFC40], NFD: [0xFC40], NFKC: [0x0644, 0x062D], NFKD: [0x0644, 0x062D] },
+{ source: [0xFC41], NFC: [0xFC41], NFD: [0xFC41], NFKC: [0x0644, 0x062E], NFKD: [0x0644, 0x062E] },
+{ source: [0xFC42], NFC: [0xFC42], NFD: [0xFC42], NFKC: [0x0644, 0x0645], NFKD: [0x0644, 0x0645] },
+{ source: [0xFC43], NFC: [0xFC43], NFD: [0xFC43], NFKC: [0x0644, 0x0649], NFKD: [0x0644, 0x0649] },
+{ source: [0xFC44], NFC: [0xFC44], NFD: [0xFC44], NFKC: [0x0644, 0x064A], NFKD: [0x0644, 0x064A] },
+{ source: [0xFC45], NFC: [0xFC45], NFD: [0xFC45], NFKC: [0x0645, 0x062C], NFKD: [0x0645, 0x062C] },
+{ source: [0xFC46], NFC: [0xFC46], NFD: [0xFC46], NFKC: [0x0645, 0x062D], NFKD: [0x0645, 0x062D] },
+{ source: [0xFC47], NFC: [0xFC47], NFD: [0xFC47], NFKC: [0x0645, 0x062E], NFKD: [0x0645, 0x062E] },
+{ source: [0xFC48], NFC: [0xFC48], NFD: [0xFC48], NFKC: [0x0645, 0x0645], NFKD: [0x0645, 0x0645] },
+{ source: [0xFC49], NFC: [0xFC49], NFD: [0xFC49], NFKC: [0x0645, 0x0649], NFKD: [0x0645, 0x0649] },
+{ source: [0xFC4A], NFC: [0xFC4A], NFD: [0xFC4A], NFKC: [0x0645, 0x064A], NFKD: [0x0645, 0x064A] },
+{ source: [0xFC4B], NFC: [0xFC4B], NFD: [0xFC4B], NFKC: [0x0646, 0x062C], NFKD: [0x0646, 0x062C] },
+{ source: [0xFC4C], NFC: [0xFC4C], NFD: [0xFC4C], NFKC: [0x0646, 0x062D], NFKD: [0x0646, 0x062D] },
+{ source: [0xFC4D], NFC: [0xFC4D], NFD: [0xFC4D], NFKC: [0x0646, 0x062E], NFKD: [0x0646, 0x062E] },
+{ source: [0xFC4E], NFC: [0xFC4E], NFD: [0xFC4E], NFKC: [0x0646, 0x0645], NFKD: [0x0646, 0x0645] },
+{ source: [0xFC4F], NFC: [0xFC4F], NFD: [0xFC4F], NFKC: [0x0646, 0x0649], NFKD: [0x0646, 0x0649] },
+{ source: [0xFC50], NFC: [0xFC50], NFD: [0xFC50], NFKC: [0x0646, 0x064A], NFKD: [0x0646, 0x064A] },
+{ source: [0xFC51], NFC: [0xFC51], NFD: [0xFC51], NFKC: [0x0647, 0x062C], NFKD: [0x0647, 0x062C] },
+{ source: [0xFC52], NFC: [0xFC52], NFD: [0xFC52], NFKC: [0x0647, 0x0645], NFKD: [0x0647, 0x0645] },
+{ source: [0xFC53], NFC: [0xFC53], NFD: [0xFC53], NFKC: [0x0647, 0x0649], NFKD: [0x0647, 0x0649] },
+{ source: [0xFC54], NFC: [0xFC54], NFD: [0xFC54], NFKC: [0x0647, 0x064A], NFKD: [0x0647, 0x064A] },
+{ source: [0xFC55], NFC: [0xFC55], NFD: [0xFC55], NFKC: [0x064A, 0x062C], NFKD: [0x064A, 0x062C] },
+{ source: [0xFC56], NFC: [0xFC56], NFD: [0xFC56], NFKC: [0x064A, 0x062D], NFKD: [0x064A, 0x062D] },
+{ source: [0xFC57], NFC: [0xFC57], NFD: [0xFC57], NFKC: [0x064A, 0x062E], NFKD: [0x064A, 0x062E] },
+{ source: [0xFC58], NFC: [0xFC58], NFD: [0xFC58], NFKC: [0x064A, 0x0645], NFKD: [0x064A, 0x0645] },
+{ source: [0xFC59], NFC: [0xFC59], NFD: [0xFC59], NFKC: [0x064A, 0x0649], NFKD: [0x064A, 0x0649] },
+{ source: [0xFC5A], NFC: [0xFC5A], NFD: [0xFC5A], NFKC: [0x064A, 0x064A], NFKD: [0x064A, 0x064A] },
+{ source: [0xFC5B], NFC: [0xFC5B], NFD: [0xFC5B], NFKC: [0x0630, 0x0670], NFKD: [0x0630, 0x0670] },
+{ source: [0xFC5C], NFC: [0xFC5C], NFD: [0xFC5C], NFKC: [0x0631, 0x0670], NFKD: [0x0631, 0x0670] },
+{ source: [0xFC5D], NFC: [0xFC5D], NFD: [0xFC5D], NFKC: [0x0649, 0x0670], NFKD: [0x0649, 0x0670] },
+{ source: [0xFC5E], NFC: [0xFC5E], NFD: [0xFC5E], NFKC: [0x0020, 0x064C, 0x0651], NFKD: [0x0020, 0x064C, 0x0651] },
+{ source: [0xFC5F], NFC: [0xFC5F], NFD: [0xFC5F], NFKC: [0x0020, 0x064D, 0x0651], NFKD: [0x0020, 0x064D, 0x0651] },
+{ source: [0xFC60], NFC: [0xFC60], NFD: [0xFC60], NFKC: [0x0020, 0x064E, 0x0651], NFKD: [0x0020, 0x064E, 0x0651] },
+{ source: [0xFC61], NFC: [0xFC61], NFD: [0xFC61], NFKC: [0x0020, 0x064F, 0x0651], NFKD: [0x0020, 0x064F, 0x0651] },
+{ source: [0xFC62], NFC: [0xFC62], NFD: [0xFC62], NFKC: [0x0020, 0x0650, 0x0651], NFKD: [0x0020, 0x0650, 0x0651] },
+{ source: [0xFC63], NFC: [0xFC63], NFD: [0xFC63], NFKC: [0x0020, 0x0651, 0x0670], NFKD: [0x0020, 0x0651, 0x0670] },
+{ source: [0xFC64], NFC: [0xFC64], NFD: [0xFC64], NFKC: [0x0626, 0x0631], NFKD: [0x064A, 0x0654, 0x0631] },
+{ source: [0xFC65], NFC: [0xFC65], NFD: [0xFC65], NFKC: [0x0626, 0x0632], NFKD: [0x064A, 0x0654, 0x0632] },
+{ source: [0xFC66], NFC: [0xFC66], NFD: [0xFC66], NFKC: [0x0626, 0x0645], NFKD: [0x064A, 0x0654, 0x0645] },
+{ source: [0xFC67], NFC: [0xFC67], NFD: [0xFC67], NFKC: [0x0626, 0x0646], NFKD: [0x064A, 0x0654, 0x0646] },
+{ source: [0xFC68], NFC: [0xFC68], NFD: [0xFC68], NFKC: [0x0626, 0x0649], NFKD: [0x064A, 0x0654, 0x0649] },
+{ source: [0xFC69], NFC: [0xFC69], NFD: [0xFC69], NFKC: [0x0626, 0x064A], NFKD: [0x064A, 0x0654, 0x064A] },
+{ source: [0xFC6A], NFC: [0xFC6A], NFD: [0xFC6A], NFKC: [0x0628, 0x0631], NFKD: [0x0628, 0x0631] },
+{ source: [0xFC6B], NFC: [0xFC6B], NFD: [0xFC6B], NFKC: [0x0628, 0x0632], NFKD: [0x0628, 0x0632] },
+{ source: [0xFC6C], NFC: [0xFC6C], NFD: [0xFC6C], NFKC: [0x0628, 0x0645], NFKD: [0x0628, 0x0645] },
+{ source: [0xFC6D], NFC: [0xFC6D], NFD: [0xFC6D], NFKC: [0x0628, 0x0646], NFKD: [0x0628, 0x0646] },
+{ source: [0xFC6E], NFC: [0xFC6E], NFD: [0xFC6E], NFKC: [0x0628, 0x0649], NFKD: [0x0628, 0x0649] },
+{ source: [0xFC6F], NFC: [0xFC6F], NFD: [0xFC6F], NFKC: [0x0628, 0x064A], NFKD: [0x0628, 0x064A] },
+{ source: [0xFC70], NFC: [0xFC70], NFD: [0xFC70], NFKC: [0x062A, 0x0631], NFKD: [0x062A, 0x0631] },
+{ source: [0xFC71], NFC: [0xFC71], NFD: [0xFC71], NFKC: [0x062A, 0x0632], NFKD: [0x062A, 0x0632] },
+{ source: [0xFC72], NFC: [0xFC72], NFD: [0xFC72], NFKC: [0x062A, 0x0645], NFKD: [0x062A, 0x0645] },
+{ source: [0xFC73], NFC: [0xFC73], NFD: [0xFC73], NFKC: [0x062A, 0x0646], NFKD: [0x062A, 0x0646] },
+{ source: [0xFC74], NFC: [0xFC74], NFD: [0xFC74], NFKC: [0x062A, 0x0649], NFKD: [0x062A, 0x0649] },
+{ source: [0xFC75], NFC: [0xFC75], NFD: [0xFC75], NFKC: [0x062A, 0x064A], NFKD: [0x062A, 0x064A] },
+{ source: [0xFC76], NFC: [0xFC76], NFD: [0xFC76], NFKC: [0x062B, 0x0631], NFKD: [0x062B, 0x0631] },
+{ source: [0xFC77], NFC: [0xFC77], NFD: [0xFC77], NFKC: [0x062B, 0x0632], NFKD: [0x062B, 0x0632] },
+{ source: [0xFC78], NFC: [0xFC78], NFD: [0xFC78], NFKC: [0x062B, 0x0645], NFKD: [0x062B, 0x0645] },
+{ source: [0xFC79], NFC: [0xFC79], NFD: [0xFC79], NFKC: [0x062B, 0x0646], NFKD: [0x062B, 0x0646] },
+{ source: [0xFC7A], NFC: [0xFC7A], NFD: [0xFC7A], NFKC: [0x062B, 0x0649], NFKD: [0x062B, 0x0649] },
+{ source: [0xFC7B], NFC: [0xFC7B], NFD: [0xFC7B], NFKC: [0x062B, 0x064A], NFKD: [0x062B, 0x064A] },
+{ source: [0xFC7C], NFC: [0xFC7C], NFD: [0xFC7C], NFKC: [0x0641, 0x0649], NFKD: [0x0641, 0x0649] },
+{ source: [0xFC7D], NFC: [0xFC7D], NFD: [0xFC7D], NFKC: [0x0641, 0x064A], NFKD: [0x0641, 0x064A] },
+{ source: [0xFC7E], NFC: [0xFC7E], NFD: [0xFC7E], NFKC: [0x0642, 0x0649], NFKD: [0x0642, 0x0649] },
+{ source: [0xFC7F], NFC: [0xFC7F], NFD: [0xFC7F], NFKC: [0x0642, 0x064A], NFKD: [0x0642, 0x064A] },
+{ source: [0xFC80], NFC: [0xFC80], NFD: [0xFC80], NFKC: [0x0643, 0x0627], NFKD: [0x0643, 0x0627] },
+{ source: [0xFC81], NFC: [0xFC81], NFD: [0xFC81], NFKC: [0x0643, 0x0644], NFKD: [0x0643, 0x0644] },
+{ source: [0xFC82], NFC: [0xFC82], NFD: [0xFC82], NFKC: [0x0643, 0x0645], NFKD: [0x0643, 0x0645] },
+{ source: [0xFC83], NFC: [0xFC83], NFD: [0xFC83], NFKC: [0x0643, 0x0649], NFKD: [0x0643, 0x0649] },
+{ source: [0xFC84], NFC: [0xFC84], NFD: [0xFC84], NFKC: [0x0643, 0x064A], NFKD: [0x0643, 0x064A] },
+{ source: [0xFC85], NFC: [0xFC85], NFD: [0xFC85], NFKC: [0x0644, 0x0645], NFKD: [0x0644, 0x0645] },
+{ source: [0xFC86], NFC: [0xFC86], NFD: [0xFC86], NFKC: [0x0644, 0x0649], NFKD: [0x0644, 0x0649] },
+{ source: [0xFC87], NFC: [0xFC87], NFD: [0xFC87], NFKC: [0x0644, 0x064A], NFKD: [0x0644, 0x064A] },
+{ source: [0xFC88], NFC: [0xFC88], NFD: [0xFC88], NFKC: [0x0645, 0x0627], NFKD: [0x0645, 0x0627] },
+{ source: [0xFC89], NFC: [0xFC89], NFD: [0xFC89], NFKC: [0x0645, 0x0645], NFKD: [0x0645, 0x0645] },
+{ source: [0xFC8A], NFC: [0xFC8A], NFD: [0xFC8A], NFKC: [0x0646, 0x0631], NFKD: [0x0646, 0x0631] },
+{ source: [0xFC8B], NFC: [0xFC8B], NFD: [0xFC8B], NFKC: [0x0646, 0x0632], NFKD: [0x0646, 0x0632] },
+{ source: [0xFC8C], NFC: [0xFC8C], NFD: [0xFC8C], NFKC: [0x0646, 0x0645], NFKD: [0x0646, 0x0645] },
+{ source: [0xFC8D], NFC: [0xFC8D], NFD: [0xFC8D], NFKC: [0x0646, 0x0646], NFKD: [0x0646, 0x0646] },
+{ source: [0xFC8E], NFC: [0xFC8E], NFD: [0xFC8E], NFKC: [0x0646, 0x0649], NFKD: [0x0646, 0x0649] },
+{ source: [0xFC8F], NFC: [0xFC8F], NFD: [0xFC8F], NFKC: [0x0646, 0x064A], NFKD: [0x0646, 0x064A] },
+{ source: [0xFC90], NFC: [0xFC90], NFD: [0xFC90], NFKC: [0x0649, 0x0670], NFKD: [0x0649, 0x0670] },
+{ source: [0xFC91], NFC: [0xFC91], NFD: [0xFC91], NFKC: [0x064A, 0x0631], NFKD: [0x064A, 0x0631] },
+{ source: [0xFC92], NFC: [0xFC92], NFD: [0xFC92], NFKC: [0x064A, 0x0632], NFKD: [0x064A, 0x0632] },
+{ source: [0xFC93], NFC: [0xFC93], NFD: [0xFC93], NFKC: [0x064A, 0x0645], NFKD: [0x064A, 0x0645] },
+{ source: [0xFC94], NFC: [0xFC94], NFD: [0xFC94], NFKC: [0x064A, 0x0646], NFKD: [0x064A, 0x0646] },
+{ source: [0xFC95], NFC: [0xFC95], NFD: [0xFC95], NFKC: [0x064A, 0x0649], NFKD: [0x064A, 0x0649] },
+{ source: [0xFC96], NFC: [0xFC96], NFD: [0xFC96], NFKC: [0x064A, 0x064A], NFKD: [0x064A, 0x064A] },
+{ source: [0xFC97], NFC: [0xFC97], NFD: [0xFC97], NFKC: [0x0626, 0x062C], NFKD: [0x064A, 0x0654, 0x062C] },
+{ source: [0xFC98], NFC: [0xFC98], NFD: [0xFC98], NFKC: [0x0626, 0x062D], NFKD: [0x064A, 0x0654, 0x062D] },
+{ source: [0xFC99], NFC: [0xFC99], NFD: [0xFC99], NFKC: [0x0626, 0x062E], NFKD: [0x064A, 0x0654, 0x062E] },
+{ source: [0xFC9A], NFC: [0xFC9A], NFD: [0xFC9A], NFKC: [0x0626, 0x0645], NFKD: [0x064A, 0x0654, 0x0645] },
+{ source: [0xFC9B], NFC: [0xFC9B], NFD: [0xFC9B], NFKC: [0x0626, 0x0647], NFKD: [0x064A, 0x0654, 0x0647] },
+{ source: [0xFC9C], NFC: [0xFC9C], NFD: [0xFC9C], NFKC: [0x0628, 0x062C], NFKD: [0x0628, 0x062C] },
+{ source: [0xFC9D], NFC: [0xFC9D], NFD: [0xFC9D], NFKC: [0x0628, 0x062D], NFKD: [0x0628, 0x062D] },
+{ source: [0xFC9E], NFC: [0xFC9E], NFD: [0xFC9E], NFKC: [0x0628, 0x062E], NFKD: [0x0628, 0x062E] },
+{ source: [0xFC9F], NFC: [0xFC9F], NFD: [0xFC9F], NFKC: [0x0628, 0x0645], NFKD: [0x0628, 0x0645] },
+{ source: [0xFCA0], NFC: [0xFCA0], NFD: [0xFCA0], NFKC: [0x0628, 0x0647], NFKD: [0x0628, 0x0647] },
+{ source: [0xFCA1], NFC: [0xFCA1], NFD: [0xFCA1], NFKC: [0x062A, 0x062C], NFKD: [0x062A, 0x062C] },
+{ source: [0xFCA2], NFC: [0xFCA2], NFD: [0xFCA2], NFKC: [0x062A, 0x062D], NFKD: [0x062A, 0x062D] },
+{ source: [0xFCA3], NFC: [0xFCA3], NFD: [0xFCA3], NFKC: [0x062A, 0x062E], NFKD: [0x062A, 0x062E] },
+{ source: [0xFCA4], NFC: [0xFCA4], NFD: [0xFCA4], NFKC: [0x062A, 0x0645], NFKD: [0x062A, 0x0645] },
+{ source: [0xFCA5], NFC: [0xFCA5], NFD: [0xFCA5], NFKC: [0x062A, 0x0647], NFKD: [0x062A, 0x0647] },
+{ source: [0xFCA6], NFC: [0xFCA6], NFD: [0xFCA6], NFKC: [0x062B, 0x0645], NFKD: [0x062B, 0x0645] },
+{ source: [0xFCA7], NFC: [0xFCA7], NFD: [0xFCA7], NFKC: [0x062C, 0x062D], NFKD: [0x062C, 0x062D] },
+{ source: [0xFCA8], NFC: [0xFCA8], NFD: [0xFCA8], NFKC: [0x062C, 0x0645], NFKD: [0x062C, 0x0645] },
+{ source: [0xFCA9], NFC: [0xFCA9], NFD: [0xFCA9], NFKC: [0x062D, 0x062C], NFKD: [0x062D, 0x062C] },
+{ source: [0xFCAA], NFC: [0xFCAA], NFD: [0xFCAA], NFKC: [0x062D, 0x0645], NFKD: [0x062D, 0x0645] },
+{ source: [0xFCAB], NFC: [0xFCAB], NFD: [0xFCAB], NFKC: [0x062E, 0x062C], NFKD: [0x062E, 0x062C] },
+{ source: [0xFCAC], NFC: [0xFCAC], NFD: [0xFCAC], NFKC: [0x062E, 0x0645], NFKD: [0x062E, 0x0645] },
+{ source: [0xFCAD], NFC: [0xFCAD], NFD: [0xFCAD], NFKC: [0x0633, 0x062C], NFKD: [0x0633, 0x062C] },
+{ source: [0xFCAE], NFC: [0xFCAE], NFD: [0xFCAE], NFKC: [0x0633, 0x062D], NFKD: [0x0633, 0x062D] },
+{ source: [0xFCAF], NFC: [0xFCAF], NFD: [0xFCAF], NFKC: [0x0633, 0x062E], NFKD: [0x0633, 0x062E] },
+{ source: [0xFCB0], NFC: [0xFCB0], NFD: [0xFCB0], NFKC: [0x0633, 0x0645], NFKD: [0x0633, 0x0645] },
+{ source: [0xFCB1], NFC: [0xFCB1], NFD: [0xFCB1], NFKC: [0x0635, 0x062D], NFKD: [0x0635, 0x062D] },
+{ source: [0xFCB2], NFC: [0xFCB2], NFD: [0xFCB2], NFKC: [0x0635, 0x062E], NFKD: [0x0635, 0x062E] },
+{ source: [0xFCB3], NFC: [0xFCB3], NFD: [0xFCB3], NFKC: [0x0635, 0x0645], NFKD: [0x0635, 0x0645] },
+{ source: [0xFCB4], NFC: [0xFCB4], NFD: [0xFCB4], NFKC: [0x0636, 0x062C], NFKD: [0x0636, 0x062C] },
+{ source: [0xFCB5], NFC: [0xFCB5], NFD: [0xFCB5], NFKC: [0x0636, 0x062D], NFKD: [0x0636, 0x062D] },
+{ source: [0xFCB6], NFC: [0xFCB6], NFD: [0xFCB6], NFKC: [0x0636, 0x062E], NFKD: [0x0636, 0x062E] },
+{ source: [0xFCB7], NFC: [0xFCB7], NFD: [0xFCB7], NFKC: [0x0636, 0x0645], NFKD: [0x0636, 0x0645] },
+{ source: [0xFCB8], NFC: [0xFCB8], NFD: [0xFCB8], NFKC: [0x0637, 0x062D], NFKD: [0x0637, 0x062D] },
+{ source: [0xFCB9], NFC: [0xFCB9], NFD: [0xFCB9], NFKC: [0x0638, 0x0645], NFKD: [0x0638, 0x0645] },
+{ source: [0xFCBA], NFC: [0xFCBA], NFD: [0xFCBA], NFKC: [0x0639, 0x062C], NFKD: [0x0639, 0x062C] },
+{ source: [0xFCBB], NFC: [0xFCBB], NFD: [0xFCBB], NFKC: [0x0639, 0x0645], NFKD: [0x0639, 0x0645] },
+{ source: [0xFCBC], NFC: [0xFCBC], NFD: [0xFCBC], NFKC: [0x063A, 0x062C], NFKD: [0x063A, 0x062C] },
+{ source: [0xFCBD], NFC: [0xFCBD], NFD: [0xFCBD], NFKC: [0x063A, 0x0645], NFKD: [0x063A, 0x0645] },
+{ source: [0xFCBE], NFC: [0xFCBE], NFD: [0xFCBE], NFKC: [0x0641, 0x062C], NFKD: [0x0641, 0x062C] },
+{ source: [0xFCBF], NFC: [0xFCBF], NFD: [0xFCBF], NFKC: [0x0641, 0x062D], NFKD: [0x0641, 0x062D] },
+{ source: [0xFCC0], NFC: [0xFCC0], NFD: [0xFCC0], NFKC: [0x0641, 0x062E], NFKD: [0x0641, 0x062E] },
+{ source: [0xFCC1], NFC: [0xFCC1], NFD: [0xFCC1], NFKC: [0x0641, 0x0645], NFKD: [0x0641, 0x0645] },
+{ source: [0xFCC2], NFC: [0xFCC2], NFD: [0xFCC2], NFKC: [0x0642, 0x062D], NFKD: [0x0642, 0x062D] },
+{ source: [0xFCC3], NFC: [0xFCC3], NFD: [0xFCC3], NFKC: [0x0642, 0x0645], NFKD: [0x0642, 0x0645] },
+{ source: [0xFCC4], NFC: [0xFCC4], NFD: [0xFCC4], NFKC: [0x0643, 0x062C], NFKD: [0x0643, 0x062C] },
+{ source: [0xFCC5], NFC: [0xFCC5], NFD: [0xFCC5], NFKC: [0x0643, 0x062D], NFKD: [0x0643, 0x062D] },
+{ source: [0xFCC6], NFC: [0xFCC6], NFD: [0xFCC6], NFKC: [0x0643, 0x062E], NFKD: [0x0643, 0x062E] },
+{ source: [0xFCC7], NFC: [0xFCC7], NFD: [0xFCC7], NFKC: [0x0643, 0x0644], NFKD: [0x0643, 0x0644] },
+{ source: [0xFCC8], NFC: [0xFCC8], NFD: [0xFCC8], NFKC: [0x0643, 0x0645], NFKD: [0x0643, 0x0645] },
+{ source: [0xFCC9], NFC: [0xFCC9], NFD: [0xFCC9], NFKC: [0x0644, 0x062C], NFKD: [0x0644, 0x062C] },
+{ source: [0xFCCA], NFC: [0xFCCA], NFD: [0xFCCA], NFKC: [0x0644, 0x062D], NFKD: [0x0644, 0x062D] },
+{ source: [0xFCCB], NFC: [0xFCCB], NFD: [0xFCCB], NFKC: [0x0644, 0x062E], NFKD: [0x0644, 0x062E] },
+{ source: [0xFCCC], NFC: [0xFCCC], NFD: [0xFCCC], NFKC: [0x0644, 0x0645], NFKD: [0x0644, 0x0645] },
+{ source: [0xFCCD], NFC: [0xFCCD], NFD: [0xFCCD], NFKC: [0x0644, 0x0647], NFKD: [0x0644, 0x0647] },
+{ source: [0xFCCE], NFC: [0xFCCE], NFD: [0xFCCE], NFKC: [0x0645, 0x062C], NFKD: [0x0645, 0x062C] },
+{ source: [0xFCCF], NFC: [0xFCCF], NFD: [0xFCCF], NFKC: [0x0645, 0x062D], NFKD: [0x0645, 0x062D] },
+{ source: [0xFCD0], NFC: [0xFCD0], NFD: [0xFCD0], NFKC: [0x0645, 0x062E], NFKD: [0x0645, 0x062E] },
+{ source: [0xFCD1], NFC: [0xFCD1], NFD: [0xFCD1], NFKC: [0x0645, 0x0645], NFKD: [0x0645, 0x0645] },
+{ source: [0xFCD2], NFC: [0xFCD2], NFD: [0xFCD2], NFKC: [0x0646, 0x062C], NFKD: [0x0646, 0x062C] },
+{ source: [0xFCD3], NFC: [0xFCD3], NFD: [0xFCD3], NFKC: [0x0646, 0x062D], NFKD: [0x0646, 0x062D] },
+{ source: [0xFCD4], NFC: [0xFCD4], NFD: [0xFCD4], NFKC: [0x0646, 0x062E], NFKD: [0x0646, 0x062E] },
+{ source: [0xFCD5], NFC: [0xFCD5], NFD: [0xFCD5], NFKC: [0x0646, 0x0645], NFKD: [0x0646, 0x0645] },
+{ source: [0xFCD6], NFC: [0xFCD6], NFD: [0xFCD6], NFKC: [0x0646, 0x0647], NFKD: [0x0646, 0x0647] },
+{ source: [0xFCD7], NFC: [0xFCD7], NFD: [0xFCD7], NFKC: [0x0647, 0x062C], NFKD: [0x0647, 0x062C] },
+{ source: [0xFCD8], NFC: [0xFCD8], NFD: [0xFCD8], NFKC: [0x0647, 0x0645], NFKD: [0x0647, 0x0645] },
+{ source: [0xFCD9], NFC: [0xFCD9], NFD: [0xFCD9], NFKC: [0x0647, 0x0670], NFKD: [0x0647, 0x0670] },
+{ source: [0xFCDA], NFC: [0xFCDA], NFD: [0xFCDA], NFKC: [0x064A, 0x062C], NFKD: [0x064A, 0x062C] },
+{ source: [0xFCDB], NFC: [0xFCDB], NFD: [0xFCDB], NFKC: [0x064A, 0x062D], NFKD: [0x064A, 0x062D] },
+{ source: [0xFCDC], NFC: [0xFCDC], NFD: [0xFCDC], NFKC: [0x064A, 0x062E], NFKD: [0x064A, 0x062E] },
+{ source: [0xFCDD], NFC: [0xFCDD], NFD: [0xFCDD], NFKC: [0x064A, 0x0645], NFKD: [0x064A, 0x0645] },
+{ source: [0xFCDE], NFC: [0xFCDE], NFD: [0xFCDE], NFKC: [0x064A, 0x0647], NFKD: [0x064A, 0x0647] },
+{ source: [0xFCDF], NFC: [0xFCDF], NFD: [0xFCDF], NFKC: [0x0626, 0x0645], NFKD: [0x064A, 0x0654, 0x0645] },
+{ source: [0xFCE0], NFC: [0xFCE0], NFD: [0xFCE0], NFKC: [0x0626, 0x0647], NFKD: [0x064A, 0x0654, 0x0647] },
+{ source: [0xFCE1], NFC: [0xFCE1], NFD: [0xFCE1], NFKC: [0x0628, 0x0645], NFKD: [0x0628, 0x0645] },
+{ source: [0xFCE2], NFC: [0xFCE2], NFD: [0xFCE2], NFKC: [0x0628, 0x0647], NFKD: [0x0628, 0x0647] },
+{ source: [0xFCE3], NFC: [0xFCE3], NFD: [0xFCE3], NFKC: [0x062A, 0x0645], NFKD: [0x062A, 0x0645] },
+{ source: [0xFCE4], NFC: [0xFCE4], NFD: [0xFCE4], NFKC: [0x062A, 0x0647], NFKD: [0x062A, 0x0647] },
+{ source: [0xFCE5], NFC: [0xFCE5], NFD: [0xFCE5], NFKC: [0x062B, 0x0645], NFKD: [0x062B, 0x0645] },
+{ source: [0xFCE6], NFC: [0xFCE6], NFD: [0xFCE6], NFKC: [0x062B, 0x0647], NFKD: [0x062B, 0x0647] },
+{ source: [0xFCE7], NFC: [0xFCE7], NFD: [0xFCE7], NFKC: [0x0633, 0x0645], NFKD: [0x0633, 0x0645] },
+{ source: [0xFCE8], NFC: [0xFCE8], NFD: [0xFCE8], NFKC: [0x0633, 0x0647], NFKD: [0x0633, 0x0647] },
+{ source: [0xFCE9], NFC: [0xFCE9], NFD: [0xFCE9], NFKC: [0x0634, 0x0645], NFKD: [0x0634, 0x0645] },
+{ source: [0xFCEA], NFC: [0xFCEA], NFD: [0xFCEA], NFKC: [0x0634, 0x0647], NFKD: [0x0634, 0x0647] },
+{ source: [0xFCEB], NFC: [0xFCEB], NFD: [0xFCEB], NFKC: [0x0643, 0x0644], NFKD: [0x0643, 0x0644] },
+{ source: [0xFCEC], NFC: [0xFCEC], NFD: [0xFCEC], NFKC: [0x0643, 0x0645], NFKD: [0x0643, 0x0645] },
+{ source: [0xFCED], NFC: [0xFCED], NFD: [0xFCED], NFKC: [0x0644, 0x0645], NFKD: [0x0644, 0x0645] },
+{ source: [0xFCEE], NFC: [0xFCEE], NFD: [0xFCEE], NFKC: [0x0646, 0x0645], NFKD: [0x0646, 0x0645] },
+{ source: [0xFCEF], NFC: [0xFCEF], NFD: [0xFCEF], NFKC: [0x0646, 0x0647], NFKD: [0x0646, 0x0647] },
+{ source: [0xFCF0], NFC: [0xFCF0], NFD: [0xFCF0], NFKC: [0x064A, 0x0645], NFKD: [0x064A, 0x0645] },
+{ source: [0xFCF1], NFC: [0xFCF1], NFD: [0xFCF1], NFKC: [0x064A, 0x0647], NFKD: [0x064A, 0x0647] },
+{ source: [0xFCF2], NFC: [0xFCF2], NFD: [0xFCF2], NFKC: [0x0640, 0x064E, 0x0651], NFKD: [0x0640, 0x064E, 0x0651] },
+{ source: [0xFCF3], NFC: [0xFCF3], NFD: [0xFCF3], NFKC: [0x0640, 0x064F, 0x0651], NFKD: [0x0640, 0x064F, 0x0651] },
+{ source: [0xFCF4], NFC: [0xFCF4], NFD: [0xFCF4], NFKC: [0x0640, 0x0650, 0x0651], NFKD: [0x0640, 0x0650, 0x0651] },
+{ source: [0xFCF5], NFC: [0xFCF5], NFD: [0xFCF5], NFKC: [0x0637, 0x0649], NFKD: [0x0637, 0x0649] },
+{ source: [0xFCF6], NFC: [0xFCF6], NFD: [0xFCF6], NFKC: [0x0637, 0x064A], NFKD: [0x0637, 0x064A] },
+{ source: [0xFCF7], NFC: [0xFCF7], NFD: [0xFCF7], NFKC: [0x0639, 0x0649], NFKD: [0x0639, 0x0649] },
+{ source: [0xFCF8], NFC: [0xFCF8], NFD: [0xFCF8], NFKC: [0x0639, 0x064A], NFKD: [0x0639, 0x064A] },
+{ source: [0xFCF9], NFC: [0xFCF9], NFD: [0xFCF9], NFKC: [0x063A, 0x0649], NFKD: [0x063A, 0x0649] },
+{ source: [0xFCFA], NFC: [0xFCFA], NFD: [0xFCFA], NFKC: [0x063A, 0x064A], NFKD: [0x063A, 0x064A] },
+{ source: [0xFCFB], NFC: [0xFCFB], NFD: [0xFCFB], NFKC: [0x0633, 0x0649], NFKD: [0x0633, 0x0649] },
+{ source: [0xFCFC], NFC: [0xFCFC], NFD: [0xFCFC], NFKC: [0x0633, 0x064A], NFKD: [0x0633, 0x064A] },
+{ source: [0xFCFD], NFC: [0xFCFD], NFD: [0xFCFD], NFKC: [0x0634, 0x0649], NFKD: [0x0634, 0x0649] },
+{ source: [0xFCFE], NFC: [0xFCFE], NFD: [0xFCFE], NFKC: [0x0634, 0x064A], NFKD: [0x0634, 0x064A] },
+{ source: [0xFCFF], NFC: [0xFCFF], NFD: [0xFCFF], NFKC: [0x062D, 0x0649], NFKD: [0x062D, 0x0649] },
+{ source: [0xFD00], NFC: [0xFD00], NFD: [0xFD00], NFKC: [0x062D, 0x064A], NFKD: [0x062D, 0x064A] },
+{ source: [0xFD01], NFC: [0xFD01], NFD: [0xFD01], NFKC: [0x062C, 0x0649], NFKD: [0x062C, 0x0649] },
+{ source: [0xFD02], NFC: [0xFD02], NFD: [0xFD02], NFKC: [0x062C, 0x064A], NFKD: [0x062C, 0x064A] },
+{ source: [0xFD03], NFC: [0xFD03], NFD: [0xFD03], NFKC: [0x062E, 0x0649], NFKD: [0x062E, 0x0649] },
+{ source: [0xFD04], NFC: [0xFD04], NFD: [0xFD04], NFKC: [0x062E, 0x064A], NFKD: [0x062E, 0x064A] },
+{ source: [0xFD05], NFC: [0xFD05], NFD: [0xFD05], NFKC: [0x0635, 0x0649], NFKD: [0x0635, 0x0649] },
+{ source: [0xFD06], NFC: [0xFD06], NFD: [0xFD06], NFKC: [0x0635, 0x064A], NFKD: [0x0635, 0x064A] },
+{ source: [0xFD07], NFC: [0xFD07], NFD: [0xFD07], NFKC: [0x0636, 0x0649], NFKD: [0x0636, 0x0649] },
+{ source: [0xFD08], NFC: [0xFD08], NFD: [0xFD08], NFKC: [0x0636, 0x064A], NFKD: [0x0636, 0x064A] },
+{ source: [0xFD09], NFC: [0xFD09], NFD: [0xFD09], NFKC: [0x0634, 0x062C], NFKD: [0x0634, 0x062C] },
+{ source: [0xFD0A], NFC: [0xFD0A], NFD: [0xFD0A], NFKC: [0x0634, 0x062D], NFKD: [0x0634, 0x062D] },
+{ source: [0xFD0B], NFC: [0xFD0B], NFD: [0xFD0B], NFKC: [0x0634, 0x062E], NFKD: [0x0634, 0x062E] },
+{ source: [0xFD0C], NFC: [0xFD0C], NFD: [0xFD0C], NFKC: [0x0634, 0x0645], NFKD: [0x0634, 0x0645] },
+{ source: [0xFD0D], NFC: [0xFD0D], NFD: [0xFD0D], NFKC: [0x0634, 0x0631], NFKD: [0x0634, 0x0631] },
+{ source: [0xFD0E], NFC: [0xFD0E], NFD: [0xFD0E], NFKC: [0x0633, 0x0631], NFKD: [0x0633, 0x0631] },
+{ source: [0xFD0F], NFC: [0xFD0F], NFD: [0xFD0F], NFKC: [0x0635, 0x0631], NFKD: [0x0635, 0x0631] },
+{ source: [0xFD10], NFC: [0xFD10], NFD: [0xFD10], NFKC: [0x0636, 0x0631], NFKD: [0x0636, 0x0631] },
+{ source: [0xFD11], NFC: [0xFD11], NFD: [0xFD11], NFKC: [0x0637, 0x0649], NFKD: [0x0637, 0x0649] },
+{ source: [0xFD12], NFC: [0xFD12], NFD: [0xFD12], NFKC: [0x0637, 0x064A], NFKD: [0x0637, 0x064A] },
+{ source: [0xFD13], NFC: [0xFD13], NFD: [0xFD13], NFKC: [0x0639, 0x0649], NFKD: [0x0639, 0x0649] },
+{ source: [0xFD14], NFC: [0xFD14], NFD: [0xFD14], NFKC: [0x0639, 0x064A], NFKD: [0x0639, 0x064A] },
+{ source: [0xFD15], NFC: [0xFD15], NFD: [0xFD15], NFKC: [0x063A, 0x0649], NFKD: [0x063A, 0x0649] },
+{ source: [0xFD16], NFC: [0xFD16], NFD: [0xFD16], NFKC: [0x063A, 0x064A], NFKD: [0x063A, 0x064A] },
+{ source: [0xFD17], NFC: [0xFD17], NFD: [0xFD17], NFKC: [0x0633, 0x0649], NFKD: [0x0633, 0x0649] },
+{ source: [0xFD18], NFC: [0xFD18], NFD: [0xFD18], NFKC: [0x0633, 0x064A], NFKD: [0x0633, 0x064A] },
+{ source: [0xFD19], NFC: [0xFD19], NFD: [0xFD19], NFKC: [0x0634, 0x0649], NFKD: [0x0634, 0x0649] },
+{ source: [0xFD1A], NFC: [0xFD1A], NFD: [0xFD1A], NFKC: [0x0634, 0x064A], NFKD: [0x0634, 0x064A] },
+{ source: [0xFD1B], NFC: [0xFD1B], NFD: [0xFD1B], NFKC: [0x062D, 0x0649], NFKD: [0x062D, 0x0649] },
+{ source: [0xFD1C], NFC: [0xFD1C], NFD: [0xFD1C], NFKC: [0x062D, 0x064A], NFKD: [0x062D, 0x064A] },
+{ source: [0xFD1D], NFC: [0xFD1D], NFD: [0xFD1D], NFKC: [0x062C, 0x0649], NFKD: [0x062C, 0x0649] },
+{ source: [0xFD1E], NFC: [0xFD1E], NFD: [0xFD1E], NFKC: [0x062C, 0x064A], NFKD: [0x062C, 0x064A] },
+{ source: [0xFD1F], NFC: [0xFD1F], NFD: [0xFD1F], NFKC: [0x062E, 0x0649], NFKD: [0x062E, 0x0649] },
+{ source: [0xFD20], NFC: [0xFD20], NFD: [0xFD20], NFKC: [0x062E, 0x064A], NFKD: [0x062E, 0x064A] },
+{ source: [0xFD21], NFC: [0xFD21], NFD: [0xFD21], NFKC: [0x0635, 0x0649], NFKD: [0x0635, 0x0649] },
+{ source: [0xFD22], NFC: [0xFD22], NFD: [0xFD22], NFKC: [0x0635, 0x064A], NFKD: [0x0635, 0x064A] },
+{ source: [0xFD23], NFC: [0xFD23], NFD: [0xFD23], NFKC: [0x0636, 0x0649], NFKD: [0x0636, 0x0649] },
+{ source: [0xFD24], NFC: [0xFD24], NFD: [0xFD24], NFKC: [0x0636, 0x064A], NFKD: [0x0636, 0x064A] },
+{ source: [0xFD25], NFC: [0xFD25], NFD: [0xFD25], NFKC: [0x0634, 0x062C], NFKD: [0x0634, 0x062C] },
+{ source: [0xFD26], NFC: [0xFD26], NFD: [0xFD26], NFKC: [0x0634, 0x062D], NFKD: [0x0634, 0x062D] },
+{ source: [0xFD27], NFC: [0xFD27], NFD: [0xFD27], NFKC: [0x0634, 0x062E], NFKD: [0x0634, 0x062E] },
+{ source: [0xFD28], NFC: [0xFD28], NFD: [0xFD28], NFKC: [0x0634, 0x0645], NFKD: [0x0634, 0x0645] },
+{ source: [0xFD29], NFC: [0xFD29], NFD: [0xFD29], NFKC: [0x0634, 0x0631], NFKD: [0x0634, 0x0631] },
+{ source: [0xFD2A], NFC: [0xFD2A], NFD: [0xFD2A], NFKC: [0x0633, 0x0631], NFKD: [0x0633, 0x0631] },
+{ source: [0xFD2B], NFC: [0xFD2B], NFD: [0xFD2B], NFKC: [0x0635, 0x0631], NFKD: [0x0635, 0x0631] },
+{ source: [0xFD2C], NFC: [0xFD2C], NFD: [0xFD2C], NFKC: [0x0636, 0x0631], NFKD: [0x0636, 0x0631] },
+{ source: [0xFD2D], NFC: [0xFD2D], NFD: [0xFD2D], NFKC: [0x0634, 0x062C], NFKD: [0x0634, 0x062C] },
+{ source: [0xFD2E], NFC: [0xFD2E], NFD: [0xFD2E], NFKC: [0x0634, 0x062D], NFKD: [0x0634, 0x062D] },
+{ source: [0xFD2F], NFC: [0xFD2F], NFD: [0xFD2F], NFKC: [0x0634, 0x062E], NFKD: [0x0634, 0x062E] },
+{ source: [0xFD30], NFC: [0xFD30], NFD: [0xFD30], NFKC: [0x0634, 0x0645], NFKD: [0x0634, 0x0645] },
+{ source: [0xFD31], NFC: [0xFD31], NFD: [0xFD31], NFKC: [0x0633, 0x0647], NFKD: [0x0633, 0x0647] },
+{ source: [0xFD32], NFC: [0xFD32], NFD: [0xFD32], NFKC: [0x0634, 0x0647], NFKD: [0x0634, 0x0647] },
+{ source: [0xFD33], NFC: [0xFD33], NFD: [0xFD33], NFKC: [0x0637, 0x0645], NFKD: [0x0637, 0x0645] },
+{ source: [0xFD34], NFC: [0xFD34], NFD: [0xFD34], NFKC: [0x0633, 0x062C], NFKD: [0x0633, 0x062C] },
+{ source: [0xFD35], NFC: [0xFD35], NFD: [0xFD35], NFKC: [0x0633, 0x062D], NFKD: [0x0633, 0x062D] },
+{ source: [0xFD36], NFC: [0xFD36], NFD: [0xFD36], NFKC: [0x0633, 0x062E], NFKD: [0x0633, 0x062E] },
+{ source: [0xFD37], NFC: [0xFD37], NFD: [0xFD37], NFKC: [0x0634, 0x062C], NFKD: [0x0634, 0x062C] },
+{ source: [0xFD38], NFC: [0xFD38], NFD: [0xFD38], NFKC: [0x0634, 0x062D], NFKD: [0x0634, 0x062D] },
+{ source: [0xFD39], NFC: [0xFD39], NFD: [0xFD39], NFKC: [0x0634, 0x062E], NFKD: [0x0634, 0x062E] },
+{ source: [0xFD3A], NFC: [0xFD3A], NFD: [0xFD3A], NFKC: [0x0637, 0x0645], NFKD: [0x0637, 0x0645] },
+{ source: [0xFD3B], NFC: [0xFD3B], NFD: [0xFD3B], NFKC: [0x0638, 0x0645], NFKD: [0x0638, 0x0645] },
+{ source: [0xFD3C], NFC: [0xFD3C], NFD: [0xFD3C], NFKC: [0x0627, 0x064B], NFKD: [0x0627, 0x064B] },
+{ source: [0xFD3D], NFC: [0xFD3D], NFD: [0xFD3D], NFKC: [0x0627, 0x064B], NFKD: [0x0627, 0x064B] },
+{ source: [0xFD50], NFC: [0xFD50], NFD: [0xFD50], NFKC: [0x062A, 0x062C, 0x0645], NFKD: [0x062A, 0x062C, 0x0645] },
+{ source: [0xFD51], NFC: [0xFD51], NFD: [0xFD51], NFKC: [0x062A, 0x062D, 0x062C], NFKD: [0x062A, 0x062D, 0x062C] },
+{ source: [0xFD52], NFC: [0xFD52], NFD: [0xFD52], NFKC: [0x062A, 0x062D, 0x062C], NFKD: [0x062A, 0x062D, 0x062C] },
+{ source: [0xFD53], NFC: [0xFD53], NFD: [0xFD53], NFKC: [0x062A, 0x062D, 0x0645], NFKD: [0x062A, 0x062D, 0x0645] },
+{ source: [0xFD54], NFC: [0xFD54], NFD: [0xFD54], NFKC: [0x062A, 0x062E, 0x0645], NFKD: [0x062A, 0x062E, 0x0645] },
+{ source: [0xFD55], NFC: [0xFD55], NFD: [0xFD55], NFKC: [0x062A, 0x0645, 0x062C], NFKD: [0x062A, 0x0645, 0x062C] },
+{ source: [0xFD56], NFC: [0xFD56], NFD: [0xFD56], NFKC: [0x062A, 0x0645, 0x062D], NFKD: [0x062A, 0x0645, 0x062D] },
+{ source: [0xFD57], NFC: [0xFD57], NFD: [0xFD57], NFKC: [0x062A, 0x0645, 0x062E], NFKD: [0x062A, 0x0645, 0x062E] },
+{ source: [0xFD58], NFC: [0xFD58], NFD: [0xFD58], NFKC: [0x062C, 0x0645, 0x062D], NFKD: [0x062C, 0x0645, 0x062D] },
+{ source: [0xFD59], NFC: [0xFD59], NFD: [0xFD59], NFKC: [0x062C, 0x0645, 0x062D], NFKD: [0x062C, 0x0645, 0x062D] },
+{ source: [0xFD5A], NFC: [0xFD5A], NFD: [0xFD5A], NFKC: [0x062D, 0x0645, 0x064A], NFKD: [0x062D, 0x0645, 0x064A] },
+{ source: [0xFD5B], NFC: [0xFD5B], NFD: [0xFD5B], NFKC: [0x062D, 0x0645, 0x0649], NFKD: [0x062D, 0x0645, 0x0649] },
+{ source: [0xFD5C], NFC: [0xFD5C], NFD: [0xFD5C], NFKC: [0x0633, 0x062D, 0x062C], NFKD: [0x0633, 0x062D, 0x062C] },
+{ source: [0xFD5D], NFC: [0xFD5D], NFD: [0xFD5D], NFKC: [0x0633, 0x062C, 0x062D], NFKD: [0x0633, 0x062C, 0x062D] },
+{ source: [0xFD5E], NFC: [0xFD5E], NFD: [0xFD5E], NFKC: [0x0633, 0x062C, 0x0649], NFKD: [0x0633, 0x062C, 0x0649] },
+{ source: [0xFD5F], NFC: [0xFD5F], NFD: [0xFD5F], NFKC: [0x0633, 0x0645, 0x062D], NFKD: [0x0633, 0x0645, 0x062D] },
+{ source: [0xFD60], NFC: [0xFD60], NFD: [0xFD60], NFKC: [0x0633, 0x0645, 0x062D], NFKD: [0x0633, 0x0645, 0x062D] },
+{ source: [0xFD61], NFC: [0xFD61], NFD: [0xFD61], NFKC: [0x0633, 0x0645, 0x062C], NFKD: [0x0633, 0x0645, 0x062C] },
+{ source: [0xFD62], NFC: [0xFD62], NFD: [0xFD62], NFKC: [0x0633, 0x0645, 0x0645], NFKD: [0x0633, 0x0645, 0x0645] },
+{ source: [0xFD63], NFC: [0xFD63], NFD: [0xFD63], NFKC: [0x0633, 0x0645, 0x0645], NFKD: [0x0633, 0x0645, 0x0645] },
+{ source: [0xFD64], NFC: [0xFD64], NFD: [0xFD64], NFKC: [0x0635, 0x062D, 0x062D], NFKD: [0x0635, 0x062D, 0x062D] },
+{ source: [0xFD65], NFC: [0xFD65], NFD: [0xFD65], NFKC: [0x0635, 0x062D, 0x062D], NFKD: [0x0635, 0x062D, 0x062D] },
+{ source: [0xFD66], NFC: [0xFD66], NFD: [0xFD66], NFKC: [0x0635, 0x0645, 0x0645], NFKD: [0x0635, 0x0645, 0x0645] },
+{ source: [0xFD67], NFC: [0xFD67], NFD: [0xFD67], NFKC: [0x0634, 0x062D, 0x0645], NFKD: [0x0634, 0x062D, 0x0645] },
+{ source: [0xFD68], NFC: [0xFD68], NFD: [0xFD68], NFKC: [0x0634, 0x062D, 0x0645], NFKD: [0x0634, 0x062D, 0x0645] },
+{ source: [0xFD69], NFC: [0xFD69], NFD: [0xFD69], NFKC: [0x0634, 0x062C, 0x064A], NFKD: [0x0634, 0x062C, 0x064A] },
+{ source: [0xFD6A], NFC: [0xFD6A], NFD: [0xFD6A], NFKC: [0x0634, 0x0645, 0x062E], NFKD: [0x0634, 0x0645, 0x062E] },
+{ source: [0xFD6B], NFC: [0xFD6B], NFD: [0xFD6B], NFKC: [0x0634, 0x0645, 0x062E], NFKD: [0x0634, 0x0645, 0x062E] },
+{ source: [0xFD6C], NFC: [0xFD6C], NFD: [0xFD6C], NFKC: [0x0634, 0x0645, 0x0645], NFKD: [0x0634, 0x0645, 0x0645] },
+{ source: [0xFD6D], NFC: [0xFD6D], NFD: [0xFD6D], NFKC: [0x0634, 0x0645, 0x0645], NFKD: [0x0634, 0x0645, 0x0645] },
+{ source: [0xFD6E], NFC: [0xFD6E], NFD: [0xFD6E], NFKC: [0x0636, 0x062D, 0x0649], NFKD: [0x0636, 0x062D, 0x0649] },
+{ source: [0xFD6F], NFC: [0xFD6F], NFD: [0xFD6F], NFKC: [0x0636, 0x062E, 0x0645], NFKD: [0x0636, 0x062E, 0x0645] },
+{ source: [0xFD70], NFC: [0xFD70], NFD: [0xFD70], NFKC: [0x0636, 0x062E, 0x0645], NFKD: [0x0636, 0x062E, 0x0645] },
+{ source: [0xFD71], NFC: [0xFD71], NFD: [0xFD71], NFKC: [0x0637, 0x0645, 0x062D], NFKD: [0x0637, 0x0645, 0x062D] },
+{ source: [0xFD72], NFC: [0xFD72], NFD: [0xFD72], NFKC: [0x0637, 0x0645, 0x062D], NFKD: [0x0637, 0x0645, 0x062D] },
+{ source: [0xFD73], NFC: [0xFD73], NFD: [0xFD73], NFKC: [0x0637, 0x0645, 0x0645], NFKD: [0x0637, 0x0645, 0x0645] },
+{ source: [0xFD74], NFC: [0xFD74], NFD: [0xFD74], NFKC: [0x0637, 0x0645, 0x064A], NFKD: [0x0637, 0x0645, 0x064A] },
+{ source: [0xFD75], NFC: [0xFD75], NFD: [0xFD75], NFKC: [0x0639, 0x062C, 0x0645], NFKD: [0x0639, 0x062C, 0x0645] },
+{ source: [0xFD76], NFC: [0xFD76], NFD: [0xFD76], NFKC: [0x0639, 0x0645, 0x0645], NFKD: [0x0639, 0x0645, 0x0645] },
+{ source: [0xFD77], NFC: [0xFD77], NFD: [0xFD77], NFKC: [0x0639, 0x0645, 0x0645], NFKD: [0x0639, 0x0645, 0x0645] },
+{ source: [0xFD78], NFC: [0xFD78], NFD: [0xFD78], NFKC: [0x0639, 0x0645, 0x0649], NFKD: [0x0639, 0x0645, 0x0649] },
+{ source: [0xFD79], NFC: [0xFD79], NFD: [0xFD79], NFKC: [0x063A, 0x0645, 0x0645], NFKD: [0x063A, 0x0645, 0x0645] },
+{ source: [0xFD7A], NFC: [0xFD7A], NFD: [0xFD7A], NFKC: [0x063A, 0x0645, 0x064A], NFKD: [0x063A, 0x0645, 0x064A] },
+{ source: [0xFD7B], NFC: [0xFD7B], NFD: [0xFD7B], NFKC: [0x063A, 0x0645, 0x0649], NFKD: [0x063A, 0x0645, 0x0649] },
+{ source: [0xFD7C], NFC: [0xFD7C], NFD: [0xFD7C], NFKC: [0x0641, 0x062E, 0x0645], NFKD: [0x0641, 0x062E, 0x0645] },
+{ source: [0xFD7D], NFC: [0xFD7D], NFD: [0xFD7D], NFKC: [0x0641, 0x062E, 0x0645], NFKD: [0x0641, 0x062E, 0x0645] },
+{ source: [0xFD7E], NFC: [0xFD7E], NFD: [0xFD7E], NFKC: [0x0642, 0x0645, 0x062D], NFKD: [0x0642, 0x0645, 0x062D] },
+{ source: [0xFD7F], NFC: [0xFD7F], NFD: [0xFD7F], NFKC: [0x0642, 0x0645, 0x0645], NFKD: [0x0642, 0x0645, 0x0645] },
+{ source: [0xFD80], NFC: [0xFD80], NFD: [0xFD80], NFKC: [0x0644, 0x062D, 0x0645], NFKD: [0x0644, 0x062D, 0x0645] },
+{ source: [0xFD81], NFC: [0xFD81], NFD: [0xFD81], NFKC: [0x0644, 0x062D, 0x064A], NFKD: [0x0644, 0x062D, 0x064A] },
+{ source: [0xFD82], NFC: [0xFD82], NFD: [0xFD82], NFKC: [0x0644, 0x062D, 0x0649], NFKD: [0x0644, 0x062D, 0x0649] },
+{ source: [0xFD83], NFC: [0xFD83], NFD: [0xFD83], NFKC: [0x0644, 0x062C, 0x062C], NFKD: [0x0644, 0x062C, 0x062C] },
+{ source: [0xFD84], NFC: [0xFD84], NFD: [0xFD84], NFKC: [0x0644, 0x062C, 0x062C], NFKD: [0x0644, 0x062C, 0x062C] },
+{ source: [0xFD85], NFC: [0xFD85], NFD: [0xFD85], NFKC: [0x0644, 0x062E, 0x0645], NFKD: [0x0644, 0x062E, 0x0645] },
+{ source: [0xFD86], NFC: [0xFD86], NFD: [0xFD86], NFKC: [0x0644, 0x062E, 0x0645], NFKD: [0x0644, 0x062E, 0x0645] },
+{ source: [0xFD87], NFC: [0xFD87], NFD: [0xFD87], NFKC: [0x0644, 0x0645, 0x062D], NFKD: [0x0644, 0x0645, 0x062D] },
+{ source: [0xFD88], NFC: [0xFD88], NFD: [0xFD88], NFKC: [0x0644, 0x0645, 0x062D], NFKD: [0x0644, 0x0645, 0x062D] },
+{ source: [0xFD89], NFC: [0xFD89], NFD: [0xFD89], NFKC: [0x0645, 0x062D, 0x062C], NFKD: [0x0645, 0x062D, 0x062C] },
+{ source: [0xFD8A], NFC: [0xFD8A], NFD: [0xFD8A], NFKC: [0x0645, 0x062D, 0x0645], NFKD: [0x0645, 0x062D, 0x0645] },
+{ source: [0xFD8B], NFC: [0xFD8B], NFD: [0xFD8B], NFKC: [0x0645, 0x062D, 0x064A], NFKD: [0x0645, 0x062D, 0x064A] },
+{ source: [0xFD8C], NFC: [0xFD8C], NFD: [0xFD8C], NFKC: [0x0645, 0x062C, 0x062D], NFKD: [0x0645, 0x062C, 0x062D] },
+{ source: [0xFD8D], NFC: [0xFD8D], NFD: [0xFD8D], NFKC: [0x0645, 0x062C, 0x0645], NFKD: [0x0645, 0x062C, 0x0645] },
+{ source: [0xFD8E], NFC: [0xFD8E], NFD: [0xFD8E], NFKC: [0x0645, 0x062E, 0x062C], NFKD: [0x0645, 0x062E, 0x062C] },
+{ source: [0xFD8F], NFC: [0xFD8F], NFD: [0xFD8F], NFKC: [0x0645, 0x062E, 0x0645], NFKD: [0x0645, 0x062E, 0x0645] },
+{ source: [0xFD92], NFC: [0xFD92], NFD: [0xFD92], NFKC: [0x0645, 0x062C, 0x062E], NFKD: [0x0645, 0x062C, 0x062E] },
+{ source: [0xFD93], NFC: [0xFD93], NFD: [0xFD93], NFKC: [0x0647, 0x0645, 0x062C], NFKD: [0x0647, 0x0645, 0x062C] },
+{ source: [0xFD94], NFC: [0xFD94], NFD: [0xFD94], NFKC: [0x0647, 0x0645, 0x0645], NFKD: [0x0647, 0x0645, 0x0645] },
+{ source: [0xFD95], NFC: [0xFD95], NFD: [0xFD95], NFKC: [0x0646, 0x062D, 0x0645], NFKD: [0x0646, 0x062D, 0x0645] },
+{ source: [0xFD96], NFC: [0xFD96], NFD: [0xFD96], NFKC: [0x0646, 0x062D, 0x0649], NFKD: [0x0646, 0x062D, 0x0649] },
+{ source: [0xFD97], NFC: [0xFD97], NFD: [0xFD97], NFKC: [0x0646, 0x062C, 0x0645], NFKD: [0x0646, 0x062C, 0x0645] },
+{ source: [0xFD98], NFC: [0xFD98], NFD: [0xFD98], NFKC: [0x0646, 0x062C, 0x0645], NFKD: [0x0646, 0x062C, 0x0645] },
+{ source: [0xFD99], NFC: [0xFD99], NFD: [0xFD99], NFKC: [0x0646, 0x062C, 0x0649], NFKD: [0x0646, 0x062C, 0x0649] },
+{ source: [0xFD9A], NFC: [0xFD9A], NFD: [0xFD9A], NFKC: [0x0646, 0x0645, 0x064A], NFKD: [0x0646, 0x0645, 0x064A] },
+{ source: [0xFD9B], NFC: [0xFD9B], NFD: [0xFD9B], NFKC: [0x0646, 0x0645, 0x0649], NFKD: [0x0646, 0x0645, 0x0649] },
+{ source: [0xFD9C], NFC: [0xFD9C], NFD: [0xFD9C], NFKC: [0x064A, 0x0645, 0x0645], NFKD: [0x064A, 0x0645, 0x0645] },
+{ source: [0xFD9D], NFC: [0xFD9D], NFD: [0xFD9D], NFKC: [0x064A, 0x0645, 0x0645], NFKD: [0x064A, 0x0645, 0x0645] },
+{ source: [0xFD9E], NFC: [0xFD9E], NFD: [0xFD9E], NFKC: [0x0628, 0x062E, 0x064A], NFKD: [0x0628, 0x062E, 0x064A] },
+{ source: [0xFD9F], NFC: [0xFD9F], NFD: [0xFD9F], NFKC: [0x062A, 0x062C, 0x064A], NFKD: [0x062A, 0x062C, 0x064A] },
+{ source: [0xFDA0], NFC: [0xFDA0], NFD: [0xFDA0], NFKC: [0x062A, 0x062C, 0x0649], NFKD: [0x062A, 0x062C, 0x0649] },
+{ source: [0xFDA1], NFC: [0xFDA1], NFD: [0xFDA1], NFKC: [0x062A, 0x062E, 0x064A], NFKD: [0x062A, 0x062E, 0x064A] },
+{ source: [0xFDA2], NFC: [0xFDA2], NFD: [0xFDA2], NFKC: [0x062A, 0x062E, 0x0649], NFKD: [0x062A, 0x062E, 0x0649] },
+{ source: [0xFDA3], NFC: [0xFDA3], NFD: [0xFDA3], NFKC: [0x062A, 0x0645, 0x064A], NFKD: [0x062A, 0x0645, 0x064A] },
+{ source: [0xFDA4], NFC: [0xFDA4], NFD: [0xFDA4], NFKC: [0x062A, 0x0645, 0x0649], NFKD: [0x062A, 0x0645, 0x0649] },
+{ source: [0xFDA5], NFC: [0xFDA5], NFD: [0xFDA5], NFKC: [0x062C, 0x0645, 0x064A], NFKD: [0x062C, 0x0645, 0x064A] },
+{ source: [0xFDA6], NFC: [0xFDA6], NFD: [0xFDA6], NFKC: [0x062C, 0x062D, 0x0649], NFKD: [0x062C, 0x062D, 0x0649] },
+{ source: [0xFDA7], NFC: [0xFDA7], NFD: [0xFDA7], NFKC: [0x062C, 0x0645, 0x0649], NFKD: [0x062C, 0x0645, 0x0649] },
+{ source: [0xFDA8], NFC: [0xFDA8], NFD: [0xFDA8], NFKC: [0x0633, 0x062E, 0x0649], NFKD: [0x0633, 0x062E, 0x0649] },
+{ source: [0xFDA9], NFC: [0xFDA9], NFD: [0xFDA9], NFKC: [0x0635, 0x062D, 0x064A], NFKD: [0x0635, 0x062D, 0x064A] },
+{ source: [0xFDAA], NFC: [0xFDAA], NFD: [0xFDAA], NFKC: [0x0634, 0x062D, 0x064A], NFKD: [0x0634, 0x062D, 0x064A] },
+{ source: [0xFDAB], NFC: [0xFDAB], NFD: [0xFDAB], NFKC: [0x0636, 0x062D, 0x064A], NFKD: [0x0636, 0x062D, 0x064A] },
+{ source: [0xFDAC], NFC: [0xFDAC], NFD: [0xFDAC], NFKC: [0x0644, 0x062C, 0x064A], NFKD: [0x0644, 0x062C, 0x064A] },
+{ source: [0xFDAD], NFC: [0xFDAD], NFD: [0xFDAD], NFKC: [0x0644, 0x0645, 0x064A], NFKD: [0x0644, 0x0645, 0x064A] },
+{ source: [0xFDAE], NFC: [0xFDAE], NFD: [0xFDAE], NFKC: [0x064A, 0x062D, 0x064A], NFKD: [0x064A, 0x062D, 0x064A] },
+{ source: [0xFDAF], NFC: [0xFDAF], NFD: [0xFDAF], NFKC: [0x064A, 0x062C, 0x064A], NFKD: [0x064A, 0x062C, 0x064A] },
+{ source: [0xFDB0], NFC: [0xFDB0], NFD: [0xFDB0], NFKC: [0x064A, 0x0645, 0x064A], NFKD: [0x064A, 0x0645, 0x064A] },
+{ source: [0xFDB1], NFC: [0xFDB1], NFD: [0xFDB1], NFKC: [0x0645, 0x0645, 0x064A], NFKD: [0x0645, 0x0645, 0x064A] },
+{ source: [0xFDB2], NFC: [0xFDB2], NFD: [0xFDB2], NFKC: [0x0642, 0x0645, 0x064A], NFKD: [0x0642, 0x0645, 0x064A] },
+{ source: [0xFDB3], NFC: [0xFDB3], NFD: [0xFDB3], NFKC: [0x0646, 0x062D, 0x064A], NFKD: [0x0646, 0x062D, 0x064A] },
+{ source: [0xFDB4], NFC: [0xFDB4], NFD: [0xFDB4], NFKC: [0x0642, 0x0645, 0x062D], NFKD: [0x0642, 0x0645, 0x062D] },
+{ source: [0xFDB5], NFC: [0xFDB5], NFD: [0xFDB5], NFKC: [0x0644, 0x062D, 0x0645], NFKD: [0x0644, 0x062D, 0x0645] },
+{ source: [0xFDB6], NFC: [0xFDB6], NFD: [0xFDB6], NFKC: [0x0639, 0x0645, 0x064A], NFKD: [0x0639, 0x0645, 0x064A] },
+{ source: [0xFDB7], NFC: [0xFDB7], NFD: [0xFDB7], NFKC: [0x0643, 0x0645, 0x064A], NFKD: [0x0643, 0x0645, 0x064A] },
+{ source: [0xFDB8], NFC: [0xFDB8], NFD: [0xFDB8], NFKC: [0x0646, 0x062C, 0x062D], NFKD: [0x0646, 0x062C, 0x062D] },
+{ source: [0xFDB9], NFC: [0xFDB9], NFD: [0xFDB9], NFKC: [0x0645, 0x062E, 0x064A], NFKD: [0x0645, 0x062E, 0x064A] },
+{ source: [0xFDBA], NFC: [0xFDBA], NFD: [0xFDBA], NFKC: [0x0644, 0x062C, 0x0645], NFKD: [0x0644, 0x062C, 0x0645] },
+{ source: [0xFDBB], NFC: [0xFDBB], NFD: [0xFDBB], NFKC: [0x0643, 0x0645, 0x0645], NFKD: [0x0643, 0x0645, 0x0645] },
+{ source: [0xFDBC], NFC: [0xFDBC], NFD: [0xFDBC], NFKC: [0x0644, 0x062C, 0x0645], NFKD: [0x0644, 0x062C, 0x0645] },
+{ source: [0xFDBD], NFC: [0xFDBD], NFD: [0xFDBD], NFKC: [0x0646, 0x062C, 0x062D], NFKD: [0x0646, 0x062C, 0x062D] },
+{ source: [0xFDBE], NFC: [0xFDBE], NFD: [0xFDBE], NFKC: [0x062C, 0x062D, 0x064A], NFKD: [0x062C, 0x062D, 0x064A] },
+{ source: [0xFDBF], NFC: [0xFDBF], NFD: [0xFDBF], NFKC: [0x062D, 0x062C, 0x064A], NFKD: [0x062D, 0x062C, 0x064A] },
+{ source: [0xFDC0], NFC: [0xFDC0], NFD: [0xFDC0], NFKC: [0x0645, 0x062C, 0x064A], NFKD: [0x0645, 0x062C, 0x064A] },
+{ source: [0xFDC1], NFC: [0xFDC1], NFD: [0xFDC1], NFKC: [0x0641, 0x0645, 0x064A], NFKD: [0x0641, 0x0645, 0x064A] },
+{ source: [0xFDC2], NFC: [0xFDC2], NFD: [0xFDC2], NFKC: [0x0628, 0x062D, 0x064A], NFKD: [0x0628, 0x062D, 0x064A] },
+{ source: [0xFDC3], NFC: [0xFDC3], NFD: [0xFDC3], NFKC: [0x0643, 0x0645, 0x0645], NFKD: [0x0643, 0x0645, 0x0645] },
+{ source: [0xFDC4], NFC: [0xFDC4], NFD: [0xFDC4], NFKC: [0x0639, 0x062C, 0x0645], NFKD: [0x0639, 0x062C, 0x0645] },
+{ source: [0xFDC5], NFC: [0xFDC5], NFD: [0xFDC5], NFKC: [0x0635, 0x0645, 0x0645], NFKD: [0x0635, 0x0645, 0x0645] },
+{ source: [0xFDC6], NFC: [0xFDC6], NFD: [0xFDC6], NFKC: [0x0633, 0x062E, 0x064A], NFKD: [0x0633, 0x062E, 0x064A] },
+{ source: [0xFDC7], NFC: [0xFDC7], NFD: [0xFDC7], NFKC: [0x0646, 0x062C, 0x064A], NFKD: [0x0646, 0x062C, 0x064A] },
+{ source: [0xFDF0], NFC: [0xFDF0], NFD: [0xFDF0], NFKC: [0x0635, 0x0644, 0x06D2], NFKD: [0x0635, 0x0644, 0x06D2] },
+{ source: [0xFDF1], NFC: [0xFDF1], NFD: [0xFDF1], NFKC: [0x0642, 0x0644, 0x06D2], NFKD: [0x0642, 0x0644, 0x06D2] },
+{ source: [0xFDF2], NFC: [0xFDF2], NFD: [0xFDF2], NFKC: [0x0627, 0x0644, 0x0644, 0x0647], NFKD: [0x0627, 0x0644, 0x0644, 0x0647] },
+{ source: [0xFDF3], NFC: [0xFDF3], NFD: [0xFDF3], NFKC: [0x0627, 0x0643, 0x0628, 0x0631], NFKD: [0x0627, 0x0643, 0x0628, 0x0631] },
+{ source: [0xFDF4], NFC: [0xFDF4], NFD: [0xFDF4], NFKC: [0x0645, 0x062D, 0x0645, 0x062F], NFKD: [0x0645, 0x062D, 0x0645, 0x062F] },
+{ source: [0xFDF5], NFC: [0xFDF5], NFD: [0xFDF5], NFKC: [0x0635, 0x0644, 0x0639, 0x0645], NFKD: [0x0635, 0x0644, 0x0639, 0x0645] },
+{ source: [0xFDF6], NFC: [0xFDF6], NFD: [0xFDF6], NFKC: [0x0631, 0x0633, 0x0648, 0x0644], NFKD: [0x0631, 0x0633, 0x0648, 0x0644] },
+{ source: [0xFDF7], NFC: [0xFDF7], NFD: [0xFDF7], NFKC: [0x0639, 0x0644, 0x064A, 0x0647], NFKD: [0x0639, 0x0644, 0x064A, 0x0647] },
+{ source: [0xFDF8], NFC: [0xFDF8], NFD: [0xFDF8], NFKC: [0x0648, 0x0633, 0x0644, 0x0645], NFKD: [0x0648, 0x0633, 0x0644, 0x0645] },
+{ source: [0xFDF9], NFC: [0xFDF9], NFD: [0xFDF9], NFKC: [0x0635, 0x0644, 0x0649], NFKD: [0x0635, 0x0644, 0x0649] },
+{ source: [0xFDFA], NFC: [0xFDFA], NFD: [0xFDFA], NFKC: [0x0635, 0x0644, 0x0649, 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, 0x0639, 0x0644, 0x064A, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645], NFKD: [0x0635, 0x0644, 0x0649, 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, 0x0639, 0x0644, 0x064A, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645] },
+{ source: [0xFDFB], NFC: [0xFDFB], NFD: [0xFDFB], NFKC: [0x062C, 0x0644, 0x0020, 0x062C, 0x0644, 0x0627, 0x0644, 0x0647], NFKD: [0x062C, 0x0644, 0x0020, 0x062C, 0x0644, 0x0627, 0x0644, 0x0647] },
+{ source: [0xFDFC], NFC: [0xFDFC], NFD: [0xFDFC], NFKC: [0x0631, 0x06CC, 0x0627, 0x0644], NFKD: [0x0631, 0x06CC, 0x0627, 0x0644] },
+{ source: [0xFE10], NFC: [0xFE10], NFD: [0xFE10], NFKC: [0x002C], NFKD: [0x002C] },
+{ source: [0xFE11], NFC: [0xFE11], NFD: [0xFE11], NFKC: [0x3001], NFKD: [0x3001] },
+{ source: [0xFE12], NFC: [0xFE12], NFD: [0xFE12], NFKC: [0x3002], NFKD: [0x3002] },
+{ source: [0xFE13], NFC: [0xFE13], NFD: [0xFE13], NFKC: [0x003A], NFKD: [0x003A] },
+{ source: [0xFE14], NFC: [0xFE14], NFD: [0xFE14], NFKC: [0x003B], NFKD: [0x003B] },
+{ source: [0xFE15], NFC: [0xFE15], NFD: [0xFE15], NFKC: [0x0021], NFKD: [0x0021] },
+{ source: [0xFE16], NFC: [0xFE16], NFD: [0xFE16], NFKC: [0x003F], NFKD: [0x003F] },
+{ source: [0xFE17], NFC: [0xFE17], NFD: [0xFE17], NFKC: [0x3016], NFKD: [0x3016] },
+{ source: [0xFE18], NFC: [0xFE18], NFD: [0xFE18], NFKC: [0x3017], NFKD: [0x3017] },
+{ source: [0xFE19], NFC: [0xFE19], NFD: [0xFE19], NFKC: [0x002E, 0x002E, 0x002E], NFKD: [0x002E, 0x002E, 0x002E] },
+{ source: [0xFE30], NFC: [0xFE30], NFD: [0xFE30], NFKC: [0x002E, 0x002E], NFKD: [0x002E, 0x002E] },
+{ source: [0xFE31], NFC: [0xFE31], NFD: [0xFE31], NFKC: [0x2014], NFKD: [0x2014] },
+{ source: [0xFE32], NFC: [0xFE32], NFD: [0xFE32], NFKC: [0x2013], NFKD: [0x2013] },
+{ source: [0xFE33], NFC: [0xFE33], NFD: [0xFE33], NFKC: [0x005F], NFKD: [0x005F] },
+{ source: [0xFE34], NFC: [0xFE34], NFD: [0xFE34], NFKC: [0x005F], NFKD: [0x005F] },
+{ source: [0xFE35], NFC: [0xFE35], NFD: [0xFE35], NFKC: [0x0028], NFKD: [0x0028] },
+{ source: [0xFE36], NFC: [0xFE36], NFD: [0xFE36], NFKC: [0x0029], NFKD: [0x0029] },
+{ source: [0xFE37], NFC: [0xFE37], NFD: [0xFE37], NFKC: [0x007B], NFKD: [0x007B] },
+{ source: [0xFE38], NFC: [0xFE38], NFD: [0xFE38], NFKC: [0x007D], NFKD: [0x007D] },
+{ source: [0xFE39], NFC: [0xFE39], NFD: [0xFE39], NFKC: [0x3014], NFKD: [0x3014] },
+{ source: [0xFE3A], NFC: [0xFE3A], NFD: [0xFE3A], NFKC: [0x3015], NFKD: [0x3015] },
+{ source: [0xFE3B], NFC: [0xFE3B], NFD: [0xFE3B], NFKC: [0x3010], NFKD: [0x3010] },
+{ source: [0xFE3C], NFC: [0xFE3C], NFD: [0xFE3C], NFKC: [0x3011], NFKD: [0x3011] },
+{ source: [0xFE3D], NFC: [0xFE3D], NFD: [0xFE3D], NFKC: [0x300A], NFKD: [0x300A] },
+{ source: [0xFE3E], NFC: [0xFE3E], NFD: [0xFE3E], NFKC: [0x300B], NFKD: [0x300B] },
+{ source: [0xFE3F], NFC: [0xFE3F], NFD: [0xFE3F], NFKC: [0x3008], NFKD: [0x3008] },
+{ source: [0xFE40], NFC: [0xFE40], NFD: [0xFE40], NFKC: [0x3009], NFKD: [0x3009] },
+{ source: [0xFE41], NFC: [0xFE41], NFD: [0xFE41], NFKC: [0x300C], NFKD: [0x300C] },
+{ source: [0xFE42], NFC: [0xFE42], NFD: [0xFE42], NFKC: [0x300D], NFKD: [0x300D] },
+{ source: [0xFE43], NFC: [0xFE43], NFD: [0xFE43], NFKC: [0x300E], NFKD: [0x300E] },
+{ source: [0xFE44], NFC: [0xFE44], NFD: [0xFE44], NFKC: [0x300F], NFKD: [0x300F] },
+{ source: [0xFE47], NFC: [0xFE47], NFD: [0xFE47], NFKC: [0x005B], NFKD: [0x005B] },
+{ source: [0xFE48], NFC: [0xFE48], NFD: [0xFE48], NFKC: [0x005D], NFKD: [0x005D] },
+{ source: [0xFE49], NFC: [0xFE49], NFD: [0xFE49], NFKC: [0x0020, 0x0305], NFKD: [0x0020, 0x0305] },
+{ source: [0xFE4A], NFC: [0xFE4A], NFD: [0xFE4A], NFKC: [0x0020, 0x0305], NFKD: [0x0020, 0x0305] },
+{ source: [0xFE4B], NFC: [0xFE4B], NFD: [0xFE4B], NFKC: [0x0020, 0x0305], NFKD: [0x0020, 0x0305] },
+{ source: [0xFE4C], NFC: [0xFE4C], NFD: [0xFE4C], NFKC: [0x0020, 0x0305], NFKD: [0x0020, 0x0305] },
+{ source: [0xFE4D], NFC: [0xFE4D], NFD: [0xFE4D], NFKC: [0x005F], NFKD: [0x005F] },
+{ source: [0xFE4E], NFC: [0xFE4E], NFD: [0xFE4E], NFKC: [0x005F], NFKD: [0x005F] },
+{ source: [0xFE4F], NFC: [0xFE4F], NFD: [0xFE4F], NFKC: [0x005F], NFKD: [0x005F] },
+{ source: [0xFE50], NFC: [0xFE50], NFD: [0xFE50], NFKC: [0x002C], NFKD: [0x002C] },
+{ source: [0xFE51], NFC: [0xFE51], NFD: [0xFE51], NFKC: [0x3001], NFKD: [0x3001] },
+{ source: [0xFE52], NFC: [0xFE52], NFD: [0xFE52], NFKC: [0x002E], NFKD: [0x002E] },
+{ source: [0xFE54], NFC: [0xFE54], NFD: [0xFE54], NFKC: [0x003B], NFKD: [0x003B] },
+{ source: [0xFE55], NFC: [0xFE55], NFD: [0xFE55], NFKC: [0x003A], NFKD: [0x003A] },
+{ source: [0xFE56], NFC: [0xFE56], NFD: [0xFE56], NFKC: [0x003F], NFKD: [0x003F] },
+{ source: [0xFE57], NFC: [0xFE57], NFD: [0xFE57], NFKC: [0x0021], NFKD: [0x0021] },
+{ source: [0xFE58], NFC: [0xFE58], NFD: [0xFE58], NFKC: [0x2014], NFKD: [0x2014] },
+{ source: [0xFE59], NFC: [0xFE59], NFD: [0xFE59], NFKC: [0x0028], NFKD: [0x0028] },
+{ source: [0xFE5A], NFC: [0xFE5A], NFD: [0xFE5A], NFKC: [0x0029], NFKD: [0x0029] },
+{ source: [0xFE5B], NFC: [0xFE5B], NFD: [0xFE5B], NFKC: [0x007B], NFKD: [0x007B] },
+{ source: [0xFE5C], NFC: [0xFE5C], NFD: [0xFE5C], NFKC: [0x007D], NFKD: [0x007D] },
+{ source: [0xFE5D], NFC: [0xFE5D], NFD: [0xFE5D], NFKC: [0x3014], NFKD: [0x3014] },
+{ source: [0xFE5E], NFC: [0xFE5E], NFD: [0xFE5E], NFKC: [0x3015], NFKD: [0x3015] },
+{ source: [0xFE5F], NFC: [0xFE5F], NFD: [0xFE5F], NFKC: [0x0023], NFKD: [0x0023] },
+{ source: [0xFE60], NFC: [0xFE60], NFD: [0xFE60], NFKC: [0x0026], NFKD: [0x0026] },
+{ source: [0xFE61], NFC: [0xFE61], NFD: [0xFE61], NFKC: [0x002A], NFKD: [0x002A] },
+{ source: [0xFE62], NFC: [0xFE62], NFD: [0xFE62], NFKC: [0x002B], NFKD: [0x002B] },
+{ source: [0xFE63], NFC: [0xFE63], NFD: [0xFE63], NFKC: [0x002D], NFKD: [0x002D] },
+{ source: [0xFE64], NFC: [0xFE64], NFD: [0xFE64], NFKC: [0x003C], NFKD: [0x003C] },
+{ source: [0xFE65], NFC: [0xFE65], NFD: [0xFE65], NFKC: [0x003E], NFKD: [0x003E] },
+{ source: [0xFE66], NFC: [0xFE66], NFD: [0xFE66], NFKC: [0x003D], NFKD: [0x003D] },
+{ source: [0xFE68], NFC: [0xFE68], NFD: [0xFE68], NFKC: [0x005C], NFKD: [0x005C] },
+{ source: [0xFE69], NFC: [0xFE69], NFD: [0xFE69], NFKC: [0x0024], NFKD: [0x0024] },
+{ source: [0xFE6A], NFC: [0xFE6A], NFD: [0xFE6A], NFKC: [0x0025], NFKD: [0x0025] },
+{ source: [0xFE6B], NFC: [0xFE6B], NFD: [0xFE6B], NFKC: [0x0040], NFKD: [0x0040] },
+{ source: [0xFE70], NFC: [0xFE70], NFD: [0xFE70], NFKC: [0x0020, 0x064B], NFKD: [0x0020, 0x064B] },
+{ source: [0xFE71], NFC: [0xFE71], NFD: [0xFE71], NFKC: [0x0640, 0x064B], NFKD: [0x0640, 0x064B] },
+{ source: [0xFE72], NFC: [0xFE72], NFD: [0xFE72], NFKC: [0x0020, 0x064C], NFKD: [0x0020, 0x064C] },
+{ source: [0xFE74], NFC: [0xFE74], NFD: [0xFE74], NFKC: [0x0020, 0x064D], NFKD: [0x0020, 0x064D] },
+{ source: [0xFE76], NFC: [0xFE76], NFD: [0xFE76], NFKC: [0x0020, 0x064E], NFKD: [0x0020, 0x064E] },
+{ source: [0xFE77], NFC: [0xFE77], NFD: [0xFE77], NFKC: [0x0640, 0x064E], NFKD: [0x0640, 0x064E] },
+{ source: [0xFE78], NFC: [0xFE78], NFD: [0xFE78], NFKC: [0x0020, 0x064F], NFKD: [0x0020, 0x064F] },
+{ source: [0xFE79], NFC: [0xFE79], NFD: [0xFE79], NFKC: [0x0640, 0x064F], NFKD: [0x0640, 0x064F] },
+{ source: [0xFE7A], NFC: [0xFE7A], NFD: [0xFE7A], NFKC: [0x0020, 0x0650], NFKD: [0x0020, 0x0650] },
+{ source: [0xFE7B], NFC: [0xFE7B], NFD: [0xFE7B], NFKC: [0x0640, 0x0650], NFKD: [0x0640, 0x0650] },
+{ source: [0xFE7C], NFC: [0xFE7C], NFD: [0xFE7C], NFKC: [0x0020, 0x0651], NFKD: [0x0020, 0x0651] },
+{ source: [0xFE7D], NFC: [0xFE7D], NFD: [0xFE7D], NFKC: [0x0640, 0x0651], NFKD: [0x0640, 0x0651] },
+{ source: [0xFE7E], NFC: [0xFE7E], NFD: [0xFE7E], NFKC: [0x0020, 0x0652], NFKD: [0x0020, 0x0652] },
+{ source: [0xFE7F], NFC: [0xFE7F], NFD: [0xFE7F], NFKC: [0x0640, 0x0652], NFKD: [0x0640, 0x0652] },
+{ source: [0xFE80], NFC: [0xFE80], NFD: [0xFE80], NFKC: [0x0621], NFKD: [0x0621] },
+{ source: [0xFE81], NFC: [0xFE81], NFD: [0xFE81], NFKC: [0x0622], NFKD: [0x0627, 0x0653] },
+{ source: [0xFE82], NFC: [0xFE82], NFD: [0xFE82], NFKC: [0x0622], NFKD: [0x0627, 0x0653] },
+{ source: [0xFE83], NFC: [0xFE83], NFD: [0xFE83], NFKC: [0x0623], NFKD: [0x0627, 0x0654] },
+{ source: [0xFE84], NFC: [0xFE84], NFD: [0xFE84], NFKC: [0x0623], NFKD: [0x0627, 0x0654] },
+{ source: [0xFE85], NFC: [0xFE85], NFD: [0xFE85], NFKC: [0x0624], NFKD: [0x0648, 0x0654] },
+{ source: [0xFE86], NFC: [0xFE86], NFD: [0xFE86], NFKC: [0x0624], NFKD: [0x0648, 0x0654] },
+{ source: [0xFE87], NFC: [0xFE87], NFD: [0xFE87], NFKC: [0x0625], NFKD: [0x0627, 0x0655] },
+{ source: [0xFE88], NFC: [0xFE88], NFD: [0xFE88], NFKC: [0x0625], NFKD: [0x0627, 0x0655] },
+{ source: [0xFE89], NFC: [0xFE89], NFD: [0xFE89], NFKC: [0x0626], NFKD: [0x064A, 0x0654] },
+{ source: [0xFE8A], NFC: [0xFE8A], NFD: [0xFE8A], NFKC: [0x0626], NFKD: [0x064A, 0x0654] },
+{ source: [0xFE8B], NFC: [0xFE8B], NFD: [0xFE8B], NFKC: [0x0626], NFKD: [0x064A, 0x0654] },
+{ source: [0xFE8C], NFC: [0xFE8C], NFD: [0xFE8C], NFKC: [0x0626], NFKD: [0x064A, 0x0654] },
+{ source: [0xFE8D], NFC: [0xFE8D], NFD: [0xFE8D], NFKC: [0x0627], NFKD: [0x0627] },
+{ source: [0xFE8E], NFC: [0xFE8E], NFD: [0xFE8E], NFKC: [0x0627], NFKD: [0x0627] },
+{ source: [0xFE8F], NFC: [0xFE8F], NFD: [0xFE8F], NFKC: [0x0628], NFKD: [0x0628] },
+{ source: [0xFE90], NFC: [0xFE90], NFD: [0xFE90], NFKC: [0x0628], NFKD: [0x0628] },
+{ source: [0xFE91], NFC: [0xFE91], NFD: [0xFE91], NFKC: [0x0628], NFKD: [0x0628] },
+{ source: [0xFE92], NFC: [0xFE92], NFD: [0xFE92], NFKC: [0x0628], NFKD: [0x0628] },
+{ source: [0xFE93], NFC: [0xFE93], NFD: [0xFE93], NFKC: [0x0629], NFKD: [0x0629] },
+{ source: [0xFE94], NFC: [0xFE94], NFD: [0xFE94], NFKC: [0x0629], NFKD: [0x0629] },
+{ source: [0xFE95], NFC: [0xFE95], NFD: [0xFE95], NFKC: [0x062A], NFKD: [0x062A] },
+{ source: [0xFE96], NFC: [0xFE96], NFD: [0xFE96], NFKC: [0x062A], NFKD: [0x062A] },
+{ source: [0xFE97], NFC: [0xFE97], NFD: [0xFE97], NFKC: [0x062A], NFKD: [0x062A] },
+{ source: [0xFE98], NFC: [0xFE98], NFD: [0xFE98], NFKC: [0x062A], NFKD: [0x062A] },
+{ source: [0xFE99], NFC: [0xFE99], NFD: [0xFE99], NFKC: [0x062B], NFKD: [0x062B] },
+{ source: [0xFE9A], NFC: [0xFE9A], NFD: [0xFE9A], NFKC: [0x062B], NFKD: [0x062B] },
+{ source: [0xFE9B], NFC: [0xFE9B], NFD: [0xFE9B], NFKC: [0x062B], NFKD: [0x062B] },
+{ source: [0xFE9C], NFC: [0xFE9C], NFD: [0xFE9C], NFKC: [0x062B], NFKD: [0x062B] },
+{ source: [0xFE9D], NFC: [0xFE9D], NFD: [0xFE9D], NFKC: [0x062C], NFKD: [0x062C] },
+{ source: [0xFE9E], NFC: [0xFE9E], NFD: [0xFE9E], NFKC: [0x062C], NFKD: [0x062C] },
+{ source: [0xFE9F], NFC: [0xFE9F], NFD: [0xFE9F], NFKC: [0x062C], NFKD: [0x062C] },
+{ source: [0xFEA0], NFC: [0xFEA0], NFD: [0xFEA0], NFKC: [0x062C], NFKD: [0x062C] },
+{ source: [0xFEA1], NFC: [0xFEA1], NFD: [0xFEA1], NFKC: [0x062D], NFKD: [0x062D] },
+{ source: [0xFEA2], NFC: [0xFEA2], NFD: [0xFEA2], NFKC: [0x062D], NFKD: [0x062D] },
+{ source: [0xFEA3], NFC: [0xFEA3], NFD: [0xFEA3], NFKC: [0x062D], NFKD: [0x062D] },
+{ source: [0xFEA4], NFC: [0xFEA4], NFD: [0xFEA4], NFKC: [0x062D], NFKD: [0x062D] },
+{ source: [0xFEA5], NFC: [0xFEA5], NFD: [0xFEA5], NFKC: [0x062E], NFKD: [0x062E] },
+{ source: [0xFEA6], NFC: [0xFEA6], NFD: [0xFEA6], NFKC: [0x062E], NFKD: [0x062E] },
+{ source: [0xFEA7], NFC: [0xFEA7], NFD: [0xFEA7], NFKC: [0x062E], NFKD: [0x062E] },
+{ source: [0xFEA8], NFC: [0xFEA8], NFD: [0xFEA8], NFKC: [0x062E], NFKD: [0x062E] },
+{ source: [0xFEA9], NFC: [0xFEA9], NFD: [0xFEA9], NFKC: [0x062F], NFKD: [0x062F] },
+{ source: [0xFEAA], NFC: [0xFEAA], NFD: [0xFEAA], NFKC: [0x062F], NFKD: [0x062F] },
+{ source: [0xFEAB], NFC: [0xFEAB], NFD: [0xFEAB], NFKC: [0x0630], NFKD: [0x0630] },
+{ source: [0xFEAC], NFC: [0xFEAC], NFD: [0xFEAC], NFKC: [0x0630], NFKD: [0x0630] },
+{ source: [0xFEAD], NFC: [0xFEAD], NFD: [0xFEAD], NFKC: [0x0631], NFKD: [0x0631] },
+{ source: [0xFEAE], NFC: [0xFEAE], NFD: [0xFEAE], NFKC: [0x0631], NFKD: [0x0631] },
+{ source: [0xFEAF], NFC: [0xFEAF], NFD: [0xFEAF], NFKC: [0x0632], NFKD: [0x0632] },
+{ source: [0xFEB0], NFC: [0xFEB0], NFD: [0xFEB0], NFKC: [0x0632], NFKD: [0x0632] },
+{ source: [0xFEB1], NFC: [0xFEB1], NFD: [0xFEB1], NFKC: [0x0633], NFKD: [0x0633] },
+{ source: [0xFEB2], NFC: [0xFEB2], NFD: [0xFEB2], NFKC: [0x0633], NFKD: [0x0633] },
+{ source: [0xFEB3], NFC: [0xFEB3], NFD: [0xFEB3], NFKC: [0x0633], NFKD: [0x0633] },
+{ source: [0xFEB4], NFC: [0xFEB4], NFD: [0xFEB4], NFKC: [0x0633], NFKD: [0x0633] },
+{ source: [0xFEB5], NFC: [0xFEB5], NFD: [0xFEB5], NFKC: [0x0634], NFKD: [0x0634] },
+{ source: [0xFEB6], NFC: [0xFEB6], NFD: [0xFEB6], NFKC: [0x0634], NFKD: [0x0634] },
+{ source: [0xFEB7], NFC: [0xFEB7], NFD: [0xFEB7], NFKC: [0x0634], NFKD: [0x0634] },
+{ source: [0xFEB8], NFC: [0xFEB8], NFD: [0xFEB8], NFKC: [0x0634], NFKD: [0x0634] },
+{ source: [0xFEB9], NFC: [0xFEB9], NFD: [0xFEB9], NFKC: [0x0635], NFKD: [0x0635] },
+{ source: [0xFEBA], NFC: [0xFEBA], NFD: [0xFEBA], NFKC: [0x0635], NFKD: [0x0635] },
+{ source: [0xFEBB], NFC: [0xFEBB], NFD: [0xFEBB], NFKC: [0x0635], NFKD: [0x0635] },
+{ source: [0xFEBC], NFC: [0xFEBC], NFD: [0xFEBC], NFKC: [0x0635], NFKD: [0x0635] },
+{ source: [0xFEBD], NFC: [0xFEBD], NFD: [0xFEBD], NFKC: [0x0636], NFKD: [0x0636] },
+{ source: [0xFEBE], NFC: [0xFEBE], NFD: [0xFEBE], NFKC: [0x0636], NFKD: [0x0636] },
+{ source: [0xFEBF], NFC: [0xFEBF], NFD: [0xFEBF], NFKC: [0x0636], NFKD: [0x0636] },
+{ source: [0xFEC0], NFC: [0xFEC0], NFD: [0xFEC0], NFKC: [0x0636], NFKD: [0x0636] },
+{ source: [0xFEC1], NFC: [0xFEC1], NFD: [0xFEC1], NFKC: [0x0637], NFKD: [0x0637] },
+{ source: [0xFEC2], NFC: [0xFEC2], NFD: [0xFEC2], NFKC: [0x0637], NFKD: [0x0637] },
+{ source: [0xFEC3], NFC: [0xFEC3], NFD: [0xFEC3], NFKC: [0x0637], NFKD: [0x0637] },
+{ source: [0xFEC4], NFC: [0xFEC4], NFD: [0xFEC4], NFKC: [0x0637], NFKD: [0x0637] },
+{ source: [0xFEC5], NFC: [0xFEC5], NFD: [0xFEC5], NFKC: [0x0638], NFKD: [0x0638] },
+{ source: [0xFEC6], NFC: [0xFEC6], NFD: [0xFEC6], NFKC: [0x0638], NFKD: [0x0638] },
+{ source: [0xFEC7], NFC: [0xFEC7], NFD: [0xFEC7], NFKC: [0x0638], NFKD: [0x0638] },
+{ source: [0xFEC8], NFC: [0xFEC8], NFD: [0xFEC8], NFKC: [0x0638], NFKD: [0x0638] },
+{ source: [0xFEC9], NFC: [0xFEC9], NFD: [0xFEC9], NFKC: [0x0639], NFKD: [0x0639] },
+{ source: [0xFECA], NFC: [0xFECA], NFD: [0xFECA], NFKC: [0x0639], NFKD: [0x0639] },
+{ source: [0xFECB], NFC: [0xFECB], NFD: [0xFECB], NFKC: [0x0639], NFKD: [0x0639] },
+{ source: [0xFECC], NFC: [0xFECC], NFD: [0xFECC], NFKC: [0x0639], NFKD: [0x0639] },
+{ source: [0xFECD], NFC: [0xFECD], NFD: [0xFECD], NFKC: [0x063A], NFKD: [0x063A] },
+{ source: [0xFECE], NFC: [0xFECE], NFD: [0xFECE], NFKC: [0x063A], NFKD: [0x063A] },
+{ source: [0xFECF], NFC: [0xFECF], NFD: [0xFECF], NFKC: [0x063A], NFKD: [0x063A] },
+{ source: [0xFED0], NFC: [0xFED0], NFD: [0xFED0], NFKC: [0x063A], NFKD: [0x063A] },
+{ source: [0xFED1], NFC: [0xFED1], NFD: [0xFED1], NFKC: [0x0641], NFKD: [0x0641] },
+{ source: [0xFED2], NFC: [0xFED2], NFD: [0xFED2], NFKC: [0x0641], NFKD: [0x0641] },
+{ source: [0xFED3], NFC: [0xFED3], NFD: [0xFED3], NFKC: [0x0641], NFKD: [0x0641] },
+{ source: [0xFED4], NFC: [0xFED4], NFD: [0xFED4], NFKC: [0x0641], NFKD: [0x0641] },
+{ source: [0xFED5], NFC: [0xFED5], NFD: [0xFED5], NFKC: [0x0642], NFKD: [0x0642] },
+{ source: [0xFED6], NFC: [0xFED6], NFD: [0xFED6], NFKC: [0x0642], NFKD: [0x0642] },
+{ source: [0xFED7], NFC: [0xFED7], NFD: [0xFED7], NFKC: [0x0642], NFKD: [0x0642] },
+{ source: [0xFED8], NFC: [0xFED8], NFD: [0xFED8], NFKC: [0x0642], NFKD: [0x0642] },
+{ source: [0xFED9], NFC: [0xFED9], NFD: [0xFED9], NFKC: [0x0643], NFKD: [0x0643] },
+{ source: [0xFEDA], NFC: [0xFEDA], NFD: [0xFEDA], NFKC: [0x0643], NFKD: [0x0643] },
+{ source: [0xFEDB], NFC: [0xFEDB], NFD: [0xFEDB], NFKC: [0x0643], NFKD: [0x0643] },
+{ source: [0xFEDC], NFC: [0xFEDC], NFD: [0xFEDC], NFKC: [0x0643], NFKD: [0x0643] },
+{ source: [0xFEDD], NFC: [0xFEDD], NFD: [0xFEDD], NFKC: [0x0644], NFKD: [0x0644] },
+{ source: [0xFEDE], NFC: [0xFEDE], NFD: [0xFEDE], NFKC: [0x0644], NFKD: [0x0644] },
+{ source: [0xFEDF], NFC: [0xFEDF], NFD: [0xFEDF], NFKC: [0x0644], NFKD: [0x0644] },
+{ source: [0xFEE0], NFC: [0xFEE0], NFD: [0xFEE0], NFKC: [0x0644], NFKD: [0x0644] },
+{ source: [0xFEE1], NFC: [0xFEE1], NFD: [0xFEE1], NFKC: [0x0645], NFKD: [0x0645] },
+{ source: [0xFEE2], NFC: [0xFEE2], NFD: [0xFEE2], NFKC: [0x0645], NFKD: [0x0645] },
+{ source: [0xFEE3], NFC: [0xFEE3], NFD: [0xFEE3], NFKC: [0x0645], NFKD: [0x0645] },
+{ source: [0xFEE4], NFC: [0xFEE4], NFD: [0xFEE4], NFKC: [0x0645], NFKD: [0x0645] },
+{ source: [0xFEE5], NFC: [0xFEE5], NFD: [0xFEE5], NFKC: [0x0646], NFKD: [0x0646] },
+{ source: [0xFEE6], NFC: [0xFEE6], NFD: [0xFEE6], NFKC: [0x0646], NFKD: [0x0646] },
+{ source: [0xFEE7], NFC: [0xFEE7], NFD: [0xFEE7], NFKC: [0x0646], NFKD: [0x0646] },
+{ source: [0xFEE8], NFC: [0xFEE8], NFD: [0xFEE8], NFKC: [0x0646], NFKD: [0x0646] },
+{ source: [0xFEE9], NFC: [0xFEE9], NFD: [0xFEE9], NFKC: [0x0647], NFKD: [0x0647] },
+{ source: [0xFEEA], NFC: [0xFEEA], NFD: [0xFEEA], NFKC: [0x0647], NFKD: [0x0647] },
+{ source: [0xFEEB], NFC: [0xFEEB], NFD: [0xFEEB], NFKC: [0x0647], NFKD: [0x0647] },
+{ source: [0xFEEC], NFC: [0xFEEC], NFD: [0xFEEC], NFKC: [0x0647], NFKD: [0x0647] },
+{ source: [0xFEED], NFC: [0xFEED], NFD: [0xFEED], NFKC: [0x0648], NFKD: [0x0648] },
+{ source: [0xFEEE], NFC: [0xFEEE], NFD: [0xFEEE], NFKC: [0x0648], NFKD: [0x0648] },
+{ source: [0xFEEF], NFC: [0xFEEF], NFD: [0xFEEF], NFKC: [0x0649], NFKD: [0x0649] },
+{ source: [0xFEF0], NFC: [0xFEF0], NFD: [0xFEF0], NFKC: [0x0649], NFKD: [0x0649] },
+{ source: [0xFEF1], NFC: [0xFEF1], NFD: [0xFEF1], NFKC: [0x064A], NFKD: [0x064A] },
+{ source: [0xFEF2], NFC: [0xFEF2], NFD: [0xFEF2], NFKC: [0x064A], NFKD: [0x064A] },
+{ source: [0xFEF3], NFC: [0xFEF3], NFD: [0xFEF3], NFKC: [0x064A], NFKD: [0x064A] },
+{ source: [0xFEF4], NFC: [0xFEF4], NFD: [0xFEF4], NFKC: [0x064A], NFKD: [0x064A] },
+{ source: [0xFEF5], NFC: [0xFEF5], NFD: [0xFEF5], NFKC: [0x0644, 0x0622], NFKD: [0x0644, 0x0627, 0x0653] },
+{ source: [0xFEF6], NFC: [0xFEF6], NFD: [0xFEF6], NFKC: [0x0644, 0x0622], NFKD: [0x0644, 0x0627, 0x0653] },
+{ source: [0xFEF7], NFC: [0xFEF7], NFD: [0xFEF7], NFKC: [0x0644, 0x0623], NFKD: [0x0644, 0x0627, 0x0654] },
+{ source: [0xFEF8], NFC: [0xFEF8], NFD: [0xFEF8], NFKC: [0x0644, 0x0623], NFKD: [0x0644, 0x0627, 0x0654] },
+{ source: [0xFEF9], NFC: [0xFEF9], NFD: [0xFEF9], NFKC: [0x0644, 0x0625], NFKD: [0x0644, 0x0627, 0x0655] },
+{ source: [0xFEFA], NFC: [0xFEFA], NFD: [0xFEFA], NFKC: [0x0644, 0x0625], NFKD: [0x0644, 0x0627, 0x0655] },
+{ source: [0xFEFB], NFC: [0xFEFB], NFD: [0xFEFB], NFKC: [0x0644, 0x0627], NFKD: [0x0644, 0x0627] },
+{ source: [0xFEFC], NFC: [0xFEFC], NFD: [0xFEFC], NFKC: [0x0644, 0x0627], NFKD: [0x0644, 0x0627] },
+{ source: [0xFF01], NFC: [0xFF01], NFD: [0xFF01], NFKC: [0x0021], NFKD: [0x0021] },
+{ source: [0xFF02], NFC: [0xFF02], NFD: [0xFF02], NFKC: [0x0022], NFKD: [0x0022] },
+{ source: [0xFF03], NFC: [0xFF03], NFD: [0xFF03], NFKC: [0x0023], NFKD: [0x0023] },
+{ source: [0xFF04], NFC: [0xFF04], NFD: [0xFF04], NFKC: [0x0024], NFKD: [0x0024] },
+{ source: [0xFF05], NFC: [0xFF05], NFD: [0xFF05], NFKC: [0x0025], NFKD: [0x0025] },
+{ source: [0xFF06], NFC: [0xFF06], NFD: [0xFF06], NFKC: [0x0026], NFKD: [0x0026] },
+{ source: [0xFF07], NFC: [0xFF07], NFD: [0xFF07], NFKC: [0x0027], NFKD: [0x0027] },
+{ source: [0xFF08], NFC: [0xFF08], NFD: [0xFF08], NFKC: [0x0028], NFKD: [0x0028] },
+{ source: [0xFF09], NFC: [0xFF09], NFD: [0xFF09], NFKC: [0x0029], NFKD: [0x0029] },
+{ source: [0xFF0A], NFC: [0xFF0A], NFD: [0xFF0A], NFKC: [0x002A], NFKD: [0x002A] },
+{ source: [0xFF0B], NFC: [0xFF0B], NFD: [0xFF0B], NFKC: [0x002B], NFKD: [0x002B] },
+{ source: [0xFF0C], NFC: [0xFF0C], NFD: [0xFF0C], NFKC: [0x002C], NFKD: [0x002C] },
+{ source: [0xFF0D], NFC: [0xFF0D], NFD: [0xFF0D], NFKC: [0x002D], NFKD: [0x002D] },
+{ source: [0xFF0E], NFC: [0xFF0E], NFD: [0xFF0E], NFKC: [0x002E], NFKD: [0x002E] },
+{ source: [0xFF0F], NFC: [0xFF0F], NFD: [0xFF0F], NFKC: [0x002F], NFKD: [0x002F] },
+{ source: [0xFF10], NFC: [0xFF10], NFD: [0xFF10], NFKC: [0x0030], NFKD: [0x0030] },
+{ source: [0xFF11], NFC: [0xFF11], NFD: [0xFF11], NFKC: [0x0031], NFKD: [0x0031] },
+{ source: [0xFF12], NFC: [0xFF12], NFD: [0xFF12], NFKC: [0x0032], NFKD: [0x0032] },
+{ source: [0xFF13], NFC: [0xFF13], NFD: [0xFF13], NFKC: [0x0033], NFKD: [0x0033] },
+{ source: [0xFF14], NFC: [0xFF14], NFD: [0xFF14], NFKC: [0x0034], NFKD: [0x0034] },
+{ source: [0xFF15], NFC: [0xFF15], NFD: [0xFF15], NFKC: [0x0035], NFKD: [0x0035] },
+{ source: [0xFF16], NFC: [0xFF16], NFD: [0xFF16], NFKC: [0x0036], NFKD: [0x0036] },
+{ source: [0xFF17], NFC: [0xFF17], NFD: [0xFF17], NFKC: [0x0037], NFKD: [0x0037] },
+{ source: [0xFF18], NFC: [0xFF18], NFD: [0xFF18], NFKC: [0x0038], NFKD: [0x0038] },
+{ source: [0xFF19], NFC: [0xFF19], NFD: [0xFF19], NFKC: [0x0039], NFKD: [0x0039] },
+{ source: [0xFF1A], NFC: [0xFF1A], NFD: [0xFF1A], NFKC: [0x003A], NFKD: [0x003A] },
+{ source: [0xFF1B], NFC: [0xFF1B], NFD: [0xFF1B], NFKC: [0x003B], NFKD: [0x003B] },
+{ source: [0xFF1C], NFC: [0xFF1C], NFD: [0xFF1C], NFKC: [0x003C], NFKD: [0x003C] },
+{ source: [0xFF1D], NFC: [0xFF1D], NFD: [0xFF1D], NFKC: [0x003D], NFKD: [0x003D] },
+{ source: [0xFF1E], NFC: [0xFF1E], NFD: [0xFF1E], NFKC: [0x003E], NFKD: [0x003E] },
+{ source: [0xFF1F], NFC: [0xFF1F], NFD: [0xFF1F], NFKC: [0x003F], NFKD: [0x003F] },
+{ source: [0xFF20], NFC: [0xFF20], NFD: [0xFF20], NFKC: [0x0040], NFKD: [0x0040] },
+{ source: [0xFF21], NFC: [0xFF21], NFD: [0xFF21], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0xFF22], NFC: [0xFF22], NFD: [0xFF22], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0xFF23], NFC: [0xFF23], NFD: [0xFF23], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0xFF24], NFC: [0xFF24], NFD: [0xFF24], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0xFF25], NFC: [0xFF25], NFD: [0xFF25], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0xFF26], NFC: [0xFF26], NFD: [0xFF26], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0xFF27], NFC: [0xFF27], NFD: [0xFF27], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0xFF28], NFC: [0xFF28], NFD: [0xFF28], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0xFF29], NFC: [0xFF29], NFD: [0xFF29], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0xFF2A], NFC: [0xFF2A], NFD: [0xFF2A], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0xFF2B], NFC: [0xFF2B], NFD: [0xFF2B], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0xFF2C], NFC: [0xFF2C], NFD: [0xFF2C], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0xFF2D], NFC: [0xFF2D], NFD: [0xFF2D], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0xFF2E], NFC: [0xFF2E], NFD: [0xFF2E], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0xFF2F], NFC: [0xFF2F], NFD: [0xFF2F], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0xFF30], NFC: [0xFF30], NFD: [0xFF30], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0xFF31], NFC: [0xFF31], NFD: [0xFF31], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0xFF32], NFC: [0xFF32], NFD: [0xFF32], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0xFF33], NFC: [0xFF33], NFD: [0xFF33], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0xFF34], NFC: [0xFF34], NFD: [0xFF34], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0xFF35], NFC: [0xFF35], NFD: [0xFF35], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0xFF36], NFC: [0xFF36], NFD: [0xFF36], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0xFF37], NFC: [0xFF37], NFD: [0xFF37], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0xFF38], NFC: [0xFF38], NFD: [0xFF38], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0xFF39], NFC: [0xFF39], NFD: [0xFF39], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0xFF3A], NFC: [0xFF3A], NFD: [0xFF3A], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0xFF3B], NFC: [0xFF3B], NFD: [0xFF3B], NFKC: [0x005B], NFKD: [0x005B] },
+{ source: [0xFF3C], NFC: [0xFF3C], NFD: [0xFF3C], NFKC: [0x005C], NFKD: [0x005C] },
+{ source: [0xFF3D], NFC: [0xFF3D], NFD: [0xFF3D], NFKC: [0x005D], NFKD: [0x005D] },
+{ source: [0xFF3E], NFC: [0xFF3E], NFD: [0xFF3E], NFKC: [0x005E], NFKD: [0x005E] },
+{ source: [0xFF3F], NFC: [0xFF3F], NFD: [0xFF3F], NFKC: [0x005F], NFKD: [0x005F] },
+{ source: [0xFF40], NFC: [0xFF40], NFD: [0xFF40], NFKC: [0x0060], NFKD: [0x0060] },
+{ source: [0xFF41], NFC: [0xFF41], NFD: [0xFF41], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0xFF42], NFC: [0xFF42], NFD: [0xFF42], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0xFF43], NFC: [0xFF43], NFD: [0xFF43], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0xFF44], NFC: [0xFF44], NFD: [0xFF44], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0xFF45], NFC: [0xFF45], NFD: [0xFF45], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0xFF46], NFC: [0xFF46], NFD: [0xFF46], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0xFF47], NFC: [0xFF47], NFD: [0xFF47], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0xFF48], NFC: [0xFF48], NFD: [0xFF48], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0xFF49], NFC: [0xFF49], NFD: [0xFF49], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0xFF4A], NFC: [0xFF4A], NFD: [0xFF4A], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0xFF4B], NFC: [0xFF4B], NFD: [0xFF4B], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0xFF4C], NFC: [0xFF4C], NFD: [0xFF4C], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0xFF4D], NFC: [0xFF4D], NFD: [0xFF4D], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0xFF4E], NFC: [0xFF4E], NFD: [0xFF4E], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0xFF4F], NFC: [0xFF4F], NFD: [0xFF4F], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0xFF50], NFC: [0xFF50], NFD: [0xFF50], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0xFF51], NFC: [0xFF51], NFD: [0xFF51], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0xFF52], NFC: [0xFF52], NFD: [0xFF52], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0xFF53], NFC: [0xFF53], NFD: [0xFF53], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0xFF54], NFC: [0xFF54], NFD: [0xFF54], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0xFF55], NFC: [0xFF55], NFD: [0xFF55], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0xFF56], NFC: [0xFF56], NFD: [0xFF56], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0xFF57], NFC: [0xFF57], NFD: [0xFF57], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0xFF58], NFC: [0xFF58], NFD: [0xFF58], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0xFF59], NFC: [0xFF59], NFD: [0xFF59], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0xFF5A], NFC: [0xFF5A], NFD: [0xFF5A], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0xFF5B], NFC: [0xFF5B], NFD: [0xFF5B], NFKC: [0x007B], NFKD: [0x007B] },
+{ source: [0xFF5C], NFC: [0xFF5C], NFD: [0xFF5C], NFKC: [0x007C], NFKD: [0x007C] },
+{ source: [0xFF5D], NFC: [0xFF5D], NFD: [0xFF5D], NFKC: [0x007D], NFKD: [0x007D] },
+{ source: [0xFF5E], NFC: [0xFF5E], NFD: [0xFF5E], NFKC: [0x007E], NFKD: [0x007E] },
+{ source: [0xFF5F], NFC: [0xFF5F], NFD: [0xFF5F], NFKC: [0x2985], NFKD: [0x2985] },
+{ source: [0xFF60], NFC: [0xFF60], NFD: [0xFF60], NFKC: [0x2986], NFKD: [0x2986] },
+{ source: [0xFF61], NFC: [0xFF61], NFD: [0xFF61], NFKC: [0x3002], NFKD: [0x3002] },
+{ source: [0xFF62], NFC: [0xFF62], NFD: [0xFF62], NFKC: [0x300C], NFKD: [0x300C] },
+{ source: [0xFF63], NFC: [0xFF63], NFD: [0xFF63], NFKC: [0x300D], NFKD: [0x300D] },
+{ source: [0xFF64], NFC: [0xFF64], NFD: [0xFF64], NFKC: [0x3001], NFKD: [0x3001] },
+{ source: [0xFF65], NFC: [0xFF65], NFD: [0xFF65], NFKC: [0x30FB], NFKD: [0x30FB] },
+{ source: [0xFF66], NFC: [0xFF66], NFD: [0xFF66], NFKC: [0x30F2], NFKD: [0x30F2] },
+{ source: [0xFF67], NFC: [0xFF67], NFD: [0xFF67], NFKC: [0x30A1], NFKD: [0x30A1] },
+{ source: [0xFF68], NFC: [0xFF68], NFD: [0xFF68], NFKC: [0x30A3], NFKD: [0x30A3] },
+{ source: [0xFF69], NFC: [0xFF69], NFD: [0xFF69], NFKC: [0x30A5], NFKD: [0x30A5] },
+{ source: [0xFF6A], NFC: [0xFF6A], NFD: [0xFF6A], NFKC: [0x30A7], NFKD: [0x30A7] },
+{ source: [0xFF6B], NFC: [0xFF6B], NFD: [0xFF6B], NFKC: [0x30A9], NFKD: [0x30A9] },
+{ source: [0xFF6C], NFC: [0xFF6C], NFD: [0xFF6C], NFKC: [0x30E3], NFKD: [0x30E3] },
+{ source: [0xFF6D], NFC: [0xFF6D], NFD: [0xFF6D], NFKC: [0x30E5], NFKD: [0x30E5] },
+{ source: [0xFF6E], NFC: [0xFF6E], NFD: [0xFF6E], NFKC: [0x30E7], NFKD: [0x30E7] },
+{ source: [0xFF6F], NFC: [0xFF6F], NFD: [0xFF6F], NFKC: [0x30C3], NFKD: [0x30C3] },
+{ source: [0xFF70], NFC: [0xFF70], NFD: [0xFF70], NFKC: [0x30FC], NFKD: [0x30FC] },
+{ source: [0xFF71], NFC: [0xFF71], NFD: [0xFF71], NFKC: [0x30A2], NFKD: [0x30A2] },
+{ source: [0xFF72], NFC: [0xFF72], NFD: [0xFF72], NFKC: [0x30A4], NFKD: [0x30A4] },
+{ source: [0xFF73], NFC: [0xFF73], NFD: [0xFF73], NFKC: [0x30A6], NFKD: [0x30A6] },
+{ source: [0xFF74], NFC: [0xFF74], NFD: [0xFF74], NFKC: [0x30A8], NFKD: [0x30A8] },
+{ source: [0xFF75], NFC: [0xFF75], NFD: [0xFF75], NFKC: [0x30AA], NFKD: [0x30AA] },
+{ source: [0xFF76], NFC: [0xFF76], NFD: [0xFF76], NFKC: [0x30AB], NFKD: [0x30AB] },
+{ source: [0xFF77], NFC: [0xFF77], NFD: [0xFF77], NFKC: [0x30AD], NFKD: [0x30AD] },
+{ source: [0xFF78], NFC: [0xFF78], NFD: [0xFF78], NFKC: [0x30AF], NFKD: [0x30AF] },
+{ source: [0xFF79], NFC: [0xFF79], NFD: [0xFF79], NFKC: [0x30B1], NFKD: [0x30B1] },
+{ source: [0xFF7A], NFC: [0xFF7A], NFD: [0xFF7A], NFKC: [0x30B3], NFKD: [0x30B3] },
+{ source: [0xFF7B], NFC: [0xFF7B], NFD: [0xFF7B], NFKC: [0x30B5], NFKD: [0x30B5] },
+{ source: [0xFF7C], NFC: [0xFF7C], NFD: [0xFF7C], NFKC: [0x30B7], NFKD: [0x30B7] },
+{ source: [0xFF7D], NFC: [0xFF7D], NFD: [0xFF7D], NFKC: [0x30B9], NFKD: [0x30B9] },
+{ source: [0xFF7E], NFC: [0xFF7E], NFD: [0xFF7E], NFKC: [0x30BB], NFKD: [0x30BB] },
+{ source: [0xFF7F], NFC: [0xFF7F], NFD: [0xFF7F], NFKC: [0x30BD], NFKD: [0x30BD] },
+{ source: [0xFF80], NFC: [0xFF80], NFD: [0xFF80], NFKC: [0x30BF], NFKD: [0x30BF] },
+{ source: [0xFF81], NFC: [0xFF81], NFD: [0xFF81], NFKC: [0x30C1], NFKD: [0x30C1] },
+{ source: [0xFF82], NFC: [0xFF82], NFD: [0xFF82], NFKC: [0x30C4], NFKD: [0x30C4] },
+{ source: [0xFF83], NFC: [0xFF83], NFD: [0xFF83], NFKC: [0x30C6], NFKD: [0x30C6] },
+{ source: [0xFF84], NFC: [0xFF84], NFD: [0xFF84], NFKC: [0x30C8], NFKD: [0x30C8] },
+{ source: [0xFF85], NFC: [0xFF85], NFD: [0xFF85], NFKC: [0x30CA], NFKD: [0x30CA] },
+{ source: [0xFF86], NFC: [0xFF86], NFD: [0xFF86], NFKC: [0x30CB], NFKD: [0x30CB] },
+{ source: [0xFF87], NFC: [0xFF87], NFD: [0xFF87], NFKC: [0x30CC], NFKD: [0x30CC] },
+{ source: [0xFF88], NFC: [0xFF88], NFD: [0xFF88], NFKC: [0x30CD], NFKD: [0x30CD] },
+{ source: [0xFF89], NFC: [0xFF89], NFD: [0xFF89], NFKC: [0x30CE], NFKD: [0x30CE] },
+{ source: [0xFF8A], NFC: [0xFF8A], NFD: [0xFF8A], NFKC: [0x30CF], NFKD: [0x30CF] },
+{ source: [0xFF8B], NFC: [0xFF8B], NFD: [0xFF8B], NFKC: [0x30D2], NFKD: [0x30D2] },
+{ source: [0xFF8C], NFC: [0xFF8C], NFD: [0xFF8C], NFKC: [0x30D5], NFKD: [0x30D5] },
+{ source: [0xFF8D], NFC: [0xFF8D], NFD: [0xFF8D], NFKC: [0x30D8], NFKD: [0x30D8] },
+{ source: [0xFF8E], NFC: [0xFF8E], NFD: [0xFF8E], NFKC: [0x30DB], NFKD: [0x30DB] },
+{ source: [0xFF8F], NFC: [0xFF8F], NFD: [0xFF8F], NFKC: [0x30DE], NFKD: [0x30DE] },
+{ source: [0xFF90], NFC: [0xFF90], NFD: [0xFF90], NFKC: [0x30DF], NFKD: [0x30DF] },
+{ source: [0xFF91], NFC: [0xFF91], NFD: [0xFF91], NFKC: [0x30E0], NFKD: [0x30E0] },
+{ source: [0xFF92], NFC: [0xFF92], NFD: [0xFF92], NFKC: [0x30E1], NFKD: [0x30E1] },
+{ source: [0xFF93], NFC: [0xFF93], NFD: [0xFF93], NFKC: [0x30E2], NFKD: [0x30E2] },
+{ source: [0xFF94], NFC: [0xFF94], NFD: [0xFF94], NFKC: [0x30E4], NFKD: [0x30E4] },
+{ source: [0xFF95], NFC: [0xFF95], NFD: [0xFF95], NFKC: [0x30E6], NFKD: [0x30E6] },
+{ source: [0xFF96], NFC: [0xFF96], NFD: [0xFF96], NFKC: [0x30E8], NFKD: [0x30E8] },
+{ source: [0xFF97], NFC: [0xFF97], NFD: [0xFF97], NFKC: [0x30E9], NFKD: [0x30E9] },
+{ source: [0xFF98], NFC: [0xFF98], NFD: [0xFF98], NFKC: [0x30EA], NFKD: [0x30EA] },
+{ source: [0xFF99], NFC: [0xFF99], NFD: [0xFF99], NFKC: [0x30EB], NFKD: [0x30EB] },
+{ source: [0xFF9A], NFC: [0xFF9A], NFD: [0xFF9A], NFKC: [0x30EC], NFKD: [0x30EC] },
+{ source: [0xFF9B], NFC: [0xFF9B], NFD: [0xFF9B], NFKC: [0x30ED], NFKD: [0x30ED] },
+{ source: [0xFF9C], NFC: [0xFF9C], NFD: [0xFF9C], NFKC: [0x30EF], NFKD: [0x30EF] },
+{ source: [0xFF9D], NFC: [0xFF9D], NFD: [0xFF9D], NFKC: [0x30F3], NFKD: [0x30F3] },
+{ source: [0xFF9E], NFC: [0xFF9E], NFD: [0xFF9E], NFKC: [0x3099], NFKD: [0x3099] },
+{ source: [0xFF9F], NFC: [0xFF9F], NFD: [0xFF9F], NFKC: [0x309A], NFKD: [0x309A] },
+{ source: [0xFFA0], NFC: [0xFFA0], NFD: [0xFFA0], NFKC: [0x1160], NFKD: [0x1160] },
+{ source: [0xFFA1], NFC: [0xFFA1], NFD: [0xFFA1], NFKC: [0x1100], NFKD: [0x1100] },
+{ source: [0xFFA2], NFC: [0xFFA2], NFD: [0xFFA2], NFKC: [0x1101], NFKD: [0x1101] },
+{ source: [0xFFA3], NFC: [0xFFA3], NFD: [0xFFA3], NFKC: [0x11AA], NFKD: [0x11AA] },
+{ source: [0xFFA4], NFC: [0xFFA4], NFD: [0xFFA4], NFKC: [0x1102], NFKD: [0x1102] },
+{ source: [0xFFA5], NFC: [0xFFA5], NFD: [0xFFA5], NFKC: [0x11AC], NFKD: [0x11AC] },
+{ source: [0xFFA6], NFC: [0xFFA6], NFD: [0xFFA6], NFKC: [0x11AD], NFKD: [0x11AD] },
+{ source: [0xFFA7], NFC: [0xFFA7], NFD: [0xFFA7], NFKC: [0x1103], NFKD: [0x1103] },
+{ source: [0xFFA8], NFC: [0xFFA8], NFD: [0xFFA8], NFKC: [0x1104], NFKD: [0x1104] },
+{ source: [0xFFA9], NFC: [0xFFA9], NFD: [0xFFA9], NFKC: [0x1105], NFKD: [0x1105] },
+{ source: [0xFFAA], NFC: [0xFFAA], NFD: [0xFFAA], NFKC: [0x11B0], NFKD: [0x11B0] },
+{ source: [0xFFAB], NFC: [0xFFAB], NFD: [0xFFAB], NFKC: [0x11B1], NFKD: [0x11B1] },
+{ source: [0xFFAC], NFC: [0xFFAC], NFD: [0xFFAC], NFKC: [0x11B2], NFKD: [0x11B2] },
+{ source: [0xFFAD], NFC: [0xFFAD], NFD: [0xFFAD], NFKC: [0x11B3], NFKD: [0x11B3] },
+{ source: [0xFFAE], NFC: [0xFFAE], NFD: [0xFFAE], NFKC: [0x11B4], NFKD: [0x11B4] },
+{ source: [0xFFAF], NFC: [0xFFAF], NFD: [0xFFAF], NFKC: [0x11B5], NFKD: [0x11B5] },
+{ source: [0xFFB0], NFC: [0xFFB0], NFD: [0xFFB0], NFKC: [0x111A], NFKD: [0x111A] },
+{ source: [0xFFB1], NFC: [0xFFB1], NFD: [0xFFB1], NFKC: [0x1106], NFKD: [0x1106] },
+{ source: [0xFFB2], NFC: [0xFFB2], NFD: [0xFFB2], NFKC: [0x1107], NFKD: [0x1107] },
+{ source: [0xFFB3], NFC: [0xFFB3], NFD: [0xFFB3], NFKC: [0x1108], NFKD: [0x1108] },
+{ source: [0xFFB4], NFC: [0xFFB4], NFD: [0xFFB4], NFKC: [0x1121], NFKD: [0x1121] },
+{ source: [0xFFB5], NFC: [0xFFB5], NFD: [0xFFB5], NFKC: [0x1109], NFKD: [0x1109] },
+{ source: [0xFFB6], NFC: [0xFFB6], NFD: [0xFFB6], NFKC: [0x110A], NFKD: [0x110A] },
+{ source: [0xFFB7], NFC: [0xFFB7], NFD: [0xFFB7], NFKC: [0x110B], NFKD: [0x110B] },
+{ source: [0xFFB8], NFC: [0xFFB8], NFD: [0xFFB8], NFKC: [0x110C], NFKD: [0x110C] },
+{ source: [0xFFB9], NFC: [0xFFB9], NFD: [0xFFB9], NFKC: [0x110D], NFKD: [0x110D] },
+{ source: [0xFFBA], NFC: [0xFFBA], NFD: [0xFFBA], NFKC: [0x110E], NFKD: [0x110E] },
+{ source: [0xFFBB], NFC: [0xFFBB], NFD: [0xFFBB], NFKC: [0x110F], NFKD: [0x110F] },
+{ source: [0xFFBC], NFC: [0xFFBC], NFD: [0xFFBC], NFKC: [0x1110], NFKD: [0x1110] },
+{ source: [0xFFBD], NFC: [0xFFBD], NFD: [0xFFBD], NFKC: [0x1111], NFKD: [0x1111] },
+{ source: [0xFFBE], NFC: [0xFFBE], NFD: [0xFFBE], NFKC: [0x1112], NFKD: [0x1112] },
+{ source: [0xFFC2], NFC: [0xFFC2], NFD: [0xFFC2], NFKC: [0x1161], NFKD: [0x1161] },
+{ source: [0xFFC3], NFC: [0xFFC3], NFD: [0xFFC3], NFKC: [0x1162], NFKD: [0x1162] },
+{ source: [0xFFC4], NFC: [0xFFC4], NFD: [0xFFC4], NFKC: [0x1163], NFKD: [0x1163] },
+{ source: [0xFFC5], NFC: [0xFFC5], NFD: [0xFFC5], NFKC: [0x1164], NFKD: [0x1164] },
+{ source: [0xFFC6], NFC: [0xFFC6], NFD: [0xFFC6], NFKC: [0x1165], NFKD: [0x1165] },
+{ source: [0xFFC7], NFC: [0xFFC7], NFD: [0xFFC7], NFKC: [0x1166], NFKD: [0x1166] },
+{ source: [0xFFCA], NFC: [0xFFCA], NFD: [0xFFCA], NFKC: [0x1167], NFKD: [0x1167] },
+{ source: [0xFFCB], NFC: [0xFFCB], NFD: [0xFFCB], NFKC: [0x1168], NFKD: [0x1168] },
+{ source: [0xFFCC], NFC: [0xFFCC], NFD: [0xFFCC], NFKC: [0x1169], NFKD: [0x1169] },
+{ source: [0xFFCD], NFC: [0xFFCD], NFD: [0xFFCD], NFKC: [0x116A], NFKD: [0x116A] },
+{ source: [0xFFCE], NFC: [0xFFCE], NFD: [0xFFCE], NFKC: [0x116B], NFKD: [0x116B] },
+{ source: [0xFFCF], NFC: [0xFFCF], NFD: [0xFFCF], NFKC: [0x116C], NFKD: [0x116C] },
+{ source: [0xFFD2], NFC: [0xFFD2], NFD: [0xFFD2], NFKC: [0x116D], NFKD: [0x116D] },
+{ source: [0xFFD3], NFC: [0xFFD3], NFD: [0xFFD3], NFKC: [0x116E], NFKD: [0x116E] },
+{ source: [0xFFD4], NFC: [0xFFD4], NFD: [0xFFD4], NFKC: [0x116F], NFKD: [0x116F] },
+{ source: [0xFFD5], NFC: [0xFFD5], NFD: [0xFFD5], NFKC: [0x1170], NFKD: [0x1170] },
+{ source: [0xFFD6], NFC: [0xFFD6], NFD: [0xFFD6], NFKC: [0x1171], NFKD: [0x1171] },
+{ source: [0xFFD7], NFC: [0xFFD7], NFD: [0xFFD7], NFKC: [0x1172], NFKD: [0x1172] },
+{ source: [0xFFDA], NFC: [0xFFDA], NFD: [0xFFDA], NFKC: [0x1173], NFKD: [0x1173] },
+{ source: [0xFFDB], NFC: [0xFFDB], NFD: [0xFFDB], NFKC: [0x1174], NFKD: [0x1174] },
+{ source: [0xFFDC], NFC: [0xFFDC], NFD: [0xFFDC], NFKC: [0x1175], NFKD: [0x1175] },
+{ source: [0xFFE0], NFC: [0xFFE0], NFD: [0xFFE0], NFKC: [0x00A2], NFKD: [0x00A2] },
+{ source: [0xFFE1], NFC: [0xFFE1], NFD: [0xFFE1], NFKC: [0x00A3], NFKD: [0x00A3] },
+{ source: [0xFFE2], NFC: [0xFFE2], NFD: [0xFFE2], NFKC: [0x00AC], NFKD: [0x00AC] },
+{ source: [0xFFE3], NFC: [0xFFE3], NFD: [0xFFE3], NFKC: [0x0020, 0x0304], NFKD: [0x0020, 0x0304] },
+{ source: [0xFFE4], NFC: [0xFFE4], NFD: [0xFFE4], NFKC: [0x00A6], NFKD: [0x00A6] },
+{ source: [0xFFE5], NFC: [0xFFE5], NFD: [0xFFE5], NFKC: [0x00A5], NFKD: [0x00A5] },
+{ source: [0xFFE6], NFC: [0xFFE6], NFD: [0xFFE6], NFKC: [0x20A9], NFKD: [0x20A9] },
+{ source: [0xFFE8], NFC: [0xFFE8], NFD: [0xFFE8], NFKC: [0x2502], NFKD: [0x2502] },
+{ source: [0xFFE9], NFC: [0xFFE9], NFD: [0xFFE9], NFKC: [0x2190], NFKD: [0x2190] },
+{ source: [0xFFEA], NFC: [0xFFEA], NFD: [0xFFEA], NFKC: [0x2191], NFKD: [0x2191] },
+{ source: [0xFFEB], NFC: [0xFFEB], NFD: [0xFFEB], NFKC: [0x2192], NFKD: [0x2192] },
+{ source: [0xFFEC], NFC: [0xFFEC], NFD: [0xFFEC], NFKC: [0x2193], NFKD: [0x2193] },
+{ source: [0xFFED], NFC: [0xFFED], NFD: [0xFFED], NFKC: [0x25A0], NFKD: [0x25A0] },
+{ source: [0xFFEE], NFC: [0xFFEE], NFD: [0xFFEE], NFKC: [0x25CB], NFKD: [0x25CB] },
+{ source: [0x1109A], NFC: [0x1109A], NFD: [0x11099, 0x110BA], NFKC: [0x1109A], NFKD: [0x11099, 0x110BA] },
+{ source: [0x1109C], NFC: [0x1109C], NFD: [0x1109B, 0x110BA], NFKC: [0x1109C], NFKD: [0x1109B, 0x110BA] },
+{ source: [0x110AB], NFC: [0x110AB], NFD: [0x110A5, 0x110BA], NFKC: [0x110AB], NFKD: [0x110A5, 0x110BA] },
+{ source: [0x1112E], NFC: [0x1112E], NFD: [0x11131, 0x11127], NFKC: [0x1112E], NFKD: [0x11131, 0x11127] },
+{ source: [0x1112F], NFC: [0x1112F], NFD: [0x11132, 0x11127], NFKC: [0x1112F], NFKD: [0x11132, 0x11127] },
+{ source: [0x1134B], NFC: [0x1134B], NFD: [0x11347, 0x1133E], NFKC: [0x1134B], NFKD: [0x11347, 0x1133E] },
+{ source: [0x1134C], NFC: [0x1134C], NFD: [0x11347, 0x11357], NFKC: [0x1134C], NFKD: [0x11347, 0x11357] },
+{ source: [0x114BB], NFC: [0x114BB], NFD: [0x114B9, 0x114BA], NFKC: [0x114BB], NFKD: [0x114B9, 0x114BA] },
+{ source: [0x114BC], NFC: [0x114BC], NFD: [0x114B9, 0x114B0], NFKC: [0x114BC], NFKD: [0x114B9, 0x114B0] },
+{ source: [0x114BE], NFC: [0x114BE], NFD: [0x114B9, 0x114BD], NFKC: [0x114BE], NFKD: [0x114B9, 0x114BD] },
+{ source: [0x115BA], NFC: [0x115BA], NFD: [0x115B8, 0x115AF], NFKC: [0x115BA], NFKD: [0x115B8, 0x115AF] },
+{ source: [0x115BB], NFC: [0x115BB], NFD: [0x115B9, 0x115AF], NFKC: [0x115BB], NFKD: [0x115B9, 0x115AF] },
+{ source: [0x1D15E], NFC: [0x1D157, 0x1D165], NFD: [0x1D157, 0x1D165], NFKC: [0x1D157, 0x1D165], NFKD: [0x1D157, 0x1D165] },
+{ source: [0x1D15F], NFC: [0x1D158, 0x1D165], NFD: [0x1D158, 0x1D165], NFKC: [0x1D158, 0x1D165], NFKD: [0x1D158, 0x1D165] },
+{ source: [0x1D160], NFC: [0x1D158, 0x1D165, 0x1D16E], NFD: [0x1D158, 0x1D165, 0x1D16E], NFKC: [0x1D158, 0x1D165, 0x1D16E], NFKD: [0x1D158, 0x1D165, 0x1D16E] },
+{ source: [0x1D161], NFC: [0x1D158, 0x1D165, 0x1D16F], NFD: [0x1D158, 0x1D165, 0x1D16F], NFKC: [0x1D158, 0x1D165, 0x1D16F], NFKD: [0x1D158, 0x1D165, 0x1D16F] },
+{ source: [0x1D162], NFC: [0x1D158, 0x1D165, 0x1D170], NFD: [0x1D158, 0x1D165, 0x1D170], NFKC: [0x1D158, 0x1D165, 0x1D170], NFKD: [0x1D158, 0x1D165, 0x1D170] },
+{ source: [0x1D163], NFC: [0x1D158, 0x1D165, 0x1D171], NFD: [0x1D158, 0x1D165, 0x1D171], NFKC: [0x1D158, 0x1D165, 0x1D171], NFKD: [0x1D158, 0x1D165, 0x1D171] },
+{ source: [0x1D164], NFC: [0x1D158, 0x1D165, 0x1D172], NFD: [0x1D158, 0x1D165, 0x1D172], NFKC: [0x1D158, 0x1D165, 0x1D172], NFKD: [0x1D158, 0x1D165, 0x1D172] },
+{ source: [0x1D1BB], NFC: [0x1D1B9, 0x1D165], NFD: [0x1D1B9, 0x1D165], NFKC: [0x1D1B9, 0x1D165], NFKD: [0x1D1B9, 0x1D165] },
+{ source: [0x1D1BC], NFC: [0x1D1BA, 0x1D165], NFD: [0x1D1BA, 0x1D165], NFKC: [0x1D1BA, 0x1D165], NFKD: [0x1D1BA, 0x1D165] },
+{ source: [0x1D1BD], NFC: [0x1D1B9, 0x1D165, 0x1D16E], NFD: [0x1D1B9, 0x1D165, 0x1D16E], NFKC: [0x1D1B9, 0x1D165, 0x1D16E], NFKD: [0x1D1B9, 0x1D165, 0x1D16E] },
+{ source: [0x1D1BE], NFC: [0x1D1BA, 0x1D165, 0x1D16E], NFD: [0x1D1BA, 0x1D165, 0x1D16E], NFKC: [0x1D1BA, 0x1D165, 0x1D16E], NFKD: [0x1D1BA, 0x1D165, 0x1D16E] },
+{ source: [0x1D1BF], NFC: [0x1D1B9, 0x1D165, 0x1D16F], NFD: [0x1D1B9, 0x1D165, 0x1D16F], NFKC: [0x1D1B9, 0x1D165, 0x1D16F], NFKD: [0x1D1B9, 0x1D165, 0x1D16F] },
+{ source: [0x1D1C0], NFC: [0x1D1BA, 0x1D165, 0x1D16F], NFD: [0x1D1BA, 0x1D165, 0x1D16F], NFKC: [0x1D1BA, 0x1D165, 0x1D16F], NFKD: [0x1D1BA, 0x1D165, 0x1D16F] },
+{ source: [0x1D400], NFC: [0x1D400], NFD: [0x1D400], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D401], NFC: [0x1D401], NFD: [0x1D401], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1D402], NFC: [0x1D402], NFD: [0x1D402], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x1D403], NFC: [0x1D403], NFD: [0x1D403], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D404], NFC: [0x1D404], NFD: [0x1D404], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1D405], NFC: [0x1D405], NFD: [0x1D405], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x1D406], NFC: [0x1D406], NFD: [0x1D406], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D407], NFC: [0x1D407], NFD: [0x1D407], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x1D408], NFC: [0x1D408], NFD: [0x1D408], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x1D409], NFC: [0x1D409], NFD: [0x1D409], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D40A], NFC: [0x1D40A], NFD: [0x1D40A], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D40B], NFC: [0x1D40B], NFD: [0x1D40B], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1D40C], NFC: [0x1D40C], NFD: [0x1D40C], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1D40D], NFC: [0x1D40D], NFD: [0x1D40D], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1D40E], NFC: [0x1D40E], NFD: [0x1D40E], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D40F], NFC: [0x1D40F], NFD: [0x1D40F], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1D410], NFC: [0x1D410], NFD: [0x1D410], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x1D411], NFC: [0x1D411], NFD: [0x1D411], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x1D412], NFC: [0x1D412], NFD: [0x1D412], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1D413], NFC: [0x1D413], NFD: [0x1D413], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D414], NFC: [0x1D414], NFD: [0x1D414], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D415], NFC: [0x1D415], NFD: [0x1D415], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1D416], NFC: [0x1D416], NFD: [0x1D416], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D417], NFC: [0x1D417], NFD: [0x1D417], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1D418], NFC: [0x1D418], NFD: [0x1D418], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1D419], NFC: [0x1D419], NFD: [0x1D419], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x1D41A], NFC: [0x1D41A], NFD: [0x1D41A], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D41B], NFC: [0x1D41B], NFD: [0x1D41B], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D41C], NFC: [0x1D41C], NFD: [0x1D41C], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D41D], NFC: [0x1D41D], NFD: [0x1D41D], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D41E], NFC: [0x1D41E], NFD: [0x1D41E], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x1D41F], NFC: [0x1D41F], NFD: [0x1D41F], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1D420], NFC: [0x1D420], NFD: [0x1D420], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x1D421], NFC: [0x1D421], NFD: [0x1D421], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x1D422], NFC: [0x1D422], NFD: [0x1D422], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D423], NFC: [0x1D423], NFD: [0x1D423], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x1D424], NFC: [0x1D424], NFD: [0x1D424], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D425], NFC: [0x1D425], NFD: [0x1D425], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x1D426], NFC: [0x1D426], NFD: [0x1D426], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D427], NFC: [0x1D427], NFD: [0x1D427], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x1D428], NFC: [0x1D428], NFD: [0x1D428], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x1D429], NFC: [0x1D429], NFD: [0x1D429], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D42A], NFC: [0x1D42A], NFD: [0x1D42A], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x1D42B], NFC: [0x1D42B], NFD: [0x1D42B], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D42C], NFC: [0x1D42C], NFD: [0x1D42C], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x1D42D], NFC: [0x1D42D], NFD: [0x1D42D], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D42E], NFC: [0x1D42E], NFD: [0x1D42E], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D42F], NFC: [0x1D42F], NFD: [0x1D42F], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D430], NFC: [0x1D430], NFD: [0x1D430], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x1D431], NFC: [0x1D431], NFD: [0x1D431], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x1D432], NFC: [0x1D432], NFD: [0x1D432], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x1D433], NFC: [0x1D433], NFD: [0x1D433], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1D434], NFC: [0x1D434], NFD: [0x1D434], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D435], NFC: [0x1D435], NFD: [0x1D435], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1D436], NFC: [0x1D436], NFD: [0x1D436], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x1D437], NFC: [0x1D437], NFD: [0x1D437], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D438], NFC: [0x1D438], NFD: [0x1D438], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1D439], NFC: [0x1D439], NFD: [0x1D439], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x1D43A], NFC: [0x1D43A], NFD: [0x1D43A], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D43B], NFC: [0x1D43B], NFD: [0x1D43B], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x1D43C], NFC: [0x1D43C], NFD: [0x1D43C], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x1D43D], NFC: [0x1D43D], NFD: [0x1D43D], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D43E], NFC: [0x1D43E], NFD: [0x1D43E], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D43F], NFC: [0x1D43F], NFD: [0x1D43F], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1D440], NFC: [0x1D440], NFD: [0x1D440], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1D441], NFC: [0x1D441], NFD: [0x1D441], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1D442], NFC: [0x1D442], NFD: [0x1D442], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D443], NFC: [0x1D443], NFD: [0x1D443], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1D444], NFC: [0x1D444], NFD: [0x1D444], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x1D445], NFC: [0x1D445], NFD: [0x1D445], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x1D446], NFC: [0x1D446], NFD: [0x1D446], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1D447], NFC: [0x1D447], NFD: [0x1D447], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D448], NFC: [0x1D448], NFD: [0x1D448], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D449], NFC: [0x1D449], NFD: [0x1D449], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1D44A], NFC: [0x1D44A], NFD: [0x1D44A], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D44B], NFC: [0x1D44B], NFD: [0x1D44B], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1D44C], NFC: [0x1D44C], NFD: [0x1D44C], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1D44D], NFC: [0x1D44D], NFD: [0x1D44D], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x1D44E], NFC: [0x1D44E], NFD: [0x1D44E], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D44F], NFC: [0x1D44F], NFD: [0x1D44F], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D450], NFC: [0x1D450], NFD: [0x1D450], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D451], NFC: [0x1D451], NFD: [0x1D451], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D452], NFC: [0x1D452], NFD: [0x1D452], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x1D453], NFC: [0x1D453], NFD: [0x1D453], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1D454], NFC: [0x1D454], NFD: [0x1D454], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x1D456], NFC: [0x1D456], NFD: [0x1D456], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D457], NFC: [0x1D457], NFD: [0x1D457], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x1D458], NFC: [0x1D458], NFD: [0x1D458], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D459], NFC: [0x1D459], NFD: [0x1D459], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x1D45A], NFC: [0x1D45A], NFD: [0x1D45A], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D45B], NFC: [0x1D45B], NFD: [0x1D45B], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x1D45C], NFC: [0x1D45C], NFD: [0x1D45C], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x1D45D], NFC: [0x1D45D], NFD: [0x1D45D], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D45E], NFC: [0x1D45E], NFD: [0x1D45E], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x1D45F], NFC: [0x1D45F], NFD: [0x1D45F], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D460], NFC: [0x1D460], NFD: [0x1D460], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x1D461], NFC: [0x1D461], NFD: [0x1D461], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D462], NFC: [0x1D462], NFD: [0x1D462], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D463], NFC: [0x1D463], NFD: [0x1D463], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D464], NFC: [0x1D464], NFD: [0x1D464], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x1D465], NFC: [0x1D465], NFD: [0x1D465], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x1D466], NFC: [0x1D466], NFD: [0x1D466], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x1D467], NFC: [0x1D467], NFD: [0x1D467], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1D468], NFC: [0x1D468], NFD: [0x1D468], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D469], NFC: [0x1D469], NFD: [0x1D469], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1D46A], NFC: [0x1D46A], NFD: [0x1D46A], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x1D46B], NFC: [0x1D46B], NFD: [0x1D46B], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D46C], NFC: [0x1D46C], NFD: [0x1D46C], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1D46D], NFC: [0x1D46D], NFD: [0x1D46D], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x1D46E], NFC: [0x1D46E], NFD: [0x1D46E], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D46F], NFC: [0x1D46F], NFD: [0x1D46F], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x1D470], NFC: [0x1D470], NFD: [0x1D470], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x1D471], NFC: [0x1D471], NFD: [0x1D471], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D472], NFC: [0x1D472], NFD: [0x1D472], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D473], NFC: [0x1D473], NFD: [0x1D473], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1D474], NFC: [0x1D474], NFD: [0x1D474], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1D475], NFC: [0x1D475], NFD: [0x1D475], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1D476], NFC: [0x1D476], NFD: [0x1D476], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D477], NFC: [0x1D477], NFD: [0x1D477], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1D478], NFC: [0x1D478], NFD: [0x1D478], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x1D479], NFC: [0x1D479], NFD: [0x1D479], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x1D47A], NFC: [0x1D47A], NFD: [0x1D47A], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1D47B], NFC: [0x1D47B], NFD: [0x1D47B], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D47C], NFC: [0x1D47C], NFD: [0x1D47C], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D47D], NFC: [0x1D47D], NFD: [0x1D47D], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1D47E], NFC: [0x1D47E], NFD: [0x1D47E], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D47F], NFC: [0x1D47F], NFD: [0x1D47F], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1D480], NFC: [0x1D480], NFD: [0x1D480], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1D481], NFC: [0x1D481], NFD: [0x1D481], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x1D482], NFC: [0x1D482], NFD: [0x1D482], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D483], NFC: [0x1D483], NFD: [0x1D483], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D484], NFC: [0x1D484], NFD: [0x1D484], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D485], NFC: [0x1D485], NFD: [0x1D485], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D486], NFC: [0x1D486], NFD: [0x1D486], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x1D487], NFC: [0x1D487], NFD: [0x1D487], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1D488], NFC: [0x1D488], NFD: [0x1D488], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x1D489], NFC: [0x1D489], NFD: [0x1D489], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x1D48A], NFC: [0x1D48A], NFD: [0x1D48A], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D48B], NFC: [0x1D48B], NFD: [0x1D48B], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x1D48C], NFC: [0x1D48C], NFD: [0x1D48C], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D48D], NFC: [0x1D48D], NFD: [0x1D48D], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x1D48E], NFC: [0x1D48E], NFD: [0x1D48E], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D48F], NFC: [0x1D48F], NFD: [0x1D48F], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x1D490], NFC: [0x1D490], NFD: [0x1D490], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x1D491], NFC: [0x1D491], NFD: [0x1D491], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D492], NFC: [0x1D492], NFD: [0x1D492], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x1D493], NFC: [0x1D493], NFD: [0x1D493], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D494], NFC: [0x1D494], NFD: [0x1D494], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x1D495], NFC: [0x1D495], NFD: [0x1D495], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D496], NFC: [0x1D496], NFD: [0x1D496], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D497], NFC: [0x1D497], NFD: [0x1D497], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D498], NFC: [0x1D498], NFD: [0x1D498], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x1D499], NFC: [0x1D499], NFD: [0x1D499], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x1D49A], NFC: [0x1D49A], NFD: [0x1D49A], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x1D49B], NFC: [0x1D49B], NFD: [0x1D49B], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1D49C], NFC: [0x1D49C], NFD: [0x1D49C], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D49E], NFC: [0x1D49E], NFD: [0x1D49E], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x1D49F], NFC: [0x1D49F], NFD: [0x1D49F], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D4A2], NFC: [0x1D4A2], NFD: [0x1D4A2], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D4A5], NFC: [0x1D4A5], NFD: [0x1D4A5], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D4A6], NFC: [0x1D4A6], NFD: [0x1D4A6], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D4A9], NFC: [0x1D4A9], NFD: [0x1D4A9], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1D4AA], NFC: [0x1D4AA], NFD: [0x1D4AA], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D4AB], NFC: [0x1D4AB], NFD: [0x1D4AB], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1D4AC], NFC: [0x1D4AC], NFD: [0x1D4AC], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x1D4AE], NFC: [0x1D4AE], NFD: [0x1D4AE], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1D4AF], NFC: [0x1D4AF], NFD: [0x1D4AF], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D4B0], NFC: [0x1D4B0], NFD: [0x1D4B0], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D4B1], NFC: [0x1D4B1], NFD: [0x1D4B1], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1D4B2], NFC: [0x1D4B2], NFD: [0x1D4B2], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D4B3], NFC: [0x1D4B3], NFD: [0x1D4B3], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1D4B4], NFC: [0x1D4B4], NFD: [0x1D4B4], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1D4B5], NFC: [0x1D4B5], NFD: [0x1D4B5], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x1D4B6], NFC: [0x1D4B6], NFD: [0x1D4B6], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D4B7], NFC: [0x1D4B7], NFD: [0x1D4B7], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D4B8], NFC: [0x1D4B8], NFD: [0x1D4B8], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D4B9], NFC: [0x1D4B9], NFD: [0x1D4B9], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D4BB], NFC: [0x1D4BB], NFD: [0x1D4BB], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1D4BD], NFC: [0x1D4BD], NFD: [0x1D4BD], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x1D4BE], NFC: [0x1D4BE], NFD: [0x1D4BE], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D4BF], NFC: [0x1D4BF], NFD: [0x1D4BF], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x1D4C0], NFC: [0x1D4C0], NFD: [0x1D4C0], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D4C1], NFC: [0x1D4C1], NFD: [0x1D4C1], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x1D4C2], NFC: [0x1D4C2], NFD: [0x1D4C2], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D4C3], NFC: [0x1D4C3], NFD: [0x1D4C3], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x1D4C5], NFC: [0x1D4C5], NFD: [0x1D4C5], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D4C6], NFC: [0x1D4C6], NFD: [0x1D4C6], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x1D4C7], NFC: [0x1D4C7], NFD: [0x1D4C7], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D4C8], NFC: [0x1D4C8], NFD: [0x1D4C8], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x1D4C9], NFC: [0x1D4C9], NFD: [0x1D4C9], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D4CA], NFC: [0x1D4CA], NFD: [0x1D4CA], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D4CB], NFC: [0x1D4CB], NFD: [0x1D4CB], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D4CC], NFC: [0x1D4CC], NFD: [0x1D4CC], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x1D4CD], NFC: [0x1D4CD], NFD: [0x1D4CD], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x1D4CE], NFC: [0x1D4CE], NFD: [0x1D4CE], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x1D4CF], NFC: [0x1D4CF], NFD: [0x1D4CF], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1D4D0], NFC: [0x1D4D0], NFD: [0x1D4D0], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D4D1], NFC: [0x1D4D1], NFD: [0x1D4D1], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1D4D2], NFC: [0x1D4D2], NFD: [0x1D4D2], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x1D4D3], NFC: [0x1D4D3], NFD: [0x1D4D3], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D4D4], NFC: [0x1D4D4], NFD: [0x1D4D4], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1D4D5], NFC: [0x1D4D5], NFD: [0x1D4D5], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x1D4D6], NFC: [0x1D4D6], NFD: [0x1D4D6], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D4D7], NFC: [0x1D4D7], NFD: [0x1D4D7], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x1D4D8], NFC: [0x1D4D8], NFD: [0x1D4D8], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x1D4D9], NFC: [0x1D4D9], NFD: [0x1D4D9], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D4DA], NFC: [0x1D4DA], NFD: [0x1D4DA], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D4DB], NFC: [0x1D4DB], NFD: [0x1D4DB], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1D4DC], NFC: [0x1D4DC], NFD: [0x1D4DC], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1D4DD], NFC: [0x1D4DD], NFD: [0x1D4DD], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1D4DE], NFC: [0x1D4DE], NFD: [0x1D4DE], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D4DF], NFC: [0x1D4DF], NFD: [0x1D4DF], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1D4E0], NFC: [0x1D4E0], NFD: [0x1D4E0], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x1D4E1], NFC: [0x1D4E1], NFD: [0x1D4E1], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x1D4E2], NFC: [0x1D4E2], NFD: [0x1D4E2], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1D4E3], NFC: [0x1D4E3], NFD: [0x1D4E3], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D4E4], NFC: [0x1D4E4], NFD: [0x1D4E4], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D4E5], NFC: [0x1D4E5], NFD: [0x1D4E5], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1D4E6], NFC: [0x1D4E6], NFD: [0x1D4E6], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D4E7], NFC: [0x1D4E7], NFD: [0x1D4E7], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1D4E8], NFC: [0x1D4E8], NFD: [0x1D4E8], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1D4E9], NFC: [0x1D4E9], NFD: [0x1D4E9], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x1D4EA], NFC: [0x1D4EA], NFD: [0x1D4EA], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D4EB], NFC: [0x1D4EB], NFD: [0x1D4EB], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D4EC], NFC: [0x1D4EC], NFD: [0x1D4EC], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D4ED], NFC: [0x1D4ED], NFD: [0x1D4ED], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D4EE], NFC: [0x1D4EE], NFD: [0x1D4EE], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x1D4EF], NFC: [0x1D4EF], NFD: [0x1D4EF], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1D4F0], NFC: [0x1D4F0], NFD: [0x1D4F0], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x1D4F1], NFC: [0x1D4F1], NFD: [0x1D4F1], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x1D4F2], NFC: [0x1D4F2], NFD: [0x1D4F2], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D4F3], NFC: [0x1D4F3], NFD: [0x1D4F3], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x1D4F4], NFC: [0x1D4F4], NFD: [0x1D4F4], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D4F5], NFC: [0x1D4F5], NFD: [0x1D4F5], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x1D4F6], NFC: [0x1D4F6], NFD: [0x1D4F6], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D4F7], NFC: [0x1D4F7], NFD: [0x1D4F7], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x1D4F8], NFC: [0x1D4F8], NFD: [0x1D4F8], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x1D4F9], NFC: [0x1D4F9], NFD: [0x1D4F9], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D4FA], NFC: [0x1D4FA], NFD: [0x1D4FA], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x1D4FB], NFC: [0x1D4FB], NFD: [0x1D4FB], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D4FC], NFC: [0x1D4FC], NFD: [0x1D4FC], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x1D4FD], NFC: [0x1D4FD], NFD: [0x1D4FD], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D4FE], NFC: [0x1D4FE], NFD: [0x1D4FE], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D4FF], NFC: [0x1D4FF], NFD: [0x1D4FF], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D500], NFC: [0x1D500], NFD: [0x1D500], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x1D501], NFC: [0x1D501], NFD: [0x1D501], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x1D502], NFC: [0x1D502], NFD: [0x1D502], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x1D503], NFC: [0x1D503], NFD: [0x1D503], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1D504], NFC: [0x1D504], NFD: [0x1D504], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D505], NFC: [0x1D505], NFD: [0x1D505], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1D507], NFC: [0x1D507], NFD: [0x1D507], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D508], NFC: [0x1D508], NFD: [0x1D508], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1D509], NFC: [0x1D509], NFD: [0x1D509], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x1D50A], NFC: [0x1D50A], NFD: [0x1D50A], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D50D], NFC: [0x1D50D], NFD: [0x1D50D], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D50E], NFC: [0x1D50E], NFD: [0x1D50E], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D50F], NFC: [0x1D50F], NFD: [0x1D50F], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1D510], NFC: [0x1D510], NFD: [0x1D510], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1D511], NFC: [0x1D511], NFD: [0x1D511], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1D512], NFC: [0x1D512], NFD: [0x1D512], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D513], NFC: [0x1D513], NFD: [0x1D513], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1D514], NFC: [0x1D514], NFD: [0x1D514], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x1D516], NFC: [0x1D516], NFD: [0x1D516], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1D517], NFC: [0x1D517], NFD: [0x1D517], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D518], NFC: [0x1D518], NFD: [0x1D518], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D519], NFC: [0x1D519], NFD: [0x1D519], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1D51A], NFC: [0x1D51A], NFD: [0x1D51A], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D51B], NFC: [0x1D51B], NFD: [0x1D51B], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1D51C], NFC: [0x1D51C], NFD: [0x1D51C], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1D51E], NFC: [0x1D51E], NFD: [0x1D51E], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D51F], NFC: [0x1D51F], NFD: [0x1D51F], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D520], NFC: [0x1D520], NFD: [0x1D520], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D521], NFC: [0x1D521], NFD: [0x1D521], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D522], NFC: [0x1D522], NFD: [0x1D522], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x1D523], NFC: [0x1D523], NFD: [0x1D523], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1D524], NFC: [0x1D524], NFD: [0x1D524], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x1D525], NFC: [0x1D525], NFD: [0x1D525], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x1D526], NFC: [0x1D526], NFD: [0x1D526], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D527], NFC: [0x1D527], NFD: [0x1D527], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x1D528], NFC: [0x1D528], NFD: [0x1D528], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D529], NFC: [0x1D529], NFD: [0x1D529], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x1D52A], NFC: [0x1D52A], NFD: [0x1D52A], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D52B], NFC: [0x1D52B], NFD: [0x1D52B], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x1D52C], NFC: [0x1D52C], NFD: [0x1D52C], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x1D52D], NFC: [0x1D52D], NFD: [0x1D52D], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D52E], NFC: [0x1D52E], NFD: [0x1D52E], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x1D52F], NFC: [0x1D52F], NFD: [0x1D52F], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D530], NFC: [0x1D530], NFD: [0x1D530], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x1D531], NFC: [0x1D531], NFD: [0x1D531], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D532], NFC: [0x1D532], NFD: [0x1D532], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D533], NFC: [0x1D533], NFD: [0x1D533], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D534], NFC: [0x1D534], NFD: [0x1D534], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x1D535], NFC: [0x1D535], NFD: [0x1D535], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x1D536], NFC: [0x1D536], NFD: [0x1D536], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x1D537], NFC: [0x1D537], NFD: [0x1D537], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1D538], NFC: [0x1D538], NFD: [0x1D538], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D539], NFC: [0x1D539], NFD: [0x1D539], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1D53B], NFC: [0x1D53B], NFD: [0x1D53B], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D53C], NFC: [0x1D53C], NFD: [0x1D53C], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1D53D], NFC: [0x1D53D], NFD: [0x1D53D], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x1D53E], NFC: [0x1D53E], NFD: [0x1D53E], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D540], NFC: [0x1D540], NFD: [0x1D540], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x1D541], NFC: [0x1D541], NFD: [0x1D541], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D542], NFC: [0x1D542], NFD: [0x1D542], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D543], NFC: [0x1D543], NFD: [0x1D543], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1D544], NFC: [0x1D544], NFD: [0x1D544], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1D546], NFC: [0x1D546], NFD: [0x1D546], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D54A], NFC: [0x1D54A], NFD: [0x1D54A], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1D54B], NFC: [0x1D54B], NFD: [0x1D54B], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D54C], NFC: [0x1D54C], NFD: [0x1D54C], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D54D], NFC: [0x1D54D], NFD: [0x1D54D], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1D54E], NFC: [0x1D54E], NFD: [0x1D54E], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D54F], NFC: [0x1D54F], NFD: [0x1D54F], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1D550], NFC: [0x1D550], NFD: [0x1D550], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1D552], NFC: [0x1D552], NFD: [0x1D552], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D553], NFC: [0x1D553], NFD: [0x1D553], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D554], NFC: [0x1D554], NFD: [0x1D554], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D555], NFC: [0x1D555], NFD: [0x1D555], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D556], NFC: [0x1D556], NFD: [0x1D556], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x1D557], NFC: [0x1D557], NFD: [0x1D557], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1D558], NFC: [0x1D558], NFD: [0x1D558], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x1D559], NFC: [0x1D559], NFD: [0x1D559], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x1D55A], NFC: [0x1D55A], NFD: [0x1D55A], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D55B], NFC: [0x1D55B], NFD: [0x1D55B], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x1D55C], NFC: [0x1D55C], NFD: [0x1D55C], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D55D], NFC: [0x1D55D], NFD: [0x1D55D], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x1D55E], NFC: [0x1D55E], NFD: [0x1D55E], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D55F], NFC: [0x1D55F], NFD: [0x1D55F], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x1D560], NFC: [0x1D560], NFD: [0x1D560], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x1D561], NFC: [0x1D561], NFD: [0x1D561], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D562], NFC: [0x1D562], NFD: [0x1D562], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x1D563], NFC: [0x1D563], NFD: [0x1D563], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D564], NFC: [0x1D564], NFD: [0x1D564], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x1D565], NFC: [0x1D565], NFD: [0x1D565], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D566], NFC: [0x1D566], NFD: [0x1D566], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D567], NFC: [0x1D567], NFD: [0x1D567], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D568], NFC: [0x1D568], NFD: [0x1D568], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x1D569], NFC: [0x1D569], NFD: [0x1D569], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x1D56A], NFC: [0x1D56A], NFD: [0x1D56A], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x1D56B], NFC: [0x1D56B], NFD: [0x1D56B], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1D56C], NFC: [0x1D56C], NFD: [0x1D56C], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D56D], NFC: [0x1D56D], NFD: [0x1D56D], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1D56E], NFC: [0x1D56E], NFD: [0x1D56E], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x1D56F], NFC: [0x1D56F], NFD: [0x1D56F], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D570], NFC: [0x1D570], NFD: [0x1D570], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1D571], NFC: [0x1D571], NFD: [0x1D571], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x1D572], NFC: [0x1D572], NFD: [0x1D572], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D573], NFC: [0x1D573], NFD: [0x1D573], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x1D574], NFC: [0x1D574], NFD: [0x1D574], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x1D575], NFC: [0x1D575], NFD: [0x1D575], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D576], NFC: [0x1D576], NFD: [0x1D576], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D577], NFC: [0x1D577], NFD: [0x1D577], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1D578], NFC: [0x1D578], NFD: [0x1D578], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1D579], NFC: [0x1D579], NFD: [0x1D579], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1D57A], NFC: [0x1D57A], NFD: [0x1D57A], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D57B], NFC: [0x1D57B], NFD: [0x1D57B], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1D57C], NFC: [0x1D57C], NFD: [0x1D57C], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x1D57D], NFC: [0x1D57D], NFD: [0x1D57D], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x1D57E], NFC: [0x1D57E], NFD: [0x1D57E], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1D57F], NFC: [0x1D57F], NFD: [0x1D57F], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D580], NFC: [0x1D580], NFD: [0x1D580], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D581], NFC: [0x1D581], NFD: [0x1D581], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1D582], NFC: [0x1D582], NFD: [0x1D582], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D583], NFC: [0x1D583], NFD: [0x1D583], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1D584], NFC: [0x1D584], NFD: [0x1D584], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1D585], NFC: [0x1D585], NFD: [0x1D585], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x1D586], NFC: [0x1D586], NFD: [0x1D586], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D587], NFC: [0x1D587], NFD: [0x1D587], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D588], NFC: [0x1D588], NFD: [0x1D588], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D589], NFC: [0x1D589], NFD: [0x1D589], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D58A], NFC: [0x1D58A], NFD: [0x1D58A], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x1D58B], NFC: [0x1D58B], NFD: [0x1D58B], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1D58C], NFC: [0x1D58C], NFD: [0x1D58C], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x1D58D], NFC: [0x1D58D], NFD: [0x1D58D], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x1D58E], NFC: [0x1D58E], NFD: [0x1D58E], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D58F], NFC: [0x1D58F], NFD: [0x1D58F], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x1D590], NFC: [0x1D590], NFD: [0x1D590], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D591], NFC: [0x1D591], NFD: [0x1D591], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x1D592], NFC: [0x1D592], NFD: [0x1D592], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D593], NFC: [0x1D593], NFD: [0x1D593], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x1D594], NFC: [0x1D594], NFD: [0x1D594], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x1D595], NFC: [0x1D595], NFD: [0x1D595], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D596], NFC: [0x1D596], NFD: [0x1D596], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x1D597], NFC: [0x1D597], NFD: [0x1D597], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D598], NFC: [0x1D598], NFD: [0x1D598], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x1D599], NFC: [0x1D599], NFD: [0x1D599], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D59A], NFC: [0x1D59A], NFD: [0x1D59A], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D59B], NFC: [0x1D59B], NFD: [0x1D59B], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D59C], NFC: [0x1D59C], NFD: [0x1D59C], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x1D59D], NFC: [0x1D59D], NFD: [0x1D59D], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x1D59E], NFC: [0x1D59E], NFD: [0x1D59E], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x1D59F], NFC: [0x1D59F], NFD: [0x1D59F], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1D5A0], NFC: [0x1D5A0], NFD: [0x1D5A0], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D5A1], NFC: [0x1D5A1], NFD: [0x1D5A1], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1D5A2], NFC: [0x1D5A2], NFD: [0x1D5A2], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x1D5A3], NFC: [0x1D5A3], NFD: [0x1D5A3], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D5A4], NFC: [0x1D5A4], NFD: [0x1D5A4], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1D5A5], NFC: [0x1D5A5], NFD: [0x1D5A5], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x1D5A6], NFC: [0x1D5A6], NFD: [0x1D5A6], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D5A7], NFC: [0x1D5A7], NFD: [0x1D5A7], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x1D5A8], NFC: [0x1D5A8], NFD: [0x1D5A8], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x1D5A9], NFC: [0x1D5A9], NFD: [0x1D5A9], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D5AA], NFC: [0x1D5AA], NFD: [0x1D5AA], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D5AB], NFC: [0x1D5AB], NFD: [0x1D5AB], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1D5AC], NFC: [0x1D5AC], NFD: [0x1D5AC], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1D5AD], NFC: [0x1D5AD], NFD: [0x1D5AD], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1D5AE], NFC: [0x1D5AE], NFD: [0x1D5AE], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D5AF], NFC: [0x1D5AF], NFD: [0x1D5AF], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1D5B0], NFC: [0x1D5B0], NFD: [0x1D5B0], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x1D5B1], NFC: [0x1D5B1], NFD: [0x1D5B1], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x1D5B2], NFC: [0x1D5B2], NFD: [0x1D5B2], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1D5B3], NFC: [0x1D5B3], NFD: [0x1D5B3], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D5B4], NFC: [0x1D5B4], NFD: [0x1D5B4], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D5B5], NFC: [0x1D5B5], NFD: [0x1D5B5], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1D5B6], NFC: [0x1D5B6], NFD: [0x1D5B6], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D5B7], NFC: [0x1D5B7], NFD: [0x1D5B7], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1D5B8], NFC: [0x1D5B8], NFD: [0x1D5B8], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1D5B9], NFC: [0x1D5B9], NFD: [0x1D5B9], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x1D5BA], NFC: [0x1D5BA], NFD: [0x1D5BA], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D5BB], NFC: [0x1D5BB], NFD: [0x1D5BB], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D5BC], NFC: [0x1D5BC], NFD: [0x1D5BC], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D5BD], NFC: [0x1D5BD], NFD: [0x1D5BD], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D5BE], NFC: [0x1D5BE], NFD: [0x1D5BE], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x1D5BF], NFC: [0x1D5BF], NFD: [0x1D5BF], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1D5C0], NFC: [0x1D5C0], NFD: [0x1D5C0], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x1D5C1], NFC: [0x1D5C1], NFD: [0x1D5C1], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x1D5C2], NFC: [0x1D5C2], NFD: [0x1D5C2], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D5C3], NFC: [0x1D5C3], NFD: [0x1D5C3], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x1D5C4], NFC: [0x1D5C4], NFD: [0x1D5C4], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D5C5], NFC: [0x1D5C5], NFD: [0x1D5C5], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x1D5C6], NFC: [0x1D5C6], NFD: [0x1D5C6], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D5C7], NFC: [0x1D5C7], NFD: [0x1D5C7], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x1D5C8], NFC: [0x1D5C8], NFD: [0x1D5C8], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x1D5C9], NFC: [0x1D5C9], NFD: [0x1D5C9], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D5CA], NFC: [0x1D5CA], NFD: [0x1D5CA], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x1D5CB], NFC: [0x1D5CB], NFD: [0x1D5CB], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D5CC], NFC: [0x1D5CC], NFD: [0x1D5CC], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x1D5CD], NFC: [0x1D5CD], NFD: [0x1D5CD], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D5CE], NFC: [0x1D5CE], NFD: [0x1D5CE], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D5CF], NFC: [0x1D5CF], NFD: [0x1D5CF], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D5D0], NFC: [0x1D5D0], NFD: [0x1D5D0], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x1D5D1], NFC: [0x1D5D1], NFD: [0x1D5D1], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x1D5D2], NFC: [0x1D5D2], NFD: [0x1D5D2], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x1D5D3], NFC: [0x1D5D3], NFD: [0x1D5D3], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1D5D4], NFC: [0x1D5D4], NFD: [0x1D5D4], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D5D5], NFC: [0x1D5D5], NFD: [0x1D5D5], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1D5D6], NFC: [0x1D5D6], NFD: [0x1D5D6], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x1D5D7], NFC: [0x1D5D7], NFD: [0x1D5D7], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D5D8], NFC: [0x1D5D8], NFD: [0x1D5D8], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1D5D9], NFC: [0x1D5D9], NFD: [0x1D5D9], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x1D5DA], NFC: [0x1D5DA], NFD: [0x1D5DA], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D5DB], NFC: [0x1D5DB], NFD: [0x1D5DB], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x1D5DC], NFC: [0x1D5DC], NFD: [0x1D5DC], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x1D5DD], NFC: [0x1D5DD], NFD: [0x1D5DD], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D5DE], NFC: [0x1D5DE], NFD: [0x1D5DE], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D5DF], NFC: [0x1D5DF], NFD: [0x1D5DF], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1D5E0], NFC: [0x1D5E0], NFD: [0x1D5E0], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1D5E1], NFC: [0x1D5E1], NFD: [0x1D5E1], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1D5E2], NFC: [0x1D5E2], NFD: [0x1D5E2], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D5E3], NFC: [0x1D5E3], NFD: [0x1D5E3], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1D5E4], NFC: [0x1D5E4], NFD: [0x1D5E4], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x1D5E5], NFC: [0x1D5E5], NFD: [0x1D5E5], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x1D5E6], NFC: [0x1D5E6], NFD: [0x1D5E6], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1D5E7], NFC: [0x1D5E7], NFD: [0x1D5E7], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D5E8], NFC: [0x1D5E8], NFD: [0x1D5E8], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D5E9], NFC: [0x1D5E9], NFD: [0x1D5E9], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1D5EA], NFC: [0x1D5EA], NFD: [0x1D5EA], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D5EB], NFC: [0x1D5EB], NFD: [0x1D5EB], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1D5EC], NFC: [0x1D5EC], NFD: [0x1D5EC], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1D5ED], NFC: [0x1D5ED], NFD: [0x1D5ED], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x1D5EE], NFC: [0x1D5EE], NFD: [0x1D5EE], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D5EF], NFC: [0x1D5EF], NFD: [0x1D5EF], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D5F0], NFC: [0x1D5F0], NFD: [0x1D5F0], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D5F1], NFC: [0x1D5F1], NFD: [0x1D5F1], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D5F2], NFC: [0x1D5F2], NFD: [0x1D5F2], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x1D5F3], NFC: [0x1D5F3], NFD: [0x1D5F3], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1D5F4], NFC: [0x1D5F4], NFD: [0x1D5F4], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x1D5F5], NFC: [0x1D5F5], NFD: [0x1D5F5], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x1D5F6], NFC: [0x1D5F6], NFD: [0x1D5F6], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D5F7], NFC: [0x1D5F7], NFD: [0x1D5F7], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x1D5F8], NFC: [0x1D5F8], NFD: [0x1D5F8], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D5F9], NFC: [0x1D5F9], NFD: [0x1D5F9], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x1D5FA], NFC: [0x1D5FA], NFD: [0x1D5FA], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D5FB], NFC: [0x1D5FB], NFD: [0x1D5FB], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x1D5FC], NFC: [0x1D5FC], NFD: [0x1D5FC], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x1D5FD], NFC: [0x1D5FD], NFD: [0x1D5FD], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D5FE], NFC: [0x1D5FE], NFD: [0x1D5FE], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x1D5FF], NFC: [0x1D5FF], NFD: [0x1D5FF], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D600], NFC: [0x1D600], NFD: [0x1D600], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x1D601], NFC: [0x1D601], NFD: [0x1D601], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D602], NFC: [0x1D602], NFD: [0x1D602], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D603], NFC: [0x1D603], NFD: [0x1D603], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D604], NFC: [0x1D604], NFD: [0x1D604], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x1D605], NFC: [0x1D605], NFD: [0x1D605], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x1D606], NFC: [0x1D606], NFD: [0x1D606], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x1D607], NFC: [0x1D607], NFD: [0x1D607], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1D608], NFC: [0x1D608], NFD: [0x1D608], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D609], NFC: [0x1D609], NFD: [0x1D609], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1D60A], NFC: [0x1D60A], NFD: [0x1D60A], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x1D60B], NFC: [0x1D60B], NFD: [0x1D60B], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D60C], NFC: [0x1D60C], NFD: [0x1D60C], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1D60D], NFC: [0x1D60D], NFD: [0x1D60D], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x1D60E], NFC: [0x1D60E], NFD: [0x1D60E], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D60F], NFC: [0x1D60F], NFD: [0x1D60F], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x1D610], NFC: [0x1D610], NFD: [0x1D610], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x1D611], NFC: [0x1D611], NFD: [0x1D611], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D612], NFC: [0x1D612], NFD: [0x1D612], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D613], NFC: [0x1D613], NFD: [0x1D613], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1D614], NFC: [0x1D614], NFD: [0x1D614], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1D615], NFC: [0x1D615], NFD: [0x1D615], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1D616], NFC: [0x1D616], NFD: [0x1D616], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D617], NFC: [0x1D617], NFD: [0x1D617], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1D618], NFC: [0x1D618], NFD: [0x1D618], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x1D619], NFC: [0x1D619], NFD: [0x1D619], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x1D61A], NFC: [0x1D61A], NFD: [0x1D61A], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1D61B], NFC: [0x1D61B], NFD: [0x1D61B], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D61C], NFC: [0x1D61C], NFD: [0x1D61C], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D61D], NFC: [0x1D61D], NFD: [0x1D61D], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1D61E], NFC: [0x1D61E], NFD: [0x1D61E], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D61F], NFC: [0x1D61F], NFD: [0x1D61F], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1D620], NFC: [0x1D620], NFD: [0x1D620], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1D621], NFC: [0x1D621], NFD: [0x1D621], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x1D622], NFC: [0x1D622], NFD: [0x1D622], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D623], NFC: [0x1D623], NFD: [0x1D623], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D624], NFC: [0x1D624], NFD: [0x1D624], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D625], NFC: [0x1D625], NFD: [0x1D625], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D626], NFC: [0x1D626], NFD: [0x1D626], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x1D627], NFC: [0x1D627], NFD: [0x1D627], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1D628], NFC: [0x1D628], NFD: [0x1D628], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x1D629], NFC: [0x1D629], NFD: [0x1D629], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x1D62A], NFC: [0x1D62A], NFD: [0x1D62A], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D62B], NFC: [0x1D62B], NFD: [0x1D62B], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x1D62C], NFC: [0x1D62C], NFD: [0x1D62C], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D62D], NFC: [0x1D62D], NFD: [0x1D62D], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x1D62E], NFC: [0x1D62E], NFD: [0x1D62E], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D62F], NFC: [0x1D62F], NFD: [0x1D62F], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x1D630], NFC: [0x1D630], NFD: [0x1D630], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x1D631], NFC: [0x1D631], NFD: [0x1D631], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D632], NFC: [0x1D632], NFD: [0x1D632], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x1D633], NFC: [0x1D633], NFD: [0x1D633], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D634], NFC: [0x1D634], NFD: [0x1D634], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x1D635], NFC: [0x1D635], NFD: [0x1D635], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D636], NFC: [0x1D636], NFD: [0x1D636], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D637], NFC: [0x1D637], NFD: [0x1D637], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D638], NFC: [0x1D638], NFD: [0x1D638], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x1D639], NFC: [0x1D639], NFD: [0x1D639], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x1D63A], NFC: [0x1D63A], NFD: [0x1D63A], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x1D63B], NFC: [0x1D63B], NFD: [0x1D63B], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1D63C], NFC: [0x1D63C], NFD: [0x1D63C], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D63D], NFC: [0x1D63D], NFD: [0x1D63D], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1D63E], NFC: [0x1D63E], NFD: [0x1D63E], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x1D63F], NFC: [0x1D63F], NFD: [0x1D63F], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D640], NFC: [0x1D640], NFD: [0x1D640], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1D641], NFC: [0x1D641], NFD: [0x1D641], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x1D642], NFC: [0x1D642], NFD: [0x1D642], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D643], NFC: [0x1D643], NFD: [0x1D643], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x1D644], NFC: [0x1D644], NFD: [0x1D644], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x1D645], NFC: [0x1D645], NFD: [0x1D645], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D646], NFC: [0x1D646], NFD: [0x1D646], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D647], NFC: [0x1D647], NFD: [0x1D647], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1D648], NFC: [0x1D648], NFD: [0x1D648], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1D649], NFC: [0x1D649], NFD: [0x1D649], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1D64A], NFC: [0x1D64A], NFD: [0x1D64A], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D64B], NFC: [0x1D64B], NFD: [0x1D64B], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1D64C], NFC: [0x1D64C], NFD: [0x1D64C], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x1D64D], NFC: [0x1D64D], NFD: [0x1D64D], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x1D64E], NFC: [0x1D64E], NFD: [0x1D64E], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1D64F], NFC: [0x1D64F], NFD: [0x1D64F], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D650], NFC: [0x1D650], NFD: [0x1D650], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D651], NFC: [0x1D651], NFD: [0x1D651], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1D652], NFC: [0x1D652], NFD: [0x1D652], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D653], NFC: [0x1D653], NFD: [0x1D653], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1D654], NFC: [0x1D654], NFD: [0x1D654], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1D655], NFC: [0x1D655], NFD: [0x1D655], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x1D656], NFC: [0x1D656], NFD: [0x1D656], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D657], NFC: [0x1D657], NFD: [0x1D657], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D658], NFC: [0x1D658], NFD: [0x1D658], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D659], NFC: [0x1D659], NFD: [0x1D659], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D65A], NFC: [0x1D65A], NFD: [0x1D65A], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x1D65B], NFC: [0x1D65B], NFD: [0x1D65B], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1D65C], NFC: [0x1D65C], NFD: [0x1D65C], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x1D65D], NFC: [0x1D65D], NFD: [0x1D65D], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x1D65E], NFC: [0x1D65E], NFD: [0x1D65E], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D65F], NFC: [0x1D65F], NFD: [0x1D65F], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x1D660], NFC: [0x1D660], NFD: [0x1D660], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D661], NFC: [0x1D661], NFD: [0x1D661], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x1D662], NFC: [0x1D662], NFD: [0x1D662], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D663], NFC: [0x1D663], NFD: [0x1D663], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x1D664], NFC: [0x1D664], NFD: [0x1D664], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x1D665], NFC: [0x1D665], NFD: [0x1D665], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D666], NFC: [0x1D666], NFD: [0x1D666], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x1D667], NFC: [0x1D667], NFD: [0x1D667], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D668], NFC: [0x1D668], NFD: [0x1D668], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x1D669], NFC: [0x1D669], NFD: [0x1D669], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D66A], NFC: [0x1D66A], NFD: [0x1D66A], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D66B], NFC: [0x1D66B], NFD: [0x1D66B], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D66C], NFC: [0x1D66C], NFD: [0x1D66C], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x1D66D], NFC: [0x1D66D], NFD: [0x1D66D], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x1D66E], NFC: [0x1D66E], NFD: [0x1D66E], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x1D66F], NFC: [0x1D66F], NFD: [0x1D66F], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1D670], NFC: [0x1D670], NFD: [0x1D670], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1D671], NFC: [0x1D671], NFD: [0x1D671], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1D672], NFC: [0x1D672], NFD: [0x1D672], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x1D673], NFC: [0x1D673], NFD: [0x1D673], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1D674], NFC: [0x1D674], NFD: [0x1D674], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1D675], NFC: [0x1D675], NFD: [0x1D675], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x1D676], NFC: [0x1D676], NFD: [0x1D676], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1D677], NFC: [0x1D677], NFD: [0x1D677], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x1D678], NFC: [0x1D678], NFD: [0x1D678], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x1D679], NFC: [0x1D679], NFD: [0x1D679], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1D67A], NFC: [0x1D67A], NFD: [0x1D67A], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1D67B], NFC: [0x1D67B], NFD: [0x1D67B], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1D67C], NFC: [0x1D67C], NFD: [0x1D67C], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1D67D], NFC: [0x1D67D], NFD: [0x1D67D], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1D67E], NFC: [0x1D67E], NFD: [0x1D67E], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1D67F], NFC: [0x1D67F], NFD: [0x1D67F], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1D680], NFC: [0x1D680], NFD: [0x1D680], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x1D681], NFC: [0x1D681], NFD: [0x1D681], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x1D682], NFC: [0x1D682], NFD: [0x1D682], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1D683], NFC: [0x1D683], NFD: [0x1D683], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1D684], NFC: [0x1D684], NFD: [0x1D684], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1D685], NFC: [0x1D685], NFD: [0x1D685], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1D686], NFC: [0x1D686], NFD: [0x1D686], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1D687], NFC: [0x1D687], NFD: [0x1D687], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1D688], NFC: [0x1D688], NFD: [0x1D688], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1D689], NFC: [0x1D689], NFD: [0x1D689], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x1D68A], NFC: [0x1D68A], NFD: [0x1D68A], NFKC: [0x0061], NFKD: [0x0061] },
+{ source: [0x1D68B], NFC: [0x1D68B], NFD: [0x1D68B], NFKC: [0x0062], NFKD: [0x0062] },
+{ source: [0x1D68C], NFC: [0x1D68C], NFD: [0x1D68C], NFKC: [0x0063], NFKD: [0x0063] },
+{ source: [0x1D68D], NFC: [0x1D68D], NFD: [0x1D68D], NFKC: [0x0064], NFKD: [0x0064] },
+{ source: [0x1D68E], NFC: [0x1D68E], NFD: [0x1D68E], NFKC: [0x0065], NFKD: [0x0065] },
+{ source: [0x1D68F], NFC: [0x1D68F], NFD: [0x1D68F], NFKC: [0x0066], NFKD: [0x0066] },
+{ source: [0x1D690], NFC: [0x1D690], NFD: [0x1D690], NFKC: [0x0067], NFKD: [0x0067] },
+{ source: [0x1D691], NFC: [0x1D691], NFD: [0x1D691], NFKC: [0x0068], NFKD: [0x0068] },
+{ source: [0x1D692], NFC: [0x1D692], NFD: [0x1D692], NFKC: [0x0069], NFKD: [0x0069] },
+{ source: [0x1D693], NFC: [0x1D693], NFD: [0x1D693], NFKC: [0x006A], NFKD: [0x006A] },
+{ source: [0x1D694], NFC: [0x1D694], NFD: [0x1D694], NFKC: [0x006B], NFKD: [0x006B] },
+{ source: [0x1D695], NFC: [0x1D695], NFD: [0x1D695], NFKC: [0x006C], NFKD: [0x006C] },
+{ source: [0x1D696], NFC: [0x1D696], NFD: [0x1D696], NFKC: [0x006D], NFKD: [0x006D] },
+{ source: [0x1D697], NFC: [0x1D697], NFD: [0x1D697], NFKC: [0x006E], NFKD: [0x006E] },
+{ source: [0x1D698], NFC: [0x1D698], NFD: [0x1D698], NFKC: [0x006F], NFKD: [0x006F] },
+{ source: [0x1D699], NFC: [0x1D699], NFD: [0x1D699], NFKC: [0x0070], NFKD: [0x0070] },
+{ source: [0x1D69A], NFC: [0x1D69A], NFD: [0x1D69A], NFKC: [0x0071], NFKD: [0x0071] },
+{ source: [0x1D69B], NFC: [0x1D69B], NFD: [0x1D69B], NFKC: [0x0072], NFKD: [0x0072] },
+{ source: [0x1D69C], NFC: [0x1D69C], NFD: [0x1D69C], NFKC: [0x0073], NFKD: [0x0073] },
+{ source: [0x1D69D], NFC: [0x1D69D], NFD: [0x1D69D], NFKC: [0x0074], NFKD: [0x0074] },
+{ source: [0x1D69E], NFC: [0x1D69E], NFD: [0x1D69E], NFKC: [0x0075], NFKD: [0x0075] },
+{ source: [0x1D69F], NFC: [0x1D69F], NFD: [0x1D69F], NFKC: [0x0076], NFKD: [0x0076] },
+{ source: [0x1D6A0], NFC: [0x1D6A0], NFD: [0x1D6A0], NFKC: [0x0077], NFKD: [0x0077] },
+{ source: [0x1D6A1], NFC: [0x1D6A1], NFD: [0x1D6A1], NFKC: [0x0078], NFKD: [0x0078] },
+{ source: [0x1D6A2], NFC: [0x1D6A2], NFD: [0x1D6A2], NFKC: [0x0079], NFKD: [0x0079] },
+{ source: [0x1D6A3], NFC: [0x1D6A3], NFD: [0x1D6A3], NFKC: [0x007A], NFKD: [0x007A] },
+{ source: [0x1D6A4], NFC: [0x1D6A4], NFD: [0x1D6A4], NFKC: [0x0131], NFKD: [0x0131] },
+{ source: [0x1D6A5], NFC: [0x1D6A5], NFD: [0x1D6A5], NFKC: [0x0237], NFKD: [0x0237] },
+{ source: [0x1D6A8], NFC: [0x1D6A8], NFD: [0x1D6A8], NFKC: [0x0391], NFKD: [0x0391] },
+{ source: [0x1D6A9], NFC: [0x1D6A9], NFD: [0x1D6A9], NFKC: [0x0392], NFKD: [0x0392] },
+{ source: [0x1D6AA], NFC: [0x1D6AA], NFD: [0x1D6AA], NFKC: [0x0393], NFKD: [0x0393] },
+{ source: [0x1D6AB], NFC: [0x1D6AB], NFD: [0x1D6AB], NFKC: [0x0394], NFKD: [0x0394] },
+{ source: [0x1D6AC], NFC: [0x1D6AC], NFD: [0x1D6AC], NFKC: [0x0395], NFKD: [0x0395] },
+{ source: [0x1D6AD], NFC: [0x1D6AD], NFD: [0x1D6AD], NFKC: [0x0396], NFKD: [0x0396] },
+{ source: [0x1D6AE], NFC: [0x1D6AE], NFD: [0x1D6AE], NFKC: [0x0397], NFKD: [0x0397] },
+{ source: [0x1D6AF], NFC: [0x1D6AF], NFD: [0x1D6AF], NFKC: [0x0398], NFKD: [0x0398] },
+{ source: [0x1D6B0], NFC: [0x1D6B0], NFD: [0x1D6B0], NFKC: [0x0399], NFKD: [0x0399] },
+{ source: [0x1D6B1], NFC: [0x1D6B1], NFD: [0x1D6B1], NFKC: [0x039A], NFKD: [0x039A] },
+{ source: [0x1D6B2], NFC: [0x1D6B2], NFD: [0x1D6B2], NFKC: [0x039B], NFKD: [0x039B] },
+{ source: [0x1D6B3], NFC: [0x1D6B3], NFD: [0x1D6B3], NFKC: [0x039C], NFKD: [0x039C] },
+{ source: [0x1D6B4], NFC: [0x1D6B4], NFD: [0x1D6B4], NFKC: [0x039D], NFKD: [0x039D] },
+{ source: [0x1D6B5], NFC: [0x1D6B5], NFD: [0x1D6B5], NFKC: [0x039E], NFKD: [0x039E] },
+{ source: [0x1D6B6], NFC: [0x1D6B6], NFD: [0x1D6B6], NFKC: [0x039F], NFKD: [0x039F] },
+{ source: [0x1D6B7], NFC: [0x1D6B7], NFD: [0x1D6B7], NFKC: [0x03A0], NFKD: [0x03A0] },
+{ source: [0x1D6B8], NFC: [0x1D6B8], NFD: [0x1D6B8], NFKC: [0x03A1], NFKD: [0x03A1] },
+{ source: [0x1D6B9], NFC: [0x1D6B9], NFD: [0x1D6B9], NFKC: [0x0398], NFKD: [0x0398] },
+{ source: [0x1D6BA], NFC: [0x1D6BA], NFD: [0x1D6BA], NFKC: [0x03A3], NFKD: [0x03A3] },
+{ source: [0x1D6BB], NFC: [0x1D6BB], NFD: [0x1D6BB], NFKC: [0x03A4], NFKD: [0x03A4] },
+{ source: [0x1D6BC], NFC: [0x1D6BC], NFD: [0x1D6BC], NFKC: [0x03A5], NFKD: [0x03A5] },
+{ source: [0x1D6BD], NFC: [0x1D6BD], NFD: [0x1D6BD], NFKC: [0x03A6], NFKD: [0x03A6] },
+{ source: [0x1D6BE], NFC: [0x1D6BE], NFD: [0x1D6BE], NFKC: [0x03A7], NFKD: [0x03A7] },
+{ source: [0x1D6BF], NFC: [0x1D6BF], NFD: [0x1D6BF], NFKC: [0x03A8], NFKD: [0x03A8] },
+{ source: [0x1D6C0], NFC: [0x1D6C0], NFD: [0x1D6C0], NFKC: [0x03A9], NFKD: [0x03A9] },
+{ source: [0x1D6C1], NFC: [0x1D6C1], NFD: [0x1D6C1], NFKC: [0x2207], NFKD: [0x2207] },
+{ source: [0x1D6C2], NFC: [0x1D6C2], NFD: [0x1D6C2], NFKC: [0x03B1], NFKD: [0x03B1] },
+{ source: [0x1D6C3], NFC: [0x1D6C3], NFD: [0x1D6C3], NFKC: [0x03B2], NFKD: [0x03B2] },
+{ source: [0x1D6C4], NFC: [0x1D6C4], NFD: [0x1D6C4], NFKC: [0x03B3], NFKD: [0x03B3] },
+{ source: [0x1D6C5], NFC: [0x1D6C5], NFD: [0x1D6C5], NFKC: [0x03B4], NFKD: [0x03B4] },
+{ source: [0x1D6C6], NFC: [0x1D6C6], NFD: [0x1D6C6], NFKC: [0x03B5], NFKD: [0x03B5] },
+{ source: [0x1D6C7], NFC: [0x1D6C7], NFD: [0x1D6C7], NFKC: [0x03B6], NFKD: [0x03B6] },
+{ source: [0x1D6C8], NFC: [0x1D6C8], NFD: [0x1D6C8], NFKC: [0x03B7], NFKD: [0x03B7] },
+{ source: [0x1D6C9], NFC: [0x1D6C9], NFD: [0x1D6C9], NFKC: [0x03B8], NFKD: [0x03B8] },
+{ source: [0x1D6CA], NFC: [0x1D6CA], NFD: [0x1D6CA], NFKC: [0x03B9], NFKD: [0x03B9] },
+{ source: [0x1D6CB], NFC: [0x1D6CB], NFD: [0x1D6CB], NFKC: [0x03BA], NFKD: [0x03BA] },
+{ source: [0x1D6CC], NFC: [0x1D6CC], NFD: [0x1D6CC], NFKC: [0x03BB], NFKD: [0x03BB] },
+{ source: [0x1D6CD], NFC: [0x1D6CD], NFD: [0x1D6CD], NFKC: [0x03BC], NFKD: [0x03BC] },
+{ source: [0x1D6CE], NFC: [0x1D6CE], NFD: [0x1D6CE], NFKC: [0x03BD], NFKD: [0x03BD] },
+{ source: [0x1D6CF], NFC: [0x1D6CF], NFD: [0x1D6CF], NFKC: [0x03BE], NFKD: [0x03BE] },
+{ source: [0x1D6D0], NFC: [0x1D6D0], NFD: [0x1D6D0], NFKC: [0x03BF], NFKD: [0x03BF] },
+{ source: [0x1D6D1], NFC: [0x1D6D1], NFD: [0x1D6D1], NFKC: [0x03C0], NFKD: [0x03C0] },
+{ source: [0x1D6D2], NFC: [0x1D6D2], NFD: [0x1D6D2], NFKC: [0x03C1], NFKD: [0x03C1] },
+{ source: [0x1D6D3], NFC: [0x1D6D3], NFD: [0x1D6D3], NFKC: [0x03C2], NFKD: [0x03C2] },
+{ source: [0x1D6D4], NFC: [0x1D6D4], NFD: [0x1D6D4], NFKC: [0x03C3], NFKD: [0x03C3] },
+{ source: [0x1D6D5], NFC: [0x1D6D5], NFD: [0x1D6D5], NFKC: [0x03C4], NFKD: [0x03C4] },
+{ source: [0x1D6D6], NFC: [0x1D6D6], NFD: [0x1D6D6], NFKC: [0x03C5], NFKD: [0x03C5] },
+{ source: [0x1D6D7], NFC: [0x1D6D7], NFD: [0x1D6D7], NFKC: [0x03C6], NFKD: [0x03C6] },
+{ source: [0x1D6D8], NFC: [0x1D6D8], NFD: [0x1D6D8], NFKC: [0x03C7], NFKD: [0x03C7] },
+{ source: [0x1D6D9], NFC: [0x1D6D9], NFD: [0x1D6D9], NFKC: [0x03C8], NFKD: [0x03C8] },
+{ source: [0x1D6DA], NFC: [0x1D6DA], NFD: [0x1D6DA], NFKC: [0x03C9], NFKD: [0x03C9] },
+{ source: [0x1D6DB], NFC: [0x1D6DB], NFD: [0x1D6DB], NFKC: [0x2202], NFKD: [0x2202] },
+{ source: [0x1D6DC], NFC: [0x1D6DC], NFD: [0x1D6DC], NFKC: [0x03B5], NFKD: [0x03B5] },
+{ source: [0x1D6DD], NFC: [0x1D6DD], NFD: [0x1D6DD], NFKC: [0x03B8], NFKD: [0x03B8] },
+{ source: [0x1D6DE], NFC: [0x1D6DE], NFD: [0x1D6DE], NFKC: [0x03BA], NFKD: [0x03BA] },
+{ source: [0x1D6DF], NFC: [0x1D6DF], NFD: [0x1D6DF], NFKC: [0x03C6], NFKD: [0x03C6] },
+{ source: [0x1D6E0], NFC: [0x1D6E0], NFD: [0x1D6E0], NFKC: [0x03C1], NFKD: [0x03C1] },
+{ source: [0x1D6E1], NFC: [0x1D6E1], NFD: [0x1D6E1], NFKC: [0x03C0], NFKD: [0x03C0] },
+{ source: [0x1D6E2], NFC: [0x1D6E2], NFD: [0x1D6E2], NFKC: [0x0391], NFKD: [0x0391] },
+{ source: [0x1D6E3], NFC: [0x1D6E3], NFD: [0x1D6E3], NFKC: [0x0392], NFKD: [0x0392] },
+{ source: [0x1D6E4], NFC: [0x1D6E4], NFD: [0x1D6E4], NFKC: [0x0393], NFKD: [0x0393] },
+{ source: [0x1D6E5], NFC: [0x1D6E5], NFD: [0x1D6E5], NFKC: [0x0394], NFKD: [0x0394] },
+{ source: [0x1D6E6], NFC: [0x1D6E6], NFD: [0x1D6E6], NFKC: [0x0395], NFKD: [0x0395] },
+{ source: [0x1D6E7], NFC: [0x1D6E7], NFD: [0x1D6E7], NFKC: [0x0396], NFKD: [0x0396] },
+{ source: [0x1D6E8], NFC: [0x1D6E8], NFD: [0x1D6E8], NFKC: [0x0397], NFKD: [0x0397] },
+{ source: [0x1D6E9], NFC: [0x1D6E9], NFD: [0x1D6E9], NFKC: [0x0398], NFKD: [0x0398] },
+{ source: [0x1D6EA], NFC: [0x1D6EA], NFD: [0x1D6EA], NFKC: [0x0399], NFKD: [0x0399] },
+{ source: [0x1D6EB], NFC: [0x1D6EB], NFD: [0x1D6EB], NFKC: [0x039A], NFKD: [0x039A] },
+{ source: [0x1D6EC], NFC: [0x1D6EC], NFD: [0x1D6EC], NFKC: [0x039B], NFKD: [0x039B] },
+{ source: [0x1D6ED], NFC: [0x1D6ED], NFD: [0x1D6ED], NFKC: [0x039C], NFKD: [0x039C] },
+{ source: [0x1D6EE], NFC: [0x1D6EE], NFD: [0x1D6EE], NFKC: [0x039D], NFKD: [0x039D] },
+{ source: [0x1D6EF], NFC: [0x1D6EF], NFD: [0x1D6EF], NFKC: [0x039E], NFKD: [0x039E] },
+{ source: [0x1D6F0], NFC: [0x1D6F0], NFD: [0x1D6F0], NFKC: [0x039F], NFKD: [0x039F] },
+{ source: [0x1D6F1], NFC: [0x1D6F1], NFD: [0x1D6F1], NFKC: [0x03A0], NFKD: [0x03A0] },
+{ source: [0x1D6F2], NFC: [0x1D6F2], NFD: [0x1D6F2], NFKC: [0x03A1], NFKD: [0x03A1] },
+{ source: [0x1D6F3], NFC: [0x1D6F3], NFD: [0x1D6F3], NFKC: [0x0398], NFKD: [0x0398] },
+{ source: [0x1D6F4], NFC: [0x1D6F4], NFD: [0x1D6F4], NFKC: [0x03A3], NFKD: [0x03A3] },
+{ source: [0x1D6F5], NFC: [0x1D6F5], NFD: [0x1D6F5], NFKC: [0x03A4], NFKD: [0x03A4] },
+{ source: [0x1D6F6], NFC: [0x1D6F6], NFD: [0x1D6F6], NFKC: [0x03A5], NFKD: [0x03A5] },
+{ source: [0x1D6F7], NFC: [0x1D6F7], NFD: [0x1D6F7], NFKC: [0x03A6], NFKD: [0x03A6] },
+{ source: [0x1D6F8], NFC: [0x1D6F8], NFD: [0x1D6F8], NFKC: [0x03A7], NFKD: [0x03A7] },
+{ source: [0x1D6F9], NFC: [0x1D6F9], NFD: [0x1D6F9], NFKC: [0x03A8], NFKD: [0x03A8] },
+{ source: [0x1D6FA], NFC: [0x1D6FA], NFD: [0x1D6FA], NFKC: [0x03A9], NFKD: [0x03A9] },
+{ source: [0x1D6FB], NFC: [0x1D6FB], NFD: [0x1D6FB], NFKC: [0x2207], NFKD: [0x2207] },
+{ source: [0x1D6FC], NFC: [0x1D6FC], NFD: [0x1D6FC], NFKC: [0x03B1], NFKD: [0x03B1] },
+{ source: [0x1D6FD], NFC: [0x1D6FD], NFD: [0x1D6FD], NFKC: [0x03B2], NFKD: [0x03B2] },
+{ source: [0x1D6FE], NFC: [0x1D6FE], NFD: [0x1D6FE], NFKC: [0x03B3], NFKD: [0x03B3] },
+{ source: [0x1D6FF], NFC: [0x1D6FF], NFD: [0x1D6FF], NFKC: [0x03B4], NFKD: [0x03B4] },
+{ source: [0x1D700], NFC: [0x1D700], NFD: [0x1D700], NFKC: [0x03B5], NFKD: [0x03B5] },
+{ source: [0x1D701], NFC: [0x1D701], NFD: [0x1D701], NFKC: [0x03B6], NFKD: [0x03B6] },
+{ source: [0x1D702], NFC: [0x1D702], NFD: [0x1D702], NFKC: [0x03B7], NFKD: [0x03B7] },
+{ source: [0x1D703], NFC: [0x1D703], NFD: [0x1D703], NFKC: [0x03B8], NFKD: [0x03B8] },
+{ source: [0x1D704], NFC: [0x1D704], NFD: [0x1D704], NFKC: [0x03B9], NFKD: [0x03B9] },
+{ source: [0x1D705], NFC: [0x1D705], NFD: [0x1D705], NFKC: [0x03BA], NFKD: [0x03BA] },
+{ source: [0x1D706], NFC: [0x1D706], NFD: [0x1D706], NFKC: [0x03BB], NFKD: [0x03BB] },
+{ source: [0x1D707], NFC: [0x1D707], NFD: [0x1D707], NFKC: [0x03BC], NFKD: [0x03BC] },
+{ source: [0x1D708], NFC: [0x1D708], NFD: [0x1D708], NFKC: [0x03BD], NFKD: [0x03BD] },
+{ source: [0x1D709], NFC: [0x1D709], NFD: [0x1D709], NFKC: [0x03BE], NFKD: [0x03BE] },
+{ source: [0x1D70A], NFC: [0x1D70A], NFD: [0x1D70A], NFKC: [0x03BF], NFKD: [0x03BF] },
+{ source: [0x1D70B], NFC: [0x1D70B], NFD: [0x1D70B], NFKC: [0x03C0], NFKD: [0x03C0] },
+{ source: [0x1D70C], NFC: [0x1D70C], NFD: [0x1D70C], NFKC: [0x03C1], NFKD: [0x03C1] },
+{ source: [0x1D70D], NFC: [0x1D70D], NFD: [0x1D70D], NFKC: [0x03C2], NFKD: [0x03C2] },
+{ source: [0x1D70E], NFC: [0x1D70E], NFD: [0x1D70E], NFKC: [0x03C3], NFKD: [0x03C3] },
+{ source: [0x1D70F], NFC: [0x1D70F], NFD: [0x1D70F], NFKC: [0x03C4], NFKD: [0x03C4] },
+{ source: [0x1D710], NFC: [0x1D710], NFD: [0x1D710], NFKC: [0x03C5], NFKD: [0x03C5] },
+{ source: [0x1D711], NFC: [0x1D711], NFD: [0x1D711], NFKC: [0x03C6], NFKD: [0x03C6] },
+{ source: [0x1D712], NFC: [0x1D712], NFD: [0x1D712], NFKC: [0x03C7], NFKD: [0x03C7] },
+{ source: [0x1D713], NFC: [0x1D713], NFD: [0x1D713], NFKC: [0x03C8], NFKD: [0x03C8] },
+{ source: [0x1D714], NFC: [0x1D714], NFD: [0x1D714], NFKC: [0x03C9], NFKD: [0x03C9] },
+{ source: [0x1D715], NFC: [0x1D715], NFD: [0x1D715], NFKC: [0x2202], NFKD: [0x2202] },
+{ source: [0x1D716], NFC: [0x1D716], NFD: [0x1D716], NFKC: [0x03B5], NFKD: [0x03B5] },
+{ source: [0x1D717], NFC: [0x1D717], NFD: [0x1D717], NFKC: [0x03B8], NFKD: [0x03B8] },
+{ source: [0x1D718], NFC: [0x1D718], NFD: [0x1D718], NFKC: [0x03BA], NFKD: [0x03BA] },
+{ source: [0x1D719], NFC: [0x1D719], NFD: [0x1D719], NFKC: [0x03C6], NFKD: [0x03C6] },
+{ source: [0x1D71A], NFC: [0x1D71A], NFD: [0x1D71A], NFKC: [0x03C1], NFKD: [0x03C1] },
+{ source: [0x1D71B], NFC: [0x1D71B], NFD: [0x1D71B], NFKC: [0x03C0], NFKD: [0x03C0] },
+{ source: [0x1D71C], NFC: [0x1D71C], NFD: [0x1D71C], NFKC: [0x0391], NFKD: [0x0391] },
+{ source: [0x1D71D], NFC: [0x1D71D], NFD: [0x1D71D], NFKC: [0x0392], NFKD: [0x0392] },
+{ source: [0x1D71E], NFC: [0x1D71E], NFD: [0x1D71E], NFKC: [0x0393], NFKD: [0x0393] },
+{ source: [0x1D71F], NFC: [0x1D71F], NFD: [0x1D71F], NFKC: [0x0394], NFKD: [0x0394] },
+{ source: [0x1D720], NFC: [0x1D720], NFD: [0x1D720], NFKC: [0x0395], NFKD: [0x0395] },
+{ source: [0x1D721], NFC: [0x1D721], NFD: [0x1D721], NFKC: [0x0396], NFKD: [0x0396] },
+{ source: [0x1D722], NFC: [0x1D722], NFD: [0x1D722], NFKC: [0x0397], NFKD: [0x0397] },
+{ source: [0x1D723], NFC: [0x1D723], NFD: [0x1D723], NFKC: [0x0398], NFKD: [0x0398] },
+{ source: [0x1D724], NFC: [0x1D724], NFD: [0x1D724], NFKC: [0x0399], NFKD: [0x0399] },
+{ source: [0x1D725], NFC: [0x1D725], NFD: [0x1D725], NFKC: [0x039A], NFKD: [0x039A] },
+{ source: [0x1D726], NFC: [0x1D726], NFD: [0x1D726], NFKC: [0x039B], NFKD: [0x039B] },
+{ source: [0x1D727], NFC: [0x1D727], NFD: [0x1D727], NFKC: [0x039C], NFKD: [0x039C] },
+{ source: [0x1D728], NFC: [0x1D728], NFD: [0x1D728], NFKC: [0x039D], NFKD: [0x039D] },
+{ source: [0x1D729], NFC: [0x1D729], NFD: [0x1D729], NFKC: [0x039E], NFKD: [0x039E] },
+{ source: [0x1D72A], NFC: [0x1D72A], NFD: [0x1D72A], NFKC: [0x039F], NFKD: [0x039F] },
+{ source: [0x1D72B], NFC: [0x1D72B], NFD: [0x1D72B], NFKC: [0x03A0], NFKD: [0x03A0] },
+{ source: [0x1D72C], NFC: [0x1D72C], NFD: [0x1D72C], NFKC: [0x03A1], NFKD: [0x03A1] },
+{ source: [0x1D72D], NFC: [0x1D72D], NFD: [0x1D72D], NFKC: [0x0398], NFKD: [0x0398] },
+{ source: [0x1D72E], NFC: [0x1D72E], NFD: [0x1D72E], NFKC: [0x03A3], NFKD: [0x03A3] },
+{ source: [0x1D72F], NFC: [0x1D72F], NFD: [0x1D72F], NFKC: [0x03A4], NFKD: [0x03A4] },
+{ source: [0x1D730], NFC: [0x1D730], NFD: [0x1D730], NFKC: [0x03A5], NFKD: [0x03A5] },
+{ source: [0x1D731], NFC: [0x1D731], NFD: [0x1D731], NFKC: [0x03A6], NFKD: [0x03A6] },
+{ source: [0x1D732], NFC: [0x1D732], NFD: [0x1D732], NFKC: [0x03A7], NFKD: [0x03A7] },
+{ source: [0x1D733], NFC: [0x1D733], NFD: [0x1D733], NFKC: [0x03A8], NFKD: [0x03A8] },
+{ source: [0x1D734], NFC: [0x1D734], NFD: [0x1D734], NFKC: [0x03A9], NFKD: [0x03A9] },
+{ source: [0x1D735], NFC: [0x1D735], NFD: [0x1D735], NFKC: [0x2207], NFKD: [0x2207] },
+{ source: [0x1D736], NFC: [0x1D736], NFD: [0x1D736], NFKC: [0x03B1], NFKD: [0x03B1] },
+{ source: [0x1D737], NFC: [0x1D737], NFD: [0x1D737], NFKC: [0x03B2], NFKD: [0x03B2] },
+{ source: [0x1D738], NFC: [0x1D738], NFD: [0x1D738], NFKC: [0x03B3], NFKD: [0x03B3] },
+{ source: [0x1D739], NFC: [0x1D739], NFD: [0x1D739], NFKC: [0x03B4], NFKD: [0x03B4] },
+{ source: [0x1D73A], NFC: [0x1D73A], NFD: [0x1D73A], NFKC: [0x03B5], NFKD: [0x03B5] },
+{ source: [0x1D73B], NFC: [0x1D73B], NFD: [0x1D73B], NFKC: [0x03B6], NFKD: [0x03B6] },
+{ source: [0x1D73C], NFC: [0x1D73C], NFD: [0x1D73C], NFKC: [0x03B7], NFKD: [0x03B7] },
+{ source: [0x1D73D], NFC: [0x1D73D], NFD: [0x1D73D], NFKC: [0x03B8], NFKD: [0x03B8] },
+{ source: [0x1D73E], NFC: [0x1D73E], NFD: [0x1D73E], NFKC: [0x03B9], NFKD: [0x03B9] },
+{ source: [0x1D73F], NFC: [0x1D73F], NFD: [0x1D73F], NFKC: [0x03BA], NFKD: [0x03BA] },
+{ source: [0x1D740], NFC: [0x1D740], NFD: [0x1D740], NFKC: [0x03BB], NFKD: [0x03BB] },
+{ source: [0x1D741], NFC: [0x1D741], NFD: [0x1D741], NFKC: [0x03BC], NFKD: [0x03BC] },
+{ source: [0x1D742], NFC: [0x1D742], NFD: [0x1D742], NFKC: [0x03BD], NFKD: [0x03BD] },
+{ source: [0x1D743], NFC: [0x1D743], NFD: [0x1D743], NFKC: [0x03BE], NFKD: [0x03BE] },
+{ source: [0x1D744], NFC: [0x1D744], NFD: [0x1D744], NFKC: [0x03BF], NFKD: [0x03BF] },
+{ source: [0x1D745], NFC: [0x1D745], NFD: [0x1D745], NFKC: [0x03C0], NFKD: [0x03C0] },
+{ source: [0x1D746], NFC: [0x1D746], NFD: [0x1D746], NFKC: [0x03C1], NFKD: [0x03C1] },
+{ source: [0x1D747], NFC: [0x1D747], NFD: [0x1D747], NFKC: [0x03C2], NFKD: [0x03C2] },
+{ source: [0x1D748], NFC: [0x1D748], NFD: [0x1D748], NFKC: [0x03C3], NFKD: [0x03C3] },
+{ source: [0x1D749], NFC: [0x1D749], NFD: [0x1D749], NFKC: [0x03C4], NFKD: [0x03C4] },
+{ source: [0x1D74A], NFC: [0x1D74A], NFD: [0x1D74A], NFKC: [0x03C5], NFKD: [0x03C5] },
+{ source: [0x1D74B], NFC: [0x1D74B], NFD: [0x1D74B], NFKC: [0x03C6], NFKD: [0x03C6] },
+{ source: [0x1D74C], NFC: [0x1D74C], NFD: [0x1D74C], NFKC: [0x03C7], NFKD: [0x03C7] },
+{ source: [0x1D74D], NFC: [0x1D74D], NFD: [0x1D74D], NFKC: [0x03C8], NFKD: [0x03C8] },
+{ source: [0x1D74E], NFC: [0x1D74E], NFD: [0x1D74E], NFKC: [0x03C9], NFKD: [0x03C9] },
+{ source: [0x1D74F], NFC: [0x1D74F], NFD: [0x1D74F], NFKC: [0x2202], NFKD: [0x2202] },
+{ source: [0x1D750], NFC: [0x1D750], NFD: [0x1D750], NFKC: [0x03B5], NFKD: [0x03B5] },
+{ source: [0x1D751], NFC: [0x1D751], NFD: [0x1D751], NFKC: [0x03B8], NFKD: [0x03B8] },
+{ source: [0x1D752], NFC: [0x1D752], NFD: [0x1D752], NFKC: [0x03BA], NFKD: [0x03BA] },
+{ source: [0x1D753], NFC: [0x1D753], NFD: [0x1D753], NFKC: [0x03C6], NFKD: [0x03C6] },
+{ source: [0x1D754], NFC: [0x1D754], NFD: [0x1D754], NFKC: [0x03C1], NFKD: [0x03C1] },
+{ source: [0x1D755], NFC: [0x1D755], NFD: [0x1D755], NFKC: [0x03C0], NFKD: [0x03C0] },
+{ source: [0x1D756], NFC: [0x1D756], NFD: [0x1D756], NFKC: [0x0391], NFKD: [0x0391] },
+{ source: [0x1D757], NFC: [0x1D757], NFD: [0x1D757], NFKC: [0x0392], NFKD: [0x0392] },
+{ source: [0x1D758], NFC: [0x1D758], NFD: [0x1D758], NFKC: [0x0393], NFKD: [0x0393] },
+{ source: [0x1D759], NFC: [0x1D759], NFD: [0x1D759], NFKC: [0x0394], NFKD: [0x0394] },
+{ source: [0x1D75A], NFC: [0x1D75A], NFD: [0x1D75A], NFKC: [0x0395], NFKD: [0x0395] },
+{ source: [0x1D75B], NFC: [0x1D75B], NFD: [0x1D75B], NFKC: [0x0396], NFKD: [0x0396] },
+{ source: [0x1D75C], NFC: [0x1D75C], NFD: [0x1D75C], NFKC: [0x0397], NFKD: [0x0397] },
+{ source: [0x1D75D], NFC: [0x1D75D], NFD: [0x1D75D], NFKC: [0x0398], NFKD: [0x0398] },
+{ source: [0x1D75E], NFC: [0x1D75E], NFD: [0x1D75E], NFKC: [0x0399], NFKD: [0x0399] },
+{ source: [0x1D75F], NFC: [0x1D75F], NFD: [0x1D75F], NFKC: [0x039A], NFKD: [0x039A] },
+{ source: [0x1D760], NFC: [0x1D760], NFD: [0x1D760], NFKC: [0x039B], NFKD: [0x039B] },
+{ source: [0x1D761], NFC: [0x1D761], NFD: [0x1D761], NFKC: [0x039C], NFKD: [0x039C] },
+{ source: [0x1D762], NFC: [0x1D762], NFD: [0x1D762], NFKC: [0x039D], NFKD: [0x039D] },
+{ source: [0x1D763], NFC: [0x1D763], NFD: [0x1D763], NFKC: [0x039E], NFKD: [0x039E] },
+{ source: [0x1D764], NFC: [0x1D764], NFD: [0x1D764], NFKC: [0x039F], NFKD: [0x039F] },
+{ source: [0x1D765], NFC: [0x1D765], NFD: [0x1D765], NFKC: [0x03A0], NFKD: [0x03A0] },
+{ source: [0x1D766], NFC: [0x1D766], NFD: [0x1D766], NFKC: [0x03A1], NFKD: [0x03A1] },
+{ source: [0x1D767], NFC: [0x1D767], NFD: [0x1D767], NFKC: [0x0398], NFKD: [0x0398] },
+{ source: [0x1D768], NFC: [0x1D768], NFD: [0x1D768], NFKC: [0x03A3], NFKD: [0x03A3] },
+{ source: [0x1D769], NFC: [0x1D769], NFD: [0x1D769], NFKC: [0x03A4], NFKD: [0x03A4] },
+{ source: [0x1D76A], NFC: [0x1D76A], NFD: [0x1D76A], NFKC: [0x03A5], NFKD: [0x03A5] },
+{ source: [0x1D76B], NFC: [0x1D76B], NFD: [0x1D76B], NFKC: [0x03A6], NFKD: [0x03A6] },
+{ source: [0x1D76C], NFC: [0x1D76C], NFD: [0x1D76C], NFKC: [0x03A7], NFKD: [0x03A7] },
+{ source: [0x1D76D], NFC: [0x1D76D], NFD: [0x1D76D], NFKC: [0x03A8], NFKD: [0x03A8] },
+{ source: [0x1D76E], NFC: [0x1D76E], NFD: [0x1D76E], NFKC: [0x03A9], NFKD: [0x03A9] },
+{ source: [0x1D76F], NFC: [0x1D76F], NFD: [0x1D76F], NFKC: [0x2207], NFKD: [0x2207] },
+{ source: [0x1D770], NFC: [0x1D770], NFD: [0x1D770], NFKC: [0x03B1], NFKD: [0x03B1] },
+{ source: [0x1D771], NFC: [0x1D771], NFD: [0x1D771], NFKC: [0x03B2], NFKD: [0x03B2] },
+{ source: [0x1D772], NFC: [0x1D772], NFD: [0x1D772], NFKC: [0x03B3], NFKD: [0x03B3] },
+{ source: [0x1D773], NFC: [0x1D773], NFD: [0x1D773], NFKC: [0x03B4], NFKD: [0x03B4] },
+{ source: [0x1D774], NFC: [0x1D774], NFD: [0x1D774], NFKC: [0x03B5], NFKD: [0x03B5] },
+{ source: [0x1D775], NFC: [0x1D775], NFD: [0x1D775], NFKC: [0x03B6], NFKD: [0x03B6] },
+{ source: [0x1D776], NFC: [0x1D776], NFD: [0x1D776], NFKC: [0x03B7], NFKD: [0x03B7] },
+{ source: [0x1D777], NFC: [0x1D777], NFD: [0x1D777], NFKC: [0x03B8], NFKD: [0x03B8] },
+{ source: [0x1D778], NFC: [0x1D778], NFD: [0x1D778], NFKC: [0x03B9], NFKD: [0x03B9] },
+{ source: [0x1D779], NFC: [0x1D779], NFD: [0x1D779], NFKC: [0x03BA], NFKD: [0x03BA] },
+{ source: [0x1D77A], NFC: [0x1D77A], NFD: [0x1D77A], NFKC: [0x03BB], NFKD: [0x03BB] },
+{ source: [0x1D77B], NFC: [0x1D77B], NFD: [0x1D77B], NFKC: [0x03BC], NFKD: [0x03BC] },
+{ source: [0x1D77C], NFC: [0x1D77C], NFD: [0x1D77C], NFKC: [0x03BD], NFKD: [0x03BD] },
+{ source: [0x1D77D], NFC: [0x1D77D], NFD: [0x1D77D], NFKC: [0x03BE], NFKD: [0x03BE] },
+{ source: [0x1D77E], NFC: [0x1D77E], NFD: [0x1D77E], NFKC: [0x03BF], NFKD: [0x03BF] },
+{ source: [0x1D77F], NFC: [0x1D77F], NFD: [0x1D77F], NFKC: [0x03C0], NFKD: [0x03C0] },
+{ source: [0x1D780], NFC: [0x1D780], NFD: [0x1D780], NFKC: [0x03C1], NFKD: [0x03C1] },
+{ source: [0x1D781], NFC: [0x1D781], NFD: [0x1D781], NFKC: [0x03C2], NFKD: [0x03C2] },
+{ source: [0x1D782], NFC: [0x1D782], NFD: [0x1D782], NFKC: [0x03C3], NFKD: [0x03C3] },
+{ source: [0x1D783], NFC: [0x1D783], NFD: [0x1D783], NFKC: [0x03C4], NFKD: [0x03C4] },
+{ source: [0x1D784], NFC: [0x1D784], NFD: [0x1D784], NFKC: [0x03C5], NFKD: [0x03C5] },
+{ source: [0x1D785], NFC: [0x1D785], NFD: [0x1D785], NFKC: [0x03C6], NFKD: [0x03C6] },
+{ source: [0x1D786], NFC: [0x1D786], NFD: [0x1D786], NFKC: [0x03C7], NFKD: [0x03C7] },
+{ source: [0x1D787], NFC: [0x1D787], NFD: [0x1D787], NFKC: [0x03C8], NFKD: [0x03C8] },
+{ source: [0x1D788], NFC: [0x1D788], NFD: [0x1D788], NFKC: [0x03C9], NFKD: [0x03C9] },
+{ source: [0x1D789], NFC: [0x1D789], NFD: [0x1D789], NFKC: [0x2202], NFKD: [0x2202] },
+{ source: [0x1D78A], NFC: [0x1D78A], NFD: [0x1D78A], NFKC: [0x03B5], NFKD: [0x03B5] },
+{ source: [0x1D78B], NFC: [0x1D78B], NFD: [0x1D78B], NFKC: [0x03B8], NFKD: [0x03B8] },
+{ source: [0x1D78C], NFC: [0x1D78C], NFD: [0x1D78C], NFKC: [0x03BA], NFKD: [0x03BA] },
+{ source: [0x1D78D], NFC: [0x1D78D], NFD: [0x1D78D], NFKC: [0x03C6], NFKD: [0x03C6] },
+{ source: [0x1D78E], NFC: [0x1D78E], NFD: [0x1D78E], NFKC: [0x03C1], NFKD: [0x03C1] },
+{ source: [0x1D78F], NFC: [0x1D78F], NFD: [0x1D78F], NFKC: [0x03C0], NFKD: [0x03C0] },
+{ source: [0x1D790], NFC: [0x1D790], NFD: [0x1D790], NFKC: [0x0391], NFKD: [0x0391] },
+{ source: [0x1D791], NFC: [0x1D791], NFD: [0x1D791], NFKC: [0x0392], NFKD: [0x0392] },
+{ source: [0x1D792], NFC: [0x1D792], NFD: [0x1D792], NFKC: [0x0393], NFKD: [0x0393] },
+{ source: [0x1D793], NFC: [0x1D793], NFD: [0x1D793], NFKC: [0x0394], NFKD: [0x0394] },
+{ source: [0x1D794], NFC: [0x1D794], NFD: [0x1D794], NFKC: [0x0395], NFKD: [0x0395] },
+{ source: [0x1D795], NFC: [0x1D795], NFD: [0x1D795], NFKC: [0x0396], NFKD: [0x0396] },
+{ source: [0x1D796], NFC: [0x1D796], NFD: [0x1D796], NFKC: [0x0397], NFKD: [0x0397] },
+{ source: [0x1D797], NFC: [0x1D797], NFD: [0x1D797], NFKC: [0x0398], NFKD: [0x0398] },
+{ source: [0x1D798], NFC: [0x1D798], NFD: [0x1D798], NFKC: [0x0399], NFKD: [0x0399] },
+{ source: [0x1D799], NFC: [0x1D799], NFD: [0x1D799], NFKC: [0x039A], NFKD: [0x039A] },
+{ source: [0x1D79A], NFC: [0x1D79A], NFD: [0x1D79A], NFKC: [0x039B], NFKD: [0x039B] },
+{ source: [0x1D79B], NFC: [0x1D79B], NFD: [0x1D79B], NFKC: [0x039C], NFKD: [0x039C] },
+{ source: [0x1D79C], NFC: [0x1D79C], NFD: [0x1D79C], NFKC: [0x039D], NFKD: [0x039D] },
+{ source: [0x1D79D], NFC: [0x1D79D], NFD: [0x1D79D], NFKC: [0x039E], NFKD: [0x039E] },
+{ source: [0x1D79E], NFC: [0x1D79E], NFD: [0x1D79E], NFKC: [0x039F], NFKD: [0x039F] },
+{ source: [0x1D79F], NFC: [0x1D79F], NFD: [0x1D79F], NFKC: [0x03A0], NFKD: [0x03A0] },
+{ source: [0x1D7A0], NFC: [0x1D7A0], NFD: [0x1D7A0], NFKC: [0x03A1], NFKD: [0x03A1] },
+{ source: [0x1D7A1], NFC: [0x1D7A1], NFD: [0x1D7A1], NFKC: [0x0398], NFKD: [0x0398] },
+{ source: [0x1D7A2], NFC: [0x1D7A2], NFD: [0x1D7A2], NFKC: [0x03A3], NFKD: [0x03A3] },
+{ source: [0x1D7A3], NFC: [0x1D7A3], NFD: [0x1D7A3], NFKC: [0x03A4], NFKD: [0x03A4] },
+{ source: [0x1D7A4], NFC: [0x1D7A4], NFD: [0x1D7A4], NFKC: [0x03A5], NFKD: [0x03A5] },
+{ source: [0x1D7A5], NFC: [0x1D7A5], NFD: [0x1D7A5], NFKC: [0x03A6], NFKD: [0x03A6] },
+{ source: [0x1D7A6], NFC: [0x1D7A6], NFD: [0x1D7A6], NFKC: [0x03A7], NFKD: [0x03A7] },
+{ source: [0x1D7A7], NFC: [0x1D7A7], NFD: [0x1D7A7], NFKC: [0x03A8], NFKD: [0x03A8] },
+{ source: [0x1D7A8], NFC: [0x1D7A8], NFD: [0x1D7A8], NFKC: [0x03A9], NFKD: [0x03A9] },
+{ source: [0x1D7A9], NFC: [0x1D7A9], NFD: [0x1D7A9], NFKC: [0x2207], NFKD: [0x2207] },
+{ source: [0x1D7AA], NFC: [0x1D7AA], NFD: [0x1D7AA], NFKC: [0x03B1], NFKD: [0x03B1] },
+{ source: [0x1D7AB], NFC: [0x1D7AB], NFD: [0x1D7AB], NFKC: [0x03B2], NFKD: [0x03B2] },
+{ source: [0x1D7AC], NFC: [0x1D7AC], NFD: [0x1D7AC], NFKC: [0x03B3], NFKD: [0x03B3] },
+{ source: [0x1D7AD], NFC: [0x1D7AD], NFD: [0x1D7AD], NFKC: [0x03B4], NFKD: [0x03B4] },
+{ source: [0x1D7AE], NFC: [0x1D7AE], NFD: [0x1D7AE], NFKC: [0x03B5], NFKD: [0x03B5] },
+{ source: [0x1D7AF], NFC: [0x1D7AF], NFD: [0x1D7AF], NFKC: [0x03B6], NFKD: [0x03B6] },
+{ source: [0x1D7B0], NFC: [0x1D7B0], NFD: [0x1D7B0], NFKC: [0x03B7], NFKD: [0x03B7] },
+{ source: [0x1D7B1], NFC: [0x1D7B1], NFD: [0x1D7B1], NFKC: [0x03B8], NFKD: [0x03B8] },
+{ source: [0x1D7B2], NFC: [0x1D7B2], NFD: [0x1D7B2], NFKC: [0x03B9], NFKD: [0x03B9] },
+{ source: [0x1D7B3], NFC: [0x1D7B3], NFD: [0x1D7B3], NFKC: [0x03BA], NFKD: [0x03BA] },
+{ source: [0x1D7B4], NFC: [0x1D7B4], NFD: [0x1D7B4], NFKC: [0x03BB], NFKD: [0x03BB] },
+{ source: [0x1D7B5], NFC: [0x1D7B5], NFD: [0x1D7B5], NFKC: [0x03BC], NFKD: [0x03BC] },
+{ source: [0x1D7B6], NFC: [0x1D7B6], NFD: [0x1D7B6], NFKC: [0x03BD], NFKD: [0x03BD] },
+{ source: [0x1D7B7], NFC: [0x1D7B7], NFD: [0x1D7B7], NFKC: [0x03BE], NFKD: [0x03BE] },
+{ source: [0x1D7B8], NFC: [0x1D7B8], NFD: [0x1D7B8], NFKC: [0x03BF], NFKD: [0x03BF] },
+{ source: [0x1D7B9], NFC: [0x1D7B9], NFD: [0x1D7B9], NFKC: [0x03C0], NFKD: [0x03C0] },
+{ source: [0x1D7BA], NFC: [0x1D7BA], NFD: [0x1D7BA], NFKC: [0x03C1], NFKD: [0x03C1] },
+{ source: [0x1D7BB], NFC: [0x1D7BB], NFD: [0x1D7BB], NFKC: [0x03C2], NFKD: [0x03C2] },
+{ source: [0x1D7BC], NFC: [0x1D7BC], NFD: [0x1D7BC], NFKC: [0x03C3], NFKD: [0x03C3] },
+{ source: [0x1D7BD], NFC: [0x1D7BD], NFD: [0x1D7BD], NFKC: [0x03C4], NFKD: [0x03C4] },
+{ source: [0x1D7BE], NFC: [0x1D7BE], NFD: [0x1D7BE], NFKC: [0x03C5], NFKD: [0x03C5] },
+{ source: [0x1D7BF], NFC: [0x1D7BF], NFD: [0x1D7BF], NFKC: [0x03C6], NFKD: [0x03C6] },
+{ source: [0x1D7C0], NFC: [0x1D7C0], NFD: [0x1D7C0], NFKC: [0x03C7], NFKD: [0x03C7] },
+{ source: [0x1D7C1], NFC: [0x1D7C1], NFD: [0x1D7C1], NFKC: [0x03C8], NFKD: [0x03C8] },
+{ source: [0x1D7C2], NFC: [0x1D7C2], NFD: [0x1D7C2], NFKC: [0x03C9], NFKD: [0x03C9] },
+{ source: [0x1D7C3], NFC: [0x1D7C3], NFD: [0x1D7C3], NFKC: [0x2202], NFKD: [0x2202] },
+{ source: [0x1D7C4], NFC: [0x1D7C4], NFD: [0x1D7C4], NFKC: [0x03B5], NFKD: [0x03B5] },
+{ source: [0x1D7C5], NFC: [0x1D7C5], NFD: [0x1D7C5], NFKC: [0x03B8], NFKD: [0x03B8] },
+{ source: [0x1D7C6], NFC: [0x1D7C6], NFD: [0x1D7C6], NFKC: [0x03BA], NFKD: [0x03BA] },
+{ source: [0x1D7C7], NFC: [0x1D7C7], NFD: [0x1D7C7], NFKC: [0x03C6], NFKD: [0x03C6] },
+{ source: [0x1D7C8], NFC: [0x1D7C8], NFD: [0x1D7C8], NFKC: [0x03C1], NFKD: [0x03C1] },
+{ source: [0x1D7C9], NFC: [0x1D7C9], NFD: [0x1D7C9], NFKC: [0x03C0], NFKD: [0x03C0] },
+{ source: [0x1D7CA], NFC: [0x1D7CA], NFD: [0x1D7CA], NFKC: [0x03DC], NFKD: [0x03DC] },
+{ source: [0x1D7CB], NFC: [0x1D7CB], NFD: [0x1D7CB], NFKC: [0x03DD], NFKD: [0x03DD] },
+{ source: [0x1D7CE], NFC: [0x1D7CE], NFD: [0x1D7CE], NFKC: [0x0030], NFKD: [0x0030] },
+{ source: [0x1D7CF], NFC: [0x1D7CF], NFD: [0x1D7CF], NFKC: [0x0031], NFKD: [0x0031] },
+{ source: [0x1D7D0], NFC: [0x1D7D0], NFD: [0x1D7D0], NFKC: [0x0032], NFKD: [0x0032] },
+{ source: [0x1D7D1], NFC: [0x1D7D1], NFD: [0x1D7D1], NFKC: [0x0033], NFKD: [0x0033] },
+{ source: [0x1D7D2], NFC: [0x1D7D2], NFD: [0x1D7D2], NFKC: [0x0034], NFKD: [0x0034] },
+{ source: [0x1D7D3], NFC: [0x1D7D3], NFD: [0x1D7D3], NFKC: [0x0035], NFKD: [0x0035] },
+{ source: [0x1D7D4], NFC: [0x1D7D4], NFD: [0x1D7D4], NFKC: [0x0036], NFKD: [0x0036] },
+{ source: [0x1D7D5], NFC: [0x1D7D5], NFD: [0x1D7D5], NFKC: [0x0037], NFKD: [0x0037] },
+{ source: [0x1D7D6], NFC: [0x1D7D6], NFD: [0x1D7D6], NFKC: [0x0038], NFKD: [0x0038] },
+{ source: [0x1D7D7], NFC: [0x1D7D7], NFD: [0x1D7D7], NFKC: [0x0039], NFKD: [0x0039] },
+{ source: [0x1D7D8], NFC: [0x1D7D8], NFD: [0x1D7D8], NFKC: [0x0030], NFKD: [0x0030] },
+{ source: [0x1D7D9], NFC: [0x1D7D9], NFD: [0x1D7D9], NFKC: [0x0031], NFKD: [0x0031] },
+{ source: [0x1D7DA], NFC: [0x1D7DA], NFD: [0x1D7DA], NFKC: [0x0032], NFKD: [0x0032] },
+{ source: [0x1D7DB], NFC: [0x1D7DB], NFD: [0x1D7DB], NFKC: [0x0033], NFKD: [0x0033] },
+{ source: [0x1D7DC], NFC: [0x1D7DC], NFD: [0x1D7DC], NFKC: [0x0034], NFKD: [0x0034] },
+{ source: [0x1D7DD], NFC: [0x1D7DD], NFD: [0x1D7DD], NFKC: [0x0035], NFKD: [0x0035] },
+{ source: [0x1D7DE], NFC: [0x1D7DE], NFD: [0x1D7DE], NFKC: [0x0036], NFKD: [0x0036] },
+{ source: [0x1D7DF], NFC: [0x1D7DF], NFD: [0x1D7DF], NFKC: [0x0037], NFKD: [0x0037] },
+{ source: [0x1D7E0], NFC: [0x1D7E0], NFD: [0x1D7E0], NFKC: [0x0038], NFKD: [0x0038] },
+{ source: [0x1D7E1], NFC: [0x1D7E1], NFD: [0x1D7E1], NFKC: [0x0039], NFKD: [0x0039] },
+{ source: [0x1D7E2], NFC: [0x1D7E2], NFD: [0x1D7E2], NFKC: [0x0030], NFKD: [0x0030] },
+{ source: [0x1D7E3], NFC: [0x1D7E3], NFD: [0x1D7E3], NFKC: [0x0031], NFKD: [0x0031] },
+{ source: [0x1D7E4], NFC: [0x1D7E4], NFD: [0x1D7E4], NFKC: [0x0032], NFKD: [0x0032] },
+{ source: [0x1D7E5], NFC: [0x1D7E5], NFD: [0x1D7E5], NFKC: [0x0033], NFKD: [0x0033] },
+{ source: [0x1D7E6], NFC: [0x1D7E6], NFD: [0x1D7E6], NFKC: [0x0034], NFKD: [0x0034] },
+{ source: [0x1D7E7], NFC: [0x1D7E7], NFD: [0x1D7E7], NFKC: [0x0035], NFKD: [0x0035] },
+{ source: [0x1D7E8], NFC: [0x1D7E8], NFD: [0x1D7E8], NFKC: [0x0036], NFKD: [0x0036] },
+{ source: [0x1D7E9], NFC: [0x1D7E9], NFD: [0x1D7E9], NFKC: [0x0037], NFKD: [0x0037] },
+{ source: [0x1D7EA], NFC: [0x1D7EA], NFD: [0x1D7EA], NFKC: [0x0038], NFKD: [0x0038] },
+{ source: [0x1D7EB], NFC: [0x1D7EB], NFD: [0x1D7EB], NFKC: [0x0039], NFKD: [0x0039] },
+{ source: [0x1D7EC], NFC: [0x1D7EC], NFD: [0x1D7EC], NFKC: [0x0030], NFKD: [0x0030] },
+{ source: [0x1D7ED], NFC: [0x1D7ED], NFD: [0x1D7ED], NFKC: [0x0031], NFKD: [0x0031] },
+{ source: [0x1D7EE], NFC: [0x1D7EE], NFD: [0x1D7EE], NFKC: [0x0032], NFKD: [0x0032] },
+{ source: [0x1D7EF], NFC: [0x1D7EF], NFD: [0x1D7EF], NFKC: [0x0033], NFKD: [0x0033] },
+{ source: [0x1D7F0], NFC: [0x1D7F0], NFD: [0x1D7F0], NFKC: [0x0034], NFKD: [0x0034] },
+{ source: [0x1D7F1], NFC: [0x1D7F1], NFD: [0x1D7F1], NFKC: [0x0035], NFKD: [0x0035] },
+{ source: [0x1D7F2], NFC: [0x1D7F2], NFD: [0x1D7F2], NFKC: [0x0036], NFKD: [0x0036] },
+{ source: [0x1D7F3], NFC: [0x1D7F3], NFD: [0x1D7F3], NFKC: [0x0037], NFKD: [0x0037] },
+{ source: [0x1D7F4], NFC: [0x1D7F4], NFD: [0x1D7F4], NFKC: [0x0038], NFKD: [0x0038] },
+{ source: [0x1D7F5], NFC: [0x1D7F5], NFD: [0x1D7F5], NFKC: [0x0039], NFKD: [0x0039] },
+{ source: [0x1D7F6], NFC: [0x1D7F6], NFD: [0x1D7F6], NFKC: [0x0030], NFKD: [0x0030] },
+{ source: [0x1D7F7], NFC: [0x1D7F7], NFD: [0x1D7F7], NFKC: [0x0031], NFKD: [0x0031] },
+{ source: [0x1D7F8], NFC: [0x1D7F8], NFD: [0x1D7F8], NFKC: [0x0032], NFKD: [0x0032] },
+{ source: [0x1D7F9], NFC: [0x1D7F9], NFD: [0x1D7F9], NFKC: [0x0033], NFKD: [0x0033] },
+{ source: [0x1D7FA], NFC: [0x1D7FA], NFD: [0x1D7FA], NFKC: [0x0034], NFKD: [0x0034] },
+{ source: [0x1D7FB], NFC: [0x1D7FB], NFD: [0x1D7FB], NFKC: [0x0035], NFKD: [0x0035] },
+{ source: [0x1D7FC], NFC: [0x1D7FC], NFD: [0x1D7FC], NFKC: [0x0036], NFKD: [0x0036] },
+{ source: [0x1D7FD], NFC: [0x1D7FD], NFD: [0x1D7FD], NFKC: [0x0037], NFKD: [0x0037] },
+{ source: [0x1D7FE], NFC: [0x1D7FE], NFD: [0x1D7FE], NFKC: [0x0038], NFKD: [0x0038] },
+{ source: [0x1D7FF], NFC: [0x1D7FF], NFD: [0x1D7FF], NFKC: [0x0039], NFKD: [0x0039] },
+{ source: [0x1EE00], NFC: [0x1EE00], NFD: [0x1EE00], NFKC: [0x0627], NFKD: [0x0627] },
+{ source: [0x1EE01], NFC: [0x1EE01], NFD: [0x1EE01], NFKC: [0x0628], NFKD: [0x0628] },
+{ source: [0x1EE02], NFC: [0x1EE02], NFD: [0x1EE02], NFKC: [0x062C], NFKD: [0x062C] },
+{ source: [0x1EE03], NFC: [0x1EE03], NFD: [0x1EE03], NFKC: [0x062F], NFKD: [0x062F] },
+{ source: [0x1EE05], NFC: [0x1EE05], NFD: [0x1EE05], NFKC: [0x0648], NFKD: [0x0648] },
+{ source: [0x1EE06], NFC: [0x1EE06], NFD: [0x1EE06], NFKC: [0x0632], NFKD: [0x0632] },
+{ source: [0x1EE07], NFC: [0x1EE07], NFD: [0x1EE07], NFKC: [0x062D], NFKD: [0x062D] },
+{ source: [0x1EE08], NFC: [0x1EE08], NFD: [0x1EE08], NFKC: [0x0637], NFKD: [0x0637] },
+{ source: [0x1EE09], NFC: [0x1EE09], NFD: [0x1EE09], NFKC: [0x064A], NFKD: [0x064A] },
+{ source: [0x1EE0A], NFC: [0x1EE0A], NFD: [0x1EE0A], NFKC: [0x0643], NFKD: [0x0643] },
+{ source: [0x1EE0B], NFC: [0x1EE0B], NFD: [0x1EE0B], NFKC: [0x0644], NFKD: [0x0644] },
+{ source: [0x1EE0C], NFC: [0x1EE0C], NFD: [0x1EE0C], NFKC: [0x0645], NFKD: [0x0645] },
+{ source: [0x1EE0D], NFC: [0x1EE0D], NFD: [0x1EE0D], NFKC: [0x0646], NFKD: [0x0646] },
+{ source: [0x1EE0E], NFC: [0x1EE0E], NFD: [0x1EE0E], NFKC: [0x0633], NFKD: [0x0633] },
+{ source: [0x1EE0F], NFC: [0x1EE0F], NFD: [0x1EE0F], NFKC: [0x0639], NFKD: [0x0639] },
+{ source: [0x1EE10], NFC: [0x1EE10], NFD: [0x1EE10], NFKC: [0x0641], NFKD: [0x0641] },
+{ source: [0x1EE11], NFC: [0x1EE11], NFD: [0x1EE11], NFKC: [0x0635], NFKD: [0x0635] },
+{ source: [0x1EE12], NFC: [0x1EE12], NFD: [0x1EE12], NFKC: [0x0642], NFKD: [0x0642] },
+{ source: [0x1EE13], NFC: [0x1EE13], NFD: [0x1EE13], NFKC: [0x0631], NFKD: [0x0631] },
+{ source: [0x1EE14], NFC: [0x1EE14], NFD: [0x1EE14], NFKC: [0x0634], NFKD: [0x0634] },
+{ source: [0x1EE15], NFC: [0x1EE15], NFD: [0x1EE15], NFKC: [0x062A], NFKD: [0x062A] },
+{ source: [0x1EE16], NFC: [0x1EE16], NFD: [0x1EE16], NFKC: [0x062B], NFKD: [0x062B] },
+{ source: [0x1EE17], NFC: [0x1EE17], NFD: [0x1EE17], NFKC: [0x062E], NFKD: [0x062E] },
+{ source: [0x1EE18], NFC: [0x1EE18], NFD: [0x1EE18], NFKC: [0x0630], NFKD: [0x0630] },
+{ source: [0x1EE19], NFC: [0x1EE19], NFD: [0x1EE19], NFKC: [0x0636], NFKD: [0x0636] },
+{ source: [0x1EE1A], NFC: [0x1EE1A], NFD: [0x1EE1A], NFKC: [0x0638], NFKD: [0x0638] },
+{ source: [0x1EE1B], NFC: [0x1EE1B], NFD: [0x1EE1B], NFKC: [0x063A], NFKD: [0x063A] },
+{ source: [0x1EE1C], NFC: [0x1EE1C], NFD: [0x1EE1C], NFKC: [0x066E], NFKD: [0x066E] },
+{ source: [0x1EE1D], NFC: [0x1EE1D], NFD: [0x1EE1D], NFKC: [0x06BA], NFKD: [0x06BA] },
+{ source: [0x1EE1E], NFC: [0x1EE1E], NFD: [0x1EE1E], NFKC: [0x06A1], NFKD: [0x06A1] },
+{ source: [0x1EE1F], NFC: [0x1EE1F], NFD: [0x1EE1F], NFKC: [0x066F], NFKD: [0x066F] },
+{ source: [0x1EE21], NFC: [0x1EE21], NFD: [0x1EE21], NFKC: [0x0628], NFKD: [0x0628] },
+{ source: [0x1EE22], NFC: [0x1EE22], NFD: [0x1EE22], NFKC: [0x062C], NFKD: [0x062C] },
+{ source: [0x1EE24], NFC: [0x1EE24], NFD: [0x1EE24], NFKC: [0x0647], NFKD: [0x0647] },
+{ source: [0x1EE27], NFC: [0x1EE27], NFD: [0x1EE27], NFKC: [0x062D], NFKD: [0x062D] },
+{ source: [0x1EE29], NFC: [0x1EE29], NFD: [0x1EE29], NFKC: [0x064A], NFKD: [0x064A] },
+{ source: [0x1EE2A], NFC: [0x1EE2A], NFD: [0x1EE2A], NFKC: [0x0643], NFKD: [0x0643] },
+{ source: [0x1EE2B], NFC: [0x1EE2B], NFD: [0x1EE2B], NFKC: [0x0644], NFKD: [0x0644] },
+{ source: [0x1EE2C], NFC: [0x1EE2C], NFD: [0x1EE2C], NFKC: [0x0645], NFKD: [0x0645] },
+{ source: [0x1EE2D], NFC: [0x1EE2D], NFD: [0x1EE2D], NFKC: [0x0646], NFKD: [0x0646] },
+{ source: [0x1EE2E], NFC: [0x1EE2E], NFD: [0x1EE2E], NFKC: [0x0633], NFKD: [0x0633] },
+{ source: [0x1EE2F], NFC: [0x1EE2F], NFD: [0x1EE2F], NFKC: [0x0639], NFKD: [0x0639] },
+{ source: [0x1EE30], NFC: [0x1EE30], NFD: [0x1EE30], NFKC: [0x0641], NFKD: [0x0641] },
+{ source: [0x1EE31], NFC: [0x1EE31], NFD: [0x1EE31], NFKC: [0x0635], NFKD: [0x0635] },
+{ source: [0x1EE32], NFC: [0x1EE32], NFD: [0x1EE32], NFKC: [0x0642], NFKD: [0x0642] },
+{ source: [0x1EE34], NFC: [0x1EE34], NFD: [0x1EE34], NFKC: [0x0634], NFKD: [0x0634] },
+{ source: [0x1EE35], NFC: [0x1EE35], NFD: [0x1EE35], NFKC: [0x062A], NFKD: [0x062A] },
+{ source: [0x1EE36], NFC: [0x1EE36], NFD: [0x1EE36], NFKC: [0x062B], NFKD: [0x062B] },
+{ source: [0x1EE37], NFC: [0x1EE37], NFD: [0x1EE37], NFKC: [0x062E], NFKD: [0x062E] },
+{ source: [0x1EE39], NFC: [0x1EE39], NFD: [0x1EE39], NFKC: [0x0636], NFKD: [0x0636] },
+{ source: [0x1EE3B], NFC: [0x1EE3B], NFD: [0x1EE3B], NFKC: [0x063A], NFKD: [0x063A] },
+{ source: [0x1EE42], NFC: [0x1EE42], NFD: [0x1EE42], NFKC: [0x062C], NFKD: [0x062C] },
+{ source: [0x1EE47], NFC: [0x1EE47], NFD: [0x1EE47], NFKC: [0x062D], NFKD: [0x062D] },
+{ source: [0x1EE49], NFC: [0x1EE49], NFD: [0x1EE49], NFKC: [0x064A], NFKD: [0x064A] },
+{ source: [0x1EE4B], NFC: [0x1EE4B], NFD: [0x1EE4B], NFKC: [0x0644], NFKD: [0x0644] },
+{ source: [0x1EE4D], NFC: [0x1EE4D], NFD: [0x1EE4D], NFKC: [0x0646], NFKD: [0x0646] },
+{ source: [0x1EE4E], NFC: [0x1EE4E], NFD: [0x1EE4E], NFKC: [0x0633], NFKD: [0x0633] },
+{ source: [0x1EE4F], NFC: [0x1EE4F], NFD: [0x1EE4F], NFKC: [0x0639], NFKD: [0x0639] },
+{ source: [0x1EE51], NFC: [0x1EE51], NFD: [0x1EE51], NFKC: [0x0635], NFKD: [0x0635] },
+{ source: [0x1EE52], NFC: [0x1EE52], NFD: [0x1EE52], NFKC: [0x0642], NFKD: [0x0642] },
+{ source: [0x1EE54], NFC: [0x1EE54], NFD: [0x1EE54], NFKC: [0x0634], NFKD: [0x0634] },
+{ source: [0x1EE57], NFC: [0x1EE57], NFD: [0x1EE57], NFKC: [0x062E], NFKD: [0x062E] },
+{ source: [0x1EE59], NFC: [0x1EE59], NFD: [0x1EE59], NFKC: [0x0636], NFKD: [0x0636] },
+{ source: [0x1EE5B], NFC: [0x1EE5B], NFD: [0x1EE5B], NFKC: [0x063A], NFKD: [0x063A] },
+{ source: [0x1EE5D], NFC: [0x1EE5D], NFD: [0x1EE5D], NFKC: [0x06BA], NFKD: [0x06BA] },
+{ source: [0x1EE5F], NFC: [0x1EE5F], NFD: [0x1EE5F], NFKC: [0x066F], NFKD: [0x066F] },
+{ source: [0x1EE61], NFC: [0x1EE61], NFD: [0x1EE61], NFKC: [0x0628], NFKD: [0x0628] },
+{ source: [0x1EE62], NFC: [0x1EE62], NFD: [0x1EE62], NFKC: [0x062C], NFKD: [0x062C] },
+{ source: [0x1EE64], NFC: [0x1EE64], NFD: [0x1EE64], NFKC: [0x0647], NFKD: [0x0647] },
+{ source: [0x1EE67], NFC: [0x1EE67], NFD: [0x1EE67], NFKC: [0x062D], NFKD: [0x062D] },
+{ source: [0x1EE68], NFC: [0x1EE68], NFD: [0x1EE68], NFKC: [0x0637], NFKD: [0x0637] },
+{ source: [0x1EE69], NFC: [0x1EE69], NFD: [0x1EE69], NFKC: [0x064A], NFKD: [0x064A] },
+{ source: [0x1EE6A], NFC: [0x1EE6A], NFD: [0x1EE6A], NFKC: [0x0643], NFKD: [0x0643] },
+{ source: [0x1EE6C], NFC: [0x1EE6C], NFD: [0x1EE6C], NFKC: [0x0645], NFKD: [0x0645] },
+{ source: [0x1EE6D], NFC: [0x1EE6D], NFD: [0x1EE6D], NFKC: [0x0646], NFKD: [0x0646] },
+{ source: [0x1EE6E], NFC: [0x1EE6E], NFD: [0x1EE6E], NFKC: [0x0633], NFKD: [0x0633] },
+{ source: [0x1EE6F], NFC: [0x1EE6F], NFD: [0x1EE6F], NFKC: [0x0639], NFKD: [0x0639] },
+{ source: [0x1EE70], NFC: [0x1EE70], NFD: [0x1EE70], NFKC: [0x0641], NFKD: [0x0641] },
+{ source: [0x1EE71], NFC: [0x1EE71], NFD: [0x1EE71], NFKC: [0x0635], NFKD: [0x0635] },
+{ source: [0x1EE72], NFC: [0x1EE72], NFD: [0x1EE72], NFKC: [0x0642], NFKD: [0x0642] },
+{ source: [0x1EE74], NFC: [0x1EE74], NFD: [0x1EE74], NFKC: [0x0634], NFKD: [0x0634] },
+{ source: [0x1EE75], NFC: [0x1EE75], NFD: [0x1EE75], NFKC: [0x062A], NFKD: [0x062A] },
+{ source: [0x1EE76], NFC: [0x1EE76], NFD: [0x1EE76], NFKC: [0x062B], NFKD: [0x062B] },
+{ source: [0x1EE77], NFC: [0x1EE77], NFD: [0x1EE77], NFKC: [0x062E], NFKD: [0x062E] },
+{ source: [0x1EE79], NFC: [0x1EE79], NFD: [0x1EE79], NFKC: [0x0636], NFKD: [0x0636] },
+{ source: [0x1EE7A], NFC: [0x1EE7A], NFD: [0x1EE7A], NFKC: [0x0638], NFKD: [0x0638] },
+{ source: [0x1EE7B], NFC: [0x1EE7B], NFD: [0x1EE7B], NFKC: [0x063A], NFKD: [0x063A] },
+{ source: [0x1EE7C], NFC: [0x1EE7C], NFD: [0x1EE7C], NFKC: [0x066E], NFKD: [0x066E] },
+{ source: [0x1EE7E], NFC: [0x1EE7E], NFD: [0x1EE7E], NFKC: [0x06A1], NFKD: [0x06A1] },
+{ source: [0x1EE80], NFC: [0x1EE80], NFD: [0x1EE80], NFKC: [0x0627], NFKD: [0x0627] },
+{ source: [0x1EE81], NFC: [0x1EE81], NFD: [0x1EE81], NFKC: [0x0628], NFKD: [0x0628] },
+{ source: [0x1EE82], NFC: [0x1EE82], NFD: [0x1EE82], NFKC: [0x062C], NFKD: [0x062C] },
+{ source: [0x1EE83], NFC: [0x1EE83], NFD: [0x1EE83], NFKC: [0x062F], NFKD: [0x062F] },
+{ source: [0x1EE84], NFC: [0x1EE84], NFD: [0x1EE84], NFKC: [0x0647], NFKD: [0x0647] },
+{ source: [0x1EE85], NFC: [0x1EE85], NFD: [0x1EE85], NFKC: [0x0648], NFKD: [0x0648] },
+{ source: [0x1EE86], NFC: [0x1EE86], NFD: [0x1EE86], NFKC: [0x0632], NFKD: [0x0632] },
+{ source: [0x1EE87], NFC: [0x1EE87], NFD: [0x1EE87], NFKC: [0x062D], NFKD: [0x062D] },
+{ source: [0x1EE88], NFC: [0x1EE88], NFD: [0x1EE88], NFKC: [0x0637], NFKD: [0x0637] },
+{ source: [0x1EE89], NFC: [0x1EE89], NFD: [0x1EE89], NFKC: [0x064A], NFKD: [0x064A] },
+{ source: [0x1EE8B], NFC: [0x1EE8B], NFD: [0x1EE8B], NFKC: [0x0644], NFKD: [0x0644] },
+{ source: [0x1EE8C], NFC: [0x1EE8C], NFD: [0x1EE8C], NFKC: [0x0645], NFKD: [0x0645] },
+{ source: [0x1EE8D], NFC: [0x1EE8D], NFD: [0x1EE8D], NFKC: [0x0646], NFKD: [0x0646] },
+{ source: [0x1EE8E], NFC: [0x1EE8E], NFD: [0x1EE8E], NFKC: [0x0633], NFKD: [0x0633] },
+{ source: [0x1EE8F], NFC: [0x1EE8F], NFD: [0x1EE8F], NFKC: [0x0639], NFKD: [0x0639] },
+{ source: [0x1EE90], NFC: [0x1EE90], NFD: [0x1EE90], NFKC: [0x0641], NFKD: [0x0641] },
+{ source: [0x1EE91], NFC: [0x1EE91], NFD: [0x1EE91], NFKC: [0x0635], NFKD: [0x0635] },
+{ source: [0x1EE92], NFC: [0x1EE92], NFD: [0x1EE92], NFKC: [0x0642], NFKD: [0x0642] },
+{ source: [0x1EE93], NFC: [0x1EE93], NFD: [0x1EE93], NFKC: [0x0631], NFKD: [0x0631] },
+{ source: [0x1EE94], NFC: [0x1EE94], NFD: [0x1EE94], NFKC: [0x0634], NFKD: [0x0634] },
+{ source: [0x1EE95], NFC: [0x1EE95], NFD: [0x1EE95], NFKC: [0x062A], NFKD: [0x062A] },
+{ source: [0x1EE96], NFC: [0x1EE96], NFD: [0x1EE96], NFKC: [0x062B], NFKD: [0x062B] },
+{ source: [0x1EE97], NFC: [0x1EE97], NFD: [0x1EE97], NFKC: [0x062E], NFKD: [0x062E] },
+{ source: [0x1EE98], NFC: [0x1EE98], NFD: [0x1EE98], NFKC: [0x0630], NFKD: [0x0630] },
+{ source: [0x1EE99], NFC: [0x1EE99], NFD: [0x1EE99], NFKC: [0x0636], NFKD: [0x0636] },
+{ source: [0x1EE9A], NFC: [0x1EE9A], NFD: [0x1EE9A], NFKC: [0x0638], NFKD: [0x0638] },
+{ source: [0x1EE9B], NFC: [0x1EE9B], NFD: [0x1EE9B], NFKC: [0x063A], NFKD: [0x063A] },
+{ source: [0x1EEA1], NFC: [0x1EEA1], NFD: [0x1EEA1], NFKC: [0x0628], NFKD: [0x0628] },
+{ source: [0x1EEA2], NFC: [0x1EEA2], NFD: [0x1EEA2], NFKC: [0x062C], NFKD: [0x062C] },
+{ source: [0x1EEA3], NFC: [0x1EEA3], NFD: [0x1EEA3], NFKC: [0x062F], NFKD: [0x062F] },
+{ source: [0x1EEA5], NFC: [0x1EEA5], NFD: [0x1EEA5], NFKC: [0x0648], NFKD: [0x0648] },
+{ source: [0x1EEA6], NFC: [0x1EEA6], NFD: [0x1EEA6], NFKC: [0x0632], NFKD: [0x0632] },
+{ source: [0x1EEA7], NFC: [0x1EEA7], NFD: [0x1EEA7], NFKC: [0x062D], NFKD: [0x062D] },
+{ source: [0x1EEA8], NFC: [0x1EEA8], NFD: [0x1EEA8], NFKC: [0x0637], NFKD: [0x0637] },
+{ source: [0x1EEA9], NFC: [0x1EEA9], NFD: [0x1EEA9], NFKC: [0x064A], NFKD: [0x064A] },
+{ source: [0x1EEAB], NFC: [0x1EEAB], NFD: [0x1EEAB], NFKC: [0x0644], NFKD: [0x0644] },
+{ source: [0x1EEAC], NFC: [0x1EEAC], NFD: [0x1EEAC], NFKC: [0x0645], NFKD: [0x0645] },
+{ source: [0x1EEAD], NFC: [0x1EEAD], NFD: [0x1EEAD], NFKC: [0x0646], NFKD: [0x0646] },
+{ source: [0x1EEAE], NFC: [0x1EEAE], NFD: [0x1EEAE], NFKC: [0x0633], NFKD: [0x0633] },
+{ source: [0x1EEAF], NFC: [0x1EEAF], NFD: [0x1EEAF], NFKC: [0x0639], NFKD: [0x0639] },
+{ source: [0x1EEB0], NFC: [0x1EEB0], NFD: [0x1EEB0], NFKC: [0x0641], NFKD: [0x0641] },
+{ source: [0x1EEB1], NFC: [0x1EEB1], NFD: [0x1EEB1], NFKC: [0x0635], NFKD: [0x0635] },
+{ source: [0x1EEB2], NFC: [0x1EEB2], NFD: [0x1EEB2], NFKC: [0x0642], NFKD: [0x0642] },
+{ source: [0x1EEB3], NFC: [0x1EEB3], NFD: [0x1EEB3], NFKC: [0x0631], NFKD: [0x0631] },
+{ source: [0x1EEB4], NFC: [0x1EEB4], NFD: [0x1EEB4], NFKC: [0x0634], NFKD: [0x0634] },
+{ source: [0x1EEB5], NFC: [0x1EEB5], NFD: [0x1EEB5], NFKC: [0x062A], NFKD: [0x062A] },
+{ source: [0x1EEB6], NFC: [0x1EEB6], NFD: [0x1EEB6], NFKC: [0x062B], NFKD: [0x062B] },
+{ source: [0x1EEB7], NFC: [0x1EEB7], NFD: [0x1EEB7], NFKC: [0x062E], NFKD: [0x062E] },
+{ source: [0x1EEB8], NFC: [0x1EEB8], NFD: [0x1EEB8], NFKC: [0x0630], NFKD: [0x0630] },
+{ source: [0x1EEB9], NFC: [0x1EEB9], NFD: [0x1EEB9], NFKC: [0x0636], NFKD: [0x0636] },
+{ source: [0x1EEBA], NFC: [0x1EEBA], NFD: [0x1EEBA], NFKC: [0x0638], NFKD: [0x0638] },
+{ source: [0x1EEBB], NFC: [0x1EEBB], NFD: [0x1EEBB], NFKC: [0x063A], NFKD: [0x063A] },
+{ source: [0x1F100], NFC: [0x1F100], NFD: [0x1F100], NFKC: [0x0030, 0x002E], NFKD: [0x0030, 0x002E] },
+{ source: [0x1F101], NFC: [0x1F101], NFD: [0x1F101], NFKC: [0x0030, 0x002C], NFKD: [0x0030, 0x002C] },
+{ source: [0x1F102], NFC: [0x1F102], NFD: [0x1F102], NFKC: [0x0031, 0x002C], NFKD: [0x0031, 0x002C] },
+{ source: [0x1F103], NFC: [0x1F103], NFD: [0x1F103], NFKC: [0x0032, 0x002C], NFKD: [0x0032, 0x002C] },
+{ source: [0x1F104], NFC: [0x1F104], NFD: [0x1F104], NFKC: [0x0033, 0x002C], NFKD: [0x0033, 0x002C] },
+{ source: [0x1F105], NFC: [0x1F105], NFD: [0x1F105], NFKC: [0x0034, 0x002C], NFKD: [0x0034, 0x002C] },
+{ source: [0x1F106], NFC: [0x1F106], NFD: [0x1F106], NFKC: [0x0035, 0x002C], NFKD: [0x0035, 0x002C] },
+{ source: [0x1F107], NFC: [0x1F107], NFD: [0x1F107], NFKC: [0x0036, 0x002C], NFKD: [0x0036, 0x002C] },
+{ source: [0x1F108], NFC: [0x1F108], NFD: [0x1F108], NFKC: [0x0037, 0x002C], NFKD: [0x0037, 0x002C] },
+{ source: [0x1F109], NFC: [0x1F109], NFD: [0x1F109], NFKC: [0x0038, 0x002C], NFKD: [0x0038, 0x002C] },
+{ source: [0x1F10A], NFC: [0x1F10A], NFD: [0x1F10A], NFKC: [0x0039, 0x002C], NFKD: [0x0039, 0x002C] },
+{ source: [0x1F110], NFC: [0x1F110], NFD: [0x1F110], NFKC: [0x0028, 0x0041, 0x0029], NFKD: [0x0028, 0x0041, 0x0029] },
+{ source: [0x1F111], NFC: [0x1F111], NFD: [0x1F111], NFKC: [0x0028, 0x0042, 0x0029], NFKD: [0x0028, 0x0042, 0x0029] },
+{ source: [0x1F112], NFC: [0x1F112], NFD: [0x1F112], NFKC: [0x0028, 0x0043, 0x0029], NFKD: [0x0028, 0x0043, 0x0029] },
+{ source: [0x1F113], NFC: [0x1F113], NFD: [0x1F113], NFKC: [0x0028, 0x0044, 0x0029], NFKD: [0x0028, 0x0044, 0x0029] },
+{ source: [0x1F114], NFC: [0x1F114], NFD: [0x1F114], NFKC: [0x0028, 0x0045, 0x0029], NFKD: [0x0028, 0x0045, 0x0029] },
+{ source: [0x1F115], NFC: [0x1F115], NFD: [0x1F115], NFKC: [0x0028, 0x0046, 0x0029], NFKD: [0x0028, 0x0046, 0x0029] },
+{ source: [0x1F116], NFC: [0x1F116], NFD: [0x1F116], NFKC: [0x0028, 0x0047, 0x0029], NFKD: [0x0028, 0x0047, 0x0029] },
+{ source: [0x1F117], NFC: [0x1F117], NFD: [0x1F117], NFKC: [0x0028, 0x0048, 0x0029], NFKD: [0x0028, 0x0048, 0x0029] },
+{ source: [0x1F118], NFC: [0x1F118], NFD: [0x1F118], NFKC: [0x0028, 0x0049, 0x0029], NFKD: [0x0028, 0x0049, 0x0029] },
+{ source: [0x1F119], NFC: [0x1F119], NFD: [0x1F119], NFKC: [0x0028, 0x004A, 0x0029], NFKD: [0x0028, 0x004A, 0x0029] },
+{ source: [0x1F11A], NFC: [0x1F11A], NFD: [0x1F11A], NFKC: [0x0028, 0x004B, 0x0029], NFKD: [0x0028, 0x004B, 0x0029] },
+{ source: [0x1F11B], NFC: [0x1F11B], NFD: [0x1F11B], NFKC: [0x0028, 0x004C, 0x0029], NFKD: [0x0028, 0x004C, 0x0029] },
+{ source: [0x1F11C], NFC: [0x1F11C], NFD: [0x1F11C], NFKC: [0x0028, 0x004D, 0x0029], NFKD: [0x0028, 0x004D, 0x0029] },
+{ source: [0x1F11D], NFC: [0x1F11D], NFD: [0x1F11D], NFKC: [0x0028, 0x004E, 0x0029], NFKD: [0x0028, 0x004E, 0x0029] },
+{ source: [0x1F11E], NFC: [0x1F11E], NFD: [0x1F11E], NFKC: [0x0028, 0x004F, 0x0029], NFKD: [0x0028, 0x004F, 0x0029] },
+{ source: [0x1F11F], NFC: [0x1F11F], NFD: [0x1F11F], NFKC: [0x0028, 0x0050, 0x0029], NFKD: [0x0028, 0x0050, 0x0029] },
+{ source: [0x1F120], NFC: [0x1F120], NFD: [0x1F120], NFKC: [0x0028, 0x0051, 0x0029], NFKD: [0x0028, 0x0051, 0x0029] },
+{ source: [0x1F121], NFC: [0x1F121], NFD: [0x1F121], NFKC: [0x0028, 0x0052, 0x0029], NFKD: [0x0028, 0x0052, 0x0029] },
+{ source: [0x1F122], NFC: [0x1F122], NFD: [0x1F122], NFKC: [0x0028, 0x0053, 0x0029], NFKD: [0x0028, 0x0053, 0x0029] },
+{ source: [0x1F123], NFC: [0x1F123], NFD: [0x1F123], NFKC: [0x0028, 0x0054, 0x0029], NFKD: [0x0028, 0x0054, 0x0029] },
+{ source: [0x1F124], NFC: [0x1F124], NFD: [0x1F124], NFKC: [0x0028, 0x0055, 0x0029], NFKD: [0x0028, 0x0055, 0x0029] },
+{ source: [0x1F125], NFC: [0x1F125], NFD: [0x1F125], NFKC: [0x0028, 0x0056, 0x0029], NFKD: [0x0028, 0x0056, 0x0029] },
+{ source: [0x1F126], NFC: [0x1F126], NFD: [0x1F126], NFKC: [0x0028, 0x0057, 0x0029], NFKD: [0x0028, 0x0057, 0x0029] },
+{ source: [0x1F127], NFC: [0x1F127], NFD: [0x1F127], NFKC: [0x0028, 0x0058, 0x0029], NFKD: [0x0028, 0x0058, 0x0029] },
+{ source: [0x1F128], NFC: [0x1F128], NFD: [0x1F128], NFKC: [0x0028, 0x0059, 0x0029], NFKD: [0x0028, 0x0059, 0x0029] },
+{ source: [0x1F129], NFC: [0x1F129], NFD: [0x1F129], NFKC: [0x0028, 0x005A, 0x0029], NFKD: [0x0028, 0x005A, 0x0029] },
+{ source: [0x1F12A], NFC: [0x1F12A], NFD: [0x1F12A], NFKC: [0x3014, 0x0053, 0x3015], NFKD: [0x3014, 0x0053, 0x3015] },
+{ source: [0x1F12B], NFC: [0x1F12B], NFD: [0x1F12B], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x1F12C], NFC: [0x1F12C], NFD: [0x1F12C], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x1F12D], NFC: [0x1F12D], NFD: [0x1F12D], NFKC: [0x0043, 0x0044], NFKD: [0x0043, 0x0044] },
+{ source: [0x1F12E], NFC: [0x1F12E], NFD: [0x1F12E], NFKC: [0x0057, 0x005A], NFKD: [0x0057, 0x005A] },
+{ source: [0x1F130], NFC: [0x1F130], NFD: [0x1F130], NFKC: [0x0041], NFKD: [0x0041] },
+{ source: [0x1F131], NFC: [0x1F131], NFD: [0x1F131], NFKC: [0x0042], NFKD: [0x0042] },
+{ source: [0x1F132], NFC: [0x1F132], NFD: [0x1F132], NFKC: [0x0043], NFKD: [0x0043] },
+{ source: [0x1F133], NFC: [0x1F133], NFD: [0x1F133], NFKC: [0x0044], NFKD: [0x0044] },
+{ source: [0x1F134], NFC: [0x1F134], NFD: [0x1F134], NFKC: [0x0045], NFKD: [0x0045] },
+{ source: [0x1F135], NFC: [0x1F135], NFD: [0x1F135], NFKC: [0x0046], NFKD: [0x0046] },
+{ source: [0x1F136], NFC: [0x1F136], NFD: [0x1F136], NFKC: [0x0047], NFKD: [0x0047] },
+{ source: [0x1F137], NFC: [0x1F137], NFD: [0x1F137], NFKC: [0x0048], NFKD: [0x0048] },
+{ source: [0x1F138], NFC: [0x1F138], NFD: [0x1F138], NFKC: [0x0049], NFKD: [0x0049] },
+{ source: [0x1F139], NFC: [0x1F139], NFD: [0x1F139], NFKC: [0x004A], NFKD: [0x004A] },
+{ source: [0x1F13A], NFC: [0x1F13A], NFD: [0x1F13A], NFKC: [0x004B], NFKD: [0x004B] },
+{ source: [0x1F13B], NFC: [0x1F13B], NFD: [0x1F13B], NFKC: [0x004C], NFKD: [0x004C] },
+{ source: [0x1F13C], NFC: [0x1F13C], NFD: [0x1F13C], NFKC: [0x004D], NFKD: [0x004D] },
+{ source: [0x1F13D], NFC: [0x1F13D], NFD: [0x1F13D], NFKC: [0x004E], NFKD: [0x004E] },
+{ source: [0x1F13E], NFC: [0x1F13E], NFD: [0x1F13E], NFKC: [0x004F], NFKD: [0x004F] },
+{ source: [0x1F13F], NFC: [0x1F13F], NFD: [0x1F13F], NFKC: [0x0050], NFKD: [0x0050] },
+{ source: [0x1F140], NFC: [0x1F140], NFD: [0x1F140], NFKC: [0x0051], NFKD: [0x0051] },
+{ source: [0x1F141], NFC: [0x1F141], NFD: [0x1F141], NFKC: [0x0052], NFKD: [0x0052] },
+{ source: [0x1F142], NFC: [0x1F142], NFD: [0x1F142], NFKC: [0x0053], NFKD: [0x0053] },
+{ source: [0x1F143], NFC: [0x1F143], NFD: [0x1F143], NFKC: [0x0054], NFKD: [0x0054] },
+{ source: [0x1F144], NFC: [0x1F144], NFD: [0x1F144], NFKC: [0x0055], NFKD: [0x0055] },
+{ source: [0x1F145], NFC: [0x1F145], NFD: [0x1F145], NFKC: [0x0056], NFKD: [0x0056] },
+{ source: [0x1F146], NFC: [0x1F146], NFD: [0x1F146], NFKC: [0x0057], NFKD: [0x0057] },
+{ source: [0x1F147], NFC: [0x1F147], NFD: [0x1F147], NFKC: [0x0058], NFKD: [0x0058] },
+{ source: [0x1F148], NFC: [0x1F148], NFD: [0x1F148], NFKC: [0x0059], NFKD: [0x0059] },
+{ source: [0x1F149], NFC: [0x1F149], NFD: [0x1F149], NFKC: [0x005A], NFKD: [0x005A] },
+{ source: [0x1F14A], NFC: [0x1F14A], NFD: [0x1F14A], NFKC: [0x0048, 0x0056], NFKD: [0x0048, 0x0056] },
+{ source: [0x1F14B], NFC: [0x1F14B], NFD: [0x1F14B], NFKC: [0x004D, 0x0056], NFKD: [0x004D, 0x0056] },
+{ source: [0x1F14C], NFC: [0x1F14C], NFD: [0x1F14C], NFKC: [0x0053, 0x0044], NFKD: [0x0053, 0x0044] },
+{ source: [0x1F14D], NFC: [0x1F14D], NFD: [0x1F14D], NFKC: [0x0053, 0x0053], NFKD: [0x0053, 0x0053] },
+{ source: [0x1F14E], NFC: [0x1F14E], NFD: [0x1F14E], NFKC: [0x0050, 0x0050, 0x0056], NFKD: [0x0050, 0x0050, 0x0056] },
+{ source: [0x1F14F], NFC: [0x1F14F], NFD: [0x1F14F], NFKC: [0x0057, 0x0043], NFKD: [0x0057, 0x0043] },
+{ source: [0x1F16A], NFC: [0x1F16A], NFD: [0x1F16A], NFKC: [0x004D, 0x0043], NFKD: [0x004D, 0x0043] },
+{ source: [0x1F16B], NFC: [0x1F16B], NFD: [0x1F16B], NFKC: [0x004D, 0x0044], NFKD: [0x004D, 0x0044] },
+{ source: [0x1F190], NFC: [0x1F190], NFD: [0x1F190], NFKC: [0x0044, 0x004A], NFKD: [0x0044, 0x004A] },
+{ source: [0x1F200], NFC: [0x1F200], NFD: [0x1F200], NFKC: [0x307B, 0x304B], NFKD: [0x307B, 0x304B] },
+{ source: [0x1F201], NFC: [0x1F201], NFD: [0x1F201], NFKC: [0x30B3, 0x30B3], NFKD: [0x30B3, 0x30B3] },
+{ source: [0x1F202], NFC: [0x1F202], NFD: [0x1F202], NFKC: [0x30B5], NFKD: [0x30B5] },
+{ source: [0x1F210], NFC: [0x1F210], NFD: [0x1F210], NFKC: [0x624B], NFKD: [0x624B] },
+{ source: [0x1F211], NFC: [0x1F211], NFD: [0x1F211], NFKC: [0x5B57], NFKD: [0x5B57] },
+{ source: [0x1F212], NFC: [0x1F212], NFD: [0x1F212], NFKC: [0x53CC], NFKD: [0x53CC] },
+{ source: [0x1F213], NFC: [0x1F213], NFD: [0x1F213], NFKC: [0x30C7], NFKD: [0x30C6, 0x3099] },
+{ source: [0x1F214], NFC: [0x1F214], NFD: [0x1F214], NFKC: [0x4E8C], NFKD: [0x4E8C] },
+{ source: [0x1F215], NFC: [0x1F215], NFD: [0x1F215], NFKC: [0x591A], NFKD: [0x591A] },
+{ source: [0x1F216], NFC: [0x1F216], NFD: [0x1F216], NFKC: [0x89E3], NFKD: [0x89E3] },
+{ source: [0x1F217], NFC: [0x1F217], NFD: [0x1F217], NFKC: [0x5929], NFKD: [0x5929] },
+{ source: [0x1F218], NFC: [0x1F218], NFD: [0x1F218], NFKC: [0x4EA4], NFKD: [0x4EA4] },
+{ source: [0x1F219], NFC: [0x1F219], NFD: [0x1F219], NFKC: [0x6620], NFKD: [0x6620] },
+{ source: [0x1F21A], NFC: [0x1F21A], NFD: [0x1F21A], NFKC: [0x7121], NFKD: [0x7121] },
+{ source: [0x1F21B], NFC: [0x1F21B], NFD: [0x1F21B], NFKC: [0x6599], NFKD: [0x6599] },
+{ source: [0x1F21C], NFC: [0x1F21C], NFD: [0x1F21C], NFKC: [0x524D], NFKD: [0x524D] },
+{ source: [0x1F21D], NFC: [0x1F21D], NFD: [0x1F21D], NFKC: [0x5F8C], NFKD: [0x5F8C] },
+{ source: [0x1F21E], NFC: [0x1F21E], NFD: [0x1F21E], NFKC: [0x518D], NFKD: [0x518D] },
+{ source: [0x1F21F], NFC: [0x1F21F], NFD: [0x1F21F], NFKC: [0x65B0], NFKD: [0x65B0] },
+{ source: [0x1F220], NFC: [0x1F220], NFD: [0x1F220], NFKC: [0x521D], NFKD: [0x521D] },
+{ source: [0x1F221], NFC: [0x1F221], NFD: [0x1F221], NFKC: [0x7D42], NFKD: [0x7D42] },
+{ source: [0x1F222], NFC: [0x1F222], NFD: [0x1F222], NFKC: [0x751F], NFKD: [0x751F] },
+{ source: [0x1F223], NFC: [0x1F223], NFD: [0x1F223], NFKC: [0x8CA9], NFKD: [0x8CA9] },
+{ source: [0x1F224], NFC: [0x1F224], NFD: [0x1F224], NFKC: [0x58F0], NFKD: [0x58F0] },
+{ source: [0x1F225], NFC: [0x1F225], NFD: [0x1F225], NFKC: [0x5439], NFKD: [0x5439] },
+{ source: [0x1F226], NFC: [0x1F226], NFD: [0x1F226], NFKC: [0x6F14], NFKD: [0x6F14] },
+{ source: [0x1F227], NFC: [0x1F227], NFD: [0x1F227], NFKC: [0x6295], NFKD: [0x6295] },
+{ source: [0x1F228], NFC: [0x1F228], NFD: [0x1F228], NFKC: [0x6355], NFKD: [0x6355] },
+{ source: [0x1F229], NFC: [0x1F229], NFD: [0x1F229], NFKC: [0x4E00], NFKD: [0x4E00] },
+{ source: [0x1F22A], NFC: [0x1F22A], NFD: [0x1F22A], NFKC: [0x4E09], NFKD: [0x4E09] },
+{ source: [0x1F22B], NFC: [0x1F22B], NFD: [0x1F22B], NFKC: [0x904A], NFKD: [0x904A] },
+{ source: [0x1F22C], NFC: [0x1F22C], NFD: [0x1F22C], NFKC: [0x5DE6], NFKD: [0x5DE6] },
+{ source: [0x1F22D], NFC: [0x1F22D], NFD: [0x1F22D], NFKC: [0x4E2D], NFKD: [0x4E2D] },
+{ source: [0x1F22E], NFC: [0x1F22E], NFD: [0x1F22E], NFKC: [0x53F3], NFKD: [0x53F3] },
+{ source: [0x1F22F], NFC: [0x1F22F], NFD: [0x1F22F], NFKC: [0x6307], NFKD: [0x6307] },
+{ source: [0x1F230], NFC: [0x1F230], NFD: [0x1F230], NFKC: [0x8D70], NFKD: [0x8D70] },
+{ source: [0x1F231], NFC: [0x1F231], NFD: [0x1F231], NFKC: [0x6253], NFKD: [0x6253] },
+{ source: [0x1F232], NFC: [0x1F232], NFD: [0x1F232], NFKC: [0x7981], NFKD: [0x7981] },
+{ source: [0x1F233], NFC: [0x1F233], NFD: [0x1F233], NFKC: [0x7A7A], NFKD: [0x7A7A] },
+{ source: [0x1F234], NFC: [0x1F234], NFD: [0x1F234], NFKC: [0x5408], NFKD: [0x5408] },
+{ source: [0x1F235], NFC: [0x1F235], NFD: [0x1F235], NFKC: [0x6E80], NFKD: [0x6E80] },
+{ source: [0x1F236], NFC: [0x1F236], NFD: [0x1F236], NFKC: [0x6709], NFKD: [0x6709] },
+{ source: [0x1F237], NFC: [0x1F237], NFD: [0x1F237], NFKC: [0x6708], NFKD: [0x6708] },
+{ source: [0x1F238], NFC: [0x1F238], NFD: [0x1F238], NFKC: [0x7533], NFKD: [0x7533] },
+{ source: [0x1F239], NFC: [0x1F239], NFD: [0x1F239], NFKC: [0x5272], NFKD: [0x5272] },
+{ source: [0x1F23A], NFC: [0x1F23A], NFD: [0x1F23A], NFKC: [0x55B6], NFKD: [0x55B6] },
+{ source: [0x1F23B], NFC: [0x1F23B], NFD: [0x1F23B], NFKC: [0x914D], NFKD: [0x914D] },
+{ source: [0x1F240], NFC: [0x1F240], NFD: [0x1F240], NFKC: [0x3014, 0x672C, 0x3015], NFKD: [0x3014, 0x672C, 0x3015] },
+{ source: [0x1F241], NFC: [0x1F241], NFD: [0x1F241], NFKC: [0x3014, 0x4E09, 0x3015], NFKD: [0x3014, 0x4E09, 0x3015] },
+{ source: [0x1F242], NFC: [0x1F242], NFD: [0x1F242], NFKC: [0x3014, 0x4E8C, 0x3015], NFKD: [0x3014, 0x4E8C, 0x3015] },
+{ source: [0x1F243], NFC: [0x1F243], NFD: [0x1F243], NFKC: [0x3014, 0x5B89, 0x3015], NFKD: [0x3014, 0x5B89, 0x3015] },
+{ source: [0x1F244], NFC: [0x1F244], NFD: [0x1F244], NFKC: [0x3014, 0x70B9, 0x3015], NFKD: [0x3014, 0x70B9, 0x3015] },
+{ source: [0x1F245], NFC: [0x1F245], NFD: [0x1F245], NFKC: [0x3014, 0x6253, 0x3015], NFKD: [0x3014, 0x6253, 0x3015] },
+{ source: [0x1F246], NFC: [0x1F246], NFD: [0x1F246], NFKC: [0x3014, 0x76D7, 0x3015], NFKD: [0x3014, 0x76D7, 0x3015] },
+{ source: [0x1F247], NFC: [0x1F247], NFD: [0x1F247], NFKC: [0x3014, 0x52DD, 0x3015], NFKD: [0x3014, 0x52DD, 0x3015] },
+{ source: [0x1F248], NFC: [0x1F248], NFD: [0x1F248], NFKC: [0x3014, 0x6557, 0x3015], NFKD: [0x3014, 0x6557, 0x3015] },
+{ source: [0x1F250], NFC: [0x1F250], NFD: [0x1F250], NFKC: [0x5F97], NFKD: [0x5F97] },
+{ source: [0x1F251], NFC: [0x1F251], NFD: [0x1F251], NFKC: [0x53EF], NFKD: [0x53EF] },
+{ source: [0x2F800], NFC: [0x4E3D], NFD: [0x4E3D], NFKC: [0x4E3D], NFKD: [0x4E3D] },
+{ source: [0x2F801], NFC: [0x4E38], NFD: [0x4E38], NFKC: [0x4E38], NFKD: [0x4E38] },
+{ source: [0x2F802], NFC: [0x4E41], NFD: [0x4E41], NFKC: [0x4E41], NFKD: [0x4E41] },
+{ source: [0x2F803], NFC: [0x20122], NFD: [0x20122], NFKC: [0x20122], NFKD: [0x20122] },
+{ source: [0x2F804], NFC: [0x4F60], NFD: [0x4F60], NFKC: [0x4F60], NFKD: [0x4F60] },
+{ source: [0x2F805], NFC: [0x4FAE], NFD: [0x4FAE], NFKC: [0x4FAE], NFKD: [0x4FAE] },
+{ source: [0x2F806], NFC: [0x4FBB], NFD: [0x4FBB], NFKC: [0x4FBB], NFKD: [0x4FBB] },
+{ source: [0x2F807], NFC: [0x5002], NFD: [0x5002], NFKC: [0x5002], NFKD: [0x5002] },
+{ source: [0x2F808], NFC: [0x507A], NFD: [0x507A], NFKC: [0x507A], NFKD: [0x507A] },
+{ source: [0x2F809], NFC: [0x5099], NFD: [0x5099], NFKC: [0x5099], NFKD: [0x5099] },
+{ source: [0x2F80A], NFC: [0x50E7], NFD: [0x50E7], NFKC: [0x50E7], NFKD: [0x50E7] },
+{ source: [0x2F80B], NFC: [0x50CF], NFD: [0x50CF], NFKC: [0x50CF], NFKD: [0x50CF] },
+{ source: [0x2F80C], NFC: [0x349E], NFD: [0x349E], NFKC: [0x349E], NFKD: [0x349E] },
+{ source: [0x2F80D], NFC: [0x2063A], NFD: [0x2063A], NFKC: [0x2063A], NFKD: [0x2063A] },
+{ source: [0x2F80E], NFC: [0x514D], NFD: [0x514D], NFKC: [0x514D], NFKD: [0x514D] },
+{ source: [0x2F80F], NFC: [0x5154], NFD: [0x5154], NFKC: [0x5154], NFKD: [0x5154] },
+{ source: [0x2F810], NFC: [0x5164], NFD: [0x5164], NFKC: [0x5164], NFKD: [0x5164] },
+{ source: [0x2F811], NFC: [0x5177], NFD: [0x5177], NFKC: [0x5177], NFKD: [0x5177] },
+{ source: [0x2F812], NFC: [0x2051C], NFD: [0x2051C], NFKC: [0x2051C], NFKD: [0x2051C] },
+{ source: [0x2F813], NFC: [0x34B9], NFD: [0x34B9], NFKC: [0x34B9], NFKD: [0x34B9] },
+{ source: [0x2F814], NFC: [0x5167], NFD: [0x5167], NFKC: [0x5167], NFKD: [0x5167] },
+{ source: [0x2F815], NFC: [0x518D], NFD: [0x518D], NFKC: [0x518D], NFKD: [0x518D] },
+{ source: [0x2F816], NFC: [0x2054B], NFD: [0x2054B], NFKC: [0x2054B], NFKD: [0x2054B] },
+{ source: [0x2F817], NFC: [0x5197], NFD: [0x5197], NFKC: [0x5197], NFKD: [0x5197] },
+{ source: [0x2F818], NFC: [0x51A4], NFD: [0x51A4], NFKC: [0x51A4], NFKD: [0x51A4] },
+{ source: [0x2F819], NFC: [0x4ECC], NFD: [0x4ECC], NFKC: [0x4ECC], NFKD: [0x4ECC] },
+{ source: [0x2F81A], NFC: [0x51AC], NFD: [0x51AC], NFKC: [0x51AC], NFKD: [0x51AC] },
+{ source: [0x2F81B], NFC: [0x51B5], NFD: [0x51B5], NFKC: [0x51B5], NFKD: [0x51B5] },
+{ source: [0x2F81C], NFC: [0x291DF], NFD: [0x291DF], NFKC: [0x291DF], NFKD: [0x291DF] },
+{ source: [0x2F81D], NFC: [0x51F5], NFD: [0x51F5], NFKC: [0x51F5], NFKD: [0x51F5] },
+{ source: [0x2F81E], NFC: [0x5203], NFD: [0x5203], NFKC: [0x5203], NFKD: [0x5203] },
+{ source: [0x2F81F], NFC: [0x34DF], NFD: [0x34DF], NFKC: [0x34DF], NFKD: [0x34DF] },
+{ source: [0x2F820], NFC: [0x523B], NFD: [0x523B], NFKC: [0x523B], NFKD: [0x523B] },
+{ source: [0x2F821], NFC: [0x5246], NFD: [0x5246], NFKC: [0x5246], NFKD: [0x5246] },
+{ source: [0x2F822], NFC: [0x5272], NFD: [0x5272], NFKC: [0x5272], NFKD: [0x5272] },
+{ source: [0x2F823], NFC: [0x5277], NFD: [0x5277], NFKC: [0x5277], NFKD: [0x5277] },
+{ source: [0x2F824], NFC: [0x3515], NFD: [0x3515], NFKC: [0x3515], NFKD: [0x3515] },
+{ source: [0x2F825], NFC: [0x52C7], NFD: [0x52C7], NFKC: [0x52C7], NFKD: [0x52C7] },
+{ source: [0x2F826], NFC: [0x52C9], NFD: [0x52C9], NFKC: [0x52C9], NFKD: [0x52C9] },
+{ source: [0x2F827], NFC: [0x52E4], NFD: [0x52E4], NFKC: [0x52E4], NFKD: [0x52E4] },
+{ source: [0x2F828], NFC: [0x52FA], NFD: [0x52FA], NFKC: [0x52FA], NFKD: [0x52FA] },
+{ source: [0x2F829], NFC: [0x5305], NFD: [0x5305], NFKC: [0x5305], NFKD: [0x5305] },
+{ source: [0x2F82A], NFC: [0x5306], NFD: [0x5306], NFKC: [0x5306], NFKD: [0x5306] },
+{ source: [0x2F82B], NFC: [0x5317], NFD: [0x5317], NFKC: [0x5317], NFKD: [0x5317] },
+{ source: [0x2F82C], NFC: [0x5349], NFD: [0x5349], NFKC: [0x5349], NFKD: [0x5349] },
+{ source: [0x2F82D], NFC: [0x5351], NFD: [0x5351], NFKC: [0x5351], NFKD: [0x5351] },
+{ source: [0x2F82E], NFC: [0x535A], NFD: [0x535A], NFKC: [0x535A], NFKD: [0x535A] },
+{ source: [0x2F82F], NFC: [0x5373], NFD: [0x5373], NFKC: [0x5373], NFKD: [0x5373] },
+{ source: [0x2F830], NFC: [0x537D], NFD: [0x537D], NFKC: [0x537D], NFKD: [0x537D] },
+{ source: [0x2F831], NFC: [0x537F], NFD: [0x537F], NFKC: [0x537F], NFKD: [0x537F] },
+{ source: [0x2F832], NFC: [0x537F], NFD: [0x537F], NFKC: [0x537F], NFKD: [0x537F] },
+{ source: [0x2F833], NFC: [0x537F], NFD: [0x537F], NFKC: [0x537F], NFKD: [0x537F] },
+{ source: [0x2F834], NFC: [0x20A2C], NFD: [0x20A2C], NFKC: [0x20A2C], NFKD: [0x20A2C] },
+{ source: [0x2F835], NFC: [0x7070], NFD: [0x7070], NFKC: [0x7070], NFKD: [0x7070] },
+{ source: [0x2F836], NFC: [0x53CA], NFD: [0x53CA], NFKC: [0x53CA], NFKD: [0x53CA] },
+{ source: [0x2F837], NFC: [0x53DF], NFD: [0x53DF], NFKC: [0x53DF], NFKD: [0x53DF] },
+{ source: [0x2F838], NFC: [0x20B63], NFD: [0x20B63], NFKC: [0x20B63], NFKD: [0x20B63] },
+{ source: [0x2F839], NFC: [0x53EB], NFD: [0x53EB], NFKC: [0x53EB], NFKD: [0x53EB] },
+{ source: [0x2F83A], NFC: [0x53F1], NFD: [0x53F1], NFKC: [0x53F1], NFKD: [0x53F1] },
+{ source: [0x2F83B], NFC: [0x5406], NFD: [0x5406], NFKC: [0x5406], NFKD: [0x5406] },
+{ source: [0x2F83C], NFC: [0x549E], NFD: [0x549E], NFKC: [0x549E], NFKD: [0x549E] },
+{ source: [0x2F83D], NFC: [0x5438], NFD: [0x5438], NFKC: [0x5438], NFKD: [0x5438] },
+{ source: [0x2F83E], NFC: [0x5448], NFD: [0x5448], NFKC: [0x5448], NFKD: [0x5448] },
+{ source: [0x2F83F], NFC: [0x5468], NFD: [0x5468], NFKC: [0x5468], NFKD: [0x5468] },
+{ source: [0x2F840], NFC: [0x54A2], NFD: [0x54A2], NFKC: [0x54A2], NFKD: [0x54A2] },
+{ source: [0x2F841], NFC: [0x54F6], NFD: [0x54F6], NFKC: [0x54F6], NFKD: [0x54F6] },
+{ source: [0x2F842], NFC: [0x5510], NFD: [0x5510], NFKC: [0x5510], NFKD: [0x5510] },
+{ source: [0x2F843], NFC: [0x5553], NFD: [0x5553], NFKC: [0x5553], NFKD: [0x5553] },
+{ source: [0x2F844], NFC: [0x5563], NFD: [0x5563], NFKC: [0x5563], NFKD: [0x5563] },
+{ source: [0x2F845], NFC: [0x5584], NFD: [0x5584], NFKC: [0x5584], NFKD: [0x5584] },
+{ source: [0x2F846], NFC: [0x5584], NFD: [0x5584], NFKC: [0x5584], NFKD: [0x5584] },
+{ source: [0x2F847], NFC: [0x5599], NFD: [0x5599], NFKC: [0x5599], NFKD: [0x5599] },
+{ source: [0x2F848], NFC: [0x55AB], NFD: [0x55AB], NFKC: [0x55AB], NFKD: [0x55AB] },
+{ source: [0x2F849], NFC: [0x55B3], NFD: [0x55B3], NFKC: [0x55B3], NFKD: [0x55B3] },
+{ source: [0x2F84A], NFC: [0x55C2], NFD: [0x55C2], NFKC: [0x55C2], NFKD: [0x55C2] },
+{ source: [0x2F84B], NFC: [0x5716], NFD: [0x5716], NFKC: [0x5716], NFKD: [0x5716] },
+{ source: [0x2F84C], NFC: [0x5606], NFD: [0x5606], NFKC: [0x5606], NFKD: [0x5606] },
+{ source: [0x2F84D], NFC: [0x5717], NFD: [0x5717], NFKC: [0x5717], NFKD: [0x5717] },
+{ source: [0x2F84E], NFC: [0x5651], NFD: [0x5651], NFKC: [0x5651], NFKD: [0x5651] },
+{ source: [0x2F84F], NFC: [0x5674], NFD: [0x5674], NFKC: [0x5674], NFKD: [0x5674] },
+{ source: [0x2F850], NFC: [0x5207], NFD: [0x5207], NFKC: [0x5207], NFKD: [0x5207] },
+{ source: [0x2F851], NFC: [0x58EE], NFD: [0x58EE], NFKC: [0x58EE], NFKD: [0x58EE] },
+{ source: [0x2F852], NFC: [0x57CE], NFD: [0x57CE], NFKC: [0x57CE], NFKD: [0x57CE] },
+{ source: [0x2F853], NFC: [0x57F4], NFD: [0x57F4], NFKC: [0x57F4], NFKD: [0x57F4] },
+{ source: [0x2F854], NFC: [0x580D], NFD: [0x580D], NFKC: [0x580D], NFKD: [0x580D] },
+{ source: [0x2F855], NFC: [0x578B], NFD: [0x578B], NFKC: [0x578B], NFKD: [0x578B] },
+{ source: [0x2F856], NFC: [0x5832], NFD: [0x5832], NFKC: [0x5832], NFKD: [0x5832] },
+{ source: [0x2F857], NFC: [0x5831], NFD: [0x5831], NFKC: [0x5831], NFKD: [0x5831] },
+{ source: [0x2F858], NFC: [0x58AC], NFD: [0x58AC], NFKC: [0x58AC], NFKD: [0x58AC] },
+{ source: [0x2F859], NFC: [0x214E4], NFD: [0x214E4], NFKC: [0x214E4], NFKD: [0x214E4] },
+{ source: [0x2F85A], NFC: [0x58F2], NFD: [0x58F2], NFKC: [0x58F2], NFKD: [0x58F2] },
+{ source: [0x2F85B], NFC: [0x58F7], NFD: [0x58F7], NFKC: [0x58F7], NFKD: [0x58F7] },
+{ source: [0x2F85C], NFC: [0x5906], NFD: [0x5906], NFKC: [0x5906], NFKD: [0x5906] },
+{ source: [0x2F85D], NFC: [0x591A], NFD: [0x591A], NFKC: [0x591A], NFKD: [0x591A] },
+{ source: [0x2F85E], NFC: [0x5922], NFD: [0x5922], NFKC: [0x5922], NFKD: [0x5922] },
+{ source: [0x2F85F], NFC: [0x5962], NFD: [0x5962], NFKC: [0x5962], NFKD: [0x5962] },
+{ source: [0x2F860], NFC: [0x216A8], NFD: [0x216A8], NFKC: [0x216A8], NFKD: [0x216A8] },
+{ source: [0x2F861], NFC: [0x216EA], NFD: [0x216EA], NFKC: [0x216EA], NFKD: [0x216EA] },
+{ source: [0x2F862], NFC: [0x59EC], NFD: [0x59EC], NFKC: [0x59EC], NFKD: [0x59EC] },
+{ source: [0x2F863], NFC: [0x5A1B], NFD: [0x5A1B], NFKC: [0x5A1B], NFKD: [0x5A1B] },
+{ source: [0x2F864], NFC: [0x5A27], NFD: [0x5A27], NFKC: [0x5A27], NFKD: [0x5A27] },
+{ source: [0x2F865], NFC: [0x59D8], NFD: [0x59D8], NFKC: [0x59D8], NFKD: [0x59D8] },
+{ source: [0x2F866], NFC: [0x5A66], NFD: [0x5A66], NFKC: [0x5A66], NFKD: [0x5A66] },
+{ source: [0x2F867], NFC: [0x36EE], NFD: [0x36EE], NFKC: [0x36EE], NFKD: [0x36EE] },
+{ source: [0x2F868], NFC: [0x36FC], NFD: [0x36FC], NFKC: [0x36FC], NFKD: [0x36FC] },
+{ source: [0x2F869], NFC: [0x5B08], NFD: [0x5B08], NFKC: [0x5B08], NFKD: [0x5B08] },
+{ source: [0x2F86A], NFC: [0x5B3E], NFD: [0x5B3E], NFKC: [0x5B3E], NFKD: [0x5B3E] },
+{ source: [0x2F86B], NFC: [0x5B3E], NFD: [0x5B3E], NFKC: [0x5B3E], NFKD: [0x5B3E] },
+{ source: [0x2F86C], NFC: [0x219C8], NFD: [0x219C8], NFKC: [0x219C8], NFKD: [0x219C8] },
+{ source: [0x2F86D], NFC: [0x5BC3], NFD: [0x5BC3], NFKC: [0x5BC3], NFKD: [0x5BC3] },
+{ source: [0x2F86E], NFC: [0x5BD8], NFD: [0x5BD8], NFKC: [0x5BD8], NFKD: [0x5BD8] },
+{ source: [0x2F86F], NFC: [0x5BE7], NFD: [0x5BE7], NFKC: [0x5BE7], NFKD: [0x5BE7] },
+{ source: [0x2F870], NFC: [0x5BF3], NFD: [0x5BF3], NFKC: [0x5BF3], NFKD: [0x5BF3] },
+{ source: [0x2F871], NFC: [0x21B18], NFD: [0x21B18], NFKC: [0x21B18], NFKD: [0x21B18] },
+{ source: [0x2F872], NFC: [0x5BFF], NFD: [0x5BFF], NFKC: [0x5BFF], NFKD: [0x5BFF] },
+{ source: [0x2F873], NFC: [0x5C06], NFD: [0x5C06], NFKC: [0x5C06], NFKD: [0x5C06] },
+{ source: [0x2F874], NFC: [0x5F53], NFD: [0x5F53], NFKC: [0x5F53], NFKD: [0x5F53] },
+{ source: [0x2F875], NFC: [0x5C22], NFD: [0x5C22], NFKC: [0x5C22], NFKD: [0x5C22] },
+{ source: [0x2F876], NFC: [0x3781], NFD: [0x3781], NFKC: [0x3781], NFKD: [0x3781] },
+{ source: [0x2F877], NFC: [0x5C60], NFD: [0x5C60], NFKC: [0x5C60], NFKD: [0x5C60] },
+{ source: [0x2F878], NFC: [0x5C6E], NFD: [0x5C6E], NFKC: [0x5C6E], NFKD: [0x5C6E] },
+{ source: [0x2F879], NFC: [0x5CC0], NFD: [0x5CC0], NFKC: [0x5CC0], NFKD: [0x5CC0] },
+{ source: [0x2F87A], NFC: [0x5C8D], NFD: [0x5C8D], NFKC: [0x5C8D], NFKD: [0x5C8D] },
+{ source: [0x2F87B], NFC: [0x21DE4], NFD: [0x21DE4], NFKC: [0x21DE4], NFKD: [0x21DE4] },
+{ source: [0x2F87C], NFC: [0x5D43], NFD: [0x5D43], NFKC: [0x5D43], NFKD: [0x5D43] },
+{ source: [0x2F87D], NFC: [0x21DE6], NFD: [0x21DE6], NFKC: [0x21DE6], NFKD: [0x21DE6] },
+{ source: [0x2F87E], NFC: [0x5D6E], NFD: [0x5D6E], NFKC: [0x5D6E], NFKD: [0x5D6E] },
+{ source: [0x2F87F], NFC: [0x5D6B], NFD: [0x5D6B], NFKC: [0x5D6B], NFKD: [0x5D6B] },
+{ source: [0x2F880], NFC: [0x5D7C], NFD: [0x5D7C], NFKC: [0x5D7C], NFKD: [0x5D7C] },
+{ source: [0x2F881], NFC: [0x5DE1], NFD: [0x5DE1], NFKC: [0x5DE1], NFKD: [0x5DE1] },
+{ source: [0x2F882], NFC: [0x5DE2], NFD: [0x5DE2], NFKC: [0x5DE2], NFKD: [0x5DE2] },
+{ source: [0x2F883], NFC: [0x382F], NFD: [0x382F], NFKC: [0x382F], NFKD: [0x382F] },
+{ source: [0x2F884], NFC: [0x5DFD], NFD: [0x5DFD], NFKC: [0x5DFD], NFKD: [0x5DFD] },
+{ source: [0x2F885], NFC: [0x5E28], NFD: [0x5E28], NFKC: [0x5E28], NFKD: [0x5E28] },
+{ source: [0x2F886], NFC: [0x5E3D], NFD: [0x5E3D], NFKC: [0x5E3D], NFKD: [0x5E3D] },
+{ source: [0x2F887], NFC: [0x5E69], NFD: [0x5E69], NFKC: [0x5E69], NFKD: [0x5E69] },
+{ source: [0x2F888], NFC: [0x3862], NFD: [0x3862], NFKC: [0x3862], NFKD: [0x3862] },
+{ source: [0x2F889], NFC: [0x22183], NFD: [0x22183], NFKC: [0x22183], NFKD: [0x22183] },
+{ source: [0x2F88A], NFC: [0x387C], NFD: [0x387C], NFKC: [0x387C], NFKD: [0x387C] },
+{ source: [0x2F88B], NFC: [0x5EB0], NFD: [0x5EB0], NFKC: [0x5EB0], NFKD: [0x5EB0] },
+{ source: [0x2F88C], NFC: [0x5EB3], NFD: [0x5EB3], NFKC: [0x5EB3], NFKD: [0x5EB3] },
+{ source: [0x2F88D], NFC: [0x5EB6], NFD: [0x5EB6], NFKC: [0x5EB6], NFKD: [0x5EB6] },
+{ source: [0x2F88E], NFC: [0x5ECA], NFD: [0x5ECA], NFKC: [0x5ECA], NFKD: [0x5ECA] },
+{ source: [0x2F88F], NFC: [0x2A392], NFD: [0x2A392], NFKC: [0x2A392], NFKD: [0x2A392] },
+{ source: [0x2F890], NFC: [0x5EFE], NFD: [0x5EFE], NFKC: [0x5EFE], NFKD: [0x5EFE] },
+{ source: [0x2F891], NFC: [0x22331], NFD: [0x22331], NFKC: [0x22331], NFKD: [0x22331] },
+{ source: [0x2F892], NFC: [0x22331], NFD: [0x22331], NFKC: [0x22331], NFKD: [0x22331] },
+{ source: [0x2F893], NFC: [0x8201], NFD: [0x8201], NFKC: [0x8201], NFKD: [0x8201] },
+{ source: [0x2F894], NFC: [0x5F22], NFD: [0x5F22], NFKC: [0x5F22], NFKD: [0x5F22] },
+{ source: [0x2F895], NFC: [0x5F22], NFD: [0x5F22], NFKC: [0x5F22], NFKD: [0x5F22] },
+{ source: [0x2F896], NFC: [0x38C7], NFD: [0x38C7], NFKC: [0x38C7], NFKD: [0x38C7] },
+{ source: [0x2F897], NFC: [0x232B8], NFD: [0x232B8], NFKC: [0x232B8], NFKD: [0x232B8] },
+{ source: [0x2F898], NFC: [0x261DA], NFD: [0x261DA], NFKC: [0x261DA], NFKD: [0x261DA] },
+{ source: [0x2F899], NFC: [0x5F62], NFD: [0x5F62], NFKC: [0x5F62], NFKD: [0x5F62] },
+{ source: [0x2F89A], NFC: [0x5F6B], NFD: [0x5F6B], NFKC: [0x5F6B], NFKD: [0x5F6B] },
+{ source: [0x2F89B], NFC: [0x38E3], NFD: [0x38E3], NFKC: [0x38E3], NFKD: [0x38E3] },
+{ source: [0x2F89C], NFC: [0x5F9A], NFD: [0x5F9A], NFKC: [0x5F9A], NFKD: [0x5F9A] },
+{ source: [0x2F89D], NFC: [0x5FCD], NFD: [0x5FCD], NFKC: [0x5FCD], NFKD: [0x5FCD] },
+{ source: [0x2F89E], NFC: [0x5FD7], NFD: [0x5FD7], NFKC: [0x5FD7], NFKD: [0x5FD7] },
+{ source: [0x2F89F], NFC: [0x5FF9], NFD: [0x5FF9], NFKC: [0x5FF9], NFKD: [0x5FF9] },
+{ source: [0x2F8A0], NFC: [0x6081], NFD: [0x6081], NFKC: [0x6081], NFKD: [0x6081] },
+{ source: [0x2F8A1], NFC: [0x393A], NFD: [0x393A], NFKC: [0x393A], NFKD: [0x393A] },
+{ source: [0x2F8A2], NFC: [0x391C], NFD: [0x391C], NFKC: [0x391C], NFKD: [0x391C] },
+{ source: [0x2F8A3], NFC: [0x6094], NFD: [0x6094], NFKC: [0x6094], NFKD: [0x6094] },
+{ source: [0x2F8A4], NFC: [0x226D4], NFD: [0x226D4], NFKC: [0x226D4], NFKD: [0x226D4] },
+{ source: [0x2F8A5], NFC: [0x60C7], NFD: [0x60C7], NFKC: [0x60C7], NFKD: [0x60C7] },
+{ source: [0x2F8A6], NFC: [0x6148], NFD: [0x6148], NFKC: [0x6148], NFKD: [0x6148] },
+{ source: [0x2F8A7], NFC: [0x614C], NFD: [0x614C], NFKC: [0x614C], NFKD: [0x614C] },
+{ source: [0x2F8A8], NFC: [0x614E], NFD: [0x614E], NFKC: [0x614E], NFKD: [0x614E] },
+{ source: [0x2F8A9], NFC: [0x614C], NFD: [0x614C], NFKC: [0x614C], NFKD: [0x614C] },
+{ source: [0x2F8AA], NFC: [0x617A], NFD: [0x617A], NFKC: [0x617A], NFKD: [0x617A] },
+{ source: [0x2F8AB], NFC: [0x618E], NFD: [0x618E], NFKC: [0x618E], NFKD: [0x618E] },
+{ source: [0x2F8AC], NFC: [0x61B2], NFD: [0x61B2], NFKC: [0x61B2], NFKD: [0x61B2] },
+{ source: [0x2F8AD], NFC: [0x61A4], NFD: [0x61A4], NFKC: [0x61A4], NFKD: [0x61A4] },
+{ source: [0x2F8AE], NFC: [0x61AF], NFD: [0x61AF], NFKC: [0x61AF], NFKD: [0x61AF] },
+{ source: [0x2F8AF], NFC: [0x61DE], NFD: [0x61DE], NFKC: [0x61DE], NFKD: [0x61DE] },
+{ source: [0x2F8B0], NFC: [0x61F2], NFD: [0x61F2], NFKC: [0x61F2], NFKD: [0x61F2] },
+{ source: [0x2F8B1], NFC: [0x61F6], NFD: [0x61F6], NFKC: [0x61F6], NFKD: [0x61F6] },
+{ source: [0x2F8B2], NFC: [0x6210], NFD: [0x6210], NFKC: [0x6210], NFKD: [0x6210] },
+{ source: [0x2F8B3], NFC: [0x621B], NFD: [0x621B], NFKC: [0x621B], NFKD: [0x621B] },
+{ source: [0x2F8B4], NFC: [0x625D], NFD: [0x625D], NFKC: [0x625D], NFKD: [0x625D] },
+{ source: [0x2F8B5], NFC: [0x62B1], NFD: [0x62B1], NFKC: [0x62B1], NFKD: [0x62B1] },
+{ source: [0x2F8B6], NFC: [0x62D4], NFD: [0x62D4], NFKC: [0x62D4], NFKD: [0x62D4] },
+{ source: [0x2F8B7], NFC: [0x6350], NFD: [0x6350], NFKC: [0x6350], NFKD: [0x6350] },
+{ source: [0x2F8B8], NFC: [0x22B0C], NFD: [0x22B0C], NFKC: [0x22B0C], NFKD: [0x22B0C] },
+{ source: [0x2F8B9], NFC: [0x633D], NFD: [0x633D], NFKC: [0x633D], NFKD: [0x633D] },
+{ source: [0x2F8BA], NFC: [0x62FC], NFD: [0x62FC], NFKC: [0x62FC], NFKD: [0x62FC] },
+{ source: [0x2F8BB], NFC: [0x6368], NFD: [0x6368], NFKC: [0x6368], NFKD: [0x6368] },
+{ source: [0x2F8BC], NFC: [0x6383], NFD: [0x6383], NFKC: [0x6383], NFKD: [0x6383] },
+{ source: [0x2F8BD], NFC: [0x63E4], NFD: [0x63E4], NFKC: [0x63E4], NFKD: [0x63E4] },
+{ source: [0x2F8BE], NFC: [0x22BF1], NFD: [0x22BF1], NFKC: [0x22BF1], NFKD: [0x22BF1] },
+{ source: [0x2F8BF], NFC: [0x6422], NFD: [0x6422], NFKC: [0x6422], NFKD: [0x6422] },
+{ source: [0x2F8C0], NFC: [0x63C5], NFD: [0x63C5], NFKC: [0x63C5], NFKD: [0x63C5] },
+{ source: [0x2F8C1], NFC: [0x63A9], NFD: [0x63A9], NFKC: [0x63A9], NFKD: [0x63A9] },
+{ source: [0x2F8C2], NFC: [0x3A2E], NFD: [0x3A2E], NFKC: [0x3A2E], NFKD: [0x3A2E] },
+{ source: [0x2F8C3], NFC: [0x6469], NFD: [0x6469], NFKC: [0x6469], NFKD: [0x6469] },
+{ source: [0x2F8C4], NFC: [0x647E], NFD: [0x647E], NFKC: [0x647E], NFKD: [0x647E] },
+{ source: [0x2F8C5], NFC: [0x649D], NFD: [0x649D], NFKC: [0x649D], NFKD: [0x649D] },
+{ source: [0x2F8C6], NFC: [0x6477], NFD: [0x6477], NFKC: [0x6477], NFKD: [0x6477] },
+{ source: [0x2F8C7], NFC: [0x3A6C], NFD: [0x3A6C], NFKC: [0x3A6C], NFKD: [0x3A6C] },
+{ source: [0x2F8C8], NFC: [0x654F], NFD: [0x654F], NFKC: [0x654F], NFKD: [0x654F] },
+{ source: [0x2F8C9], NFC: [0x656C], NFD: [0x656C], NFKC: [0x656C], NFKD: [0x656C] },
+{ source: [0x2F8CA], NFC: [0x2300A], NFD: [0x2300A], NFKC: [0x2300A], NFKD: [0x2300A] },
+{ source: [0x2F8CB], NFC: [0x65E3], NFD: [0x65E3], NFKC: [0x65E3], NFKD: [0x65E3] },
+{ source: [0x2F8CC], NFC: [0x66F8], NFD: [0x66F8], NFKC: [0x66F8], NFKD: [0x66F8] },
+{ source: [0x2F8CD], NFC: [0x6649], NFD: [0x6649], NFKC: [0x6649], NFKD: [0x6649] },
+{ source: [0x2F8CE], NFC: [0x3B19], NFD: [0x3B19], NFKC: [0x3B19], NFKD: [0x3B19] },
+{ source: [0x2F8CF], NFC: [0x6691], NFD: [0x6691], NFKC: [0x6691], NFKD: [0x6691] },
+{ source: [0x2F8D0], NFC: [0x3B08], NFD: [0x3B08], NFKC: [0x3B08], NFKD: [0x3B08] },
+{ source: [0x2F8D1], NFC: [0x3AE4], NFD: [0x3AE4], NFKC: [0x3AE4], NFKD: [0x3AE4] },
+{ source: [0x2F8D2], NFC: [0x5192], NFD: [0x5192], NFKC: [0x5192], NFKD: [0x5192] },
+{ source: [0x2F8D3], NFC: [0x5195], NFD: [0x5195], NFKC: [0x5195], NFKD: [0x5195] },
+{ source: [0x2F8D4], NFC: [0x6700], NFD: [0x6700], NFKC: [0x6700], NFKD: [0x6700] },
+{ source: [0x2F8D5], NFC: [0x669C], NFD: [0x669C], NFKC: [0x669C], NFKD: [0x669C] },
+{ source: [0x2F8D6], NFC: [0x80AD], NFD: [0x80AD], NFKC: [0x80AD], NFKD: [0x80AD] },
+{ source: [0x2F8D7], NFC: [0x43D9], NFD: [0x43D9], NFKC: [0x43D9], NFKD: [0x43D9] },
+{ source: [0x2F8D8], NFC: [0x6717], NFD: [0x6717], NFKC: [0x6717], NFKD: [0x6717] },
+{ source: [0x2F8D9], NFC: [0x671B], NFD: [0x671B], NFKC: [0x671B], NFKD: [0x671B] },
+{ source: [0x2F8DA], NFC: [0x6721], NFD: [0x6721], NFKC: [0x6721], NFKD: [0x6721] },
+{ source: [0x2F8DB], NFC: [0x675E], NFD: [0x675E], NFKC: [0x675E], NFKD: [0x675E] },
+{ source: [0x2F8DC], NFC: [0x6753], NFD: [0x6753], NFKC: [0x6753], NFKD: [0x6753] },
+{ source: [0x2F8DD], NFC: [0x233C3], NFD: [0x233C3], NFKC: [0x233C3], NFKD: [0x233C3] },
+{ source: [0x2F8DE], NFC: [0x3B49], NFD: [0x3B49], NFKC: [0x3B49], NFKD: [0x3B49] },
+{ source: [0x2F8DF], NFC: [0x67FA], NFD: [0x67FA], NFKC: [0x67FA], NFKD: [0x67FA] },
+{ source: [0x2F8E0], NFC: [0x6785], NFD: [0x6785], NFKC: [0x6785], NFKD: [0x6785] },
+{ source: [0x2F8E1], NFC: [0x6852], NFD: [0x6852], NFKC: [0x6852], NFKD: [0x6852] },
+{ source: [0x2F8E2], NFC: [0x6885], NFD: [0x6885], NFKC: [0x6885], NFKD: [0x6885] },
+{ source: [0x2F8E3], NFC: [0x2346D], NFD: [0x2346D], NFKC: [0x2346D], NFKD: [0x2346D] },
+{ source: [0x2F8E4], NFC: [0x688E], NFD: [0x688E], NFKC: [0x688E], NFKD: [0x688E] },
+{ source: [0x2F8E5], NFC: [0x681F], NFD: [0x681F], NFKC: [0x681F], NFKD: [0x681F] },
+{ source: [0x2F8E6], NFC: [0x6914], NFD: [0x6914], NFKC: [0x6914], NFKD: [0x6914] },
+{ source: [0x2F8E7], NFC: [0x3B9D], NFD: [0x3B9D], NFKC: [0x3B9D], NFKD: [0x3B9D] },
+{ source: [0x2F8E8], NFC: [0x6942], NFD: [0x6942], NFKC: [0x6942], NFKD: [0x6942] },
+{ source: [0x2F8E9], NFC: [0x69A3], NFD: [0x69A3], NFKC: [0x69A3], NFKD: [0x69A3] },
+{ source: [0x2F8EA], NFC: [0x69EA], NFD: [0x69EA], NFKC: [0x69EA], NFKD: [0x69EA] },
+{ source: [0x2F8EB], NFC: [0x6AA8], NFD: [0x6AA8], NFKC: [0x6AA8], NFKD: [0x6AA8] },
+{ source: [0x2F8EC], NFC: [0x236A3], NFD: [0x236A3], NFKC: [0x236A3], NFKD: [0x236A3] },
+{ source: [0x2F8ED], NFC: [0x6ADB], NFD: [0x6ADB], NFKC: [0x6ADB], NFKD: [0x6ADB] },
+{ source: [0x2F8EE], NFC: [0x3C18], NFD: [0x3C18], NFKC: [0x3C18], NFKD: [0x3C18] },
+{ source: [0x2F8EF], NFC: [0x6B21], NFD: [0x6B21], NFKC: [0x6B21], NFKD: [0x6B21] },
+{ source: [0x2F8F0], NFC: [0x238A7], NFD: [0x238A7], NFKC: [0x238A7], NFKD: [0x238A7] },
+{ source: [0x2F8F1], NFC: [0x6B54], NFD: [0x6B54], NFKC: [0x6B54], NFKD: [0x6B54] },
+{ source: [0x2F8F2], NFC: [0x3C4E], NFD: [0x3C4E], NFKC: [0x3C4E], NFKD: [0x3C4E] },
+{ source: [0x2F8F3], NFC: [0x6B72], NFD: [0x6B72], NFKC: [0x6B72], NFKD: [0x6B72] },
+{ source: [0x2F8F4], NFC: [0x6B9F], NFD: [0x6B9F], NFKC: [0x6B9F], NFKD: [0x6B9F] },
+{ source: [0x2F8F5], NFC: [0x6BBA], NFD: [0x6BBA], NFKC: [0x6BBA], NFKD: [0x6BBA] },
+{ source: [0x2F8F6], NFC: [0x6BBB], NFD: [0x6BBB], NFKC: [0x6BBB], NFKD: [0x6BBB] },
+{ source: [0x2F8F7], NFC: [0x23A8D], NFD: [0x23A8D], NFKC: [0x23A8D], NFKD: [0x23A8D] },
+{ source: [0x2F8F8], NFC: [0x21D0B], NFD: [0x21D0B], NFKC: [0x21D0B], NFKD: [0x21D0B] },
+{ source: [0x2F8F9], NFC: [0x23AFA], NFD: [0x23AFA], NFKC: [0x23AFA], NFKD: [0x23AFA] },
+{ source: [0x2F8FA], NFC: [0x6C4E], NFD: [0x6C4E], NFKC: [0x6C4E], NFKD: [0x6C4E] },
+{ source: [0x2F8FB], NFC: [0x23CBC], NFD: [0x23CBC], NFKC: [0x23CBC], NFKD: [0x23CBC] },
+{ source: [0x2F8FC], NFC: [0x6CBF], NFD: [0x6CBF], NFKC: [0x6CBF], NFKD: [0x6CBF] },
+{ source: [0x2F8FD], NFC: [0x6CCD], NFD: [0x6CCD], NFKC: [0x6CCD], NFKD: [0x6CCD] },
+{ source: [0x2F8FE], NFC: [0x6C67], NFD: [0x6C67], NFKC: [0x6C67], NFKD: [0x6C67] },
+{ source: [0x2F8FF], NFC: [0x6D16], NFD: [0x6D16], NFKC: [0x6D16], NFKD: [0x6D16] },
+{ source: [0x2F900], NFC: [0x6D3E], NFD: [0x6D3E], NFKC: [0x6D3E], NFKD: [0x6D3E] },
+{ source: [0x2F901], NFC: [0x6D77], NFD: [0x6D77], NFKC: [0x6D77], NFKD: [0x6D77] },
+{ source: [0x2F902], NFC: [0x6D41], NFD: [0x6D41], NFKC: [0x6D41], NFKD: [0x6D41] },
+{ source: [0x2F903], NFC: [0x6D69], NFD: [0x6D69], NFKC: [0x6D69], NFKD: [0x6D69] },
+{ source: [0x2F904], NFC: [0x6D78], NFD: [0x6D78], NFKC: [0x6D78], NFKD: [0x6D78] },
+{ source: [0x2F905], NFC: [0x6D85], NFD: [0x6D85], NFKC: [0x6D85], NFKD: [0x6D85] },
+{ source: [0x2F906], NFC: [0x23D1E], NFD: [0x23D1E], NFKC: [0x23D1E], NFKD: [0x23D1E] },
+{ source: [0x2F907], NFC: [0x6D34], NFD: [0x6D34], NFKC: [0x6D34], NFKD: [0x6D34] },
+{ source: [0x2F908], NFC: [0x6E2F], NFD: [0x6E2F], NFKC: [0x6E2F], NFKD: [0x6E2F] },
+{ source: [0x2F909], NFC: [0x6E6E], NFD: [0x6E6E], NFKC: [0x6E6E], NFKD: [0x6E6E] },
+{ source: [0x2F90A], NFC: [0x3D33], NFD: [0x3D33], NFKC: [0x3D33], NFKD: [0x3D33] },
+{ source: [0x2F90B], NFC: [0x6ECB], NFD: [0x6ECB], NFKC: [0x6ECB], NFKD: [0x6ECB] },
+{ source: [0x2F90C], NFC: [0x6EC7], NFD: [0x6EC7], NFKC: [0x6EC7], NFKD: [0x6EC7] },
+{ source: [0x2F90D], NFC: [0x23ED1], NFD: [0x23ED1], NFKC: [0x23ED1], NFKD: [0x23ED1] },
+{ source: [0x2F90E], NFC: [0x6DF9], NFD: [0x6DF9], NFKC: [0x6DF9], NFKD: [0x6DF9] },
+{ source: [0x2F90F], NFC: [0x6F6E], NFD: [0x6F6E], NFKC: [0x6F6E], NFKD: [0x6F6E] },
+{ source: [0x2F910], NFC: [0x23F5E], NFD: [0x23F5E], NFKC: [0x23F5E], NFKD: [0x23F5E] },
+{ source: [0x2F911], NFC: [0x23F8E], NFD: [0x23F8E], NFKC: [0x23F8E], NFKD: [0x23F8E] },
+{ source: [0x2F912], NFC: [0x6FC6], NFD: [0x6FC6], NFKC: [0x6FC6], NFKD: [0x6FC6] },
+{ source: [0x2F913], NFC: [0x7039], NFD: [0x7039], NFKC: [0x7039], NFKD: [0x7039] },
+{ source: [0x2F914], NFC: [0x701E], NFD: [0x701E], NFKC: [0x701E], NFKD: [0x701E] },
+{ source: [0x2F915], NFC: [0x701B], NFD: [0x701B], NFKC: [0x701B], NFKD: [0x701B] },
+{ source: [0x2F916], NFC: [0x3D96], NFD: [0x3D96], NFKC: [0x3D96], NFKD: [0x3D96] },
+{ source: [0x2F917], NFC: [0x704A], NFD: [0x704A], NFKC: [0x704A], NFKD: [0x704A] },
+{ source: [0x2F918], NFC: [0x707D], NFD: [0x707D], NFKC: [0x707D], NFKD: [0x707D] },
+{ source: [0x2F919], NFC: [0x7077], NFD: [0x7077], NFKC: [0x7077], NFKD: [0x7077] },
+{ source: [0x2F91A], NFC: [0x70AD], NFD: [0x70AD], NFKC: [0x70AD], NFKD: [0x70AD] },
+{ source: [0x2F91B], NFC: [0x20525], NFD: [0x20525], NFKC: [0x20525], NFKD: [0x20525] },
+{ source: [0x2F91C], NFC: [0x7145], NFD: [0x7145], NFKC: [0x7145], NFKD: [0x7145] },
+{ source: [0x2F91D], NFC: [0x24263], NFD: [0x24263], NFKC: [0x24263], NFKD: [0x24263] },
+{ source: [0x2F91E], NFC: [0x719C], NFD: [0x719C], NFKC: [0x719C], NFKD: [0x719C] },
+{ source: [0x2F91F], NFC: [0x243AB], NFD: [0x243AB], NFKC: [0x243AB], NFKD: [0x243AB] },
+{ source: [0x2F920], NFC: [0x7228], NFD: [0x7228], NFKC: [0x7228], NFKD: [0x7228] },
+{ source: [0x2F921], NFC: [0x7235], NFD: [0x7235], NFKC: [0x7235], NFKD: [0x7235] },
+{ source: [0x2F922], NFC: [0x7250], NFD: [0x7250], NFKC: [0x7250], NFKD: [0x7250] },
+{ source: [0x2F923], NFC: [0x24608], NFD: [0x24608], NFKC: [0x24608], NFKD: [0x24608] },
+{ source: [0x2F924], NFC: [0x7280], NFD: [0x7280], NFKC: [0x7280], NFKD: [0x7280] },
+{ source: [0x2F925], NFC: [0x7295], NFD: [0x7295], NFKC: [0x7295], NFKD: [0x7295] },
+{ source: [0x2F926], NFC: [0x24735], NFD: [0x24735], NFKC: [0x24735], NFKD: [0x24735] },
+{ source: [0x2F927], NFC: [0x24814], NFD: [0x24814], NFKC: [0x24814], NFKD: [0x24814] },
+{ source: [0x2F928], NFC: [0x737A], NFD: [0x737A], NFKC: [0x737A], NFKD: [0x737A] },
+{ source: [0x2F929], NFC: [0x738B], NFD: [0x738B], NFKC: [0x738B], NFKD: [0x738B] },
+{ source: [0x2F92A], NFC: [0x3EAC], NFD: [0x3EAC], NFKC: [0x3EAC], NFKD: [0x3EAC] },
+{ source: [0x2F92B], NFC: [0x73A5], NFD: [0x73A5], NFKC: [0x73A5], NFKD: [0x73A5] },
+{ source: [0x2F92C], NFC: [0x3EB8], NFD: [0x3EB8], NFKC: [0x3EB8], NFKD: [0x3EB8] },
+{ source: [0x2F92D], NFC: [0x3EB8], NFD: [0x3EB8], NFKC: [0x3EB8], NFKD: [0x3EB8] },
+{ source: [0x2F92E], NFC: [0x7447], NFD: [0x7447], NFKC: [0x7447], NFKD: [0x7447] },
+{ source: [0x2F92F], NFC: [0x745C], NFD: [0x745C], NFKC: [0x745C], NFKD: [0x745C] },
+{ source: [0x2F930], NFC: [0x7471], NFD: [0x7471], NFKC: [0x7471], NFKD: [0x7471] },
+{ source: [0x2F931], NFC: [0x7485], NFD: [0x7485], NFKC: [0x7485], NFKD: [0x7485] },
+{ source: [0x2F932], NFC: [0x74CA], NFD: [0x74CA], NFKC: [0x74CA], NFKD: [0x74CA] },
+{ source: [0x2F933], NFC: [0x3F1B], NFD: [0x3F1B], NFKC: [0x3F1B], NFKD: [0x3F1B] },
+{ source: [0x2F934], NFC: [0x7524], NFD: [0x7524], NFKC: [0x7524], NFKD: [0x7524] },
+{ source: [0x2F935], NFC: [0x24C36], NFD: [0x24C36], NFKC: [0x24C36], NFKD: [0x24C36] },
+{ source: [0x2F936], NFC: [0x753E], NFD: [0x753E], NFKC: [0x753E], NFKD: [0x753E] },
+{ source: [0x2F937], NFC: [0x24C92], NFD: [0x24C92], NFKC: [0x24C92], NFKD: [0x24C92] },
+{ source: [0x2F938], NFC: [0x7570], NFD: [0x7570], NFKC: [0x7570], NFKD: [0x7570] },
+{ source: [0x2F939], NFC: [0x2219F], NFD: [0x2219F], NFKC: [0x2219F], NFKD: [0x2219F] },
+{ source: [0x2F93A], NFC: [0x7610], NFD: [0x7610], NFKC: [0x7610], NFKD: [0x7610] },
+{ source: [0x2F93B], NFC: [0x24FA1], NFD: [0x24FA1], NFKC: [0x24FA1], NFKD: [0x24FA1] },
+{ source: [0x2F93C], NFC: [0x24FB8], NFD: [0x24FB8], NFKC: [0x24FB8], NFKD: [0x24FB8] },
+{ source: [0x2F93D], NFC: [0x25044], NFD: [0x25044], NFKC: [0x25044], NFKD: [0x25044] },
+{ source: [0x2F93E], NFC: [0x3FFC], NFD: [0x3FFC], NFKC: [0x3FFC], NFKD: [0x3FFC] },
+{ source: [0x2F93F], NFC: [0x4008], NFD: [0x4008], NFKC: [0x4008], NFKD: [0x4008] },
+{ source: [0x2F940], NFC: [0x76F4], NFD: [0x76F4], NFKC: [0x76F4], NFKD: [0x76F4] },
+{ source: [0x2F941], NFC: [0x250F3], NFD: [0x250F3], NFKC: [0x250F3], NFKD: [0x250F3] },
+{ source: [0x2F942], NFC: [0x250F2], NFD: [0x250F2], NFKC: [0x250F2], NFKD: [0x250F2] },
+{ source: [0x2F943], NFC: [0x25119], NFD: [0x25119], NFKC: [0x25119], NFKD: [0x25119] },
+{ source: [0x2F944], NFC: [0x25133], NFD: [0x25133], NFKC: [0x25133], NFKD: [0x25133] },
+{ source: [0x2F945], NFC: [0x771E], NFD: [0x771E], NFKC: [0x771E], NFKD: [0x771E] },
+{ source: [0x2F946], NFC: [0x771F], NFD: [0x771F], NFKC: [0x771F], NFKD: [0x771F] },
+{ source: [0x2F947], NFC: [0x771F], NFD: [0x771F], NFKC: [0x771F], NFKD: [0x771F] },
+{ source: [0x2F948], NFC: [0x774A], NFD: [0x774A], NFKC: [0x774A], NFKD: [0x774A] },
+{ source: [0x2F949], NFC: [0x4039], NFD: [0x4039], NFKC: [0x4039], NFKD: [0x4039] },
+{ source: [0x2F94A], NFC: [0x778B], NFD: [0x778B], NFKC: [0x778B], NFKD: [0x778B] },
+{ source: [0x2F94B], NFC: [0x4046], NFD: [0x4046], NFKC: [0x4046], NFKD: [0x4046] },
+{ source: [0x2F94C], NFC: [0x4096], NFD: [0x4096], NFKC: [0x4096], NFKD: [0x4096] },
+{ source: [0x2F94D], NFC: [0x2541D], NFD: [0x2541D], NFKC: [0x2541D], NFKD: [0x2541D] },
+{ source: [0x2F94E], NFC: [0x784E], NFD: [0x784E], NFKC: [0x784E], NFKD: [0x784E] },
+{ source: [0x2F94F], NFC: [0x788C], NFD: [0x788C], NFKC: [0x788C], NFKD: [0x788C] },
+{ source: [0x2F950], NFC: [0x78CC], NFD: [0x78CC], NFKC: [0x78CC], NFKD: [0x78CC] },
+{ source: [0x2F951], NFC: [0x40E3], NFD: [0x40E3], NFKC: [0x40E3], NFKD: [0x40E3] },
+{ source: [0x2F952], NFC: [0x25626], NFD: [0x25626], NFKC: [0x25626], NFKD: [0x25626] },
+{ source: [0x2F953], NFC: [0x7956], NFD: [0x7956], NFKC: [0x7956], NFKD: [0x7956] },
+{ source: [0x2F954], NFC: [0x2569A], NFD: [0x2569A], NFKC: [0x2569A], NFKD: [0x2569A] },
+{ source: [0x2F955], NFC: [0x256C5], NFD: [0x256C5], NFKC: [0x256C5], NFKD: [0x256C5] },
+{ source: [0x2F956], NFC: [0x798F], NFD: [0x798F], NFKC: [0x798F], NFKD: [0x798F] },
+{ source: [0x2F957], NFC: [0x79EB], NFD: [0x79EB], NFKC: [0x79EB], NFKD: [0x79EB] },
+{ source: [0x2F958], NFC: [0x412F], NFD: [0x412F], NFKC: [0x412F], NFKD: [0x412F] },
+{ source: [0x2F959], NFC: [0x7A40], NFD: [0x7A40], NFKC: [0x7A40], NFKD: [0x7A40] },
+{ source: [0x2F95A], NFC: [0x7A4A], NFD: [0x7A4A], NFKC: [0x7A4A], NFKD: [0x7A4A] },
+{ source: [0x2F95B], NFC: [0x7A4F], NFD: [0x7A4F], NFKC: [0x7A4F], NFKD: [0x7A4F] },
+{ source: [0x2F95C], NFC: [0x2597C], NFD: [0x2597C], NFKC: [0x2597C], NFKD: [0x2597C] },
+{ source: [0x2F95D], NFC: [0x25AA7], NFD: [0x25AA7], NFKC: [0x25AA7], NFKD: [0x25AA7] },
+{ source: [0x2F95E], NFC: [0x25AA7], NFD: [0x25AA7], NFKC: [0x25AA7], NFKD: [0x25AA7] },
+{ source: [0x2F95F], NFC: [0x7AEE], NFD: [0x7AEE], NFKC: [0x7AEE], NFKD: [0x7AEE] },
+{ source: [0x2F960], NFC: [0x4202], NFD: [0x4202], NFKC: [0x4202], NFKD: [0x4202] },
+{ source: [0x2F961], NFC: [0x25BAB], NFD: [0x25BAB], NFKC: [0x25BAB], NFKD: [0x25BAB] },
+{ source: [0x2F962], NFC: [0x7BC6], NFD: [0x7BC6], NFKC: [0x7BC6], NFKD: [0x7BC6] },
+{ source: [0x2F963], NFC: [0x7BC9], NFD: [0x7BC9], NFKC: [0x7BC9], NFKD: [0x7BC9] },
+{ source: [0x2F964], NFC: [0x4227], NFD: [0x4227], NFKC: [0x4227], NFKD: [0x4227] },
+{ source: [0x2F965], NFC: [0x25C80], NFD: [0x25C80], NFKC: [0x25C80], NFKD: [0x25C80] },
+{ source: [0x2F966], NFC: [0x7CD2], NFD: [0x7CD2], NFKC: [0x7CD2], NFKD: [0x7CD2] },
+{ source: [0x2F967], NFC: [0x42A0], NFD: [0x42A0], NFKC: [0x42A0], NFKD: [0x42A0] },
+{ source: [0x2F968], NFC: [0x7CE8], NFD: [0x7CE8], NFKC: [0x7CE8], NFKD: [0x7CE8] },
+{ source: [0x2F969], NFC: [0x7CE3], NFD: [0x7CE3], NFKC: [0x7CE3], NFKD: [0x7CE3] },
+{ source: [0x2F96A], NFC: [0x7D00], NFD: [0x7D00], NFKC: [0x7D00], NFKD: [0x7D00] },
+{ source: [0x2F96B], NFC: [0x25F86], NFD: [0x25F86], NFKC: [0x25F86], NFKD: [0x25F86] },
+{ source: [0x2F96C], NFC: [0x7D63], NFD: [0x7D63], NFKC: [0x7D63], NFKD: [0x7D63] },
+{ source: [0x2F96D], NFC: [0x4301], NFD: [0x4301], NFKC: [0x4301], NFKD: [0x4301] },
+{ source: [0x2F96E], NFC: [0x7DC7], NFD: [0x7DC7], NFKC: [0x7DC7], NFKD: [0x7DC7] },
+{ source: [0x2F96F], NFC: [0x7E02], NFD: [0x7E02], NFKC: [0x7E02], NFKD: [0x7E02] },
+{ source: [0x2F970], NFC: [0x7E45], NFD: [0x7E45], NFKC: [0x7E45], NFKD: [0x7E45] },
+{ source: [0x2F971], NFC: [0x4334], NFD: [0x4334], NFKC: [0x4334], NFKD: [0x4334] },
+{ source: [0x2F972], NFC: [0x26228], NFD: [0x26228], NFKC: [0x26228], NFKD: [0x26228] },
+{ source: [0x2F973], NFC: [0x26247], NFD: [0x26247], NFKC: [0x26247], NFKD: [0x26247] },
+{ source: [0x2F974], NFC: [0x4359], NFD: [0x4359], NFKC: [0x4359], NFKD: [0x4359] },
+{ source: [0x2F975], NFC: [0x262D9], NFD: [0x262D9], NFKC: [0x262D9], NFKD: [0x262D9] },
+{ source: [0x2F976], NFC: [0x7F7A], NFD: [0x7F7A], NFKC: [0x7F7A], NFKD: [0x7F7A] },
+{ source: [0x2F977], NFC: [0x2633E], NFD: [0x2633E], NFKC: [0x2633E], NFKD: [0x2633E] },
+{ source: [0x2F978], NFC: [0x7F95], NFD: [0x7F95], NFKC: [0x7F95], NFKD: [0x7F95] },
+{ source: [0x2F979], NFC: [0x7FFA], NFD: [0x7FFA], NFKC: [0x7FFA], NFKD: [0x7FFA] },
+{ source: [0x2F97A], NFC: [0x8005], NFD: [0x8005], NFKC: [0x8005], NFKD: [0x8005] },
+{ source: [0x2F97B], NFC: [0x264DA], NFD: [0x264DA], NFKC: [0x264DA], NFKD: [0x264DA] },
+{ source: [0x2F97C], NFC: [0x26523], NFD: [0x26523], NFKC: [0x26523], NFKD: [0x26523] },
+{ source: [0x2F97D], NFC: [0x8060], NFD: [0x8060], NFKC: [0x8060], NFKD: [0x8060] },
+{ source: [0x2F97E], NFC: [0x265A8], NFD: [0x265A8], NFKC: [0x265A8], NFKD: [0x265A8] },
+{ source: [0x2F97F], NFC: [0x8070], NFD: [0x8070], NFKC: [0x8070], NFKD: [0x8070] },
+{ source: [0x2F980], NFC: [0x2335F], NFD: [0x2335F], NFKC: [0x2335F], NFKD: [0x2335F] },
+{ source: [0x2F981], NFC: [0x43D5], NFD: [0x43D5], NFKC: [0x43D5], NFKD: [0x43D5] },
+{ source: [0x2F982], NFC: [0x80B2], NFD: [0x80B2], NFKC: [0x80B2], NFKD: [0x80B2] },
+{ source: [0x2F983], NFC: [0x8103], NFD: [0x8103], NFKC: [0x8103], NFKD: [0x8103] },
+{ source: [0x2F984], NFC: [0x440B], NFD: [0x440B], NFKC: [0x440B], NFKD: [0x440B] },
+{ source: [0x2F985], NFC: [0x813E], NFD: [0x813E], NFKC: [0x813E], NFKD: [0x813E] },
+{ source: [0x2F986], NFC: [0x5AB5], NFD: [0x5AB5], NFKC: [0x5AB5], NFKD: [0x5AB5] },
+{ source: [0x2F987], NFC: [0x267A7], NFD: [0x267A7], NFKC: [0x267A7], NFKD: [0x267A7] },
+{ source: [0x2F988], NFC: [0x267B5], NFD: [0x267B5], NFKC: [0x267B5], NFKD: [0x267B5] },
+{ source: [0x2F989], NFC: [0x23393], NFD: [0x23393], NFKC: [0x23393], NFKD: [0x23393] },
+{ source: [0x2F98A], NFC: [0x2339C], NFD: [0x2339C], NFKC: [0x2339C], NFKD: [0x2339C] },
+{ source: [0x2F98B], NFC: [0x8201], NFD: [0x8201], NFKC: [0x8201], NFKD: [0x8201] },
+{ source: [0x2F98C], NFC: [0x8204], NFD: [0x8204], NFKC: [0x8204], NFKD: [0x8204] },
+{ source: [0x2F98D], NFC: [0x8F9E], NFD: [0x8F9E], NFKC: [0x8F9E], NFKD: [0x8F9E] },
+{ source: [0x2F98E], NFC: [0x446B], NFD: [0x446B], NFKC: [0x446B], NFKD: [0x446B] },
+{ source: [0x2F98F], NFC: [0x8291], NFD: [0x8291], NFKC: [0x8291], NFKD: [0x8291] },
+{ source: [0x2F990], NFC: [0x828B], NFD: [0x828B], NFKC: [0x828B], NFKD: [0x828B] },
+{ source: [0x2F991], NFC: [0x829D], NFD: [0x829D], NFKC: [0x829D], NFKD: [0x829D] },
+{ source: [0x2F992], NFC: [0x52B3], NFD: [0x52B3], NFKC: [0x52B3], NFKD: [0x52B3] },
+{ source: [0x2F993], NFC: [0x82B1], NFD: [0x82B1], NFKC: [0x82B1], NFKD: [0x82B1] },
+{ source: [0x2F994], NFC: [0x82B3], NFD: [0x82B3], NFKC: [0x82B3], NFKD: [0x82B3] },
+{ source: [0x2F995], NFC: [0x82BD], NFD: [0x82BD], NFKC: [0x82BD], NFKD: [0x82BD] },
+{ source: [0x2F996], NFC: [0x82E6], NFD: [0x82E6], NFKC: [0x82E6], NFKD: [0x82E6] },
+{ source: [0x2F997], NFC: [0x26B3C], NFD: [0x26B3C], NFKC: [0x26B3C], NFKD: [0x26B3C] },
+{ source: [0x2F998], NFC: [0x82E5], NFD: [0x82E5], NFKC: [0x82E5], NFKD: [0x82E5] },
+{ source: [0x2F999], NFC: [0x831D], NFD: [0x831D], NFKC: [0x831D], NFKD: [0x831D] },
+{ source: [0x2F99A], NFC: [0x8363], NFD: [0x8363], NFKC: [0x8363], NFKD: [0x8363] },
+{ source: [0x2F99B], NFC: [0x83AD], NFD: [0x83AD], NFKC: [0x83AD], NFKD: [0x83AD] },
+{ source: [0x2F99C], NFC: [0x8323], NFD: [0x8323], NFKC: [0x8323], NFKD: [0x8323] },
+{ source: [0x2F99D], NFC: [0x83BD], NFD: [0x83BD], NFKC: [0x83BD], NFKD: [0x83BD] },
+{ source: [0x2F99E], NFC: [0x83E7], NFD: [0x83E7], NFKC: [0x83E7], NFKD: [0x83E7] },
+{ source: [0x2F99F], NFC: [0x8457], NFD: [0x8457], NFKC: [0x8457], NFKD: [0x8457] },
+{ source: [0x2F9A0], NFC: [0x8353], NFD: [0x8353], NFKC: [0x8353], NFKD: [0x8353] },
+{ source: [0x2F9A1], NFC: [0x83CA], NFD: [0x83CA], NFKC: [0x83CA], NFKD: [0x83CA] },
+{ source: [0x2F9A2], NFC: [0x83CC], NFD: [0x83CC], NFKC: [0x83CC], NFKD: [0x83CC] },
+{ source: [0x2F9A3], NFC: [0x83DC], NFD: [0x83DC], NFKC: [0x83DC], NFKD: [0x83DC] },
+{ source: [0x2F9A4], NFC: [0x26C36], NFD: [0x26C36], NFKC: [0x26C36], NFKD: [0x26C36] },
+{ source: [0x2F9A5], NFC: [0x26D6B], NFD: [0x26D6B], NFKC: [0x26D6B], NFKD: [0x26D6B] },
+{ source: [0x2F9A6], NFC: [0x26CD5], NFD: [0x26CD5], NFKC: [0x26CD5], NFKD: [0x26CD5] },
+{ source: [0x2F9A7], NFC: [0x452B], NFD: [0x452B], NFKC: [0x452B], NFKD: [0x452B] },
+{ source: [0x2F9A8], NFC: [0x84F1], NFD: [0x84F1], NFKC: [0x84F1], NFKD: [0x84F1] },
+{ source: [0x2F9A9], NFC: [0x84F3], NFD: [0x84F3], NFKC: [0x84F3], NFKD: [0x84F3] },
+{ source: [0x2F9AA], NFC: [0x8516], NFD: [0x8516], NFKC: [0x8516], NFKD: [0x8516] },
+{ source: [0x2F9AB], NFC: [0x273CA], NFD: [0x273CA], NFKC: [0x273CA], NFKD: [0x273CA] },
+{ source: [0x2F9AC], NFC: [0x8564], NFD: [0x8564], NFKC: [0x8564], NFKD: [0x8564] },
+{ source: [0x2F9AD], NFC: [0x26F2C], NFD: [0x26F2C], NFKC: [0x26F2C], NFKD: [0x26F2C] },
+{ source: [0x2F9AE], NFC: [0x455D], NFD: [0x455D], NFKC: [0x455D], NFKD: [0x455D] },
+{ source: [0x2F9AF], NFC: [0x4561], NFD: [0x4561], NFKC: [0x4561], NFKD: [0x4561] },
+{ source: [0x2F9B0], NFC: [0x26FB1], NFD: [0x26FB1], NFKC: [0x26FB1], NFKD: [0x26FB1] },
+{ source: [0x2F9B1], NFC: [0x270D2], NFD: [0x270D2], NFKC: [0x270D2], NFKD: [0x270D2] },
+{ source: [0x2F9B2], NFC: [0x456B], NFD: [0x456B], NFKC: [0x456B], NFKD: [0x456B] },
+{ source: [0x2F9B3], NFC: [0x8650], NFD: [0x8650], NFKC: [0x8650], NFKD: [0x8650] },
+{ source: [0x2F9B4], NFC: [0x865C], NFD: [0x865C], NFKC: [0x865C], NFKD: [0x865C] },
+{ source: [0x2F9B5], NFC: [0x8667], NFD: [0x8667], NFKC: [0x8667], NFKD: [0x8667] },
+{ source: [0x2F9B6], NFC: [0x8669], NFD: [0x8669], NFKC: [0x8669], NFKD: [0x8669] },
+{ source: [0x2F9B7], NFC: [0x86A9], NFD: [0x86A9], NFKC: [0x86A9], NFKD: [0x86A9] },
+{ source: [0x2F9B8], NFC: [0x8688], NFD: [0x8688], NFKC: [0x8688], NFKD: [0x8688] },
+{ source: [0x2F9B9], NFC: [0x870E], NFD: [0x870E], NFKC: [0x870E], NFKD: [0x870E] },
+{ source: [0x2F9BA], NFC: [0x86E2], NFD: [0x86E2], NFKC: [0x86E2], NFKD: [0x86E2] },
+{ source: [0x2F9BB], NFC: [0x8779], NFD: [0x8779], NFKC: [0x8779], NFKD: [0x8779] },
+{ source: [0x2F9BC], NFC: [0x8728], NFD: [0x8728], NFKC: [0x8728], NFKD: [0x8728] },
+{ source: [0x2F9BD], NFC: [0x876B], NFD: [0x876B], NFKC: [0x876B], NFKD: [0x876B] },
+{ source: [0x2F9BE], NFC: [0x8786], NFD: [0x8786], NFKC: [0x8786], NFKD: [0x8786] },
+{ source: [0x2F9BF], NFC: [0x45D7], NFD: [0x45D7], NFKC: [0x45D7], NFKD: [0x45D7] },
+{ source: [0x2F9C0], NFC: [0x87E1], NFD: [0x87E1], NFKC: [0x87E1], NFKD: [0x87E1] },
+{ source: [0x2F9C1], NFC: [0x8801], NFD: [0x8801], NFKC: [0x8801], NFKD: [0x8801] },
+{ source: [0x2F9C2], NFC: [0x45F9], NFD: [0x45F9], NFKC: [0x45F9], NFKD: [0x45F9] },
+{ source: [0x2F9C3], NFC: [0x8860], NFD: [0x8860], NFKC: [0x8860], NFKD: [0x8860] },
+{ source: [0x2F9C4], NFC: [0x8863], NFD: [0x8863], NFKC: [0x8863], NFKD: [0x8863] },
+{ source: [0x2F9C5], NFC: [0x27667], NFD: [0x27667], NFKC: [0x27667], NFKD: [0x27667] },
+{ source: [0x2F9C6], NFC: [0x88D7], NFD: [0x88D7], NFKC: [0x88D7], NFKD: [0x88D7] },
+{ source: [0x2F9C7], NFC: [0x88DE], NFD: [0x88DE], NFKC: [0x88DE], NFKD: [0x88DE] },
+{ source: [0x2F9C8], NFC: [0x4635], NFD: [0x4635], NFKC: [0x4635], NFKD: [0x4635] },
+{ source: [0x2F9C9], NFC: [0x88FA], NFD: [0x88FA], NFKC: [0x88FA], NFKD: [0x88FA] },
+{ source: [0x2F9CA], NFC: [0x34BB], NFD: [0x34BB], NFKC: [0x34BB], NFKD: [0x34BB] },
+{ source: [0x2F9CB], NFC: [0x278AE], NFD: [0x278AE], NFKC: [0x278AE], NFKD: [0x278AE] },
+{ source: [0x2F9CC], NFC: [0x27966], NFD: [0x27966], NFKC: [0x27966], NFKD: [0x27966] },
+{ source: [0x2F9CD], NFC: [0x46BE], NFD: [0x46BE], NFKC: [0x46BE], NFKD: [0x46BE] },
+{ source: [0x2F9CE], NFC: [0x46C7], NFD: [0x46C7], NFKC: [0x46C7], NFKD: [0x46C7] },
+{ source: [0x2F9CF], NFC: [0x8AA0], NFD: [0x8AA0], NFKC: [0x8AA0], NFKD: [0x8AA0] },
+{ source: [0x2F9D0], NFC: [0x8AED], NFD: [0x8AED], NFKC: [0x8AED], NFKD: [0x8AED] },
+{ source: [0x2F9D1], NFC: [0x8B8A], NFD: [0x8B8A], NFKC: [0x8B8A], NFKD: [0x8B8A] },
+{ source: [0x2F9D2], NFC: [0x8C55], NFD: [0x8C55], NFKC: [0x8C55], NFKD: [0x8C55] },
+{ source: [0x2F9D3], NFC: [0x27CA8], NFD: [0x27CA8], NFKC: [0x27CA8], NFKD: [0x27CA8] },
+{ source: [0x2F9D4], NFC: [0x8CAB], NFD: [0x8CAB], NFKC: [0x8CAB], NFKD: [0x8CAB] },
+{ source: [0x2F9D5], NFC: [0x8CC1], NFD: [0x8CC1], NFKC: [0x8CC1], NFKD: [0x8CC1] },
+{ source: [0x2F9D6], NFC: [0x8D1B], NFD: [0x8D1B], NFKC: [0x8D1B], NFKD: [0x8D1B] },
+{ source: [0x2F9D7], NFC: [0x8D77], NFD: [0x8D77], NFKC: [0x8D77], NFKD: [0x8D77] },
+{ source: [0x2F9D8], NFC: [0x27F2F], NFD: [0x27F2F], NFKC: [0x27F2F], NFKD: [0x27F2F] },
+{ source: [0x2F9D9], NFC: [0x20804], NFD: [0x20804], NFKC: [0x20804], NFKD: [0x20804] },
+{ source: [0x2F9DA], NFC: [0x8DCB], NFD: [0x8DCB], NFKC: [0x8DCB], NFKD: [0x8DCB] },
+{ source: [0x2F9DB], NFC: [0x8DBC], NFD: [0x8DBC], NFKC: [0x8DBC], NFKD: [0x8DBC] },
+{ source: [0x2F9DC], NFC: [0x8DF0], NFD: [0x8DF0], NFKC: [0x8DF0], NFKD: [0x8DF0] },
+{ source: [0x2F9DD], NFC: [0x208DE], NFD: [0x208DE], NFKC: [0x208DE], NFKD: [0x208DE] },
+{ source: [0x2F9DE], NFC: [0x8ED4], NFD: [0x8ED4], NFKC: [0x8ED4], NFKD: [0x8ED4] },
+{ source: [0x2F9DF], NFC: [0x8F38], NFD: [0x8F38], NFKC: [0x8F38], NFKD: [0x8F38] },
+{ source: [0x2F9E0], NFC: [0x285D2], NFD: [0x285D2], NFKC: [0x285D2], NFKD: [0x285D2] },
+{ source: [0x2F9E1], NFC: [0x285ED], NFD: [0x285ED], NFKC: [0x285ED], NFKD: [0x285ED] },
+{ source: [0x2F9E2], NFC: [0x9094], NFD: [0x9094], NFKC: [0x9094], NFKD: [0x9094] },
+{ source: [0x2F9E3], NFC: [0x90F1], NFD: [0x90F1], NFKC: [0x90F1], NFKD: [0x90F1] },
+{ source: [0x2F9E4], NFC: [0x9111], NFD: [0x9111], NFKC: [0x9111], NFKD: [0x9111] },
+{ source: [0x2F9E5], NFC: [0x2872E], NFD: [0x2872E], NFKC: [0x2872E], NFKD: [0x2872E] },
+{ source: [0x2F9E6], NFC: [0x911B], NFD: [0x911B], NFKC: [0x911B], NFKD: [0x911B] },
+{ source: [0x2F9E7], NFC: [0x9238], NFD: [0x9238], NFKC: [0x9238], NFKD: [0x9238] },
+{ source: [0x2F9E8], NFC: [0x92D7], NFD: [0x92D7], NFKC: [0x92D7], NFKD: [0x92D7] },
+{ source: [0x2F9E9], NFC: [0x92D8], NFD: [0x92D8], NFKC: [0x92D8], NFKD: [0x92D8] },
+{ source: [0x2F9EA], NFC: [0x927C], NFD: [0x927C], NFKC: [0x927C], NFKD: [0x927C] },
+{ source: [0x2F9EB], NFC: [0x93F9], NFD: [0x93F9], NFKC: [0x93F9], NFKD: [0x93F9] },
+{ source: [0x2F9EC], NFC: [0x9415], NFD: [0x9415], NFKC: [0x9415], NFKD: [0x9415] },
+{ source: [0x2F9ED], NFC: [0x28BFA], NFD: [0x28BFA], NFKC: [0x28BFA], NFKD: [0x28BFA] },
+{ source: [0x2F9EE], NFC: [0x958B], NFD: [0x958B], NFKC: [0x958B], NFKD: [0x958B] },
+{ source: [0x2F9EF], NFC: [0x4995], NFD: [0x4995], NFKC: [0x4995], NFKD: [0x4995] },
+{ source: [0x2F9F0], NFC: [0x95B7], NFD: [0x95B7], NFKC: [0x95B7], NFKD: [0x95B7] },
+{ source: [0x2F9F1], NFC: [0x28D77], NFD: [0x28D77], NFKC: [0x28D77], NFKD: [0x28D77] },
+{ source: [0x2F9F2], NFC: [0x49E6], NFD: [0x49E6], NFKC: [0x49E6], NFKD: [0x49E6] },
+{ source: [0x2F9F3], NFC: [0x96C3], NFD: [0x96C3], NFKC: [0x96C3], NFKD: [0x96C3] },
+{ source: [0x2F9F4], NFC: [0x5DB2], NFD: [0x5DB2], NFKC: [0x5DB2], NFKD: [0x5DB2] },
+{ source: [0x2F9F5], NFC: [0x9723], NFD: [0x9723], NFKC: [0x9723], NFKD: [0x9723] },
+{ source: [0x2F9F6], NFC: [0x29145], NFD: [0x29145], NFKC: [0x29145], NFKD: [0x29145] },
+{ source: [0x2F9F7], NFC: [0x2921A], NFD: [0x2921A], NFKC: [0x2921A], NFKD: [0x2921A] },
+{ source: [0x2F9F8], NFC: [0x4A6E], NFD: [0x4A6E], NFKC: [0x4A6E], NFKD: [0x4A6E] },
+{ source: [0x2F9F9], NFC: [0x4A76], NFD: [0x4A76], NFKC: [0x4A76], NFKD: [0x4A76] },
+{ source: [0x2F9FA], NFC: [0x97E0], NFD: [0x97E0], NFKC: [0x97E0], NFKD: [0x97E0] },
+{ source: [0x2F9FB], NFC: [0x2940A], NFD: [0x2940A], NFKC: [0x2940A], NFKD: [0x2940A] },
+{ source: [0x2F9FC], NFC: [0x4AB2], NFD: [0x4AB2], NFKC: [0x4AB2], NFKD: [0x4AB2] },
+{ source: [0x2F9FD], NFC: [0x29496], NFD: [0x29496], NFKC: [0x29496], NFKD: [0x29496] },
+{ source: [0x2F9FE], NFC: [0x980B], NFD: [0x980B], NFKC: [0x980B], NFKD: [0x980B] },
+{ source: [0x2F9FF], NFC: [0x980B], NFD: [0x980B], NFKC: [0x980B], NFKD: [0x980B] },
+{ source: [0x2FA00], NFC: [0x9829], NFD: [0x9829], NFKC: [0x9829], NFKD: [0x9829] },
+{ source: [0x2FA01], NFC: [0x295B6], NFD: [0x295B6], NFKC: [0x295B6], NFKD: [0x295B6] },
+{ source: [0x2FA02], NFC: [0x98E2], NFD: [0x98E2], NFKC: [0x98E2], NFKD: [0x98E2] },
+{ source: [0x2FA03], NFC: [0x4B33], NFD: [0x4B33], NFKC: [0x4B33], NFKD: [0x4B33] },
+{ source: [0x2FA04], NFC: [0x9929], NFD: [0x9929], NFKC: [0x9929], NFKD: [0x9929] },
+{ source: [0x2FA05], NFC: [0x99A7], NFD: [0x99A7], NFKC: [0x99A7], NFKD: [0x99A7] },
+{ source: [0x2FA06], NFC: [0x99C2], NFD: [0x99C2], NFKC: [0x99C2], NFKD: [0x99C2] },
+{ source: [0x2FA07], NFC: [0x99FE], NFD: [0x99FE], NFKC: [0x99FE], NFKD: [0x99FE] },
+{ source: [0x2FA08], NFC: [0x4BCE], NFD: [0x4BCE], NFKC: [0x4BCE], NFKD: [0x4BCE] },
+{ source: [0x2FA09], NFC: [0x29B30], NFD: [0x29B30], NFKC: [0x29B30], NFKD: [0x29B30] },
+{ source: [0x2FA0A], NFC: [0x9B12], NFD: [0x9B12], NFKC: [0x9B12], NFKD: [0x9B12] },
+{ source: [0x2FA0B], NFC: [0x9C40], NFD: [0x9C40], NFKC: [0x9C40], NFKD: [0x9C40] },
+{ source: [0x2FA0C], NFC: [0x9CFD], NFD: [0x9CFD], NFKC: [0x9CFD], NFKD: [0x9CFD] },
+{ source: [0x2FA0D], NFC: [0x4CCE], NFD: [0x4CCE], NFKC: [0x4CCE], NFKD: [0x4CCE] },
+{ source: [0x2FA0E], NFC: [0x4CED], NFD: [0x4CED], NFKC: [0x4CED], NFKD: [0x4CED] },
+{ source: [0x2FA0F], NFC: [0x9D67], NFD: [0x9D67], NFKC: [0x9D67], NFKD: [0x9D67] },
+{ source: [0x2FA10], NFC: [0x2A0CE], NFD: [0x2A0CE], NFKC: [0x2A0CE], NFKD: [0x2A0CE] },
+{ source: [0x2FA11], NFC: [0x4CF8], NFD: [0x4CF8], NFKC: [0x4CF8], NFKD: [0x4CF8] },
+{ source: [0x2FA12], NFC: [0x2A105], NFD: [0x2A105], NFKC: [0x2A105], NFKD: [0x2A105] },
+{ source: [0x2FA13], NFC: [0x2A20E], NFD: [0x2A20E], NFKC: [0x2A20E], NFKD: [0x2A20E] },
+{ source: [0x2FA14], NFC: [0x2A291], NFD: [0x2A291], NFKC: [0x2A291], NFKD: [0x2A291] },
+{ source: [0x2FA15], NFC: [0x9EBB], NFD: [0x9EBB], NFKC: [0x9EBB], NFKD: [0x9EBB] },
+{ source: [0x2FA16], NFC: [0x4D56], NFD: [0x4D56], NFKC: [0x4D56], NFKD: [0x4D56] },
+{ source: [0x2FA17], NFC: [0x9EF9], NFD: [0x9EF9], NFKC: [0x9EF9], NFKD: [0x9EF9] },
+{ source: [0x2FA18], NFC: [0x9EFE], NFD: [0x9EFE], NFKC: [0x9EFE], NFKD: [0x9EFE] },
+{ source: [0x2FA19], NFC: [0x9F05], NFD: [0x9F05], NFKC: [0x9F05], NFKD: [0x9F05] },
+{ source: [0x2FA1A], NFC: [0x9F0F], NFD: [0x9F0F], NFKC: [0x9F0F], NFKD: [0x9F0F] },
+{ source: [0x2FA1B], NFC: [0x9F16], NFD: [0x9F16], NFKC: [0x9F16], NFKD: [0x9F16] },
+{ source: [0x2FA1C], NFC: [0x9F3B], NFD: [0x9F3B], NFKC: [0x9F3B], NFKD: [0x9F3B] },
+{ source: [0x2FA1D], NFC: [0x2A600], NFD: [0x2A600], NFKC: [0x2A600], NFKD: [0x2A600] }
+];
+/* Part2 # Canonical Order Test */
+var tests_part2 = [
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0300, 0x0062], NFC: [0x00E0, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0300, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0300, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x00E0, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0300, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0301, 0x0062], NFC: [0x00E0, 0x05AE, 0x0301, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0301, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0301, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0301, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0301, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x00E1, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0301, 0x0300, 0x0315, 0x0062], NFKC: [0x00E1, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0301, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0302, 0x0062], NFC: [0x00E0, 0x05AE, 0x0302, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0302, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0302, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0302, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0302, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x1EA7, 0x05AE, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0302, 0x0300, 0x0315, 0x0062], NFKC: [0x1EA7, 0x05AE, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0302, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0303, 0x0062], NFC: [0x00E0, 0x05AE, 0x0303, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0303, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0303, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0303, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0303, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x00E3, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0303, 0x0300, 0x0315, 0x0062], NFKC: [0x00E3, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0303, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0304, 0x0062], NFC: [0x00E0, 0x05AE, 0x0304, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0304, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0304, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0304, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0304, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0101, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0304, 0x0300, 0x0315, 0x0062], NFKC: [0x0101, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0304, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0305, 0x0062], NFC: [0x00E0, 0x05AE, 0x0305, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0305, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0305, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0305, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0305, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0305, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0305, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0305, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0305, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0306, 0x0062], NFC: [0x00E0, 0x05AE, 0x0306, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0306, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0306, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0306, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0306, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x1EB1, 0x05AE, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0306, 0x0300, 0x0315, 0x0062], NFKC: [0x1EB1, 0x05AE, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0306, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0307, 0x0062], NFC: [0x00E0, 0x05AE, 0x0307, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0307, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0307, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0307, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0307, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0227, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0307, 0x0300, 0x0315, 0x0062], NFKC: [0x0227, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0307, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0308, 0x0062], NFC: [0x00E0, 0x05AE, 0x0308, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0308, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0308, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0308, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0308, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x00E4, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0308, 0x0300, 0x0315, 0x0062], NFKC: [0x00E4, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0308, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0309, 0x0062], NFC: [0x00E0, 0x05AE, 0x0309, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0309, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0309, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0309, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0309, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x1EA3, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0309, 0x0300, 0x0315, 0x0062], NFKC: [0x1EA3, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0309, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x030A, 0x0062], NFC: [0x00E0, 0x05AE, 0x030A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x030A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x030A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x030A, 0x0315, 0x0062] },
+{ source: [0x0061, 0x030A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x00E5, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x030A, 0x0300, 0x0315, 0x0062], NFKC: [0x00E5, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x030A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x030B, 0x0062], NFC: [0x00E0, 0x05AE, 0x030B, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x030B, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x030B, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x030B, 0x0315, 0x0062] },
+{ source: [0x0061, 0x030B, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x030B, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x030B, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x030B, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x030B, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x030C, 0x0062], NFC: [0x00E0, 0x05AE, 0x030C, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x030C, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x030C, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x030C, 0x0315, 0x0062] },
+{ source: [0x0061, 0x030C, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x01CE, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x030C, 0x0300, 0x0315, 0x0062], NFKC: [0x01CE, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x030C, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x030D, 0x0062], NFC: [0x00E0, 0x05AE, 0x030D, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x030D, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x030D, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x030D, 0x0315, 0x0062] },
+{ source: [0x0061, 0x030D, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x030D, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x030D, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x030D, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x030D, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x030E, 0x0062], NFC: [0x00E0, 0x05AE, 0x030E, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x030E, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x030E, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x030E, 0x0315, 0x0062] },
+{ source: [0x0061, 0x030E, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x030E, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x030E, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x030E, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x030E, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x030F, 0x0062], NFC: [0x00E0, 0x05AE, 0x030F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x030F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x030F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x030F, 0x0315, 0x0062] },
+{ source: [0x0061, 0x030F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0201, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x030F, 0x0300, 0x0315, 0x0062], NFKC: [0x0201, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x030F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0310, 0x0062], NFC: [0x00E0, 0x05AE, 0x0310, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0310, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0310, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0310, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0310, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0310, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0310, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0310, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0310, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0311, 0x0062], NFC: [0x00E0, 0x05AE, 0x0311, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0311, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0311, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0311, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0311, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0203, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0311, 0x0300, 0x0315, 0x0062], NFKC: [0x0203, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0311, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0312, 0x0062], NFC: [0x00E0, 0x05AE, 0x0312, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0312, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0312, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0312, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0312, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0312, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0312, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0312, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0312, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0313, 0x0062], NFC: [0x00E0, 0x05AE, 0x0313, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0313, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0313, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0313, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0313, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0313, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0313, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0313, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0313, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0314, 0x0062], NFC: [0x00E0, 0x05AE, 0x0314, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0314, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0314, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0314, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0314, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0314, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0314, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0314, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0314, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x035C, 0x0315, 0x0300, 0x0315, 0x0062], NFC: [0x00E0, 0x0315, 0x0315, 0x035C, 0x0062], NFD: [0x0061, 0x0300, 0x0315, 0x0315, 0x035C, 0x0062], NFKC: [0x00E0, 0x0315, 0x0315, 0x035C, 0x0062], NFKD: [0x0061, 0x0300, 0x0315, 0x0315, 0x035C, 0x0062] },
+{ source: [0x0061, 0x0315, 0x035C, 0x0315, 0x0300, 0x0062], NFC: [0x00E0, 0x0315, 0x0315, 0x035C, 0x0062], NFD: [0x0061, 0x0300, 0x0315, 0x0315, 0x035C, 0x0062], NFKC: [0x00E0, 0x0315, 0x0315, 0x035C, 0x0062], NFKD: [0x0061, 0x0300, 0x0315, 0x0315, 0x035C, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0316, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0316, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0317, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0317, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0317, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0317, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0317, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0317, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0317, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0317, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0317, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0317, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0318, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0318, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0318, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0318, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0318, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0318, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0318, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0318, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0318, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0318, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0319, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0319, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0319, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0319, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0319, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0319, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0319, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0319, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0319, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0319, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x035C, 0x0315, 0x0300, 0x031A, 0x0062], NFC: [0x00E0, 0x0315, 0x031A, 0x035C, 0x0062], NFD: [0x0061, 0x0300, 0x0315, 0x031A, 0x035C, 0x0062], NFKC: [0x00E0, 0x0315, 0x031A, 0x035C, 0x0062], NFKD: [0x0061, 0x0300, 0x0315, 0x031A, 0x035C, 0x0062] },
+{ source: [0x0061, 0x031A, 0x035C, 0x0315, 0x0300, 0x0062], NFC: [0x00E0, 0x031A, 0x0315, 0x035C, 0x0062], NFD: [0x0061, 0x0300, 0x031A, 0x0315, 0x035C, 0x0062], NFKC: [0x00E0, 0x031A, 0x0315, 0x035C, 0x0062], NFKD: [0x0061, 0x0300, 0x031A, 0x0315, 0x035C, 0x0062] },
+{ source: [0x0061, 0x302A, 0x031B, 0x1DCE, 0x031B, 0x0062], NFC: [0x0061, 0x1DCE, 0x031B, 0x031B, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x031B, 0x031B, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x031B, 0x031B, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x031B, 0x031B, 0x302A, 0x0062] },
+{ source: [0x0061, 0x031B, 0x302A, 0x031B, 0x1DCE, 0x0062], NFC: [0x0061, 0x1DCE, 0x031B, 0x031B, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x031B, 0x031B, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x031B, 0x031B, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x031B, 0x031B, 0x302A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x031C, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x031C, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x031C, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x031C, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x031C, 0x059A, 0x0062] },
+{ source: [0x0061, 0x031C, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x031C, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x031C, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x031C, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x031C, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x031D, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x031D, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x031D, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x031D, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x031D, 0x059A, 0x0062] },
+{ source: [0x0061, 0x031D, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x031D, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x031D, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x031D, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x031D, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x031E, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x031E, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x031E, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x031E, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x031E, 0x059A, 0x0062] },
+{ source: [0x0061, 0x031E, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x031E, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x031E, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x031E, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x031E, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x031F, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x031F, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x031F, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x031F, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x031F, 0x059A, 0x0062] },
+{ source: [0x0061, 0x031F, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x031F, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x031F, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x031F, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x031F, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0320, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0320, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0320, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0320, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0320, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0320, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0320, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0320, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0320, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0320, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1DCE, 0x0321, 0x0F74, 0x0321, 0x0062], NFC: [0x0061, 0x0F74, 0x0321, 0x0321, 0x1DCE, 0x0062], NFD: [0x0061, 0x0F74, 0x0321, 0x0321, 0x1DCE, 0x0062], NFKC: [0x0061, 0x0F74, 0x0321, 0x0321, 0x1DCE, 0x0062], NFKD: [0x0061, 0x0F74, 0x0321, 0x0321, 0x1DCE, 0x0062] },
+{ source: [0x0061, 0x0321, 0x1DCE, 0x0321, 0x0F74, 0x0062], NFC: [0x0061, 0x0F74, 0x0321, 0x0321, 0x1DCE, 0x0062], NFD: [0x0061, 0x0F74, 0x0321, 0x0321, 0x1DCE, 0x0062], NFKC: [0x0061, 0x0F74, 0x0321, 0x0321, 0x1DCE, 0x0062], NFKD: [0x0061, 0x0F74, 0x0321, 0x0321, 0x1DCE, 0x0062] },
+{ source: [0x0061, 0x1DCE, 0x0321, 0x0F74, 0x0322, 0x0062], NFC: [0x0061, 0x0F74, 0x0321, 0x0322, 0x1DCE, 0x0062], NFD: [0x0061, 0x0F74, 0x0321, 0x0322, 0x1DCE, 0x0062], NFKC: [0x0061, 0x0F74, 0x0321, 0x0322, 0x1DCE, 0x0062], NFKD: [0x0061, 0x0F74, 0x0321, 0x0322, 0x1DCE, 0x0062] },
+{ source: [0x0061, 0x0322, 0x1DCE, 0x0321, 0x0F74, 0x0062], NFC: [0x0061, 0x0F74, 0x0322, 0x0321, 0x1DCE, 0x0062], NFD: [0x0061, 0x0F74, 0x0322, 0x0321, 0x1DCE, 0x0062], NFKC: [0x0061, 0x0F74, 0x0322, 0x0321, 0x1DCE, 0x0062], NFKD: [0x0061, 0x0F74, 0x0322, 0x0321, 0x1DCE, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0323, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0323, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0323, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0323, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0323, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0323, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x1EA1, 0x302A, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0323, 0x0316, 0x059A, 0x0062], NFKC: [0x1EA1, 0x302A, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0323, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0324, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0324, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0324, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0324, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0324, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0324, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0324, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0324, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0324, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0324, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0325, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0325, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0325, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0325, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0325, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0325, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x1E01, 0x302A, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0325, 0x0316, 0x059A, 0x0062], NFKC: [0x1E01, 0x302A, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0325, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0326, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0326, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0326, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0326, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0326, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0326, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0326, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0326, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0326, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0326, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1DCE, 0x0321, 0x0F74, 0x0327, 0x0062], NFC: [0x0061, 0x0F74, 0x0321, 0x0327, 0x1DCE, 0x0062], NFD: [0x0061, 0x0F74, 0x0321, 0x0327, 0x1DCE, 0x0062], NFKC: [0x0061, 0x0F74, 0x0321, 0x0327, 0x1DCE, 0x0062], NFKD: [0x0061, 0x0F74, 0x0321, 0x0327, 0x1DCE, 0x0062] },
+{ source: [0x0061, 0x0327, 0x1DCE, 0x0321, 0x0F74, 0x0062], NFC: [0x0061, 0x0F74, 0x0327, 0x0321, 0x1DCE, 0x0062], NFD: [0x0061, 0x0F74, 0x0327, 0x0321, 0x1DCE, 0x0062], NFKC: [0x0061, 0x0F74, 0x0327, 0x0321, 0x1DCE, 0x0062], NFKD: [0x0061, 0x0F74, 0x0327, 0x0321, 0x1DCE, 0x0062] },
+{ source: [0x0061, 0x1DCE, 0x0321, 0x0F74, 0x0328, 0x0062], NFC: [0x0061, 0x0F74, 0x0321, 0x0328, 0x1DCE, 0x0062], NFD: [0x0061, 0x0F74, 0x0321, 0x0328, 0x1DCE, 0x0062], NFKC: [0x0061, 0x0F74, 0x0321, 0x0328, 0x1DCE, 0x0062], NFKD: [0x0061, 0x0F74, 0x0321, 0x0328, 0x1DCE, 0x0062] },
+{ source: [0x0061, 0x0328, 0x1DCE, 0x0321, 0x0F74, 0x0062], NFC: [0x0105, 0x0F74, 0x0321, 0x1DCE, 0x0062], NFD: [0x0061, 0x0F74, 0x0328, 0x0321, 0x1DCE, 0x0062], NFKC: [0x0105, 0x0F74, 0x0321, 0x1DCE, 0x0062], NFKD: [0x0061, 0x0F74, 0x0328, 0x0321, 0x1DCE, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0329, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0329, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0329, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0329, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0329, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0329, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0329, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0329, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0329, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0329, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x032A, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x032A, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x032A, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x032A, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x032A, 0x059A, 0x0062] },
+{ source: [0x0061, 0x032A, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x032A, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x032A, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x032A, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x032A, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x032B, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x032B, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x032B, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x032B, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x032B, 0x059A, 0x0062] },
+{ source: [0x0061, 0x032B, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x032B, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x032B, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x032B, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x032B, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x032C, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x032C, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x032C, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x032C, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x032C, 0x059A, 0x0062] },
+{ source: [0x0061, 0x032C, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x032C, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x032C, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x032C, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x032C, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x032D, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x032D, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x032D, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x032D, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x032D, 0x059A, 0x0062] },
+{ source: [0x0061, 0x032D, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x032D, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x032D, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x032D, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x032D, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x032E, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x032E, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x032E, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x032E, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x032E, 0x059A, 0x0062] },
+{ source: [0x0061, 0x032E, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x032E, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x032E, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x032E, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x032E, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x032F, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x032F, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x032F, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x032F, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x032F, 0x059A, 0x0062] },
+{ source: [0x0061, 0x032F, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x032F, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x032F, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x032F, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x032F, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0330, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0330, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0330, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0330, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0330, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0330, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0330, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0330, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0330, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0330, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0331, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0331, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0331, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0331, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0331, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0331, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0331, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0331, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0331, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0331, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0332, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0332, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0332, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0332, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0332, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0332, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0332, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0332, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0332, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0332, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0333, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0333, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0333, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0333, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0333, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0333, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0333, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0333, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0333, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0333, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x0334, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x0335, 0x0062], NFC: [0x0061, 0x0334, 0x0335, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x0335, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x0335, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x0335, 0x093C, 0x0062] },
+{ source: [0x0061, 0x0335, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0335, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x0335, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x0335, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x0335, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x0336, 0x0062], NFC: [0x0061, 0x0334, 0x0336, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x0336, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x0336, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x0336, 0x093C, 0x0062] },
+{ source: [0x0061, 0x0336, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0336, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x0336, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x0336, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x0336, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x0337, 0x0062], NFC: [0x0061, 0x0334, 0x0337, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x0337, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x0337, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x0337, 0x093C, 0x0062] },
+{ source: [0x0061, 0x0337, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0337, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x0337, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x0337, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x0337, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x0338, 0x0062], NFC: [0x0061, 0x0334, 0x0338, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x0338, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x0338, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x0338, 0x093C, 0x0062] },
+{ source: [0x0061, 0x0338, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0338, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x0338, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x0338, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x0338, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0339, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0339, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0339, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0339, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0339, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0339, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0339, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0339, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0339, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0339, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x033A, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x033A, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x033A, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x033A, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x033A, 0x059A, 0x0062] },
+{ source: [0x0061, 0x033A, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x033A, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x033A, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x033A, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x033A, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x033B, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x033B, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x033B, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x033B, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x033B, 0x059A, 0x0062] },
+{ source: [0x0061, 0x033B, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x033B, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x033B, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x033B, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x033B, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x033C, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x033C, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x033C, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x033C, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x033C, 0x059A, 0x0062] },
+{ source: [0x0061, 0x033C, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x033C, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x033C, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x033C, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x033C, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x033D, 0x0062], NFC: [0x00E0, 0x05AE, 0x033D, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x033D, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x033D, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x033D, 0x0315, 0x0062] },
+{ source: [0x0061, 0x033D, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x033D, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x033D, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x033D, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x033D, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x033E, 0x0062], NFC: [0x00E0, 0x05AE, 0x033E, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x033E, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x033E, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x033E, 0x0315, 0x0062] },
+{ source: [0x0061, 0x033E, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x033E, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x033E, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x033E, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x033E, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x033F, 0x0062], NFC: [0x00E0, 0x05AE, 0x033F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x033F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x033F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x033F, 0x0315, 0x0062] },
+{ source: [0x0061, 0x033F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x033F, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x033F, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x033F, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x033F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0340, 0x0062], NFC: [0x00E0, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0300, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0340, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x00E0, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0300, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0341, 0x0062], NFC: [0x00E0, 0x05AE, 0x0301, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0301, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0301, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0301, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0341, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x00E1, 0x05AE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0301, 0x0300, 0x0315, 0x0062], NFKC: [0x00E1, 0x05AE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0301, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0342, 0x0062], NFC: [0x00E0, 0x05AE, 0x0342, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0342, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0342, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0342, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0342, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0342, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0342, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0342, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0342, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0343, 0x0062], NFC: [0x00E0, 0x05AE, 0x0313, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0313, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0313, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0313, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0343, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0313, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0313, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0313, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0313, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0344, 0x0062], NFC: [0x00E0, 0x05AE, 0x0308, 0x0301, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0308, 0x0301, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0308, 0x0301, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0308, 0x0301, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0344, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x00E4, 0x05AE, 0x0301, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0308, 0x0301, 0x0300, 0x0315, 0x0062], NFKC: [0x00E4, 0x05AE, 0x0301, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0308, 0x0301, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0345, 0x035D, 0x0345, 0x0062], NFC: [0x0061, 0x035D, 0x0345, 0x0345, 0x0062], NFD: [0x0061, 0x035D, 0x0345, 0x0345, 0x0062], NFKC: [0x0061, 0x035D, 0x0345, 0x0345, 0x0062], NFKD: [0x0061, 0x035D, 0x0345, 0x0345, 0x0062] },
+{ source: [0x0061, 0x0345, 0x0345, 0x035D, 0x0062], NFC: [0x0061, 0x035D, 0x0345, 0x0345, 0x0062], NFD: [0x0061, 0x035D, 0x0345, 0x0345, 0x0062], NFKC: [0x0061, 0x035D, 0x0345, 0x0345, 0x0062], NFKD: [0x0061, 0x035D, 0x0345, 0x0345, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0346, 0x0062], NFC: [0x00E0, 0x05AE, 0x0346, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0346, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0346, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0346, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0346, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0346, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0346, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0346, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0346, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0347, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0347, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0347, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0347, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0347, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0347, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0347, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0347, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0347, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0347, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0348, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0348, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0348, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0348, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0348, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0348, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0348, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0348, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0348, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0348, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0349, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0349, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0349, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0349, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0349, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0349, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0349, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0349, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0349, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0349, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x034A, 0x0062], NFC: [0x00E0, 0x05AE, 0x034A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x034A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x034A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x034A, 0x0315, 0x0062] },
+{ source: [0x0061, 0x034A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x034A, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x034A, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x034A, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x034A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x034B, 0x0062], NFC: [0x00E0, 0x05AE, 0x034B, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x034B, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x034B, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x034B, 0x0315, 0x0062] },
+{ source: [0x0061, 0x034B, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x034B, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x034B, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x034B, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x034B, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x034C, 0x0062], NFC: [0x00E0, 0x05AE, 0x034C, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x034C, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x034C, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x034C, 0x0315, 0x0062] },
+{ source: [0x0061, 0x034C, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x034C, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x034C, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x034C, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x034C, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x034D, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x034D, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x034D, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x034D, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x034D, 0x059A, 0x0062] },
+{ source: [0x0061, 0x034D, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x034D, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x034D, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x034D, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x034D, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x034E, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x034E, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x034E, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x034E, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x034E, 0x059A, 0x0062] },
+{ source: [0x0061, 0x034E, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x034E, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x034E, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x034E, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x034E, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0350, 0x0062], NFC: [0x00E0, 0x05AE, 0x0350, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0350, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0350, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0350, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0350, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0350, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0350, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0350, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0350, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0351, 0x0062], NFC: [0x00E0, 0x05AE, 0x0351, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0351, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0351, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0351, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0351, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0351, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0351, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0351, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0351, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0352, 0x0062], NFC: [0x00E0, 0x05AE, 0x0352, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0352, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0352, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0352, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0352, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0352, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0352, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0352, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0352, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0353, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0353, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0353, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0353, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0353, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0353, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0353, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0353, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0353, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0353, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0354, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0354, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0354, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0354, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0354, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0354, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0354, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0354, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0354, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0354, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0355, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0355, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0355, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0355, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0355, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0355, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0355, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0355, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0355, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0355, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0356, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0356, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0356, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0356, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0356, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0356, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0356, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0356, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0356, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0356, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0357, 0x0062], NFC: [0x00E0, 0x05AE, 0x0357, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0357, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0357, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0357, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0357, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0357, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0357, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0357, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0357, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x035C, 0x0315, 0x0300, 0x0358, 0x0062], NFC: [0x00E0, 0x0315, 0x0358, 0x035C, 0x0062], NFD: [0x0061, 0x0300, 0x0315, 0x0358, 0x035C, 0x0062], NFKC: [0x00E0, 0x0315, 0x0358, 0x035C, 0x0062], NFKD: [0x0061, 0x0300, 0x0315, 0x0358, 0x035C, 0x0062] },
+{ source: [0x0061, 0x0358, 0x035C, 0x0315, 0x0300, 0x0062], NFC: [0x00E0, 0x0358, 0x0315, 0x035C, 0x0062], NFD: [0x0061, 0x0300, 0x0358, 0x0315, 0x035C, 0x0062], NFKC: [0x00E0, 0x0358, 0x0315, 0x035C, 0x0062], NFKD: [0x0061, 0x0300, 0x0358, 0x0315, 0x035C, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0359, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0359, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0359, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0359, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0359, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0359, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0359, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0359, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0359, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0359, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x035A, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x035A, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x035A, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x035A, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x035A, 0x059A, 0x0062] },
+{ source: [0x0061, 0x035A, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x035A, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x035A, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x035A, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x035A, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x035B, 0x0062], NFC: [0x00E0, 0x05AE, 0x035B, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x035B, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x035B, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x035B, 0x0315, 0x0062] },
+{ source: [0x0061, 0x035B, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x035B, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x035B, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x035B, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x035B, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x035D, 0x035C, 0x0315, 0x035C, 0x0062], NFC: [0x0061, 0x0315, 0x035C, 0x035C, 0x035D, 0x0062], NFD: [0x0061, 0x0315, 0x035C, 0x035C, 0x035D, 0x0062], NFKC: [0x0061, 0x0315, 0x035C, 0x035C, 0x035D, 0x0062], NFKD: [0x0061, 0x0315, 0x035C, 0x035C, 0x035D, 0x0062] },
+{ source: [0x0061, 0x035C, 0x035D, 0x035C, 0x0315, 0x0062], NFC: [0x0061, 0x0315, 0x035C, 0x035C, 0x035D, 0x0062], NFD: [0x0061, 0x0315, 0x035C, 0x035C, 0x035D, 0x0062], NFKC: [0x0061, 0x0315, 0x035C, 0x035C, 0x035D, 0x0062], NFKD: [0x0061, 0x0315, 0x035C, 0x035C, 0x035D, 0x0062] },
+{ source: [0x0061, 0x0345, 0x035D, 0x035C, 0x035D, 0x0062], NFC: [0x0061, 0x035C, 0x035D, 0x035D, 0x0345, 0x0062], NFD: [0x0061, 0x035C, 0x035D, 0x035D, 0x0345, 0x0062], NFKC: [0x0061, 0x035C, 0x035D, 0x035D, 0x0345, 0x0062], NFKD: [0x0061, 0x035C, 0x035D, 0x035D, 0x0345, 0x0062] },
+{ source: [0x0061, 0x035D, 0x0345, 0x035D, 0x035C, 0x0062], NFC: [0x0061, 0x035C, 0x035D, 0x035D, 0x0345, 0x0062], NFD: [0x0061, 0x035C, 0x035D, 0x035D, 0x0345, 0x0062], NFKC: [0x0061, 0x035C, 0x035D, 0x035D, 0x0345, 0x0062], NFKD: [0x0061, 0x035C, 0x035D, 0x035D, 0x0345, 0x0062] },
+{ source: [0x0061, 0x0345, 0x035D, 0x035C, 0x035E, 0x0062], NFC: [0x0061, 0x035C, 0x035D, 0x035E, 0x0345, 0x0062], NFD: [0x0061, 0x035C, 0x035D, 0x035E, 0x0345, 0x0062], NFKC: [0x0061, 0x035C, 0x035D, 0x035E, 0x0345, 0x0062], NFKD: [0x0061, 0x035C, 0x035D, 0x035E, 0x0345, 0x0062] },
+{ source: [0x0061, 0x035E, 0x0345, 0x035D, 0x035C, 0x0062], NFC: [0x0061, 0x035C, 0x035E, 0x035D, 0x0345, 0x0062], NFD: [0x0061, 0x035C, 0x035E, 0x035D, 0x0345, 0x0062], NFKC: [0x0061, 0x035C, 0x035E, 0x035D, 0x0345, 0x0062], NFKD: [0x0061, 0x035C, 0x035E, 0x035D, 0x0345, 0x0062] },
+{ source: [0x0061, 0x035D, 0x035C, 0x0315, 0x035F, 0x0062], NFC: [0x0061, 0x0315, 0x035C, 0x035F, 0x035D, 0x0062], NFD: [0x0061, 0x0315, 0x035C, 0x035F, 0x035D, 0x0062], NFKC: [0x0061, 0x0315, 0x035C, 0x035F, 0x035D, 0x0062], NFKD: [0x0061, 0x0315, 0x035C, 0x035F, 0x035D, 0x0062] },
+{ source: [0x0061, 0x035F, 0x035D, 0x035C, 0x0315, 0x0062], NFC: [0x0061, 0x0315, 0x035F, 0x035C, 0x035D, 0x0062], NFD: [0x0061, 0x0315, 0x035F, 0x035C, 0x035D, 0x0062], NFKC: [0x0061, 0x0315, 0x035F, 0x035C, 0x035D, 0x0062], NFKD: [0x0061, 0x0315, 0x035F, 0x035C, 0x035D, 0x0062] },
+{ source: [0x0061, 0x0345, 0x035D, 0x035C, 0x0360, 0x0062], NFC: [0x0061, 0x035C, 0x035D, 0x0360, 0x0345, 0x0062], NFD: [0x0061, 0x035C, 0x035D, 0x0360, 0x0345, 0x0062], NFKC: [0x0061, 0x035C, 0x035D, 0x0360, 0x0345, 0x0062], NFKD: [0x0061, 0x035C, 0x035D, 0x0360, 0x0345, 0x0062] },
+{ source: [0x0061, 0x0360, 0x0345, 0x035D, 0x035C, 0x0062], NFC: [0x0061, 0x035C, 0x0360, 0x035D, 0x0345, 0x0062], NFD: [0x0061, 0x035C, 0x0360, 0x035D, 0x0345, 0x0062], NFKC: [0x0061, 0x035C, 0x0360, 0x035D, 0x0345, 0x0062], NFKD: [0x0061, 0x035C, 0x0360, 0x035D, 0x0345, 0x0062] },
+{ source: [0x0061, 0x0345, 0x035D, 0x035C, 0x0361, 0x0062], NFC: [0x0061, 0x035C, 0x035D, 0x0361, 0x0345, 0x0062], NFD: [0x0061, 0x035C, 0x035D, 0x0361, 0x0345, 0x0062], NFKC: [0x0061, 0x035C, 0x035D, 0x0361, 0x0345, 0x0062], NFKD: [0x0061, 0x035C, 0x035D, 0x0361, 0x0345, 0x0062] },
+{ source: [0x0061, 0x0361, 0x0345, 0x035D, 0x035C, 0x0062], NFC: [0x0061, 0x035C, 0x0361, 0x035D, 0x0345, 0x0062], NFD: [0x0061, 0x035C, 0x0361, 0x035D, 0x0345, 0x0062], NFKC: [0x0061, 0x035C, 0x0361, 0x035D, 0x0345, 0x0062], NFKD: [0x0061, 0x035C, 0x0361, 0x035D, 0x0345, 0x0062] },
+{ source: [0x0061, 0x035D, 0x035C, 0x0315, 0x0362, 0x0062], NFC: [0x0061, 0x0315, 0x035C, 0x0362, 0x035D, 0x0062], NFD: [0x0061, 0x0315, 0x035C, 0x0362, 0x035D, 0x0062], NFKC: [0x0061, 0x0315, 0x035C, 0x0362, 0x035D, 0x0062], NFKD: [0x0061, 0x0315, 0x035C, 0x0362, 0x035D, 0x0062] },
+{ source: [0x0061, 0x0362, 0x035D, 0x035C, 0x0315, 0x0062], NFC: [0x0061, 0x0315, 0x0362, 0x035C, 0x035D, 0x0062], NFD: [0x0061, 0x0315, 0x0362, 0x035C, 0x035D, 0x0062], NFKC: [0x0061, 0x0315, 0x0362, 0x035C, 0x035D, 0x0062], NFKD: [0x0061, 0x0315, 0x0362, 0x035C, 0x035D, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0363, 0x0062], NFC: [0x00E0, 0x05AE, 0x0363, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0363, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0363, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0363, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0363, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0363, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0363, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0363, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0363, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0364, 0x0062], NFC: [0x00E0, 0x05AE, 0x0364, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0364, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0364, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0364, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0364, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0364, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0364, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0364, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0364, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0365, 0x0062], NFC: [0x00E0, 0x05AE, 0x0365, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0365, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0365, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0365, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0365, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0365, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0365, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0365, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0365, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0366, 0x0062], NFC: [0x00E0, 0x05AE, 0x0366, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0366, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0366, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0366, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0366, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0366, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0366, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0366, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0366, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0367, 0x0062], NFC: [0x00E0, 0x05AE, 0x0367, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0367, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0367, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0367, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0367, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0367, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0367, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0367, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0367, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0368, 0x0062], NFC: [0x00E0, 0x05AE, 0x0368, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0368, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0368, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0368, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0368, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0368, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0368, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0368, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0368, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0369, 0x0062], NFC: [0x00E0, 0x05AE, 0x0369, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0369, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0369, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0369, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0369, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0369, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0369, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0369, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0369, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x036A, 0x0062], NFC: [0x00E0, 0x05AE, 0x036A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x036A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x036A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x036A, 0x0315, 0x0062] },
+{ source: [0x0061, 0x036A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x036A, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x036A, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x036A, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x036A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x036B, 0x0062], NFC: [0x00E0, 0x05AE, 0x036B, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x036B, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x036B, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x036B, 0x0315, 0x0062] },
+{ source: [0x0061, 0x036B, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x036B, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x036B, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x036B, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x036B, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x036C, 0x0062], NFC: [0x00E0, 0x05AE, 0x036C, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x036C, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x036C, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x036C, 0x0315, 0x0062] },
+{ source: [0x0061, 0x036C, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x036C, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x036C, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x036C, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x036C, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x036D, 0x0062], NFC: [0x00E0, 0x05AE, 0x036D, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x036D, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x036D, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x036D, 0x0315, 0x0062] },
+{ source: [0x0061, 0x036D, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x036D, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x036D, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x036D, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x036D, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x036E, 0x0062], NFC: [0x00E0, 0x05AE, 0x036E, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x036E, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x036E, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x036E, 0x0315, 0x0062] },
+{ source: [0x0061, 0x036E, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x036E, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x036E, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x036E, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x036E, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x036F, 0x0062], NFC: [0x00E0, 0x05AE, 0x036F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x036F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x036F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x036F, 0x0315, 0x0062] },
+{ source: [0x0061, 0x036F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x036F, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x036F, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x036F, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x036F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0483, 0x0062], NFC: [0x00E0, 0x05AE, 0x0483, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0483, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0483, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0483, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0483, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0483, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0483, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0483, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0483, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0484, 0x0062], NFC: [0x00E0, 0x05AE, 0x0484, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0484, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0484, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0484, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0484, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0484, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0484, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0484, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0484, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0485, 0x0062], NFC: [0x00E0, 0x05AE, 0x0485, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0485, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0485, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0485, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0485, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0485, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0485, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0485, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0485, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0486, 0x0062], NFC: [0x00E0, 0x05AE, 0x0486, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0486, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0486, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0486, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0486, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0486, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0486, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0486, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0486, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0487, 0x0062], NFC: [0x00E0, 0x05AE, 0x0487, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0487, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0487, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0487, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0487, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0487, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0487, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0487, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0487, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0591, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0591, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0591, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0591, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0591, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0591, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0591, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0591, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0591, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0591, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0592, 0x0062], NFC: [0x00E0, 0x05AE, 0x0592, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0592, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0592, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0592, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0592, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0592, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0592, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0592, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0592, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0593, 0x0062], NFC: [0x00E0, 0x05AE, 0x0593, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0593, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0593, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0593, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0593, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0593, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0593, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0593, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0593, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0594, 0x0062], NFC: [0x00E0, 0x05AE, 0x0594, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0594, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0594, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0594, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0594, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0594, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0594, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0594, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0594, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0595, 0x0062], NFC: [0x00E0, 0x05AE, 0x0595, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0595, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0595, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0595, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0595, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0595, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0595, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0595, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0595, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0596, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0596, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0596, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0596, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0596, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0596, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0596, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0596, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0596, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0596, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0597, 0x0062], NFC: [0x00E0, 0x05AE, 0x0597, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0597, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0597, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0597, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0597, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0597, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0597, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0597, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0597, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0598, 0x0062], NFC: [0x00E0, 0x05AE, 0x0598, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0598, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0598, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0598, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0598, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0598, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0598, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0598, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0598, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0599, 0x0062], NFC: [0x00E0, 0x05AE, 0x0599, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0599, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0599, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0599, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0599, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0599, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0599, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0599, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0599, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x302E, 0x059A, 0x0316, 0x059A, 0x0062], NFC: [0x0061, 0x0316, 0x059A, 0x059A, 0x302E, 0x0062], NFD: [0x0061, 0x0316, 0x059A, 0x059A, 0x302E, 0x0062], NFKC: [0x0061, 0x0316, 0x059A, 0x059A, 0x302E, 0x0062], NFKD: [0x0061, 0x0316, 0x059A, 0x059A, 0x302E, 0x0062] },
+{ source: [0x0061, 0x059A, 0x302E, 0x059A, 0x0316, 0x0062], NFC: [0x0061, 0x0316, 0x059A, 0x059A, 0x302E, 0x0062], NFD: [0x0061, 0x0316, 0x059A, 0x059A, 0x302E, 0x0062], NFKC: [0x0061, 0x0316, 0x059A, 0x059A, 0x302E, 0x0062], NFKD: [0x0061, 0x0316, 0x059A, 0x059A, 0x302E, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x059B, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x059B, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x059B, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x059B, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x059B, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059B, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x059B, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x059B, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x059B, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x059B, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x059C, 0x0062], NFC: [0x00E0, 0x05AE, 0x059C, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x059C, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x059C, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x059C, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059C, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x059C, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x059C, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x059C, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x059C, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x059D, 0x0062], NFC: [0x00E0, 0x05AE, 0x059D, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x059D, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x059D, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x059D, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059D, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x059D, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x059D, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x059D, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x059D, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x059E, 0x0062], NFC: [0x00E0, 0x05AE, 0x059E, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x059E, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x059E, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x059E, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059E, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x059E, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x059E, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x059E, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x059E, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x059F, 0x0062], NFC: [0x00E0, 0x05AE, 0x059F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x059F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x059F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x059F, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x059F, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x059F, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x059F, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x059F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x05A0, 0x0062], NFC: [0x00E0, 0x05AE, 0x05A0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x05A0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x05A0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x05A0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05A0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x05A0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x05A0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x05A0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x05A0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x05A1, 0x0062], NFC: [0x00E0, 0x05AE, 0x05A1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x05A1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x05A1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x05A1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05A1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x05A1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x05A1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x05A1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x05A1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x05A2, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x05A2, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x05A2, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x05A2, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x05A2, 0x059A, 0x0062] },
+{ source: [0x0061, 0x05A2, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x05A2, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x05A2, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x05A2, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x05A2, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x05A3, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x05A3, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x05A3, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x05A3, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x05A3, 0x059A, 0x0062] },
+{ source: [0x0061, 0x05A3, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x05A3, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x05A3, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x05A3, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x05A3, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x05A4, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x05A4, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x05A4, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x05A4, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x05A4, 0x059A, 0x0062] },
+{ source: [0x0061, 0x05A4, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x05A4, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x05A4, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x05A4, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x05A4, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x05A5, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x05A5, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x05A5, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x05A5, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x05A5, 0x059A, 0x0062] },
+{ source: [0x0061, 0x05A5, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x05A5, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x05A5, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x05A5, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x05A5, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x05A6, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x05A6, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x05A6, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x05A6, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x05A6, 0x059A, 0x0062] },
+{ source: [0x0061, 0x05A6, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x05A6, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x05A6, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x05A6, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x05A6, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x05A7, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x05A7, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x05A7, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x05A7, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x05A7, 0x059A, 0x0062] },
+{ source: [0x0061, 0x05A7, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x05A7, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x05A7, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x05A7, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x05A7, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x05A8, 0x0062], NFC: [0x00E0, 0x05AE, 0x05A8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x05A8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x05A8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x05A8, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05A8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x05A8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x05A8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x05A8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x05A8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x05A9, 0x0062], NFC: [0x00E0, 0x05AE, 0x05A9, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x05A9, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x05A9, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x05A9, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05A9, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x05A9, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x05A9, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x05A9, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x05A9, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x05AA, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x05AA, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x05AA, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x05AA, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x05AA, 0x059A, 0x0062] },
+{ source: [0x0061, 0x05AA, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x05AA, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x05AA, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x05AA, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x05AA, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x05AB, 0x0062], NFC: [0x00E0, 0x05AE, 0x05AB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x05AB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x05AB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x05AB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05AB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x05AB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x05AB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x05AB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x05AB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x05AC, 0x0062], NFC: [0x00E0, 0x05AE, 0x05AC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x05AC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x05AC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x05AC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05AC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x05AC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x05AC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x05AC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x05AC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x302E, 0x059A, 0x0316, 0x05AD, 0x0062], NFC: [0x0061, 0x0316, 0x059A, 0x05AD, 0x302E, 0x0062], NFD: [0x0061, 0x0316, 0x059A, 0x05AD, 0x302E, 0x0062], NFKC: [0x0061, 0x0316, 0x059A, 0x05AD, 0x302E, 0x0062], NFKD: [0x0061, 0x0316, 0x059A, 0x05AD, 0x302E, 0x0062] },
+{ source: [0x0061, 0x05AD, 0x302E, 0x059A, 0x0316, 0x0062], NFC: [0x0061, 0x0316, 0x05AD, 0x059A, 0x302E, 0x0062], NFD: [0x0061, 0x0316, 0x05AD, 0x059A, 0x302E, 0x0062], NFKC: [0x0061, 0x0316, 0x05AD, 0x059A, 0x302E, 0x0062], NFKD: [0x0061, 0x0316, 0x05AD, 0x059A, 0x302E, 0x0062] },
+{ source: [0x0061, 0x0300, 0x05AE, 0x1D16D, 0x05AE, 0x0062], NFC: [0x00E0, 0x1D16D, 0x05AE, 0x05AE, 0x0062], NFD: [0x0061, 0x1D16D, 0x05AE, 0x05AE, 0x0300, 0x0062], NFKC: [0x00E0, 0x1D16D, 0x05AE, 0x05AE, 0x0062], NFKD: [0x0061, 0x1D16D, 0x05AE, 0x05AE, 0x0300, 0x0062] },
+{ source: [0x0061, 0x05AE, 0x0300, 0x05AE, 0x1D16D, 0x0062], NFC: [0x00E0, 0x1D16D, 0x05AE, 0x05AE, 0x0062], NFD: [0x0061, 0x1D16D, 0x05AE, 0x05AE, 0x0300, 0x0062], NFKC: [0x00E0, 0x1D16D, 0x05AE, 0x05AE, 0x0062], NFKD: [0x0061, 0x1D16D, 0x05AE, 0x05AE, 0x0300, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x05AF, 0x0062], NFC: [0x00E0, 0x05AE, 0x05AF, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x05AF, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x05AF, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x05AF, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05AF, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x05AF, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x05AF, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x05AF, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x05AF, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05B1, 0x05B0, 0x094D, 0x05B0, 0x0062], NFC: [0x0061, 0x094D, 0x05B0, 0x05B0, 0x05B1, 0x0062], NFD: [0x0061, 0x094D, 0x05B0, 0x05B0, 0x05B1, 0x0062], NFKC: [0x0061, 0x094D, 0x05B0, 0x05B0, 0x05B1, 0x0062], NFKD: [0x0061, 0x094D, 0x05B0, 0x05B0, 0x05B1, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x05B1, 0x05B0, 0x094D, 0x0062], NFC: [0x0061, 0x094D, 0x05B0, 0x05B0, 0x05B1, 0x0062], NFD: [0x0061, 0x094D, 0x05B0, 0x05B0, 0x05B1, 0x0062], NFKC: [0x0061, 0x094D, 0x05B0, 0x05B0, 0x05B1, 0x0062], NFKD: [0x0061, 0x094D, 0x05B0, 0x05B0, 0x05B1, 0x0062] },
+{ source: [0x0061, 0x05B2, 0x05B1, 0x05B0, 0x05B1, 0x0062], NFC: [0x0061, 0x05B0, 0x05B1, 0x05B1, 0x05B2, 0x0062], NFD: [0x0061, 0x05B0, 0x05B1, 0x05B1, 0x05B2, 0x0062], NFKC: [0x0061, 0x05B0, 0x05B1, 0x05B1, 0x05B2, 0x0062], NFKD: [0x0061, 0x05B0, 0x05B1, 0x05B1, 0x05B2, 0x0062] },
+{ source: [0x0061, 0x05B1, 0x05B2, 0x05B1, 0x05B0, 0x0062], NFC: [0x0061, 0x05B0, 0x05B1, 0x05B1, 0x05B2, 0x0062], NFD: [0x0061, 0x05B0, 0x05B1, 0x05B1, 0x05B2, 0x0062], NFKC: [0x0061, 0x05B0, 0x05B1, 0x05B1, 0x05B2, 0x0062], NFKD: [0x0061, 0x05B0, 0x05B1, 0x05B1, 0x05B2, 0x0062] },
+{ source: [0x0061, 0x05B3, 0x05B2, 0x05B1, 0x05B2, 0x0062], NFC: [0x0061, 0x05B1, 0x05B2, 0x05B2, 0x05B3, 0x0062], NFD: [0x0061, 0x05B1, 0x05B2, 0x05B2, 0x05B3, 0x0062], NFKC: [0x0061, 0x05B1, 0x05B2, 0x05B2, 0x05B3, 0x0062], NFKD: [0x0061, 0x05B1, 0x05B2, 0x05B2, 0x05B3, 0x0062] },
+{ source: [0x0061, 0x05B2, 0x05B3, 0x05B2, 0x05B1, 0x0062], NFC: [0x0061, 0x05B1, 0x05B2, 0x05B2, 0x05B3, 0x0062], NFD: [0x0061, 0x05B1, 0x05B2, 0x05B2, 0x05B3, 0x0062], NFKC: [0x0061, 0x05B1, 0x05B2, 0x05B2, 0x05B3, 0x0062], NFKD: [0x0061, 0x05B1, 0x05B2, 0x05B2, 0x05B3, 0x0062] },
+{ source: [0x0061, 0x05B4, 0x05B3, 0x05B2, 0x05B3, 0x0062], NFC: [0x0061, 0x05B2, 0x05B3, 0x05B3, 0x05B4, 0x0062], NFD: [0x0061, 0x05B2, 0x05B3, 0x05B3, 0x05B4, 0x0062], NFKC: [0x0061, 0x05B2, 0x05B3, 0x05B3, 0x05B4, 0x0062], NFKD: [0x0061, 0x05B2, 0x05B3, 0x05B3, 0x05B4, 0x0062] },
+{ source: [0x0061, 0x05B3, 0x05B4, 0x05B3, 0x05B2, 0x0062], NFC: [0x0061, 0x05B2, 0x05B3, 0x05B3, 0x05B4, 0x0062], NFD: [0x0061, 0x05B2, 0x05B3, 0x05B3, 0x05B4, 0x0062], NFKC: [0x0061, 0x05B2, 0x05B3, 0x05B3, 0x05B4, 0x0062], NFKD: [0x0061, 0x05B2, 0x05B3, 0x05B3, 0x05B4, 0x0062] },
+{ source: [0x0061, 0x05B5, 0x05B4, 0x05B3, 0x05B4, 0x0062], NFC: [0x0061, 0x05B3, 0x05B4, 0x05B4, 0x05B5, 0x0062], NFD: [0x0061, 0x05B3, 0x05B4, 0x05B4, 0x05B5, 0x0062], NFKC: [0x0061, 0x05B3, 0x05B4, 0x05B4, 0x05B5, 0x0062], NFKD: [0x0061, 0x05B3, 0x05B4, 0x05B4, 0x05B5, 0x0062] },
+{ source: [0x0061, 0x05B4, 0x05B5, 0x05B4, 0x05B3, 0x0062], NFC: [0x0061, 0x05B3, 0x05B4, 0x05B4, 0x05B5, 0x0062], NFD: [0x0061, 0x05B3, 0x05B4, 0x05B4, 0x05B5, 0x0062], NFKC: [0x0061, 0x05B3, 0x05B4, 0x05B4, 0x05B5, 0x0062], NFKD: [0x0061, 0x05B3, 0x05B4, 0x05B4, 0x05B5, 0x0062] },
+{ source: [0x0061, 0x05B6, 0x05B5, 0x05B4, 0x05B5, 0x0062], NFC: [0x0061, 0x05B4, 0x05B5, 0x05B5, 0x05B6, 0x0062], NFD: [0x0061, 0x05B4, 0x05B5, 0x05B5, 0x05B6, 0x0062], NFKC: [0x0061, 0x05B4, 0x05B5, 0x05B5, 0x05B6, 0x0062], NFKD: [0x0061, 0x05B4, 0x05B5, 0x05B5, 0x05B6, 0x0062] },
+{ source: [0x0061, 0x05B5, 0x05B6, 0x05B5, 0x05B4, 0x0062], NFC: [0x0061, 0x05B4, 0x05B5, 0x05B5, 0x05B6, 0x0062], NFD: [0x0061, 0x05B4, 0x05B5, 0x05B5, 0x05B6, 0x0062], NFKC: [0x0061, 0x05B4, 0x05B5, 0x05B5, 0x05B6, 0x0062], NFKD: [0x0061, 0x05B4, 0x05B5, 0x05B5, 0x05B6, 0x0062] },
+{ source: [0x0061, 0x05B7, 0x05B6, 0x05B5, 0x05B6, 0x0062], NFC: [0x0061, 0x05B5, 0x05B6, 0x05B6, 0x05B7, 0x0062], NFD: [0x0061, 0x05B5, 0x05B6, 0x05B6, 0x05B7, 0x0062], NFKC: [0x0061, 0x05B5, 0x05B6, 0x05B6, 0x05B7, 0x0062], NFKD: [0x0061, 0x05B5, 0x05B6, 0x05B6, 0x05B7, 0x0062] },
+{ source: [0x0061, 0x05B6, 0x05B7, 0x05B6, 0x05B5, 0x0062], NFC: [0x0061, 0x05B5, 0x05B6, 0x05B6, 0x05B7, 0x0062], NFD: [0x0061, 0x05B5, 0x05B6, 0x05B6, 0x05B7, 0x0062], NFKC: [0x0061, 0x05B5, 0x05B6, 0x05B6, 0x05B7, 0x0062], NFKD: [0x0061, 0x05B5, 0x05B6, 0x05B6, 0x05B7, 0x0062] },
+{ source: [0x0061, 0x05B8, 0x05B7, 0x05B6, 0x05B7, 0x0062], NFC: [0x0061, 0x05B6, 0x05B7, 0x05B7, 0x05B8, 0x0062], NFD: [0x0061, 0x05B6, 0x05B7, 0x05B7, 0x05B8, 0x0062], NFKC: [0x0061, 0x05B6, 0x05B7, 0x05B7, 0x05B8, 0x0062], NFKD: [0x0061, 0x05B6, 0x05B7, 0x05B7, 0x05B8, 0x0062] },
+{ source: [0x0061, 0x05B7, 0x05B8, 0x05B7, 0x05B6, 0x0062], NFC: [0x0061, 0x05B6, 0x05B7, 0x05B7, 0x05B8, 0x0062], NFD: [0x0061, 0x05B6, 0x05B7, 0x05B7, 0x05B8, 0x0062], NFKC: [0x0061, 0x05B6, 0x05B7, 0x05B7, 0x05B8, 0x0062], NFKD: [0x0061, 0x05B6, 0x05B7, 0x05B7, 0x05B8, 0x0062] },
+{ source: [0x0061, 0x05B9, 0x05B8, 0x05B7, 0x05B8, 0x0062], NFC: [0x0061, 0x05B7, 0x05B8, 0x05B8, 0x05B9, 0x0062], NFD: [0x0061, 0x05B7, 0x05B8, 0x05B8, 0x05B9, 0x0062], NFKC: [0x0061, 0x05B7, 0x05B8, 0x05B8, 0x05B9, 0x0062], NFKD: [0x0061, 0x05B7, 0x05B8, 0x05B8, 0x05B9, 0x0062] },
+{ source: [0x0061, 0x05B8, 0x05B9, 0x05B8, 0x05B7, 0x0062], NFC: [0x0061, 0x05B7, 0x05B8, 0x05B8, 0x05B9, 0x0062], NFD: [0x0061, 0x05B7, 0x05B8, 0x05B8, 0x05B9, 0x0062], NFKC: [0x0061, 0x05B7, 0x05B8, 0x05B8, 0x05B9, 0x0062], NFKD: [0x0061, 0x05B7, 0x05B8, 0x05B8, 0x05B9, 0x0062] },
+{ source: [0x0061, 0x05BB, 0x05B9, 0x05B8, 0x05B9, 0x0062], NFC: [0x0061, 0x05B8, 0x05B9, 0x05B9, 0x05BB, 0x0062], NFD: [0x0061, 0x05B8, 0x05B9, 0x05B9, 0x05BB, 0x0062], NFKC: [0x0061, 0x05B8, 0x05B9, 0x05B9, 0x05BB, 0x0062], NFKD: [0x0061, 0x05B8, 0x05B9, 0x05B9, 0x05BB, 0x0062] },
+{ source: [0x0061, 0x05B9, 0x05BB, 0x05B9, 0x05B8, 0x0062], NFC: [0x0061, 0x05B8, 0x05B9, 0x05B9, 0x05BB, 0x0062], NFD: [0x0061, 0x05B8, 0x05B9, 0x05B9, 0x05BB, 0x0062], NFKC: [0x0061, 0x05B8, 0x05B9, 0x05B9, 0x05BB, 0x0062], NFKD: [0x0061, 0x05B8, 0x05B9, 0x05B9, 0x05BB, 0x0062] },
+{ source: [0x0061, 0x05BB, 0x05B9, 0x05B8, 0x05BA, 0x0062], NFC: [0x0061, 0x05B8, 0x05B9, 0x05BA, 0x05BB, 0x0062], NFD: [0x0061, 0x05B8, 0x05B9, 0x05BA, 0x05BB, 0x0062], NFKC: [0x0061, 0x05B8, 0x05B9, 0x05BA, 0x05BB, 0x0062], NFKD: [0x0061, 0x05B8, 0x05B9, 0x05BA, 0x05BB, 0x0062] },
+{ source: [0x0061, 0x05BA, 0x05BB, 0x05B9, 0x05B8, 0x0062], NFC: [0x0061, 0x05B8, 0x05BA, 0x05B9, 0x05BB, 0x0062], NFD: [0x0061, 0x05B8, 0x05BA, 0x05B9, 0x05BB, 0x0062], NFKC: [0x0061, 0x05B8, 0x05BA, 0x05B9, 0x05BB, 0x0062], NFKD: [0x0061, 0x05B8, 0x05BA, 0x05B9, 0x05BB, 0x0062] },
+{ source: [0x0061, 0x05BC, 0x05BB, 0x05B9, 0x05BB, 0x0062], NFC: [0x0061, 0x05B9, 0x05BB, 0x05BB, 0x05BC, 0x0062], NFD: [0x0061, 0x05B9, 0x05BB, 0x05BB, 0x05BC, 0x0062], NFKC: [0x0061, 0x05B9, 0x05BB, 0x05BB, 0x05BC, 0x0062], NFKD: [0x0061, 0x05B9, 0x05BB, 0x05BB, 0x05BC, 0x0062] },
+{ source: [0x0061, 0x05BB, 0x05BC, 0x05BB, 0x05B9, 0x0062], NFC: [0x0061, 0x05B9, 0x05BB, 0x05BB, 0x05BC, 0x0062], NFD: [0x0061, 0x05B9, 0x05BB, 0x05BB, 0x05BC, 0x0062], NFKC: [0x0061, 0x05B9, 0x05BB, 0x05BB, 0x05BC, 0x0062], NFKD: [0x0061, 0x05B9, 0x05BB, 0x05BB, 0x05BC, 0x0062] },
+{ source: [0x0061, 0x05BD, 0x05BC, 0x05BB, 0x05BC, 0x0062], NFC: [0x0061, 0x05BB, 0x05BC, 0x05BC, 0x05BD, 0x0062], NFD: [0x0061, 0x05BB, 0x05BC, 0x05BC, 0x05BD, 0x0062], NFKC: [0x0061, 0x05BB, 0x05BC, 0x05BC, 0x05BD, 0x0062], NFKD: [0x0061, 0x05BB, 0x05BC, 0x05BC, 0x05BD, 0x0062] },
+{ source: [0x0061, 0x05BC, 0x05BD, 0x05BC, 0x05BB, 0x0062], NFC: [0x0061, 0x05BB, 0x05BC, 0x05BC, 0x05BD, 0x0062], NFD: [0x0061, 0x05BB, 0x05BC, 0x05BC, 0x05BD, 0x0062], NFKC: [0x0061, 0x05BB, 0x05BC, 0x05BC, 0x05BD, 0x0062], NFKD: [0x0061, 0x05BB, 0x05BC, 0x05BC, 0x05BD, 0x0062] },
+{ source: [0x0061, 0x05BF, 0x05BD, 0x05BC, 0x05BD, 0x0062], NFC: [0x0061, 0x05BC, 0x05BD, 0x05BD, 0x05BF, 0x0062], NFD: [0x0061, 0x05BC, 0x05BD, 0x05BD, 0x05BF, 0x0062], NFKC: [0x0061, 0x05BC, 0x05BD, 0x05BD, 0x05BF, 0x0062], NFKD: [0x0061, 0x05BC, 0x05BD, 0x05BD, 0x05BF, 0x0062] },
+{ source: [0x0061, 0x05BD, 0x05BF, 0x05BD, 0x05BC, 0x0062], NFC: [0x0061, 0x05BC, 0x05BD, 0x05BD, 0x05BF, 0x0062], NFD: [0x0061, 0x05BC, 0x05BD, 0x05BD, 0x05BF, 0x0062], NFKC: [0x0061, 0x05BC, 0x05BD, 0x05BD, 0x05BF, 0x0062], NFKD: [0x0061, 0x05BC, 0x05BD, 0x05BD, 0x05BF, 0x0062] },
+{ source: [0x0061, 0x05C1, 0x05BF, 0x05BD, 0x05BF, 0x0062], NFC: [0x0061, 0x05BD, 0x05BF, 0x05BF, 0x05C1, 0x0062], NFD: [0x0061, 0x05BD, 0x05BF, 0x05BF, 0x05C1, 0x0062], NFKC: [0x0061, 0x05BD, 0x05BF, 0x05BF, 0x05C1, 0x0062], NFKD: [0x0061, 0x05BD, 0x05BF, 0x05BF, 0x05C1, 0x0062] },
+{ source: [0x0061, 0x05BF, 0x05C1, 0x05BF, 0x05BD, 0x0062], NFC: [0x0061, 0x05BD, 0x05BF, 0x05BF, 0x05C1, 0x0062], NFD: [0x0061, 0x05BD, 0x05BF, 0x05BF, 0x05C1, 0x0062], NFKC: [0x0061, 0x05BD, 0x05BF, 0x05BF, 0x05C1, 0x0062], NFKD: [0x0061, 0x05BD, 0x05BF, 0x05BF, 0x05C1, 0x0062] },
+{ source: [0x0061, 0x05C2, 0x05C1, 0x05BF, 0x05C1, 0x0062], NFC: [0x0061, 0x05BF, 0x05C1, 0x05C1, 0x05C2, 0x0062], NFD: [0x0061, 0x05BF, 0x05C1, 0x05C1, 0x05C2, 0x0062], NFKC: [0x0061, 0x05BF, 0x05C1, 0x05C1, 0x05C2, 0x0062], NFKD: [0x0061, 0x05BF, 0x05C1, 0x05C1, 0x05C2, 0x0062] },
+{ source: [0x0061, 0x05C1, 0x05C2, 0x05C1, 0x05BF, 0x0062], NFC: [0x0061, 0x05BF, 0x05C1, 0x05C1, 0x05C2, 0x0062], NFD: [0x0061, 0x05BF, 0x05C1, 0x05C1, 0x05C2, 0x0062], NFKC: [0x0061, 0x05BF, 0x05C1, 0x05C1, 0x05C2, 0x0062], NFKD: [0x0061, 0x05BF, 0x05C1, 0x05C1, 0x05C2, 0x0062] },
+{ source: [0x0061, 0xFB1E, 0x05C2, 0x05C1, 0x05C2, 0x0062], NFC: [0x0061, 0x05C1, 0x05C2, 0x05C2, 0xFB1E, 0x0062], NFD: [0x0061, 0x05C1, 0x05C2, 0x05C2, 0xFB1E, 0x0062], NFKC: [0x0061, 0x05C1, 0x05C2, 0x05C2, 0xFB1E, 0x0062], NFKD: [0x0061, 0x05C1, 0x05C2, 0x05C2, 0xFB1E, 0x0062] },
+{ source: [0x0061, 0x05C2, 0xFB1E, 0x05C2, 0x05C1, 0x0062], NFC: [0x0061, 0x05C1, 0x05C2, 0x05C2, 0xFB1E, 0x0062], NFD: [0x0061, 0x05C1, 0x05C2, 0x05C2, 0xFB1E, 0x0062], NFKC: [0x0061, 0x05C1, 0x05C2, 0x05C2, 0xFB1E, 0x0062], NFKD: [0x0061, 0x05C1, 0x05C2, 0x05C2, 0xFB1E, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x05C4, 0x0062], NFC: [0x00E0, 0x05AE, 0x05C4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x05C4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x05C4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x05C4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05C4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x05C4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x05C4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x05C4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x05C4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x05C5, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x05C5, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x05C5, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x05C5, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x05C5, 0x059A, 0x0062] },
+{ source: [0x0061, 0x05C5, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x05C5, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x05C5, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x05C5, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x05C5, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x05B9, 0x05B8, 0x05B7, 0x05C7, 0x0062], NFC: [0x0061, 0x05B7, 0x05B8, 0x05C7, 0x05B9, 0x0062], NFD: [0x0061, 0x05B7, 0x05B8, 0x05C7, 0x05B9, 0x0062], NFKC: [0x0061, 0x05B7, 0x05B8, 0x05C7, 0x05B9, 0x0062], NFKD: [0x0061, 0x05B7, 0x05B8, 0x05C7, 0x05B9, 0x0062] },
+{ source: [0x0061, 0x05C7, 0x05B9, 0x05B8, 0x05B7, 0x0062], NFC: [0x0061, 0x05B7, 0x05C7, 0x05B8, 0x05B9, 0x0062], NFD: [0x0061, 0x05B7, 0x05C7, 0x05B8, 0x05B9, 0x0062], NFKC: [0x0061, 0x05B7, 0x05C7, 0x05B8, 0x05B9, 0x0062], NFKD: [0x0061, 0x05B7, 0x05C7, 0x05B8, 0x05B9, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0610, 0x0062], NFC: [0x00E0, 0x05AE, 0x0610, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0610, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0610, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0610, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0610, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0610, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0610, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0610, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0610, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0611, 0x0062], NFC: [0x00E0, 0x05AE, 0x0611, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0611, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0611, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0611, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0611, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0611, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0611, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0611, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0611, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0612, 0x0062], NFC: [0x00E0, 0x05AE, 0x0612, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0612, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0612, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0612, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0612, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0612, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0612, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0612, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0612, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0613, 0x0062], NFC: [0x00E0, 0x05AE, 0x0613, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0613, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0613, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0613, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0613, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0613, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0613, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0613, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0613, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0614, 0x0062], NFC: [0x00E0, 0x05AE, 0x0614, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0614, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0614, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0614, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0614, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0614, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0614, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0614, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0614, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0615, 0x0062], NFC: [0x00E0, 0x05AE, 0x0615, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0615, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0615, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0615, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0615, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0615, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0615, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0615, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0615, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0616, 0x0062], NFC: [0x00E0, 0x05AE, 0x0616, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0616, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0616, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0616, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0616, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0616, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0616, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0616, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0616, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0617, 0x0062], NFC: [0x00E0, 0x05AE, 0x0617, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0617, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0617, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0617, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0617, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0617, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0617, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0617, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0617, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0619, 0x0618, 0x064D, 0x0618, 0x0062], NFC: [0x0061, 0x064D, 0x0618, 0x0618, 0x0619, 0x0062], NFD: [0x0061, 0x064D, 0x0618, 0x0618, 0x0619, 0x0062], NFKC: [0x0061, 0x064D, 0x0618, 0x0618, 0x0619, 0x0062], NFKD: [0x0061, 0x064D, 0x0618, 0x0618, 0x0619, 0x0062] },
+{ source: [0x0061, 0x0618, 0x0619, 0x0618, 0x064D, 0x0062], NFC: [0x0061, 0x064D, 0x0618, 0x0618, 0x0619, 0x0062], NFD: [0x0061, 0x064D, 0x0618, 0x0618, 0x0619, 0x0062], NFKC: [0x0061, 0x064D, 0x0618, 0x0618, 0x0619, 0x0062], NFKD: [0x0061, 0x064D, 0x0618, 0x0618, 0x0619, 0x0062] },
+{ source: [0x0061, 0x061A, 0x0619, 0x0618, 0x0619, 0x0062], NFC: [0x0061, 0x0618, 0x0619, 0x0619, 0x061A, 0x0062], NFD: [0x0061, 0x0618, 0x0619, 0x0619, 0x061A, 0x0062], NFKC: [0x0061, 0x0618, 0x0619, 0x0619, 0x061A, 0x0062], NFKD: [0x0061, 0x0618, 0x0619, 0x0619, 0x061A, 0x0062] },
+{ source: [0x0061, 0x0619, 0x061A, 0x0619, 0x0618, 0x0062], NFC: [0x0061, 0x0618, 0x0619, 0x0619, 0x061A, 0x0062], NFD: [0x0061, 0x0618, 0x0619, 0x0619, 0x061A, 0x0062], NFKC: [0x0061, 0x0618, 0x0619, 0x0619, 0x061A, 0x0062], NFKD: [0x0061, 0x0618, 0x0619, 0x0619, 0x061A, 0x0062] },
+{ source: [0x0061, 0x0651, 0x061A, 0x0619, 0x061A, 0x0062], NFC: [0x0061, 0x0619, 0x061A, 0x061A, 0x0651, 0x0062], NFD: [0x0061, 0x0619, 0x061A, 0x061A, 0x0651, 0x0062], NFKC: [0x0061, 0x0619, 0x061A, 0x061A, 0x0651, 0x0062], NFKD: [0x0061, 0x0619, 0x061A, 0x061A, 0x0651, 0x0062] },
+{ source: [0x0061, 0x061A, 0x0651, 0x061A, 0x0619, 0x0062], NFC: [0x0061, 0x0619, 0x061A, 0x061A, 0x0651, 0x0062], NFD: [0x0061, 0x0619, 0x061A, 0x061A, 0x0651, 0x0062], NFKC: [0x0061, 0x0619, 0x061A, 0x061A, 0x0651, 0x0062], NFKD: [0x0061, 0x0619, 0x061A, 0x061A, 0x0651, 0x0062] },
+{ source: [0x0061, 0x064C, 0x064B, 0xFB1E, 0x064B, 0x0062], NFC: [0x0061, 0xFB1E, 0x064B, 0x064B, 0x064C, 0x0062], NFD: [0x0061, 0xFB1E, 0x064B, 0x064B, 0x064C, 0x0062], NFKC: [0x0061, 0xFB1E, 0x064B, 0x064B, 0x064C, 0x0062], NFKD: [0x0061, 0xFB1E, 0x064B, 0x064B, 0x064C, 0x0062] },
+{ source: [0x0061, 0x064B, 0x064C, 0x064B, 0xFB1E, 0x0062], NFC: [0x0061, 0xFB1E, 0x064B, 0x064B, 0x064C, 0x0062], NFD: [0x0061, 0xFB1E, 0x064B, 0x064B, 0x064C, 0x0062], NFKC: [0x0061, 0xFB1E, 0x064B, 0x064B, 0x064C, 0x0062], NFKD: [0x0061, 0xFB1E, 0x064B, 0x064B, 0x064C, 0x0062] },
+{ source: [0x0061, 0x064D, 0x064C, 0x064B, 0x064C, 0x0062], NFC: [0x0061, 0x064B, 0x064C, 0x064C, 0x064D, 0x0062], NFD: [0x0061, 0x064B, 0x064C, 0x064C, 0x064D, 0x0062], NFKC: [0x0061, 0x064B, 0x064C, 0x064C, 0x064D, 0x0062], NFKD: [0x0061, 0x064B, 0x064C, 0x064C, 0x064D, 0x0062] },
+{ source: [0x0061, 0x064C, 0x064D, 0x064C, 0x064B, 0x0062], NFC: [0x0061, 0x064B, 0x064C, 0x064C, 0x064D, 0x0062], NFD: [0x0061, 0x064B, 0x064C, 0x064C, 0x064D, 0x0062], NFKC: [0x0061, 0x064B, 0x064C, 0x064C, 0x064D, 0x0062], NFKD: [0x0061, 0x064B, 0x064C, 0x064C, 0x064D, 0x0062] },
+{ source: [0x0061, 0x0618, 0x064D, 0x064C, 0x064D, 0x0062], NFC: [0x0061, 0x064C, 0x064D, 0x064D, 0x0618, 0x0062], NFD: [0x0061, 0x064C, 0x064D, 0x064D, 0x0618, 0x0062], NFKC: [0x0061, 0x064C, 0x064D, 0x064D, 0x0618, 0x0062], NFKD: [0x0061, 0x064C, 0x064D, 0x064D, 0x0618, 0x0062] },
+{ source: [0x0061, 0x064D, 0x0618, 0x064D, 0x064C, 0x0062], NFC: [0x0061, 0x064C, 0x064D, 0x064D, 0x0618, 0x0062], NFD: [0x0061, 0x064C, 0x064D, 0x064D, 0x0618, 0x0062], NFKC: [0x0061, 0x064C, 0x064D, 0x064D, 0x0618, 0x0062], NFKD: [0x0061, 0x064C, 0x064D, 0x064D, 0x0618, 0x0062] },
+{ source: [0x0061, 0x0619, 0x0618, 0x064D, 0x064E, 0x0062], NFC: [0x0061, 0x064D, 0x0618, 0x064E, 0x0619, 0x0062], NFD: [0x0061, 0x064D, 0x0618, 0x064E, 0x0619, 0x0062], NFKC: [0x0061, 0x064D, 0x0618, 0x064E, 0x0619, 0x0062], NFKD: [0x0061, 0x064D, 0x0618, 0x064E, 0x0619, 0x0062] },
+{ source: [0x0061, 0x064E, 0x0619, 0x0618, 0x064D, 0x0062], NFC: [0x0061, 0x064D, 0x064E, 0x0618, 0x0619, 0x0062], NFD: [0x0061, 0x064D, 0x064E, 0x0618, 0x0619, 0x0062], NFKC: [0x0061, 0x064D, 0x064E, 0x0618, 0x0619, 0x0062], NFKD: [0x0061, 0x064D, 0x064E, 0x0618, 0x0619, 0x0062] },
+{ source: [0x0061, 0x061A, 0x0619, 0x0618, 0x064F, 0x0062], NFC: [0x0061, 0x0618, 0x0619, 0x064F, 0x061A, 0x0062], NFD: [0x0061, 0x0618, 0x0619, 0x064F, 0x061A, 0x0062], NFKC: [0x0061, 0x0618, 0x0619, 0x064F, 0x061A, 0x0062], NFKD: [0x0061, 0x0618, 0x0619, 0x064F, 0x061A, 0x0062] },
+{ source: [0x0061, 0x064F, 0x061A, 0x0619, 0x0618, 0x0062], NFC: [0x0061, 0x0618, 0x064F, 0x0619, 0x061A, 0x0062], NFD: [0x0061, 0x0618, 0x064F, 0x0619, 0x061A, 0x0062], NFKC: [0x0061, 0x0618, 0x064F, 0x0619, 0x061A, 0x0062], NFKD: [0x0061, 0x0618, 0x064F, 0x0619, 0x061A, 0x0062] },
+{ source: [0x0061, 0x0651, 0x061A, 0x0619, 0x0650, 0x0062], NFC: [0x0061, 0x0619, 0x061A, 0x0650, 0x0651, 0x0062], NFD: [0x0061, 0x0619, 0x061A, 0x0650, 0x0651, 0x0062], NFKC: [0x0061, 0x0619, 0x061A, 0x0650, 0x0651, 0x0062], NFKD: [0x0061, 0x0619, 0x061A, 0x0650, 0x0651, 0x0062] },
+{ source: [0x0061, 0x0650, 0x0651, 0x061A, 0x0619, 0x0062], NFC: [0x0061, 0x0619, 0x0650, 0x061A, 0x0651, 0x0062], NFD: [0x0061, 0x0619, 0x0650, 0x061A, 0x0651, 0x0062], NFKC: [0x0061, 0x0619, 0x0650, 0x061A, 0x0651, 0x0062], NFKD: [0x0061, 0x0619, 0x0650, 0x061A, 0x0651, 0x0062] },
+{ source: [0x0061, 0x0652, 0x0651, 0x061A, 0x0651, 0x0062], NFC: [0x0061, 0x061A, 0x0651, 0x0651, 0x0652, 0x0062], NFD: [0x0061, 0x061A, 0x0651, 0x0651, 0x0652, 0x0062], NFKC: [0x0061, 0x061A, 0x0651, 0x0651, 0x0652, 0x0062], NFKD: [0x0061, 0x061A, 0x0651, 0x0651, 0x0652, 0x0062] },
+{ source: [0x0061, 0x0651, 0x0652, 0x0651, 0x061A, 0x0062], NFC: [0x0061, 0x061A, 0x0651, 0x0651, 0x0652, 0x0062], NFD: [0x0061, 0x061A, 0x0651, 0x0651, 0x0652, 0x0062], NFKC: [0x0061, 0x061A, 0x0651, 0x0651, 0x0652, 0x0062], NFKD: [0x0061, 0x061A, 0x0651, 0x0651, 0x0652, 0x0062] },
+{ source: [0x0061, 0x0670, 0x0652, 0x0651, 0x0652, 0x0062], NFC: [0x0061, 0x0651, 0x0652, 0x0652, 0x0670, 0x0062], NFD: [0x0061, 0x0651, 0x0652, 0x0652, 0x0670, 0x0062], NFKC: [0x0061, 0x0651, 0x0652, 0x0652, 0x0670, 0x0062], NFKD: [0x0061, 0x0651, 0x0652, 0x0652, 0x0670, 0x0062] },
+{ source: [0x0061, 0x0652, 0x0670, 0x0652, 0x0651, 0x0062], NFC: [0x0061, 0x0651, 0x0652, 0x0652, 0x0670, 0x0062], NFD: [0x0061, 0x0651, 0x0652, 0x0652, 0x0670, 0x0062], NFKC: [0x0061, 0x0651, 0x0652, 0x0652, 0x0670, 0x0062], NFKD: [0x0061, 0x0651, 0x0652, 0x0652, 0x0670, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0653, 0x0062], NFC: [0x00E0, 0x05AE, 0x0653, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0653, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0653, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0653, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0653, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0653, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0653, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0653, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0653, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0654, 0x0062], NFC: [0x00E0, 0x05AE, 0x0654, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0654, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0654, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0654, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0654, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0654, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0654, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0654, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0654, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0655, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0655, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0655, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0655, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0655, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0655, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0655, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0655, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0655, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0655, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0656, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0656, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0656, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0656, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0656, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0656, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0656, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0656, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0656, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0656, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0657, 0x0062], NFC: [0x00E0, 0x05AE, 0x0657, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0657, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0657, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0657, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0657, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0657, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0657, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0657, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0657, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0658, 0x0062], NFC: [0x00E0, 0x05AE, 0x0658, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0658, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0658, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0658, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0658, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0658, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0658, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0658, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0658, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0659, 0x0062], NFC: [0x00E0, 0x05AE, 0x0659, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0659, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0659, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0659, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0659, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0659, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0659, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0659, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0659, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x065A, 0x0062], NFC: [0x00E0, 0x05AE, 0x065A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x065A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x065A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x065A, 0x0315, 0x0062] },
+{ source: [0x0061, 0x065A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x065A, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x065A, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x065A, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x065A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x065B, 0x0062], NFC: [0x00E0, 0x05AE, 0x065B, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x065B, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x065B, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x065B, 0x0315, 0x0062] },
+{ source: [0x0061, 0x065B, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x065B, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x065B, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x065B, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x065B, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x065C, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x065C, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x065C, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x065C, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x065C, 0x059A, 0x0062] },
+{ source: [0x0061, 0x065C, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x065C, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x065C, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x065C, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x065C, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x065D, 0x0062], NFC: [0x00E0, 0x05AE, 0x065D, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x065D, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x065D, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x065D, 0x0315, 0x0062] },
+{ source: [0x0061, 0x065D, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x065D, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x065D, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x065D, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x065D, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x065E, 0x0062], NFC: [0x00E0, 0x05AE, 0x065E, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x065E, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x065E, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x065E, 0x0315, 0x0062] },
+{ source: [0x0061, 0x065E, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x065E, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x065E, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x065E, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x065E, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x065F, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x065F, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x065F, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x065F, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x065F, 0x059A, 0x0062] },
+{ source: [0x0061, 0x065F, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x065F, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x065F, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x065F, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x065F, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0711, 0x0670, 0x0652, 0x0670, 0x0062], NFC: [0x0061, 0x0652, 0x0670, 0x0670, 0x0711, 0x0062], NFD: [0x0061, 0x0652, 0x0670, 0x0670, 0x0711, 0x0062], NFKC: [0x0061, 0x0652, 0x0670, 0x0670, 0x0711, 0x0062], NFKD: [0x0061, 0x0652, 0x0670, 0x0670, 0x0711, 0x0062] },
+{ source: [0x0061, 0x0670, 0x0711, 0x0670, 0x0652, 0x0062], NFC: [0x0061, 0x0652, 0x0670, 0x0670, 0x0711, 0x0062], NFD: [0x0061, 0x0652, 0x0670, 0x0670, 0x0711, 0x0062], NFKC: [0x0061, 0x0652, 0x0670, 0x0670, 0x0711, 0x0062], NFKD: [0x0061, 0x0652, 0x0670, 0x0670, 0x0711, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06D6, 0x0062], NFC: [0x00E0, 0x05AE, 0x06D6, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06D6, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06D6, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06D6, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06D6, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06D6, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06D6, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06D6, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06D6, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06D7, 0x0062], NFC: [0x00E0, 0x05AE, 0x06D7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06D7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06D7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06D7, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06D7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06D7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06D7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06D7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06D7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06D8, 0x0062], NFC: [0x00E0, 0x05AE, 0x06D8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06D8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06D8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06D8, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06D8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06D8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06D8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06D8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06D8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06D9, 0x0062], NFC: [0x00E0, 0x05AE, 0x06D9, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06D9, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06D9, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06D9, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06D9, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06D9, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06D9, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06D9, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06D9, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06DA, 0x0062], NFC: [0x00E0, 0x05AE, 0x06DA, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06DA, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06DA, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06DA, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06DA, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06DA, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06DA, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06DA, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06DA, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06DB, 0x0062], NFC: [0x00E0, 0x05AE, 0x06DB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06DB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06DB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06DB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06DB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06DB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06DB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06DB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06DB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06DC, 0x0062], NFC: [0x00E0, 0x05AE, 0x06DC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06DC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06DC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06DC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06DC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06DC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06DC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06DC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06DC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06DF, 0x0062], NFC: [0x00E0, 0x05AE, 0x06DF, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06DF, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06DF, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06DF, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06DF, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06DF, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06DF, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06DF, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06DF, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06E0, 0x0062], NFC: [0x00E0, 0x05AE, 0x06E0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06E0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06E0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06E0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06E0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06E0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06E0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06E0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06E0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06E1, 0x0062], NFC: [0x00E0, 0x05AE, 0x06E1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06E1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06E1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06E1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06E1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06E1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06E1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06E1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06E1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06E2, 0x0062], NFC: [0x00E0, 0x05AE, 0x06E2, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06E2, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06E2, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06E2, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06E2, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06E2, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06E2, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06E2, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06E2, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x06E3, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x06E3, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x06E3, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x06E3, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x06E3, 0x059A, 0x0062] },
+{ source: [0x0061, 0x06E3, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x06E3, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x06E3, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x06E3, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x06E3, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06E4, 0x0062], NFC: [0x00E0, 0x05AE, 0x06E4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06E4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06E4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06E4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06E4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06E4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06E4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06E4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06E4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06E7, 0x0062], NFC: [0x00E0, 0x05AE, 0x06E7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06E7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06E7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06E7, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06E7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06E7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06E7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06E7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06E7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06E8, 0x0062], NFC: [0x00E0, 0x05AE, 0x06E8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06E8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06E8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06E8, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06E8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06E8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06E8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06E8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06E8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x06EA, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x06EA, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x06EA, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x06EA, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x06EA, 0x059A, 0x0062] },
+{ source: [0x0061, 0x06EA, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x06EA, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x06EA, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x06EA, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x06EA, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06EB, 0x0062], NFC: [0x00E0, 0x05AE, 0x06EB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06EB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06EB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06EB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06EB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06EB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06EB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06EB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06EB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x06EC, 0x0062], NFC: [0x00E0, 0x05AE, 0x06EC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x06EC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x06EC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x06EC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x06EC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x06EC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x06EC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x06EC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x06EC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x06ED, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x06ED, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x06ED, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x06ED, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x06ED, 0x059A, 0x0062] },
+{ source: [0x0061, 0x06ED, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x06ED, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x06ED, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x06ED, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x06ED, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0C55, 0x0711, 0x0670, 0x0711, 0x0062], NFC: [0x0061, 0x0670, 0x0711, 0x0711, 0x0C55, 0x0062], NFD: [0x0061, 0x0670, 0x0711, 0x0711, 0x0C55, 0x0062], NFKC: [0x0061, 0x0670, 0x0711, 0x0711, 0x0C55, 0x0062], NFKD: [0x0061, 0x0670, 0x0711, 0x0711, 0x0C55, 0x0062] },
+{ source: [0x0061, 0x0711, 0x0C55, 0x0711, 0x0670, 0x0062], NFC: [0x0061, 0x0670, 0x0711, 0x0711, 0x0C55, 0x0062], NFD: [0x0061, 0x0670, 0x0711, 0x0711, 0x0C55, 0x0062], NFKC: [0x0061, 0x0670, 0x0711, 0x0711, 0x0C55, 0x0062], NFKD: [0x0061, 0x0670, 0x0711, 0x0711, 0x0C55, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0730, 0x0062], NFC: [0x00E0, 0x05AE, 0x0730, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0730, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0730, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0730, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0730, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0730, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0730, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0730, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0730, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0731, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0731, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0731, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0731, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0731, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0731, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0731, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0731, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0731, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0731, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0732, 0x0062], NFC: [0x00E0, 0x05AE, 0x0732, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0732, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0732, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0732, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0732, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0732, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0732, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0732, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0732, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0733, 0x0062], NFC: [0x00E0, 0x05AE, 0x0733, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0733, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0733, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0733, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0733, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0733, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0733, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0733, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0733, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0734, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0734, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0734, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0734, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0734, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0734, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0734, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0734, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0734, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0734, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0735, 0x0062], NFC: [0x00E0, 0x05AE, 0x0735, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0735, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0735, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0735, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0735, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0735, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0735, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0735, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0735, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0736, 0x0062], NFC: [0x00E0, 0x05AE, 0x0736, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0736, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0736, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0736, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0736, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0736, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0736, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0736, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0736, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0737, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0737, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0737, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0737, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0737, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0737, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0737, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0737, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0737, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0737, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0738, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0738, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0738, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0738, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0738, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0738, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0738, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0738, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0738, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0738, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0739, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0739, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0739, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0739, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0739, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0739, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0739, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0739, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0739, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0739, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x073A, 0x0062], NFC: [0x00E0, 0x05AE, 0x073A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x073A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x073A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x073A, 0x0315, 0x0062] },
+{ source: [0x0061, 0x073A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x073A, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x073A, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x073A, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x073A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x073B, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x073B, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x073B, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x073B, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x073B, 0x059A, 0x0062] },
+{ source: [0x0061, 0x073B, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x073B, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x073B, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x073B, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x073B, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x073C, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x073C, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x073C, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x073C, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x073C, 0x059A, 0x0062] },
+{ source: [0x0061, 0x073C, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x073C, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x073C, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x073C, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x073C, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x073D, 0x0062], NFC: [0x00E0, 0x05AE, 0x073D, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x073D, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x073D, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x073D, 0x0315, 0x0062] },
+{ source: [0x0061, 0x073D, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x073D, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x073D, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x073D, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x073D, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x073E, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x073E, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x073E, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x073E, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x073E, 0x059A, 0x0062] },
+{ source: [0x0061, 0x073E, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x073E, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x073E, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x073E, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x073E, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x073F, 0x0062], NFC: [0x00E0, 0x05AE, 0x073F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x073F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x073F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x073F, 0x0315, 0x0062] },
+{ source: [0x0061, 0x073F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x073F, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x073F, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x073F, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x073F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0740, 0x0062], NFC: [0x00E0, 0x05AE, 0x0740, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0740, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0740, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0740, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0740, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0740, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0740, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0740, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0740, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0741, 0x0062], NFC: [0x00E0, 0x05AE, 0x0741, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0741, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0741, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0741, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0741, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0741, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0741, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0741, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0741, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0742, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0742, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0742, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0742, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0742, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0742, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0742, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0742, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0742, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0742, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0743, 0x0062], NFC: [0x00E0, 0x05AE, 0x0743, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0743, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0743, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0743, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0743, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0743, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0743, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0743, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0743, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0744, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0744, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0744, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0744, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0744, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0744, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0744, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0744, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0744, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0744, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0745, 0x0062], NFC: [0x00E0, 0x05AE, 0x0745, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0745, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0745, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0745, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0745, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0745, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0745, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0745, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0745, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0746, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0746, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0746, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0746, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0746, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0746, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0746, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0746, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0746, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0746, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0747, 0x0062], NFC: [0x00E0, 0x05AE, 0x0747, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0747, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0747, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0747, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0747, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0747, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0747, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0747, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0747, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0748, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0748, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0748, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0748, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0748, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0748, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0748, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0748, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0748, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0748, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0749, 0x0062], NFC: [0x00E0, 0x05AE, 0x0749, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0749, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0749, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0749, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0749, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0749, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0749, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0749, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0749, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x074A, 0x0062], NFC: [0x00E0, 0x05AE, 0x074A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x074A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x074A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x074A, 0x0315, 0x0062] },
+{ source: [0x0061, 0x074A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x074A, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x074A, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x074A, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x074A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x07EB, 0x0062], NFC: [0x00E0, 0x05AE, 0x07EB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x07EB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x07EB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x07EB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x07EB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x07EB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x07EB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x07EB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x07EB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x07EC, 0x0062], NFC: [0x00E0, 0x05AE, 0x07EC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x07EC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x07EC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x07EC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x07EC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x07EC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x07EC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x07EC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x07EC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x07ED, 0x0062], NFC: [0x00E0, 0x05AE, 0x07ED, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x07ED, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x07ED, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x07ED, 0x0315, 0x0062] },
+{ source: [0x0061, 0x07ED, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x07ED, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x07ED, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x07ED, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x07ED, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x07EE, 0x0062], NFC: [0x00E0, 0x05AE, 0x07EE, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x07EE, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x07EE, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x07EE, 0x0315, 0x0062] },
+{ source: [0x0061, 0x07EE, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x07EE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x07EE, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x07EE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x07EE, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x07EF, 0x0062], NFC: [0x00E0, 0x05AE, 0x07EF, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x07EF, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x07EF, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x07EF, 0x0315, 0x0062] },
+{ source: [0x0061, 0x07EF, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x07EF, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x07EF, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x07EF, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x07EF, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x07F0, 0x0062], NFC: [0x00E0, 0x05AE, 0x07F0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x07F0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x07F0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x07F0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x07F0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x07F0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x07F0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x07F0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x07F0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x07F1, 0x0062], NFC: [0x00E0, 0x05AE, 0x07F1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x07F1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x07F1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x07F1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x07F1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x07F1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x07F1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x07F1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x07F1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x07F2, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x07F2, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x07F2, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x07F2, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x07F2, 0x059A, 0x0062] },
+{ source: [0x0061, 0x07F2, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x07F2, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x07F2, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x07F2, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x07F2, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x07F3, 0x0062], NFC: [0x00E0, 0x05AE, 0x07F3, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x07F3, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x07F3, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x07F3, 0x0315, 0x0062] },
+{ source: [0x0061, 0x07F3, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x07F3, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x07F3, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x07F3, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x07F3, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0816, 0x0062], NFC: [0x00E0, 0x05AE, 0x0816, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0816, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0816, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0816, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0816, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0816, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0816, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0816, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0816, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0817, 0x0062], NFC: [0x00E0, 0x05AE, 0x0817, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0817, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0817, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0817, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0817, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0817, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0817, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0817, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0817, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0818, 0x0062], NFC: [0x00E0, 0x05AE, 0x0818, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0818, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0818, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0818, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0818, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0818, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0818, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0818, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0818, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0819, 0x0062], NFC: [0x00E0, 0x05AE, 0x0819, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0819, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0819, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0819, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0819, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0819, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0819, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0819, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0819, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x081B, 0x0062], NFC: [0x00E0, 0x05AE, 0x081B, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x081B, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x081B, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x081B, 0x0315, 0x0062] },
+{ source: [0x0061, 0x081B, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x081B, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x081B, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x081B, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x081B, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x081C, 0x0062], NFC: [0x00E0, 0x05AE, 0x081C, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x081C, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x081C, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x081C, 0x0315, 0x0062] },
+{ source: [0x0061, 0x081C, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x081C, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x081C, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x081C, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x081C, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x081D, 0x0062], NFC: [0x00E0, 0x05AE, 0x081D, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x081D, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x081D, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x081D, 0x0315, 0x0062] },
+{ source: [0x0061, 0x081D, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x081D, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x081D, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x081D, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x081D, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x081E, 0x0062], NFC: [0x00E0, 0x05AE, 0x081E, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x081E, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x081E, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x081E, 0x0315, 0x0062] },
+{ source: [0x0061, 0x081E, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x081E, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x081E, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x081E, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x081E, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x081F, 0x0062], NFC: [0x00E0, 0x05AE, 0x081F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x081F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x081F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x081F, 0x0315, 0x0062] },
+{ source: [0x0061, 0x081F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x081F, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x081F, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x081F, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x081F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0820, 0x0062], NFC: [0x00E0, 0x05AE, 0x0820, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0820, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0820, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0820, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0820, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0820, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0820, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0820, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0820, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0821, 0x0062], NFC: [0x00E0, 0x05AE, 0x0821, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0821, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0821, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0821, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0821, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0821, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0821, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0821, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0821, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0822, 0x0062], NFC: [0x00E0, 0x05AE, 0x0822, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0822, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0822, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0822, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0822, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0822, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0822, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0822, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0822, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0823, 0x0062], NFC: [0x00E0, 0x05AE, 0x0823, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0823, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0823, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0823, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0823, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0823, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0823, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0823, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0823, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0825, 0x0062], NFC: [0x00E0, 0x05AE, 0x0825, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0825, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0825, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0825, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0825, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0825, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0825, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0825, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0825, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0826, 0x0062], NFC: [0x00E0, 0x05AE, 0x0826, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0826, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0826, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0826, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0826, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0826, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0826, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0826, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0826, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0827, 0x0062], NFC: [0x00E0, 0x05AE, 0x0827, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0827, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0827, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0827, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0827, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0827, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0827, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0827, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0827, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0829, 0x0062], NFC: [0x00E0, 0x05AE, 0x0829, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0829, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0829, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0829, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0829, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0829, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0829, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0829, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0829, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x082A, 0x0062], NFC: [0x00E0, 0x05AE, 0x082A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x082A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x082A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x082A, 0x0315, 0x0062] },
+{ source: [0x0061, 0x082A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x082A, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x082A, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x082A, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x082A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x082B, 0x0062], NFC: [0x00E0, 0x05AE, 0x082B, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x082B, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x082B, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x082B, 0x0315, 0x0062] },
+{ source: [0x0061, 0x082B, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x082B, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x082B, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x082B, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x082B, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x082C, 0x0062], NFC: [0x00E0, 0x05AE, 0x082C, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x082C, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x082C, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x082C, 0x0315, 0x0062] },
+{ source: [0x0061, 0x082C, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x082C, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x082C, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x082C, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x082C, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x082D, 0x0062], NFC: [0x00E0, 0x05AE, 0x082D, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x082D, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x082D, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x082D, 0x0315, 0x0062] },
+{ source: [0x0061, 0x082D, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x082D, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x082D, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x082D, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x082D, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0859, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0859, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0859, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0859, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0859, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0859, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0859, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0859, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0859, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0859, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x085A, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x085A, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x085A, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x085A, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x085A, 0x059A, 0x0062] },
+{ source: [0x0061, 0x085A, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x085A, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x085A, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x085A, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x085A, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x085B, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x085B, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x085B, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x085B, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x085B, 0x059A, 0x0062] },
+{ source: [0x0061, 0x085B, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x085B, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x085B, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x085B, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x085B, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08D4, 0x0062], NFC: [0x00E0, 0x05AE, 0x08D4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08D4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08D4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08D4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08D4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08D4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08D4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08D4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08D4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08D5, 0x0062], NFC: [0x00E0, 0x05AE, 0x08D5, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08D5, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08D5, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08D5, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08D5, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08D5, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08D5, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08D5, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08D5, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08D6, 0x0062], NFC: [0x00E0, 0x05AE, 0x08D6, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08D6, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08D6, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08D6, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08D6, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08D6, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08D6, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08D6, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08D6, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08D7, 0x0062], NFC: [0x00E0, 0x05AE, 0x08D7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08D7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08D7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08D7, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08D7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08D7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08D7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08D7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08D7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08D8, 0x0062], NFC: [0x00E0, 0x05AE, 0x08D8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08D8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08D8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08D8, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08D8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08D8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08D8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08D8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08D8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08D9, 0x0062], NFC: [0x00E0, 0x05AE, 0x08D9, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08D9, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08D9, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08D9, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08D9, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08D9, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08D9, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08D9, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08D9, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08DA, 0x0062], NFC: [0x00E0, 0x05AE, 0x08DA, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08DA, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08DA, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08DA, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08DA, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08DA, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08DA, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08DA, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08DA, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08DB, 0x0062], NFC: [0x00E0, 0x05AE, 0x08DB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08DB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08DB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08DB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08DB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08DB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08DB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08DB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08DB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08DC, 0x0062], NFC: [0x00E0, 0x05AE, 0x08DC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08DC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08DC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08DC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08DC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08DC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08DC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08DC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08DC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08DD, 0x0062], NFC: [0x00E0, 0x05AE, 0x08DD, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08DD, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08DD, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08DD, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08DD, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08DD, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08DD, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08DD, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08DD, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08DE, 0x0062], NFC: [0x00E0, 0x05AE, 0x08DE, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08DE, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08DE, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08DE, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08DE, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08DE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08DE, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08DE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08DE, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08DF, 0x0062], NFC: [0x00E0, 0x05AE, 0x08DF, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08DF, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08DF, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08DF, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08DF, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08DF, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08DF, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08DF, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08DF, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08E0, 0x0062], NFC: [0x00E0, 0x05AE, 0x08E0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08E0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08E0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08E0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08E0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08E0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08E0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08E0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08E0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08E1, 0x0062], NFC: [0x00E0, 0x05AE, 0x08E1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08E1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08E1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08E1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08E1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08E1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08E1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08E1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08E1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x08E3, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x08E3, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x08E3, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x08E3, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x08E3, 0x059A, 0x0062] },
+{ source: [0x0061, 0x08E3, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x08E3, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x08E3, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x08E3, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x08E3, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08E4, 0x0062], NFC: [0x00E0, 0x05AE, 0x08E4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08E4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08E4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08E4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08E4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08E4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08E4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08E4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08E4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08E5, 0x0062], NFC: [0x00E0, 0x05AE, 0x08E5, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08E5, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08E5, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08E5, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08E5, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08E5, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08E5, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08E5, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08E5, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x08E6, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x08E6, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x08E6, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x08E6, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x08E6, 0x059A, 0x0062] },
+{ source: [0x0061, 0x08E6, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x08E6, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x08E6, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x08E6, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x08E6, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08E7, 0x0062], NFC: [0x00E0, 0x05AE, 0x08E7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08E7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08E7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08E7, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08E7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08E7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08E7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08E7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08E7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08E8, 0x0062], NFC: [0x00E0, 0x05AE, 0x08E8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08E8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08E8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08E8, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08E8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08E8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08E8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08E8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08E8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x08E9, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x08E9, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x08E9, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x08E9, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x08E9, 0x059A, 0x0062] },
+{ source: [0x0061, 0x08E9, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x08E9, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x08E9, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x08E9, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x08E9, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08EA, 0x0062], NFC: [0x00E0, 0x05AE, 0x08EA, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08EA, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08EA, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08EA, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08EA, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08EA, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08EA, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08EA, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08EA, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08EB, 0x0062], NFC: [0x00E0, 0x05AE, 0x08EB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08EB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08EB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08EB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08EB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08EB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08EB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08EB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08EB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08EC, 0x0062], NFC: [0x00E0, 0x05AE, 0x08EC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08EC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08EC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08EC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08EC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08EC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08EC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08EC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08EC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x08ED, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x08ED, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x08ED, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x08ED, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x08ED, 0x059A, 0x0062] },
+{ source: [0x0061, 0x08ED, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x08ED, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x08ED, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x08ED, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x08ED, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x08EE, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x08EE, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x08EE, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x08EE, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x08EE, 0x059A, 0x0062] },
+{ source: [0x0061, 0x08EE, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x08EE, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x08EE, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x08EE, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x08EE, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x08EF, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x08EF, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x08EF, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x08EF, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x08EF, 0x059A, 0x0062] },
+{ source: [0x0061, 0x08EF, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x08EF, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x08EF, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x08EF, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x08EF, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x064C, 0x064B, 0xFB1E, 0x08F0, 0x0062], NFC: [0x0061, 0xFB1E, 0x064B, 0x08F0, 0x064C, 0x0062], NFD: [0x0061, 0xFB1E, 0x064B, 0x08F0, 0x064C, 0x0062], NFKC: [0x0061, 0xFB1E, 0x064B, 0x08F0, 0x064C, 0x0062], NFKD: [0x0061, 0xFB1E, 0x064B, 0x08F0, 0x064C, 0x0062] },
+{ source: [0x0061, 0x08F0, 0x064C, 0x064B, 0xFB1E, 0x0062], NFC: [0x0061, 0xFB1E, 0x08F0, 0x064B, 0x064C, 0x0062], NFD: [0x0061, 0xFB1E, 0x08F0, 0x064B, 0x064C, 0x0062], NFKC: [0x0061, 0xFB1E, 0x08F0, 0x064B, 0x064C, 0x0062], NFKD: [0x0061, 0xFB1E, 0x08F0, 0x064B, 0x064C, 0x0062] },
+{ source: [0x0061, 0x064D, 0x064C, 0x064B, 0x08F1, 0x0062], NFC: [0x0061, 0x064B, 0x064C, 0x08F1, 0x064D, 0x0062], NFD: [0x0061, 0x064B, 0x064C, 0x08F1, 0x064D, 0x0062], NFKC: [0x0061, 0x064B, 0x064C, 0x08F1, 0x064D, 0x0062], NFKD: [0x0061, 0x064B, 0x064C, 0x08F1, 0x064D, 0x0062] },
+{ source: [0x0061, 0x08F1, 0x064D, 0x064C, 0x064B, 0x0062], NFC: [0x0061, 0x064B, 0x08F1, 0x064C, 0x064D, 0x0062], NFD: [0x0061, 0x064B, 0x08F1, 0x064C, 0x064D, 0x0062], NFKC: [0x0061, 0x064B, 0x08F1, 0x064C, 0x064D, 0x0062], NFKD: [0x0061, 0x064B, 0x08F1, 0x064C, 0x064D, 0x0062] },
+{ source: [0x0061, 0x0618, 0x064D, 0x064C, 0x08F2, 0x0062], NFC: [0x0061, 0x064C, 0x064D, 0x08F2, 0x0618, 0x0062], NFD: [0x0061, 0x064C, 0x064D, 0x08F2, 0x0618, 0x0062], NFKC: [0x0061, 0x064C, 0x064D, 0x08F2, 0x0618, 0x0062], NFKD: [0x0061, 0x064C, 0x064D, 0x08F2, 0x0618, 0x0062] },
+{ source: [0x0061, 0x08F2, 0x0618, 0x064D, 0x064C, 0x0062], NFC: [0x0061, 0x064C, 0x08F2, 0x064D, 0x0618, 0x0062], NFD: [0x0061, 0x064C, 0x08F2, 0x064D, 0x0618, 0x0062], NFKC: [0x0061, 0x064C, 0x08F2, 0x064D, 0x0618, 0x0062], NFKD: [0x0061, 0x064C, 0x08F2, 0x064D, 0x0618, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08F3, 0x0062], NFC: [0x00E0, 0x05AE, 0x08F3, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08F3, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08F3, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08F3, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08F3, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08F3, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08F3, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08F3, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08F3, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08F4, 0x0062], NFC: [0x00E0, 0x05AE, 0x08F4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08F4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08F4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08F4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08F4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08F4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08F4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08F4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08F4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08F5, 0x0062], NFC: [0x00E0, 0x05AE, 0x08F5, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08F5, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08F5, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08F5, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08F5, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08F5, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08F5, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08F5, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08F5, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x08F6, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x08F6, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x08F6, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x08F6, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x08F6, 0x059A, 0x0062] },
+{ source: [0x0061, 0x08F6, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x08F6, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x08F6, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x08F6, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x08F6, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08F7, 0x0062], NFC: [0x00E0, 0x05AE, 0x08F7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08F7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08F7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08F7, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08F7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08F7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08F7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08F7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08F7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08F8, 0x0062], NFC: [0x00E0, 0x05AE, 0x08F8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08F8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08F8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08F8, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08F8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08F8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08F8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08F8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08F8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x08F9, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x08F9, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x08F9, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x08F9, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x08F9, 0x059A, 0x0062] },
+{ source: [0x0061, 0x08F9, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x08F9, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x08F9, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x08F9, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x08F9, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x08FA, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x08FA, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x08FA, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x08FA, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x08FA, 0x059A, 0x0062] },
+{ source: [0x0061, 0x08FA, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x08FA, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x08FA, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x08FA, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x08FA, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08FB, 0x0062], NFC: [0x00E0, 0x05AE, 0x08FB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08FB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08FB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08FB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08FB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08FB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08FB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08FB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08FB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08FC, 0x0062], NFC: [0x00E0, 0x05AE, 0x08FC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08FC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08FC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08FC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08FC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08FC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08FC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08FC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08FC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08FD, 0x0062], NFC: [0x00E0, 0x05AE, 0x08FD, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08FD, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08FD, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08FD, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08FD, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08FD, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08FD, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08FD, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08FD, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08FE, 0x0062], NFC: [0x00E0, 0x05AE, 0x08FE, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08FE, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08FE, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08FE, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08FE, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08FE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08FE, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08FE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08FE, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x08FF, 0x0062], NFC: [0x00E0, 0x05AE, 0x08FF, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x08FF, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x08FF, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x08FF, 0x0315, 0x0062] },
+{ source: [0x0061, 0x08FF, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x08FF, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x08FF, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x08FF, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x08FF, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x093C, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x093C, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x094D, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x094D, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0951, 0x0062], NFC: [0x00E0, 0x05AE, 0x0951, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0951, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0951, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0951, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0951, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0951, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0951, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0951, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0951, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0952, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0952, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0952, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0952, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0952, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0952, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0952, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0952, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0952, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0952, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0953, 0x0062], NFC: [0x00E0, 0x05AE, 0x0953, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0953, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0953, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0953, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0953, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0953, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0953, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0953, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0953, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0954, 0x0062], NFC: [0x00E0, 0x05AE, 0x0954, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0954, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0954, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0954, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0954, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0954, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0954, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0954, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0954, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x09BC, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x09BC, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x09BC, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x09BC, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x09BC, 0x3099, 0x0062] },
+{ source: [0x0061, 0x09BC, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x09BC, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x09BC, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x09BC, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x09BC, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x09CD, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x09CD, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x09CD, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x09CD, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x09CD, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x09CD, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x09CD, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x09CD, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x09CD, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x09CD, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x0A3C, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x0A3C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x0A3C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x0A3C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x0A3C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x0A3C, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x0A3C, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x0A3C, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x0A3C, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x0A3C, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x0A4D, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x0A4D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x0A4D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x0A4D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x0A4D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0A4D, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x0A4D, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x0A4D, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x0A4D, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x0A4D, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x0ABC, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x0ABC, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x0ABC, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x0ABC, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x0ABC, 0x3099, 0x0062] },
+{ source: [0x0061, 0x0ABC, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x0ABC, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x0ABC, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x0ABC, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x0ABC, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x0ACD, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x0ACD, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x0ACD, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x0ACD, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x0ACD, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0ACD, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x0ACD, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x0ACD, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x0ACD, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x0ACD, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x0B3C, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x0B3C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x0B3C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x0B3C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x0B3C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x0B3C, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x0B3C, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x0B3C, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x0B3C, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x0B3C, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x0B4D, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x0B4D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x0B4D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x0B4D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x0B4D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0B4D, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x0B4D, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x0B4D, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x0B4D, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x0B4D, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x0BCD, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x0BCD, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x0BCD, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x0BCD, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x0BCD, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0BCD, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x0BCD, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x0BCD, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x0BCD, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x0BCD, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x0C4D, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x0C4D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x0C4D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x0C4D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x0C4D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0C4D, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x0C4D, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x0C4D, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x0C4D, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x0C4D, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0C56, 0x0C55, 0x0711, 0x0C55, 0x0062], NFC: [0x0061, 0x0711, 0x0C55, 0x0C55, 0x0C56, 0x0062], NFD: [0x0061, 0x0711, 0x0C55, 0x0C55, 0x0C56, 0x0062], NFKC: [0x0061, 0x0711, 0x0C55, 0x0C55, 0x0C56, 0x0062], NFKD: [0x0061, 0x0711, 0x0C55, 0x0C55, 0x0C56, 0x0062] },
+{ source: [0x0061, 0x0C55, 0x0C56, 0x0C55, 0x0711, 0x0062], NFC: [0x0061, 0x0711, 0x0C55, 0x0C55, 0x0C56, 0x0062], NFD: [0x0061, 0x0711, 0x0C55, 0x0C55, 0x0C56, 0x0062], NFKC: [0x0061, 0x0711, 0x0C55, 0x0C55, 0x0C56, 0x0062], NFKD: [0x0061, 0x0711, 0x0C55, 0x0C55, 0x0C56, 0x0062] },
+{ source: [0x0061, 0x0E38, 0x0C56, 0x0C55, 0x0C56, 0x0062], NFC: [0x0061, 0x0C55, 0x0C56, 0x0C56, 0x0E38, 0x0062], NFD: [0x0061, 0x0C55, 0x0C56, 0x0C56, 0x0E38, 0x0062], NFKC: [0x0061, 0x0C55, 0x0C56, 0x0C56, 0x0E38, 0x0062], NFKD: [0x0061, 0x0C55, 0x0C56, 0x0C56, 0x0E38, 0x0062] },
+{ source: [0x0061, 0x0C56, 0x0E38, 0x0C56, 0x0C55, 0x0062], NFC: [0x0061, 0x0C55, 0x0C56, 0x0C56, 0x0E38, 0x0062], NFD: [0x0061, 0x0C55, 0x0C56, 0x0C56, 0x0E38, 0x0062], NFKC: [0x0061, 0x0C55, 0x0C56, 0x0C56, 0x0E38, 0x0062], NFKD: [0x0061, 0x0C55, 0x0C56, 0x0C56, 0x0E38, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x0CBC, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x0CBC, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x0CBC, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x0CBC, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x0CBC, 0x3099, 0x0062] },
+{ source: [0x0061, 0x0CBC, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x0CBC, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x0CBC, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x0CBC, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x0CBC, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x0CCD, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x0CCD, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x0CCD, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x0CCD, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x0CCD, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0CCD, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x0CCD, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x0CCD, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x0CCD, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x0CCD, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x0D4D, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x0D4D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x0D4D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x0D4D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x0D4D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0D4D, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x0D4D, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x0D4D, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x0D4D, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x0D4D, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x0DCA, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x0DCA, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x0DCA, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x0DCA, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x0DCA, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0DCA, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x0DCA, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x0DCA, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x0DCA, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x0DCA, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0E48, 0x0E38, 0x0C56, 0x0E38, 0x0062], NFC: [0x0061, 0x0C56, 0x0E38, 0x0E38, 0x0E48, 0x0062], NFD: [0x0061, 0x0C56, 0x0E38, 0x0E38, 0x0E48, 0x0062], NFKC: [0x0061, 0x0C56, 0x0E38, 0x0E38, 0x0E48, 0x0062], NFKD: [0x0061, 0x0C56, 0x0E38, 0x0E38, 0x0E48, 0x0062] },
+{ source: [0x0061, 0x0E38, 0x0E48, 0x0E38, 0x0C56, 0x0062], NFC: [0x0061, 0x0C56, 0x0E38, 0x0E38, 0x0E48, 0x0062], NFD: [0x0061, 0x0C56, 0x0E38, 0x0E38, 0x0E48, 0x0062], NFKC: [0x0061, 0x0C56, 0x0E38, 0x0E38, 0x0E48, 0x0062], NFKD: [0x0061, 0x0C56, 0x0E38, 0x0E38, 0x0E48, 0x0062] },
+{ source: [0x0061, 0x0E48, 0x0E38, 0x0C56, 0x0E39, 0x0062], NFC: [0x0061, 0x0C56, 0x0E38, 0x0E39, 0x0E48, 0x0062], NFD: [0x0061, 0x0C56, 0x0E38, 0x0E39, 0x0E48, 0x0062], NFKC: [0x0061, 0x0C56, 0x0E38, 0x0E39, 0x0E48, 0x0062], NFKD: [0x0061, 0x0C56, 0x0E38, 0x0E39, 0x0E48, 0x0062] },
+{ source: [0x0061, 0x0E39, 0x0E48, 0x0E38, 0x0C56, 0x0062], NFC: [0x0061, 0x0C56, 0x0E39, 0x0E38, 0x0E48, 0x0062], NFD: [0x0061, 0x0C56, 0x0E39, 0x0E38, 0x0E48, 0x0062], NFKC: [0x0061, 0x0C56, 0x0E39, 0x0E38, 0x0E48, 0x0062], NFKD: [0x0061, 0x0C56, 0x0E39, 0x0E38, 0x0E48, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x0E3A, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x0E3A, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x0E3A, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x0E3A, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x0E3A, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0E3A, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x0E3A, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x0E3A, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x0E3A, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x0E3A, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0EB8, 0x0E48, 0x0E38, 0x0E48, 0x0062], NFC: [0x0061, 0x0E38, 0x0E48, 0x0E48, 0x0EB8, 0x0062], NFD: [0x0061, 0x0E38, 0x0E48, 0x0E48, 0x0EB8, 0x0062], NFKC: [0x0061, 0x0E38, 0x0E48, 0x0E48, 0x0EB8, 0x0062], NFKD: [0x0061, 0x0E38, 0x0E48, 0x0E48, 0x0EB8, 0x0062] },
+{ source: [0x0061, 0x0E48, 0x0EB8, 0x0E48, 0x0E38, 0x0062], NFC: [0x0061, 0x0E38, 0x0E48, 0x0E48, 0x0EB8, 0x0062], NFD: [0x0061, 0x0E38, 0x0E48, 0x0E48, 0x0EB8, 0x0062], NFKC: [0x0061, 0x0E38, 0x0E48, 0x0E48, 0x0EB8, 0x0062], NFKD: [0x0061, 0x0E38, 0x0E48, 0x0E48, 0x0EB8, 0x0062] },
+{ source: [0x0061, 0x0EB8, 0x0E48, 0x0E38, 0x0E49, 0x0062], NFC: [0x0061, 0x0E38, 0x0E48, 0x0E49, 0x0EB8, 0x0062], NFD: [0x0061, 0x0E38, 0x0E48, 0x0E49, 0x0EB8, 0x0062], NFKC: [0x0061, 0x0E38, 0x0E48, 0x0E49, 0x0EB8, 0x0062], NFKD: [0x0061, 0x0E38, 0x0E48, 0x0E49, 0x0EB8, 0x0062] },
+{ source: [0x0061, 0x0E49, 0x0EB8, 0x0E48, 0x0E38, 0x0062], NFC: [0x0061, 0x0E38, 0x0E49, 0x0E48, 0x0EB8, 0x0062], NFD: [0x0061, 0x0E38, 0x0E49, 0x0E48, 0x0EB8, 0x0062], NFKC: [0x0061, 0x0E38, 0x0E49, 0x0E48, 0x0EB8, 0x0062], NFKD: [0x0061, 0x0E38, 0x0E49, 0x0E48, 0x0EB8, 0x0062] },
+{ source: [0x0061, 0x0EB8, 0x0E48, 0x0E38, 0x0E4A, 0x0062], NFC: [0x0061, 0x0E38, 0x0E48, 0x0E4A, 0x0EB8, 0x0062], NFD: [0x0061, 0x0E38, 0x0E48, 0x0E4A, 0x0EB8, 0x0062], NFKC: [0x0061, 0x0E38, 0x0E48, 0x0E4A, 0x0EB8, 0x0062], NFKD: [0x0061, 0x0E38, 0x0E48, 0x0E4A, 0x0EB8, 0x0062] },
+{ source: [0x0061, 0x0E4A, 0x0EB8, 0x0E48, 0x0E38, 0x0062], NFC: [0x0061, 0x0E38, 0x0E4A, 0x0E48, 0x0EB8, 0x0062], NFD: [0x0061, 0x0E38, 0x0E4A, 0x0E48, 0x0EB8, 0x0062], NFKC: [0x0061, 0x0E38, 0x0E4A, 0x0E48, 0x0EB8, 0x0062], NFKD: [0x0061, 0x0E38, 0x0E4A, 0x0E48, 0x0EB8, 0x0062] },
+{ source: [0x0061, 0x0EB8, 0x0E48, 0x0E38, 0x0E4B, 0x0062], NFC: [0x0061, 0x0E38, 0x0E48, 0x0E4B, 0x0EB8, 0x0062], NFD: [0x0061, 0x0E38, 0x0E48, 0x0E4B, 0x0EB8, 0x0062], NFKC: [0x0061, 0x0E38, 0x0E48, 0x0E4B, 0x0EB8, 0x0062], NFKD: [0x0061, 0x0E38, 0x0E48, 0x0E4B, 0x0EB8, 0x0062] },
+{ source: [0x0061, 0x0E4B, 0x0EB8, 0x0E48, 0x0E38, 0x0062], NFC: [0x0061, 0x0E38, 0x0E4B, 0x0E48, 0x0EB8, 0x0062], NFD: [0x0061, 0x0E38, 0x0E4B, 0x0E48, 0x0EB8, 0x0062], NFKC: [0x0061, 0x0E38, 0x0E4B, 0x0E48, 0x0EB8, 0x0062], NFKD: [0x0061, 0x0E38, 0x0E4B, 0x0E48, 0x0EB8, 0x0062] },
+{ source: [0x0061, 0x0EC8, 0x0EB8, 0x0E48, 0x0EB8, 0x0062], NFC: [0x0061, 0x0E48, 0x0EB8, 0x0EB8, 0x0EC8, 0x0062], NFD: [0x0061, 0x0E48, 0x0EB8, 0x0EB8, 0x0EC8, 0x0062], NFKC: [0x0061, 0x0E48, 0x0EB8, 0x0EB8, 0x0EC8, 0x0062], NFKD: [0x0061, 0x0E48, 0x0EB8, 0x0EB8, 0x0EC8, 0x0062] },
+{ source: [0x0061, 0x0EB8, 0x0EC8, 0x0EB8, 0x0E48, 0x0062], NFC: [0x0061, 0x0E48, 0x0EB8, 0x0EB8, 0x0EC8, 0x0062], NFD: [0x0061, 0x0E48, 0x0EB8, 0x0EB8, 0x0EC8, 0x0062], NFKC: [0x0061, 0x0E48, 0x0EB8, 0x0EB8, 0x0EC8, 0x0062], NFKD: [0x0061, 0x0E48, 0x0EB8, 0x0EB8, 0x0EC8, 0x0062] },
+{ source: [0x0061, 0x0EC8, 0x0EB8, 0x0E48, 0x0EB9, 0x0062], NFC: [0x0061, 0x0E48, 0x0EB8, 0x0EB9, 0x0EC8, 0x0062], NFD: [0x0061, 0x0E48, 0x0EB8, 0x0EB9, 0x0EC8, 0x0062], NFKC: [0x0061, 0x0E48, 0x0EB8, 0x0EB9, 0x0EC8, 0x0062], NFKD: [0x0061, 0x0E48, 0x0EB8, 0x0EB9, 0x0EC8, 0x0062] },
+{ source: [0x0061, 0x0EB9, 0x0EC8, 0x0EB8, 0x0E48, 0x0062], NFC: [0x0061, 0x0E48, 0x0EB9, 0x0EB8, 0x0EC8, 0x0062], NFD: [0x0061, 0x0E48, 0x0EB9, 0x0EB8, 0x0EC8, 0x0062], NFKC: [0x0061, 0x0E48, 0x0EB9, 0x0EB8, 0x0EC8, 0x0062], NFKD: [0x0061, 0x0E48, 0x0EB9, 0x0EB8, 0x0EC8, 0x0062] },
+{ source: [0x0061, 0x0F71, 0x0EC8, 0x0EB8, 0x0EC8, 0x0062], NFC: [0x0061, 0x0EB8, 0x0EC8, 0x0EC8, 0x0F71, 0x0062], NFD: [0x0061, 0x0EB8, 0x0EC8, 0x0EC8, 0x0F71, 0x0062], NFKC: [0x0061, 0x0EB8, 0x0EC8, 0x0EC8, 0x0F71, 0x0062], NFKD: [0x0061, 0x0EB8, 0x0EC8, 0x0EC8, 0x0F71, 0x0062] },
+{ source: [0x0061, 0x0EC8, 0x0F71, 0x0EC8, 0x0EB8, 0x0062], NFC: [0x0061, 0x0EB8, 0x0EC8, 0x0EC8, 0x0F71, 0x0062], NFD: [0x0061, 0x0EB8, 0x0EC8, 0x0EC8, 0x0F71, 0x0062], NFKC: [0x0061, 0x0EB8, 0x0EC8, 0x0EC8, 0x0F71, 0x0062], NFKD: [0x0061, 0x0EB8, 0x0EC8, 0x0EC8, 0x0F71, 0x0062] },
+{ source: [0x0061, 0x0F71, 0x0EC8, 0x0EB8, 0x0EC9, 0x0062], NFC: [0x0061, 0x0EB8, 0x0EC8, 0x0EC9, 0x0F71, 0x0062], NFD: [0x0061, 0x0EB8, 0x0EC8, 0x0EC9, 0x0F71, 0x0062], NFKC: [0x0061, 0x0EB8, 0x0EC8, 0x0EC9, 0x0F71, 0x0062], NFKD: [0x0061, 0x0EB8, 0x0EC8, 0x0EC9, 0x0F71, 0x0062] },
+{ source: [0x0061, 0x0EC9, 0x0F71, 0x0EC8, 0x0EB8, 0x0062], NFC: [0x0061, 0x0EB8, 0x0EC9, 0x0EC8, 0x0F71, 0x0062], NFD: [0x0061, 0x0EB8, 0x0EC9, 0x0EC8, 0x0F71, 0x0062], NFKC: [0x0061, 0x0EB8, 0x0EC9, 0x0EC8, 0x0F71, 0x0062], NFKD: [0x0061, 0x0EB8, 0x0EC9, 0x0EC8, 0x0F71, 0x0062] },
+{ source: [0x0061, 0x0F71, 0x0EC8, 0x0EB8, 0x0ECA, 0x0062], NFC: [0x0061, 0x0EB8, 0x0EC8, 0x0ECA, 0x0F71, 0x0062], NFD: [0x0061, 0x0EB8, 0x0EC8, 0x0ECA, 0x0F71, 0x0062], NFKC: [0x0061, 0x0EB8, 0x0EC8, 0x0ECA, 0x0F71, 0x0062], NFKD: [0x0061, 0x0EB8, 0x0EC8, 0x0ECA, 0x0F71, 0x0062] },
+{ source: [0x0061, 0x0ECA, 0x0F71, 0x0EC8, 0x0EB8, 0x0062], NFC: [0x0061, 0x0EB8, 0x0ECA, 0x0EC8, 0x0F71, 0x0062], NFD: [0x0061, 0x0EB8, 0x0ECA, 0x0EC8, 0x0F71, 0x0062], NFKC: [0x0061, 0x0EB8, 0x0ECA, 0x0EC8, 0x0F71, 0x0062], NFKD: [0x0061, 0x0EB8, 0x0ECA, 0x0EC8, 0x0F71, 0x0062] },
+{ source: [0x0061, 0x0F71, 0x0EC8, 0x0EB8, 0x0ECB, 0x0062], NFC: [0x0061, 0x0EB8, 0x0EC8, 0x0ECB, 0x0F71, 0x0062], NFD: [0x0061, 0x0EB8, 0x0EC8, 0x0ECB, 0x0F71, 0x0062], NFKC: [0x0061, 0x0EB8, 0x0EC8, 0x0ECB, 0x0F71, 0x0062], NFKD: [0x0061, 0x0EB8, 0x0EC8, 0x0ECB, 0x0F71, 0x0062] },
+{ source: [0x0061, 0x0ECB, 0x0F71, 0x0EC8, 0x0EB8, 0x0062], NFC: [0x0061, 0x0EB8, 0x0ECB, 0x0EC8, 0x0F71, 0x0062], NFD: [0x0061, 0x0EB8, 0x0ECB, 0x0EC8, 0x0F71, 0x0062], NFKC: [0x0061, 0x0EB8, 0x0ECB, 0x0EC8, 0x0F71, 0x0062], NFKD: [0x0061, 0x0EB8, 0x0ECB, 0x0EC8, 0x0F71, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0F18, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0F18, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0F18, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0F18, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0F18, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0F18, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0F18, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0F18, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0F18, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0F18, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0F19, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0F19, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0F19, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0F19, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0F19, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0F19, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0F19, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0F19, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0F19, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0F19, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0F35, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0F35, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0F35, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0F35, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0F35, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0F35, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0F35, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0F35, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0F35, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0F35, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0F37, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0F37, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0F37, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0F37, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0F37, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0F37, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0F37, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0F37, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0F37, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0F37, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x302A, 0x031B, 0x1DCE, 0x0F39, 0x0062], NFC: [0x0061, 0x1DCE, 0x031B, 0x0F39, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x031B, 0x0F39, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x031B, 0x0F39, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x031B, 0x0F39, 0x302A, 0x0062] },
+{ source: [0x0061, 0x0F39, 0x302A, 0x031B, 0x1DCE, 0x0062], NFC: [0x0061, 0x1DCE, 0x0F39, 0x031B, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x0F39, 0x031B, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x0F39, 0x031B, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x0F39, 0x031B, 0x302A, 0x0062] },
+{ source: [0x0061, 0x0F72, 0x0F71, 0x0EC8, 0x0F71, 0x0062], NFC: [0x0061, 0x0EC8, 0x0F71, 0x0F71, 0x0F72, 0x0062], NFD: [0x0061, 0x0EC8, 0x0F71, 0x0F71, 0x0F72, 0x0062], NFKC: [0x0061, 0x0EC8, 0x0F71, 0x0F71, 0x0F72, 0x0062], NFKD: [0x0061, 0x0EC8, 0x0F71, 0x0F71, 0x0F72, 0x0062] },
+{ source: [0x0061, 0x0F71, 0x0F72, 0x0F71, 0x0EC8, 0x0062], NFC: [0x0061, 0x0EC8, 0x0F71, 0x0F71, 0x0F72, 0x0062], NFD: [0x0061, 0x0EC8, 0x0F71, 0x0F71, 0x0F72, 0x0062], NFKC: [0x0061, 0x0EC8, 0x0F71, 0x0F71, 0x0F72, 0x0062], NFKD: [0x0061, 0x0EC8, 0x0F71, 0x0F71, 0x0F72, 0x0062] },
+{ source: [0x0061, 0x0F74, 0x0F72, 0x0F71, 0x0F72, 0x0062], NFC: [0x0061, 0x0F71, 0x0F72, 0x0F72, 0x0F74, 0x0062], NFD: [0x0061, 0x0F71, 0x0F72, 0x0F72, 0x0F74, 0x0062], NFKC: [0x0061, 0x0F71, 0x0F72, 0x0F72, 0x0F74, 0x0062], NFKD: [0x0061, 0x0F71, 0x0F72, 0x0F72, 0x0F74, 0x0062] },
+{ source: [0x0061, 0x0F72, 0x0F74, 0x0F72, 0x0F71, 0x0062], NFC: [0x0061, 0x0F71, 0x0F72, 0x0F72, 0x0F74, 0x0062], NFD: [0x0061, 0x0F71, 0x0F72, 0x0F72, 0x0F74, 0x0062], NFKC: [0x0061, 0x0F71, 0x0F72, 0x0F72, 0x0F74, 0x0062], NFKD: [0x0061, 0x0F71, 0x0F72, 0x0F72, 0x0F74, 0x0062] },
+{ source: [0x0061, 0x0321, 0x0F74, 0x0F72, 0x0F74, 0x0062], NFC: [0x0061, 0x0F72, 0x0F74, 0x0F74, 0x0321, 0x0062], NFD: [0x0061, 0x0F72, 0x0F74, 0x0F74, 0x0321, 0x0062], NFKC: [0x0061, 0x0F72, 0x0F74, 0x0F74, 0x0321, 0x0062], NFKD: [0x0061, 0x0F72, 0x0F74, 0x0F74, 0x0321, 0x0062] },
+{ source: [0x0061, 0x0F74, 0x0321, 0x0F74, 0x0F72, 0x0062], NFC: [0x0061, 0x0F72, 0x0F74, 0x0F74, 0x0321, 0x0062], NFD: [0x0061, 0x0F72, 0x0F74, 0x0F74, 0x0321, 0x0062], NFKC: [0x0061, 0x0F72, 0x0F74, 0x0F74, 0x0321, 0x0062], NFKD: [0x0061, 0x0F72, 0x0F74, 0x0F74, 0x0321, 0x0062] },
+{ source: [0x0061, 0x0F74, 0x0F72, 0x0F71, 0x0F7A, 0x0062], NFC: [0x0061, 0x0F71, 0x0F72, 0x0F7A, 0x0F74, 0x0062], NFD: [0x0061, 0x0F71, 0x0F72, 0x0F7A, 0x0F74, 0x0062], NFKC: [0x0061, 0x0F71, 0x0F72, 0x0F7A, 0x0F74, 0x0062], NFKD: [0x0061, 0x0F71, 0x0F72, 0x0F7A, 0x0F74, 0x0062] },
+{ source: [0x0061, 0x0F7A, 0x0F74, 0x0F72, 0x0F71, 0x0062], NFC: [0x0061, 0x0F71, 0x0F7A, 0x0F72, 0x0F74, 0x0062], NFD: [0x0061, 0x0F71, 0x0F7A, 0x0F72, 0x0F74, 0x0062], NFKC: [0x0061, 0x0F71, 0x0F7A, 0x0F72, 0x0F74, 0x0062], NFKD: [0x0061, 0x0F71, 0x0F7A, 0x0F72, 0x0F74, 0x0062] },
+{ source: [0x0061, 0x0F74, 0x0F72, 0x0F71, 0x0F7B, 0x0062], NFC: [0x0061, 0x0F71, 0x0F72, 0x0F7B, 0x0F74, 0x0062], NFD: [0x0061, 0x0F71, 0x0F72, 0x0F7B, 0x0F74, 0x0062], NFKC: [0x0061, 0x0F71, 0x0F72, 0x0F7B, 0x0F74, 0x0062], NFKD: [0x0061, 0x0F71, 0x0F72, 0x0F7B, 0x0F74, 0x0062] },
+{ source: [0x0061, 0x0F7B, 0x0F74, 0x0F72, 0x0F71, 0x0062], NFC: [0x0061, 0x0F71, 0x0F7B, 0x0F72, 0x0F74, 0x0062], NFD: [0x0061, 0x0F71, 0x0F7B, 0x0F72, 0x0F74, 0x0062], NFKC: [0x0061, 0x0F71, 0x0F7B, 0x0F72, 0x0F74, 0x0062], NFKD: [0x0061, 0x0F71, 0x0F7B, 0x0F72, 0x0F74, 0x0062] },
+{ source: [0x0061, 0x0F74, 0x0F72, 0x0F71, 0x0F7C, 0x0062], NFC: [0x0061, 0x0F71, 0x0F72, 0x0F7C, 0x0F74, 0x0062], NFD: [0x0061, 0x0F71, 0x0F72, 0x0F7C, 0x0F74, 0x0062], NFKC: [0x0061, 0x0F71, 0x0F72, 0x0F7C, 0x0F74, 0x0062], NFKD: [0x0061, 0x0F71, 0x0F72, 0x0F7C, 0x0F74, 0x0062] },
+{ source: [0x0061, 0x0F7C, 0x0F74, 0x0F72, 0x0F71, 0x0062], NFC: [0x0061, 0x0F71, 0x0F7C, 0x0F72, 0x0F74, 0x0062], NFD: [0x0061, 0x0F71, 0x0F7C, 0x0F72, 0x0F74, 0x0062], NFKC: [0x0061, 0x0F71, 0x0F7C, 0x0F72, 0x0F74, 0x0062], NFKD: [0x0061, 0x0F71, 0x0F7C, 0x0F72, 0x0F74, 0x0062] },
+{ source: [0x0061, 0x0F74, 0x0F72, 0x0F71, 0x0F7D, 0x0062], NFC: [0x0061, 0x0F71, 0x0F72, 0x0F7D, 0x0F74, 0x0062], NFD: [0x0061, 0x0F71, 0x0F72, 0x0F7D, 0x0F74, 0x0062], NFKC: [0x0061, 0x0F71, 0x0F72, 0x0F7D, 0x0F74, 0x0062], NFKD: [0x0061, 0x0F71, 0x0F72, 0x0F7D, 0x0F74, 0x0062] },
+{ source: [0x0061, 0x0F7D, 0x0F74, 0x0F72, 0x0F71, 0x0062], NFC: [0x0061, 0x0F71, 0x0F7D, 0x0F72, 0x0F74, 0x0062], NFD: [0x0061, 0x0F71, 0x0F7D, 0x0F72, 0x0F74, 0x0062], NFKC: [0x0061, 0x0F71, 0x0F7D, 0x0F72, 0x0F74, 0x0062], NFKD: [0x0061, 0x0F71, 0x0F7D, 0x0F72, 0x0F74, 0x0062] },
+{ source: [0x0061, 0x0F74, 0x0F72, 0x0F71, 0x0F80, 0x0062], NFC: [0x0061, 0x0F71, 0x0F72, 0x0F80, 0x0F74, 0x0062], NFD: [0x0061, 0x0F71, 0x0F72, 0x0F80, 0x0F74, 0x0062], NFKC: [0x0061, 0x0F71, 0x0F72, 0x0F80, 0x0F74, 0x0062], NFKD: [0x0061, 0x0F71, 0x0F72, 0x0F80, 0x0F74, 0x0062] },
+{ source: [0x0061, 0x0F80, 0x0F74, 0x0F72, 0x0F71, 0x0062], NFC: [0x0061, 0x0F71, 0x0F80, 0x0F72, 0x0F74, 0x0062], NFD: [0x0061, 0x0F71, 0x0F80, 0x0F72, 0x0F74, 0x0062], NFKC: [0x0061, 0x0F71, 0x0F80, 0x0F72, 0x0F74, 0x0062], NFKD: [0x0061, 0x0F71, 0x0F80, 0x0F72, 0x0F74, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0F82, 0x0062], NFC: [0x00E0, 0x05AE, 0x0F82, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0F82, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0F82, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0F82, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0F82, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0F82, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0F82, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0F82, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0F82, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0F83, 0x0062], NFC: [0x00E0, 0x05AE, 0x0F83, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0F83, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0F83, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0F83, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0F83, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0F83, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0F83, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0F83, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0F83, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x0F84, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x0F84, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x0F84, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x0F84, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x0F84, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0F84, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x0F84, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x0F84, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x0F84, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x0F84, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0F86, 0x0062], NFC: [0x00E0, 0x05AE, 0x0F86, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0F86, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0F86, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0F86, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0F86, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0F86, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0F86, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0F86, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0F86, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x0F87, 0x0062], NFC: [0x00E0, 0x05AE, 0x0F87, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x0F87, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x0F87, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x0F87, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0F87, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x0F87, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0F87, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x0F87, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0F87, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x0FC6, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x0FC6, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x0FC6, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x0FC6, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x0FC6, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0FC6, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x0FC6, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0FC6, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0FC6, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0FC6, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x1037, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x1037, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x1037, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x1037, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x1037, 0x3099, 0x0062] },
+{ source: [0x0061, 0x1037, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x1037, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x1037, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x1037, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x1037, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x1039, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x1039, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x1039, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x1039, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x1039, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x1039, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x1039, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x1039, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x1039, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x1039, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x103A, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x103A, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x103A, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x103A, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x103A, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x103A, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x103A, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x103A, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x103A, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x103A, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x108D, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x108D, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x108D, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x108D, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x108D, 0x059A, 0x0062] },
+{ source: [0x0061, 0x108D, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x108D, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x108D, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x108D, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x108D, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x135D, 0x0062], NFC: [0x00E0, 0x05AE, 0x135D, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x135D, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x135D, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x135D, 0x0315, 0x0062] },
+{ source: [0x0061, 0x135D, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x135D, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x135D, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x135D, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x135D, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x135E, 0x0062], NFC: [0x00E0, 0x05AE, 0x135E, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x135E, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x135E, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x135E, 0x0315, 0x0062] },
+{ source: [0x0061, 0x135E, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x135E, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x135E, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x135E, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x135E, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x135F, 0x0062], NFC: [0x00E0, 0x05AE, 0x135F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x135F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x135F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x135F, 0x0315, 0x0062] },
+{ source: [0x0061, 0x135F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x135F, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x135F, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x135F, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x135F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x1714, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x1714, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x1714, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x1714, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x1714, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x1714, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x1714, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x1714, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x1714, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x1714, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x1734, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x1734, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x1734, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x1734, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x1734, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x1734, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x1734, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x1734, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x1734, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x1734, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x17D2, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x17D2, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x17D2, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x17D2, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x17D2, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x17D2, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x17D2, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x17D2, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x17D2, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x17D2, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x17DD, 0x0062], NFC: [0x00E0, 0x05AE, 0x17DD, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x17DD, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x17DD, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x17DD, 0x0315, 0x0062] },
+{ source: [0x0061, 0x17DD, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x17DD, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x17DD, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x17DD, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x17DD, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0300, 0x05AE, 0x1D16D, 0x18A9, 0x0062], NFC: [0x00E0, 0x1D16D, 0x05AE, 0x18A9, 0x0062], NFD: [0x0061, 0x1D16D, 0x05AE, 0x18A9, 0x0300, 0x0062], NFKC: [0x00E0, 0x1D16D, 0x05AE, 0x18A9, 0x0062], NFKD: [0x0061, 0x1D16D, 0x05AE, 0x18A9, 0x0300, 0x0062] },
+{ source: [0x0061, 0x18A9, 0x0300, 0x05AE, 0x1D16D, 0x0062], NFC: [0x00E0, 0x1D16D, 0x18A9, 0x05AE, 0x0062], NFD: [0x0061, 0x1D16D, 0x18A9, 0x05AE, 0x0300, 0x0062], NFKC: [0x00E0, 0x1D16D, 0x18A9, 0x05AE, 0x0062], NFKD: [0x0061, 0x1D16D, 0x18A9, 0x05AE, 0x0300, 0x0062] },
+{ source: [0x0061, 0x302E, 0x059A, 0x0316, 0x1939, 0x0062], NFC: [0x0061, 0x0316, 0x059A, 0x1939, 0x302E, 0x0062], NFD: [0x0061, 0x0316, 0x059A, 0x1939, 0x302E, 0x0062], NFKC: [0x0061, 0x0316, 0x059A, 0x1939, 0x302E, 0x0062], NFKD: [0x0061, 0x0316, 0x059A, 0x1939, 0x302E, 0x0062] },
+{ source: [0x0061, 0x1939, 0x302E, 0x059A, 0x0316, 0x0062], NFC: [0x0061, 0x0316, 0x1939, 0x059A, 0x302E, 0x0062], NFD: [0x0061, 0x0316, 0x1939, 0x059A, 0x302E, 0x0062], NFKC: [0x0061, 0x0316, 0x1939, 0x059A, 0x302E, 0x0062], NFKD: [0x0061, 0x0316, 0x1939, 0x059A, 0x302E, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x193A, 0x0062], NFC: [0x00E0, 0x05AE, 0x193A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x193A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x193A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x193A, 0x0315, 0x0062] },
+{ source: [0x0061, 0x193A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x193A, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x193A, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x193A, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x193A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x193B, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x193B, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x193B, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x193B, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x193B, 0x059A, 0x0062] },
+{ source: [0x0061, 0x193B, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x193B, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x193B, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x193B, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x193B, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1A17, 0x0062], NFC: [0x00E0, 0x05AE, 0x1A17, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1A17, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1A17, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1A17, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1A17, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1A17, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1A17, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1A17, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1A17, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1A18, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1A18, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1A18, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1A18, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1A18, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1A18, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1A18, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1A18, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1A18, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1A18, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x1A60, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x1A60, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x1A60, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x1A60, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x1A60, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x1A60, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x1A60, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x1A60, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x1A60, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x1A60, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1A75, 0x0062], NFC: [0x00E0, 0x05AE, 0x1A75, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1A75, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1A75, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1A75, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1A75, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1A75, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1A75, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1A75, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1A75, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1A76, 0x0062], NFC: [0x00E0, 0x05AE, 0x1A76, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1A76, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1A76, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1A76, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1A76, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1A76, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1A76, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1A76, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1A76, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1A77, 0x0062], NFC: [0x00E0, 0x05AE, 0x1A77, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1A77, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1A77, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1A77, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1A77, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1A77, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1A77, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1A77, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1A77, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1A78, 0x0062], NFC: [0x00E0, 0x05AE, 0x1A78, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1A78, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1A78, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1A78, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1A78, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1A78, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1A78, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1A78, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1A78, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1A79, 0x0062], NFC: [0x00E0, 0x05AE, 0x1A79, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1A79, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1A79, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1A79, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1A79, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1A79, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1A79, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1A79, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1A79, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1A7A, 0x0062], NFC: [0x00E0, 0x05AE, 0x1A7A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1A7A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1A7A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1A7A, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1A7A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1A7A, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1A7A, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1A7A, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1A7A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1A7B, 0x0062], NFC: [0x00E0, 0x05AE, 0x1A7B, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1A7B, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1A7B, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1A7B, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1A7B, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1A7B, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1A7B, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1A7B, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1A7B, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1A7C, 0x0062], NFC: [0x00E0, 0x05AE, 0x1A7C, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1A7C, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1A7C, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1A7C, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1A7C, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1A7C, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1A7C, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1A7C, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1A7C, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1A7F, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1A7F, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1A7F, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1A7F, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1A7F, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1A7F, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1A7F, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1A7F, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1A7F, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1A7F, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1AB0, 0x0062], NFC: [0x00E0, 0x05AE, 0x1AB0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1AB0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1AB0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1AB0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1AB0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1AB0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1AB0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1AB0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1AB0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1AB1, 0x0062], NFC: [0x00E0, 0x05AE, 0x1AB1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1AB1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1AB1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1AB1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1AB1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1AB1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1AB1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1AB1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1AB1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1AB2, 0x0062], NFC: [0x00E0, 0x05AE, 0x1AB2, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1AB2, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1AB2, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1AB2, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1AB2, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1AB2, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1AB2, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1AB2, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1AB2, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1AB3, 0x0062], NFC: [0x00E0, 0x05AE, 0x1AB3, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1AB3, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1AB3, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1AB3, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1AB3, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1AB3, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1AB3, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1AB3, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1AB3, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1AB4, 0x0062], NFC: [0x00E0, 0x05AE, 0x1AB4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1AB4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1AB4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1AB4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1AB4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1AB4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1AB4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1AB4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1AB4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1AB5, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1AB5, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1AB5, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1AB5, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1AB5, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1AB5, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1AB5, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1AB5, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1AB5, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1AB5, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1AB6, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1AB6, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1AB6, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1AB6, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1AB6, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1AB6, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1AB6, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1AB6, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1AB6, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1AB6, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1AB7, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1AB7, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1AB7, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1AB7, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1AB7, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1AB7, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1AB7, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1AB7, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1AB7, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1AB7, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1AB8, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1AB8, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1AB8, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1AB8, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1AB8, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1AB8, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1AB8, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1AB8, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1AB8, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1AB8, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1AB9, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1AB9, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1AB9, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1AB9, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1AB9, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1AB9, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1AB9, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1AB9, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1AB9, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1AB9, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1ABA, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1ABA, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1ABA, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1ABA, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1ABA, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1ABA, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1ABA, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1ABA, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1ABA, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1ABA, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1ABB, 0x0062], NFC: [0x00E0, 0x05AE, 0x1ABB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1ABB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1ABB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1ABB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1ABB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1ABB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1ABB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1ABB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1ABB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1ABC, 0x0062], NFC: [0x00E0, 0x05AE, 0x1ABC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1ABC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1ABC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1ABC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1ABC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1ABC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1ABC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1ABC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1ABC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1ABD, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1ABD, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1ABD, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1ABD, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1ABD, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1ABD, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1ABD, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1ABD, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1ABD, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1ABD, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x1B34, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x1B34, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x1B34, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x1B34, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x1B34, 0x3099, 0x0062] },
+{ source: [0x0061, 0x1B34, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x1B34, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x1B34, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x1B34, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x1B34, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x1B44, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x1B44, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x1B44, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x1B44, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x1B44, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x1B44, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x1B44, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x1B44, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x1B44, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x1B44, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1B6B, 0x0062], NFC: [0x00E0, 0x05AE, 0x1B6B, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1B6B, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1B6B, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1B6B, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1B6B, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1B6B, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1B6B, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1B6B, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1B6B, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1B6C, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1B6C, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1B6C, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1B6C, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1B6C, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1B6C, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1B6C, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1B6C, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1B6C, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1B6C, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1B6D, 0x0062], NFC: [0x00E0, 0x05AE, 0x1B6D, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1B6D, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1B6D, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1B6D, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1B6D, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1B6D, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1B6D, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1B6D, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1B6D, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1B6E, 0x0062], NFC: [0x00E0, 0x05AE, 0x1B6E, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1B6E, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1B6E, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1B6E, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1B6E, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1B6E, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1B6E, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1B6E, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1B6E, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1B6F, 0x0062], NFC: [0x00E0, 0x05AE, 0x1B6F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1B6F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1B6F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1B6F, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1B6F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1B6F, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1B6F, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1B6F, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1B6F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1B70, 0x0062], NFC: [0x00E0, 0x05AE, 0x1B70, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1B70, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1B70, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1B70, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1B70, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1B70, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1B70, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1B70, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1B70, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1B71, 0x0062], NFC: [0x00E0, 0x05AE, 0x1B71, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1B71, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1B71, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1B71, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1B71, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1B71, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1B71, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1B71, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1B71, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1B72, 0x0062], NFC: [0x00E0, 0x05AE, 0x1B72, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1B72, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1B72, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1B72, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1B72, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1B72, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1B72, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1B72, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1B72, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1B73, 0x0062], NFC: [0x00E0, 0x05AE, 0x1B73, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1B73, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1B73, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1B73, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1B73, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1B73, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1B73, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1B73, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1B73, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x1BAA, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x1BAA, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x1BAA, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x1BAA, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x1BAA, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x1BAA, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x1BAA, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x1BAA, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x1BAA, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x1BAA, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x1BAB, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x1BAB, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x1BAB, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x1BAB, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x1BAB, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x1BAB, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x1BAB, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x1BAB, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x1BAB, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x1BAB, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x1BE6, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x1BE6, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x1BE6, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x1BE6, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x1BE6, 0x3099, 0x0062] },
+{ source: [0x0061, 0x1BE6, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x1BE6, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x1BE6, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x1BE6, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x1BE6, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x1BF2, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x1BF2, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x1BF2, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x1BF2, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x1BF2, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x1BF2, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x1BF2, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x1BF2, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x1BF2, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x1BF2, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x1BF3, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x1BF3, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x1BF3, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x1BF3, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x1BF3, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x1BF3, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x1BF3, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x1BF3, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x1BF3, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x1BF3, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x1C37, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x1C37, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x1C37, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x1C37, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x1C37, 0x3099, 0x0062] },
+{ source: [0x0061, 0x1C37, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x1C37, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x1C37, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x1C37, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x1C37, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1CD0, 0x0062], NFC: [0x00E0, 0x05AE, 0x1CD0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1CD0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1CD0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1CD0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1CD0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1CD0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1CD0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1CD0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1CD0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1CD1, 0x0062], NFC: [0x00E0, 0x05AE, 0x1CD1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1CD1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1CD1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1CD1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1CD1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1CD1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1CD1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1CD1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1CD1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1CD2, 0x0062], NFC: [0x00E0, 0x05AE, 0x1CD2, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1CD2, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1CD2, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1CD2, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1CD2, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1CD2, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1CD2, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1CD2, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1CD2, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x1CD4, 0x0062], NFC: [0x0061, 0x0334, 0x1CD4, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x1CD4, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x1CD4, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x1CD4, 0x093C, 0x0062] },
+{ source: [0x0061, 0x1CD4, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x1CD4, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x1CD4, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x1CD4, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x1CD4, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1CD5, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1CD5, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1CD5, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1CD5, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1CD5, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1CD5, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1CD5, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1CD5, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1CD5, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1CD5, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1CD6, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1CD6, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1CD6, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1CD6, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1CD6, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1CD6, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1CD6, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1CD6, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1CD6, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1CD6, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1CD7, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1CD7, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1CD7, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1CD7, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1CD7, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1CD7, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1CD7, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1CD7, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1CD7, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1CD7, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1CD8, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1CD8, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1CD8, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1CD8, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1CD8, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1CD8, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1CD8, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1CD8, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1CD8, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1CD8, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1CD9, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1CD9, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1CD9, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1CD9, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1CD9, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1CD9, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1CD9, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1CD9, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1CD9, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1CD9, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1CDA, 0x0062], NFC: [0x00E0, 0x05AE, 0x1CDA, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1CDA, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1CDA, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1CDA, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1CDA, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1CDA, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1CDA, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1CDA, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1CDA, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1CDB, 0x0062], NFC: [0x00E0, 0x05AE, 0x1CDB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1CDB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1CDB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1CDB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1CDB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1CDB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1CDB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1CDB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1CDB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1CDC, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1CDC, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1CDC, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1CDC, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1CDC, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1CDC, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1CDC, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1CDC, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1CDC, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1CDC, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1CDD, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1CDD, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1CDD, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1CDD, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1CDD, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1CDD, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1CDD, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1CDD, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1CDD, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1CDD, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1CDE, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1CDE, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1CDE, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1CDE, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1CDE, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1CDE, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1CDE, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1CDE, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1CDE, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1CDE, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1CDF, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1CDF, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1CDF, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1CDF, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1CDF, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1CDF, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1CDF, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1CDF, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1CDF, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1CDF, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1CE0, 0x0062], NFC: [0x00E0, 0x05AE, 0x1CE0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1CE0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1CE0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1CE0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1CE0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1CE0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1CE0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1CE0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1CE0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x1CE2, 0x0062], NFC: [0x0061, 0x0334, 0x1CE2, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x1CE2, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x1CE2, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x1CE2, 0x093C, 0x0062] },
+{ source: [0x0061, 0x1CE2, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x1CE2, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x1CE2, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x1CE2, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x1CE2, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x1CE3, 0x0062], NFC: [0x0061, 0x0334, 0x1CE3, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x1CE3, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x1CE3, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x1CE3, 0x093C, 0x0062] },
+{ source: [0x0061, 0x1CE3, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x1CE3, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x1CE3, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x1CE3, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x1CE3, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x1CE4, 0x0062], NFC: [0x0061, 0x0334, 0x1CE4, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x1CE4, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x1CE4, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x1CE4, 0x093C, 0x0062] },
+{ source: [0x0061, 0x1CE4, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x1CE4, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x1CE4, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x1CE4, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x1CE4, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x1CE5, 0x0062], NFC: [0x0061, 0x0334, 0x1CE5, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x1CE5, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x1CE5, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x1CE5, 0x093C, 0x0062] },
+{ source: [0x0061, 0x1CE5, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x1CE5, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x1CE5, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x1CE5, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x1CE5, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x1CE6, 0x0062], NFC: [0x0061, 0x0334, 0x1CE6, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x1CE6, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x1CE6, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x1CE6, 0x093C, 0x0062] },
+{ source: [0x0061, 0x1CE6, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x1CE6, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x1CE6, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x1CE6, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x1CE6, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x1CE7, 0x0062], NFC: [0x0061, 0x0334, 0x1CE7, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x1CE7, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x1CE7, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x1CE7, 0x093C, 0x0062] },
+{ source: [0x0061, 0x1CE7, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x1CE7, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x1CE7, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x1CE7, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x1CE7, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x1CE8, 0x0062], NFC: [0x0061, 0x0334, 0x1CE8, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x1CE8, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x1CE8, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x1CE8, 0x093C, 0x0062] },
+{ source: [0x0061, 0x1CE8, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x1CE8, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x1CE8, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x1CE8, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x1CE8, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1CED, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1CED, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1CED, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1CED, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1CED, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1CED, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1CED, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1CED, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1CED, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1CED, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1CF4, 0x0062], NFC: [0x00E0, 0x05AE, 0x1CF4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1CF4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1CF4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1CF4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1CF4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1CF4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1CF4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1CF4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1CF4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1CF8, 0x0062], NFC: [0x00E0, 0x05AE, 0x1CF8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1CF8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1CF8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1CF8, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1CF8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1CF8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1CF8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1CF8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1CF8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1CF9, 0x0062], NFC: [0x00E0, 0x05AE, 0x1CF9, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1CF9, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1CF9, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1CF9, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1CF9, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1CF9, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1CF9, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1CF9, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1CF9, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DC0, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DC0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DC0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DC0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DC0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DC0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DC0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DC0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DC0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DC0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DC1, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DC1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DC1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DC1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DC1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DC1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DC1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DC1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DC1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DC1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1DC2, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1DC2, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1DC2, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1DC2, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1DC2, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1DC2, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1DC2, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1DC2, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1DC2, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1DC2, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DC3, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DC3, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DC3, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DC3, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DC3, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DC3, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DC3, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DC3, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DC3, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DC3, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DC4, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DC4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DC4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DC4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DC4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DC4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DC4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DC4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DC4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DC4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DC5, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DC5, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DC5, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DC5, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DC5, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DC5, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DC5, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DC5, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DC5, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DC5, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DC6, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DC6, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DC6, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DC6, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DC6, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DC6, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DC6, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DC6, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DC6, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DC6, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DC7, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DC7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DC7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DC7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DC7, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DC7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DC7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DC7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DC7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DC7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DC8, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DC8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DC8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DC8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DC8, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DC8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DC8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DC8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DC8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DC8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DC9, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DC9, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DC9, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DC9, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DC9, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DC9, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DC9, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DC9, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DC9, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DC9, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1DCA, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1DCA, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1DCA, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1DCA, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1DCA, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1DCA, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1DCA, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1DCA, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1DCA, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1DCA, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DCB, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DCB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DCB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DCB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DCB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DCB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DCB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DCB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DCB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DCB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DCC, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DCC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DCC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DCC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DCC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DCC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DCC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DCC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DCC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DCC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0345, 0x035D, 0x035C, 0x1DCD, 0x0062], NFC: [0x0061, 0x035C, 0x035D, 0x1DCD, 0x0345, 0x0062], NFD: [0x0061, 0x035C, 0x035D, 0x1DCD, 0x0345, 0x0062], NFKC: [0x0061, 0x035C, 0x035D, 0x1DCD, 0x0345, 0x0062], NFKD: [0x0061, 0x035C, 0x035D, 0x1DCD, 0x0345, 0x0062] },
+{ source: [0x0061, 0x1DCD, 0x0345, 0x035D, 0x035C, 0x0062], NFC: [0x0061, 0x035C, 0x1DCD, 0x035D, 0x0345, 0x0062], NFD: [0x0061, 0x035C, 0x1DCD, 0x035D, 0x0345, 0x0062], NFKC: [0x0061, 0x035C, 0x1DCD, 0x035D, 0x0345, 0x0062], NFKD: [0x0061, 0x035C, 0x1DCD, 0x035D, 0x0345, 0x0062] },
+{ source: [0x0061, 0x031B, 0x1DCE, 0x0321, 0x1DCE, 0x0062], NFC: [0x0061, 0x0321, 0x1DCE, 0x1DCE, 0x031B, 0x0062], NFD: [0x0061, 0x0321, 0x1DCE, 0x1DCE, 0x031B, 0x0062], NFKC: [0x0061, 0x0321, 0x1DCE, 0x1DCE, 0x031B, 0x0062], NFKD: [0x0061, 0x0321, 0x1DCE, 0x1DCE, 0x031B, 0x0062] },
+{ source: [0x0061, 0x1DCE, 0x031B, 0x1DCE, 0x0321, 0x0062], NFC: [0x0061, 0x0321, 0x1DCE, 0x1DCE, 0x031B, 0x0062], NFD: [0x0061, 0x0321, 0x1DCE, 0x1DCE, 0x031B, 0x0062], NFKC: [0x0061, 0x0321, 0x1DCE, 0x1DCE, 0x031B, 0x0062], NFKD: [0x0061, 0x0321, 0x1DCE, 0x1DCE, 0x031B, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1DCF, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1DCF, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1DCF, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1DCF, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1DCF, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1DCF, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1DCF, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1DCF, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1DCF, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1DCF, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1DCE, 0x0321, 0x0F74, 0x1DD0, 0x0062], NFC: [0x0061, 0x0F74, 0x0321, 0x1DD0, 0x1DCE, 0x0062], NFD: [0x0061, 0x0F74, 0x0321, 0x1DD0, 0x1DCE, 0x0062], NFKC: [0x0061, 0x0F74, 0x0321, 0x1DD0, 0x1DCE, 0x0062], NFKD: [0x0061, 0x0F74, 0x0321, 0x1DD0, 0x1DCE, 0x0062] },
+{ source: [0x0061, 0x1DD0, 0x1DCE, 0x0321, 0x0F74, 0x0062], NFC: [0x0061, 0x0F74, 0x1DD0, 0x0321, 0x1DCE, 0x0062], NFD: [0x0061, 0x0F74, 0x1DD0, 0x0321, 0x1DCE, 0x0062], NFKC: [0x0061, 0x0F74, 0x1DD0, 0x0321, 0x1DCE, 0x0062], NFKD: [0x0061, 0x0F74, 0x1DD0, 0x0321, 0x1DCE, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DD1, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DD1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DD1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DD1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DD1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DD1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DD1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DD1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DD1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DD1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DD2, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DD2, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DD2, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DD2, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DD2, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DD2, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DD2, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DD2, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DD2, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DD2, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DD3, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DD3, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DD3, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DD3, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DD3, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DD3, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DD3, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DD3, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DD3, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DD3, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DD4, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DD4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DD4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DD4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DD4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DD4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DD4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DD4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DD4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DD4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DD5, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DD5, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DD5, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DD5, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DD5, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DD5, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DD5, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DD5, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DD5, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DD5, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DD6, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DD6, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DD6, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DD6, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DD6, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DD6, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DD6, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DD6, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DD6, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DD6, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DD7, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DD7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DD7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DD7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DD7, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DD7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DD7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DD7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DD7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DD7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DD8, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DD8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DD8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DD8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DD8, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DD8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DD8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DD8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DD8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DD8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DD9, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DD9, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DD9, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DD9, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DD9, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DD9, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DD9, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DD9, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DD9, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DD9, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DDA, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DDA, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DDA, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DDA, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DDA, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DDA, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DDA, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DDA, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DDA, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DDA, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DDB, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DDB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DDB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DDB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DDB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DDB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DDB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DDB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DDB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DDB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DDC, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DDC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DDC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DDC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DDC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DDC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DDC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DDC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DDC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DDC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DDD, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DDD, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DDD, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DDD, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DDD, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DDD, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DDD, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DDD, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DDD, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DDD, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DDE, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DDE, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DDE, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DDE, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DDE, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DDE, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DDE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DDE, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DDE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DDE, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DDF, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DDF, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DDF, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DDF, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DDF, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DDF, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DDF, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DDF, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DDF, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DDF, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DE0, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DE0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DE0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DE0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DE0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DE0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DE0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DE0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DE0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DE0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DE1, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DE1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DE1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DE1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DE1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DE1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DE1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DE1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DE1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DE1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DE2, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DE2, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DE2, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DE2, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DE2, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DE2, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DE2, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DE2, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DE2, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DE2, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DE3, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DE3, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DE3, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DE3, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DE3, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DE3, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DE3, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DE3, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DE3, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DE3, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DE4, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DE4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DE4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DE4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DE4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DE4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DE4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DE4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DE4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DE4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DE5, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DE5, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DE5, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DE5, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DE5, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DE5, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DE5, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DE5, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DE5, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DE5, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DE6, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DE6, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DE6, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DE6, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DE6, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DE6, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DE6, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DE6, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DE6, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DE6, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DE7, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DE7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DE7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DE7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DE7, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DE7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DE7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DE7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DE7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DE7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DE8, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DE8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DE8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DE8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DE8, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DE8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DE8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DE8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DE8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DE8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DE9, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DE9, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DE9, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DE9, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DE9, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DE9, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DE9, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DE9, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DE9, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DE9, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DEA, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DEA, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DEA, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DEA, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DEA, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DEA, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DEA, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DEA, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DEA, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DEA, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DEB, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DEB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DEB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DEB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DEB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DEB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DEB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DEB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DEB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DEB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DEC, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DEC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DEC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DEC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DEC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DEC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DEC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DEC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DEC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DEC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DED, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DED, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DED, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DED, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DED, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DED, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DED, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DED, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DED, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DED, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DEE, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DEE, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DEE, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DEE, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DEE, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DEE, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DEE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DEE, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DEE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DEE, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DEF, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DEF, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DEF, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DEF, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DEF, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DEF, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DEF, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DEF, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DEF, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DEF, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DF0, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DF0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DF0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DF0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DF0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DF0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DF0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DF0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DF0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DF0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DF1, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DF1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DF1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DF1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DF1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DF1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DF1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DF1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DF1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DF1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DF2, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DF2, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DF2, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DF2, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DF2, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DF2, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DF2, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DF2, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DF2, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DF2, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DF3, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DF3, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DF3, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DF3, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DF3, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DF3, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DF3, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DF3, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DF3, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DF3, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DF4, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DF4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DF4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DF4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DF4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DF4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DF4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DF4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DF4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DF4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DF5, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DF5, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DF5, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DF5, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DF5, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DF5, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DF5, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DF5, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DF5, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DF5, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DFB, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DFB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DFB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DFB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DFB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DFB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DFB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DFB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DFB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DFB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x035D, 0x035C, 0x0315, 0x1DFC, 0x0062], NFC: [0x0061, 0x0315, 0x035C, 0x1DFC, 0x035D, 0x0062], NFD: [0x0061, 0x0315, 0x035C, 0x1DFC, 0x035D, 0x0062], NFKC: [0x0061, 0x0315, 0x035C, 0x1DFC, 0x035D, 0x0062], NFKD: [0x0061, 0x0315, 0x035C, 0x1DFC, 0x035D, 0x0062] },
+{ source: [0x0061, 0x1DFC, 0x035D, 0x035C, 0x0315, 0x0062], NFC: [0x0061, 0x0315, 0x1DFC, 0x035C, 0x035D, 0x0062], NFD: [0x0061, 0x0315, 0x1DFC, 0x035C, 0x035D, 0x0062], NFKC: [0x0061, 0x0315, 0x1DFC, 0x035C, 0x035D, 0x0062], NFKD: [0x0061, 0x0315, 0x1DFC, 0x035C, 0x035D, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1DFD, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1DFD, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1DFD, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1DFD, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1DFD, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1DFD, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1DFD, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1DFD, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1DFD, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1DFD, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1DFE, 0x0062], NFC: [0x00E0, 0x05AE, 0x1DFE, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1DFE, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1DFE, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1DFE, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1DFE, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1DFE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1DFE, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1DFE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1DFE, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1DFF, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1DFF, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1DFF, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1DFF, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1DFF, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1DFF, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1DFF, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1DFF, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1DFF, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1DFF, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x20D0, 0x0062], NFC: [0x00E0, 0x05AE, 0x20D0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x20D0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x20D0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x20D0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x20D0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x20D0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x20D0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x20D0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x20D0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x20D1, 0x0062], NFC: [0x00E0, 0x05AE, 0x20D1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x20D1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x20D1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x20D1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x20D1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x20D1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x20D1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x20D1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x20D1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x20D2, 0x0062], NFC: [0x0061, 0x0334, 0x20D2, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x20D2, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x20D2, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x20D2, 0x093C, 0x0062] },
+{ source: [0x0061, 0x20D2, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x20D2, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x20D2, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x20D2, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x20D2, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x20D3, 0x0062], NFC: [0x0061, 0x0334, 0x20D3, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x20D3, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x20D3, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x20D3, 0x093C, 0x0062] },
+{ source: [0x0061, 0x20D3, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x20D3, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x20D3, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x20D3, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x20D3, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x20D4, 0x0062], NFC: [0x00E0, 0x05AE, 0x20D4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x20D4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x20D4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x20D4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x20D4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x20D4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x20D4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x20D4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x20D4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x20D5, 0x0062], NFC: [0x00E0, 0x05AE, 0x20D5, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x20D5, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x20D5, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x20D5, 0x0315, 0x0062] },
+{ source: [0x0061, 0x20D5, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x20D5, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x20D5, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x20D5, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x20D5, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x20D6, 0x0062], NFC: [0x00E0, 0x05AE, 0x20D6, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x20D6, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x20D6, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x20D6, 0x0315, 0x0062] },
+{ source: [0x0061, 0x20D6, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x20D6, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x20D6, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x20D6, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x20D6, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x20D7, 0x0062], NFC: [0x00E0, 0x05AE, 0x20D7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x20D7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x20D7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x20D7, 0x0315, 0x0062] },
+{ source: [0x0061, 0x20D7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x20D7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x20D7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x20D7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x20D7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x20D8, 0x0062], NFC: [0x0061, 0x0334, 0x20D8, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x20D8, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x20D8, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x20D8, 0x093C, 0x0062] },
+{ source: [0x0061, 0x20D8, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x20D8, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x20D8, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x20D8, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x20D8, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x20D9, 0x0062], NFC: [0x0061, 0x0334, 0x20D9, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x20D9, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x20D9, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x20D9, 0x093C, 0x0062] },
+{ source: [0x0061, 0x20D9, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x20D9, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x20D9, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x20D9, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x20D9, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x20DA, 0x0062], NFC: [0x0061, 0x0334, 0x20DA, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x20DA, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x20DA, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x20DA, 0x093C, 0x0062] },
+{ source: [0x0061, 0x20DA, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x20DA, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x20DA, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x20DA, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x20DA, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x20DB, 0x0062], NFC: [0x00E0, 0x05AE, 0x20DB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x20DB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x20DB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x20DB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x20DB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x20DB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x20DB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x20DB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x20DB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x20DC, 0x0062], NFC: [0x00E0, 0x05AE, 0x20DC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x20DC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x20DC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x20DC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x20DC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x20DC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x20DC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x20DC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x20DC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x20E1, 0x0062], NFC: [0x00E0, 0x05AE, 0x20E1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x20E1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x20E1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x20E1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x20E1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x20E1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x20E1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x20E1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x20E1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x20E5, 0x0062], NFC: [0x0061, 0x0334, 0x20E5, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x20E5, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x20E5, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x20E5, 0x093C, 0x0062] },
+{ source: [0x0061, 0x20E5, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x20E5, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x20E5, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x20E5, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x20E5, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x20E6, 0x0062], NFC: [0x0061, 0x0334, 0x20E6, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x20E6, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x20E6, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x20E6, 0x093C, 0x0062] },
+{ source: [0x0061, 0x20E6, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x20E6, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x20E6, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x20E6, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x20E6, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x20E7, 0x0062], NFC: [0x00E0, 0x05AE, 0x20E7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x20E7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x20E7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x20E7, 0x0315, 0x0062] },
+{ source: [0x0061, 0x20E7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x20E7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x20E7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x20E7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x20E7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x20E8, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x20E8, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x20E8, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x20E8, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x20E8, 0x059A, 0x0062] },
+{ source: [0x0061, 0x20E8, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x20E8, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x20E8, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x20E8, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x20E8, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x20E9, 0x0062], NFC: [0x00E0, 0x05AE, 0x20E9, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x20E9, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x20E9, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x20E9, 0x0315, 0x0062] },
+{ source: [0x0061, 0x20E9, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x20E9, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x20E9, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x20E9, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x20E9, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x20EA, 0x0062], NFC: [0x0061, 0x0334, 0x20EA, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x20EA, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x20EA, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x20EA, 0x093C, 0x0062] },
+{ source: [0x0061, 0x20EA, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x20EA, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x20EA, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x20EA, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x20EA, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x20EB, 0x0062], NFC: [0x0061, 0x0334, 0x20EB, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x20EB, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x20EB, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x20EB, 0x093C, 0x0062] },
+{ source: [0x0061, 0x20EB, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x20EB, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x20EB, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x20EB, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x20EB, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x20EC, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x20EC, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x20EC, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x20EC, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x20EC, 0x059A, 0x0062] },
+{ source: [0x0061, 0x20EC, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x20EC, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x20EC, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x20EC, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x20EC, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x20ED, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x20ED, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x20ED, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x20ED, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x20ED, 0x059A, 0x0062] },
+{ source: [0x0061, 0x20ED, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x20ED, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x20ED, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x20ED, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x20ED, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x20EE, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x20EE, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x20EE, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x20EE, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x20EE, 0x059A, 0x0062] },
+{ source: [0x0061, 0x20EE, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x20EE, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x20EE, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x20EE, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x20EE, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x20EF, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x20EF, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x20EF, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x20EF, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x20EF, 0x059A, 0x0062] },
+{ source: [0x0061, 0x20EF, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x20EF, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x20EF, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x20EF, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x20EF, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x20F0, 0x0062], NFC: [0x00E0, 0x05AE, 0x20F0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x20F0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x20F0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x20F0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x20F0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x20F0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x20F0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x20F0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x20F0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2CEF, 0x0062], NFC: [0x00E0, 0x05AE, 0x2CEF, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2CEF, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2CEF, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2CEF, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2CEF, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2CEF, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2CEF, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2CEF, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2CEF, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2CF0, 0x0062], NFC: [0x00E0, 0x05AE, 0x2CF0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2CF0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2CF0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2CF0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2CF0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2CF0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2CF0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2CF0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2CF0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2CF1, 0x0062], NFC: [0x00E0, 0x05AE, 0x2CF1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2CF1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2CF1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2CF1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2CF1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2CF1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2CF1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2CF1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2CF1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x2D7F, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x2D7F, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x2D7F, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x2D7F, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x2D7F, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x2D7F, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x2D7F, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x2D7F, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x2D7F, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x2D7F, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DE0, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DE0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DE0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DE0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DE0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DE0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DE0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DE0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DE0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DE0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DE1, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DE1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DE1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DE1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DE1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DE1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DE1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DE1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DE1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DE1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DE2, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DE2, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DE2, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DE2, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DE2, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DE2, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DE2, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DE2, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DE2, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DE2, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DE3, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DE3, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DE3, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DE3, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DE3, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DE3, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DE3, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DE3, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DE3, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DE3, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DE4, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DE4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DE4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DE4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DE4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DE4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DE4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DE4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DE4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DE4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DE5, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DE5, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DE5, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DE5, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DE5, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DE5, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DE5, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DE5, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DE5, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DE5, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DE6, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DE6, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DE6, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DE6, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DE6, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DE6, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DE6, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DE6, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DE6, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DE6, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DE7, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DE7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DE7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DE7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DE7, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DE7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DE7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DE7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DE7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DE7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DE8, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DE8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DE8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DE8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DE8, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DE8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DE8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DE8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DE8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DE8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DE9, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DE9, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DE9, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DE9, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DE9, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DE9, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DE9, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DE9, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DE9, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DE9, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DEA, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DEA, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DEA, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DEA, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DEA, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DEA, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DEA, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DEA, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DEA, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DEA, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DEB, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DEB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DEB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DEB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DEB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DEB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DEB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DEB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DEB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DEB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DEC, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DEC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DEC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DEC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DEC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DEC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DEC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DEC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DEC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DEC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DED, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DED, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DED, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DED, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DED, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DED, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DED, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DED, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DED, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DED, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DEE, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DEE, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DEE, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DEE, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DEE, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DEE, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DEE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DEE, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DEE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DEE, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DEF, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DEF, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DEF, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DEF, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DEF, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DEF, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DEF, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DEF, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DEF, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DEF, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DF0, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DF0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DF0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DF0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DF0, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DF0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DF0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DF0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DF0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DF0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DF1, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DF1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DF1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DF1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DF1, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DF1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DF1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DF1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DF1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DF1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DF2, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DF2, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DF2, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DF2, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DF2, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DF2, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DF2, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DF2, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DF2, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DF2, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DF3, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DF3, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DF3, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DF3, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DF3, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DF3, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DF3, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DF3, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DF3, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DF3, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DF4, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DF4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DF4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DF4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DF4, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DF4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DF4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DF4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DF4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DF4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DF5, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DF5, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DF5, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DF5, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DF5, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DF5, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DF5, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DF5, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DF5, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DF5, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DF6, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DF6, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DF6, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DF6, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DF6, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DF6, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DF6, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DF6, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DF6, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DF6, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DF7, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DF7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DF7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DF7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DF7, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DF7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DF7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DF7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DF7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DF7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DF8, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DF8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DF8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DF8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DF8, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DF8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DF8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DF8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DF8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DF8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DF9, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DF9, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DF9, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DF9, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DF9, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DF9, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DF9, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DF9, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DF9, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DF9, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DFA, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DFA, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DFA, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DFA, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DFA, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DFA, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DFA, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DFA, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DFA, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DFA, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DFB, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DFB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DFB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DFB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DFB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DFB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DFB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DFB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DFB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DFB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DFC, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DFC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DFC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DFC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DFC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DFC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DFC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DFC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DFC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DFC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DFD, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DFD, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DFD, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DFD, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DFD, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DFD, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DFD, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DFD, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DFD, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DFD, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DFE, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DFE, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DFE, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DFE, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DFE, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DFE, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DFE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DFE, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DFE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DFE, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x2DFF, 0x0062], NFC: [0x00E0, 0x05AE, 0x2DFF, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x2DFF, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x2DFF, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x2DFF, 0x0315, 0x0062] },
+{ source: [0x0061, 0x2DFF, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x2DFF, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x2DFF, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x2DFF, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x2DFF, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0316, 0x302A, 0x031B, 0x302A, 0x0062], NFC: [0x0061, 0x031B, 0x302A, 0x302A, 0x0316, 0x0062], NFD: [0x0061, 0x031B, 0x302A, 0x302A, 0x0316, 0x0062], NFKC: [0x0061, 0x031B, 0x302A, 0x302A, 0x0316, 0x0062], NFKD: [0x0061, 0x031B, 0x302A, 0x302A, 0x0316, 0x0062] },
+{ source: [0x0061, 0x302A, 0x0316, 0x302A, 0x031B, 0x0062], NFC: [0x0061, 0x031B, 0x302A, 0x302A, 0x0316, 0x0062], NFD: [0x0061, 0x031B, 0x302A, 0x302A, 0x0316, 0x0062], NFKC: [0x0061, 0x031B, 0x302A, 0x302A, 0x0316, 0x0062], NFKD: [0x0061, 0x031B, 0x302A, 0x302A, 0x0316, 0x0062] },
+{ source: [0x0061, 0x0300, 0x05AE, 0x1D16D, 0x302B, 0x0062], NFC: [0x00E0, 0x1D16D, 0x05AE, 0x302B, 0x0062], NFD: [0x0061, 0x1D16D, 0x05AE, 0x302B, 0x0300, 0x0062], NFKC: [0x00E0, 0x1D16D, 0x05AE, 0x302B, 0x0062], NFKD: [0x0061, 0x1D16D, 0x05AE, 0x302B, 0x0300, 0x0062] },
+{ source: [0x0061, 0x302B, 0x0300, 0x05AE, 0x1D16D, 0x0062], NFC: [0x00E0, 0x1D16D, 0x302B, 0x05AE, 0x0062], NFD: [0x0061, 0x1D16D, 0x302B, 0x05AE, 0x0300, 0x0062], NFKC: [0x00E0, 0x1D16D, 0x302B, 0x05AE, 0x0062], NFKD: [0x0061, 0x1D16D, 0x302B, 0x05AE, 0x0300, 0x0062] },
+{ source: [0x0061, 0x035C, 0x0315, 0x0300, 0x302C, 0x0062], NFC: [0x00E0, 0x0315, 0x302C, 0x035C, 0x0062], NFD: [0x0061, 0x0300, 0x0315, 0x302C, 0x035C, 0x0062], NFKC: [0x00E0, 0x0315, 0x302C, 0x035C, 0x0062], NFKD: [0x0061, 0x0300, 0x0315, 0x302C, 0x035C, 0x0062] },
+{ source: [0x0061, 0x302C, 0x035C, 0x0315, 0x0300, 0x0062], NFC: [0x00E0, 0x302C, 0x0315, 0x035C, 0x0062], NFD: [0x0061, 0x0300, 0x302C, 0x0315, 0x035C, 0x0062], NFKC: [0x00E0, 0x302C, 0x0315, 0x035C, 0x0062], NFKD: [0x0061, 0x0300, 0x302C, 0x0315, 0x035C, 0x0062] },
+{ source: [0x0061, 0x302E, 0x059A, 0x0316, 0x302D, 0x0062], NFC: [0x0061, 0x0316, 0x059A, 0x302D, 0x302E, 0x0062], NFD: [0x0061, 0x0316, 0x059A, 0x302D, 0x302E, 0x0062], NFKC: [0x0061, 0x0316, 0x059A, 0x302D, 0x302E, 0x0062], NFKD: [0x0061, 0x0316, 0x059A, 0x302D, 0x302E, 0x0062] },
+{ source: [0x0061, 0x302D, 0x302E, 0x059A, 0x0316, 0x0062], NFC: [0x0061, 0x0316, 0x302D, 0x059A, 0x302E, 0x0062], NFD: [0x0061, 0x0316, 0x302D, 0x059A, 0x302E, 0x0062], NFKC: [0x0061, 0x0316, 0x302D, 0x059A, 0x302E, 0x0062], NFKD: [0x0061, 0x0316, 0x302D, 0x059A, 0x302E, 0x0062] },
+{ source: [0x0061, 0x1D16D, 0x302E, 0x059A, 0x302E, 0x0062], NFC: [0x0061, 0x059A, 0x302E, 0x302E, 0x1D16D, 0x0062], NFD: [0x0061, 0x059A, 0x302E, 0x302E, 0x1D16D, 0x0062], NFKC: [0x0061, 0x059A, 0x302E, 0x302E, 0x1D16D, 0x0062], NFKD: [0x0061, 0x059A, 0x302E, 0x302E, 0x1D16D, 0x0062] },
+{ source: [0x0061, 0x302E, 0x1D16D, 0x302E, 0x059A, 0x0062], NFC: [0x0061, 0x059A, 0x302E, 0x302E, 0x1D16D, 0x0062], NFD: [0x0061, 0x059A, 0x302E, 0x302E, 0x1D16D, 0x0062], NFKC: [0x0061, 0x059A, 0x302E, 0x302E, 0x1D16D, 0x0062], NFKD: [0x0061, 0x059A, 0x302E, 0x302E, 0x1D16D, 0x0062] },
+{ source: [0x0061, 0x1D16D, 0x302E, 0x059A, 0x302F, 0x0062], NFC: [0x0061, 0x059A, 0x302E, 0x302F, 0x1D16D, 0x0062], NFD: [0x0061, 0x059A, 0x302E, 0x302F, 0x1D16D, 0x0062], NFKC: [0x0061, 0x059A, 0x302E, 0x302F, 0x1D16D, 0x0062], NFKD: [0x0061, 0x059A, 0x302E, 0x302F, 0x1D16D, 0x0062] },
+{ source: [0x0061, 0x302F, 0x1D16D, 0x302E, 0x059A, 0x0062], NFC: [0x0061, 0x059A, 0x302F, 0x302E, 0x1D16D, 0x0062], NFD: [0x0061, 0x059A, 0x302F, 0x302E, 0x1D16D, 0x0062], NFKC: [0x0061, 0x059A, 0x302F, 0x302E, 0x1D16D, 0x0062], NFKD: [0x0061, 0x059A, 0x302F, 0x302E, 0x1D16D, 0x0062] },
+{ source: [0x0061, 0x094D, 0x3099, 0x093C, 0x3099, 0x0062], NFC: [0x0061, 0x093C, 0x3099, 0x3099, 0x094D, 0x0062], NFD: [0x0061, 0x093C, 0x3099, 0x3099, 0x094D, 0x0062], NFKC: [0x0061, 0x093C, 0x3099, 0x3099, 0x094D, 0x0062], NFKD: [0x0061, 0x093C, 0x3099, 0x3099, 0x094D, 0x0062] },
+{ source: [0x0061, 0x3099, 0x094D, 0x3099, 0x093C, 0x0062], NFC: [0x0061, 0x093C, 0x3099, 0x3099, 0x094D, 0x0062], NFD: [0x0061, 0x093C, 0x3099, 0x3099, 0x094D, 0x0062], NFKC: [0x0061, 0x093C, 0x3099, 0x3099, 0x094D, 0x0062], NFKD: [0x0061, 0x093C, 0x3099, 0x3099, 0x094D, 0x0062] },
+{ source: [0x0061, 0x094D, 0x3099, 0x093C, 0x309A, 0x0062], NFC: [0x0061, 0x093C, 0x3099, 0x309A, 0x094D, 0x0062], NFD: [0x0061, 0x093C, 0x3099, 0x309A, 0x094D, 0x0062], NFKC: [0x0061, 0x093C, 0x3099, 0x309A, 0x094D, 0x0062], NFKD: [0x0061, 0x093C, 0x3099, 0x309A, 0x094D, 0x0062] },
+{ source: [0x0061, 0x309A, 0x094D, 0x3099, 0x093C, 0x0062], NFC: [0x0061, 0x093C, 0x309A, 0x3099, 0x094D, 0x0062], NFD: [0x0061, 0x093C, 0x309A, 0x3099, 0x094D, 0x0062], NFKC: [0x0061, 0x093C, 0x309A, 0x3099, 0x094D, 0x0062], NFKD: [0x0061, 0x093C, 0x309A, 0x3099, 0x094D, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA66F, 0x0062], NFC: [0x00E0, 0x05AE, 0xA66F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA66F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA66F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA66F, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA66F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA66F, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA66F, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA66F, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA66F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA674, 0x0062], NFC: [0x00E0, 0x05AE, 0xA674, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA674, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA674, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA674, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA674, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA674, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA674, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA674, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA674, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA675, 0x0062], NFC: [0x00E0, 0x05AE, 0xA675, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA675, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA675, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA675, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA675, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA675, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA675, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA675, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA675, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA676, 0x0062], NFC: [0x00E0, 0x05AE, 0xA676, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA676, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA676, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA676, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA676, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA676, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA676, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA676, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA676, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA677, 0x0062], NFC: [0x00E0, 0x05AE, 0xA677, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA677, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA677, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA677, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA677, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA677, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA677, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA677, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA677, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA678, 0x0062], NFC: [0x00E0, 0x05AE, 0xA678, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA678, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA678, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA678, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA678, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA678, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA678, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA678, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA678, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA679, 0x0062], NFC: [0x00E0, 0x05AE, 0xA679, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA679, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA679, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA679, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA679, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA679, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA679, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA679, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA679, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA67A, 0x0062], NFC: [0x00E0, 0x05AE, 0xA67A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA67A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA67A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA67A, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA67A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA67A, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA67A, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA67A, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA67A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA67B, 0x0062], NFC: [0x00E0, 0x05AE, 0xA67B, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA67B, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA67B, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA67B, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA67B, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA67B, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA67B, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA67B, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA67B, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA67C, 0x0062], NFC: [0x00E0, 0x05AE, 0xA67C, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA67C, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA67C, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA67C, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA67C, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA67C, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA67C, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA67C, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA67C, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA67D, 0x0062], NFC: [0x00E0, 0x05AE, 0xA67D, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA67D, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA67D, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA67D, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA67D, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA67D, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA67D, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA67D, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA67D, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA69E, 0x0062], NFC: [0x00E0, 0x05AE, 0xA69E, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA69E, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA69E, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA69E, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA69E, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA69E, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA69E, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA69E, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA69E, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA69F, 0x0062], NFC: [0x00E0, 0x05AE, 0xA69F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA69F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA69F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA69F, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA69F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA69F, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA69F, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA69F, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA69F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA6F0, 0x0062], NFC: [0x00E0, 0x05AE, 0xA6F0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA6F0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA6F0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA6F0, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA6F0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA6F0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA6F0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA6F0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA6F0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA6F1, 0x0062], NFC: [0x00E0, 0x05AE, 0xA6F1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA6F1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA6F1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA6F1, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA6F1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA6F1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA6F1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA6F1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA6F1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0xA806, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0xA806, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0xA806, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0xA806, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0xA806, 0x05B0, 0x0062] },
+{ source: [0x0061, 0xA806, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0xA806, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0xA806, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0xA806, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0xA806, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0xA8C4, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0xA8C4, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0xA8C4, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0xA8C4, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0xA8C4, 0x05B0, 0x0062] },
+{ source: [0x0061, 0xA8C4, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0xA8C4, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0xA8C4, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0xA8C4, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0xA8C4, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8E0, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8E0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8E0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8E0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8E0, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8E0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8E0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8E0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8E0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8E0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8E1, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8E1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8E1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8E1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8E1, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8E1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8E1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8E1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8E1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8E1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8E2, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8E2, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8E2, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8E2, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8E2, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8E2, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8E2, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8E2, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8E2, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8E2, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8E3, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8E3, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8E3, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8E3, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8E3, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8E3, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8E3, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8E3, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8E3, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8E3, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8E4, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8E4, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8E4, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8E4, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8E4, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8E4, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8E4, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8E4, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8E4, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8E4, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8E5, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8E5, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8E5, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8E5, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8E5, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8E5, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8E5, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8E5, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8E5, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8E5, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8E6, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8E6, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8E6, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8E6, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8E6, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8E6, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8E6, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8E6, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8E6, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8E6, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8E7, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8E7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8E7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8E7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8E7, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8E7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8E7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8E7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8E7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8E7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8E8, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8E8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8E8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8E8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8E8, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8E8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8E8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8E8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8E8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8E8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8E9, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8E9, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8E9, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8E9, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8E9, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8E9, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8E9, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8E9, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8E9, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8E9, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8EA, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8EA, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8EA, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8EA, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8EA, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8EA, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8EA, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8EA, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8EA, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8EA, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8EB, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8EB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8EB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8EB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8EB, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8EB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8EB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8EB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8EB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8EB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8EC, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8EC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8EC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8EC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8EC, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8EC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8EC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8EC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8EC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8EC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8ED, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8ED, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8ED, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8ED, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8ED, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8ED, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8ED, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8ED, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8ED, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8ED, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8EE, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8EE, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8EE, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8EE, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8EE, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8EE, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8EE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8EE, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8EE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8EE, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8EF, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8EF, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8EF, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8EF, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8EF, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8EF, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8EF, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8EF, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8EF, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8EF, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8F0, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8F0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8F0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8F0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8F0, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8F0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8F0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8F0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8F0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8F0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xA8F1, 0x0062], NFC: [0x00E0, 0x05AE, 0xA8F1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xA8F1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xA8F1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xA8F1, 0x0315, 0x0062] },
+{ source: [0x0061, 0xA8F1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xA8F1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xA8F1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xA8F1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xA8F1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0xA92B, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0xA92B, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0xA92B, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0xA92B, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0xA92B, 0x059A, 0x0062] },
+{ source: [0x0061, 0xA92B, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0xA92B, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0xA92B, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0xA92B, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0xA92B, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0xA92C, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0xA92C, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0xA92C, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0xA92C, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0xA92C, 0x059A, 0x0062] },
+{ source: [0x0061, 0xA92C, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0xA92C, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0xA92C, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0xA92C, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0xA92C, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0xA92D, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0xA92D, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0xA92D, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0xA92D, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0xA92D, 0x059A, 0x0062] },
+{ source: [0x0061, 0xA92D, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0xA92D, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0xA92D, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0xA92D, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0xA92D, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0xA953, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0xA953, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0xA953, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0xA953, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0xA953, 0x05B0, 0x0062] },
+{ source: [0x0061, 0xA953, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0xA953, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0xA953, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0xA953, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0xA953, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0xA9B3, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0xA9B3, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0xA9B3, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0xA9B3, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0xA9B3, 0x3099, 0x0062] },
+{ source: [0x0061, 0xA9B3, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0xA9B3, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0xA9B3, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0xA9B3, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0xA9B3, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0xA9C0, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0xA9C0, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0xA9C0, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0xA9C0, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0xA9C0, 0x05B0, 0x0062] },
+{ source: [0x0061, 0xA9C0, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0xA9C0, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0xA9C0, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0xA9C0, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0xA9C0, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xAAB0, 0x0062], NFC: [0x00E0, 0x05AE, 0xAAB0, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xAAB0, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xAAB0, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xAAB0, 0x0315, 0x0062] },
+{ source: [0x0061, 0xAAB0, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xAAB0, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xAAB0, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xAAB0, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xAAB0, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xAAB2, 0x0062], NFC: [0x00E0, 0x05AE, 0xAAB2, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xAAB2, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xAAB2, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xAAB2, 0x0315, 0x0062] },
+{ source: [0x0061, 0xAAB2, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xAAB2, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xAAB2, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xAAB2, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xAAB2, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xAAB3, 0x0062], NFC: [0x00E0, 0x05AE, 0xAAB3, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xAAB3, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xAAB3, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xAAB3, 0x0315, 0x0062] },
+{ source: [0x0061, 0xAAB3, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xAAB3, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xAAB3, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xAAB3, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xAAB3, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0xAAB4, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0xAAB4, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0xAAB4, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0xAAB4, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0xAAB4, 0x059A, 0x0062] },
+{ source: [0x0061, 0xAAB4, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0xAAB4, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0xAAB4, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0xAAB4, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0xAAB4, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xAAB7, 0x0062], NFC: [0x00E0, 0x05AE, 0xAAB7, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xAAB7, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xAAB7, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xAAB7, 0x0315, 0x0062] },
+{ source: [0x0061, 0xAAB7, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xAAB7, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xAAB7, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xAAB7, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xAAB7, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xAAB8, 0x0062], NFC: [0x00E0, 0x05AE, 0xAAB8, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xAAB8, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xAAB8, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xAAB8, 0x0315, 0x0062] },
+{ source: [0x0061, 0xAAB8, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xAAB8, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xAAB8, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xAAB8, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xAAB8, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xAABE, 0x0062], NFC: [0x00E0, 0x05AE, 0xAABE, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xAABE, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xAABE, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xAABE, 0x0315, 0x0062] },
+{ source: [0x0061, 0xAABE, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xAABE, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xAABE, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xAABE, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xAABE, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xAABF, 0x0062], NFC: [0x00E0, 0x05AE, 0xAABF, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xAABF, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xAABF, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xAABF, 0x0315, 0x0062] },
+{ source: [0x0061, 0xAABF, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xAABF, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xAABF, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xAABF, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xAABF, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xAAC1, 0x0062], NFC: [0x00E0, 0x05AE, 0xAAC1, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xAAC1, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xAAC1, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xAAC1, 0x0315, 0x0062] },
+{ source: [0x0061, 0xAAC1, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xAAC1, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xAAC1, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xAAC1, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xAAC1, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0xAAF6, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0xAAF6, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0xAAF6, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0xAAF6, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0xAAF6, 0x05B0, 0x0062] },
+{ source: [0x0061, 0xAAF6, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0xAAF6, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0xAAF6, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0xAAF6, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0xAAF6, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0xABED, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0xABED, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0xABED, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0xABED, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0xABED, 0x05B0, 0x0062] },
+{ source: [0x0061, 0xABED, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0xABED, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0xABED, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0xABED, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0xABED, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x064B, 0xFB1E, 0x05C2, 0xFB1E, 0x0062], NFC: [0x0061, 0x05C2, 0xFB1E, 0xFB1E, 0x064B, 0x0062], NFD: [0x0061, 0x05C2, 0xFB1E, 0xFB1E, 0x064B, 0x0062], NFKC: [0x0061, 0x05C2, 0xFB1E, 0xFB1E, 0x064B, 0x0062], NFKD: [0x0061, 0x05C2, 0xFB1E, 0xFB1E, 0x064B, 0x0062] },
+{ source: [0x0061, 0xFB1E, 0x064B, 0xFB1E, 0x05C2, 0x0062], NFC: [0x0061, 0x05C2, 0xFB1E, 0xFB1E, 0x064B, 0x0062], NFD: [0x0061, 0x05C2, 0xFB1E, 0xFB1E, 0x064B, 0x0062], NFKC: [0x0061, 0x05C2, 0xFB1E, 0xFB1E, 0x064B, 0x0062], NFKD: [0x0061, 0x05C2, 0xFB1E, 0xFB1E, 0x064B, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xFE20, 0x0062], NFC: [0x00E0, 0x05AE, 0xFE20, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xFE20, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xFE20, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xFE20, 0x0315, 0x0062] },
+{ source: [0x0061, 0xFE20, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xFE20, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xFE20, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xFE20, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xFE20, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xFE21, 0x0062], NFC: [0x00E0, 0x05AE, 0xFE21, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xFE21, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xFE21, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xFE21, 0x0315, 0x0062] },
+{ source: [0x0061, 0xFE21, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xFE21, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xFE21, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xFE21, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xFE21, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xFE22, 0x0062], NFC: [0x00E0, 0x05AE, 0xFE22, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xFE22, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xFE22, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xFE22, 0x0315, 0x0062] },
+{ source: [0x0061, 0xFE22, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xFE22, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xFE22, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xFE22, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xFE22, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xFE23, 0x0062], NFC: [0x00E0, 0x05AE, 0xFE23, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xFE23, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xFE23, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xFE23, 0x0315, 0x0062] },
+{ source: [0x0061, 0xFE23, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xFE23, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xFE23, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xFE23, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xFE23, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xFE24, 0x0062], NFC: [0x00E0, 0x05AE, 0xFE24, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xFE24, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xFE24, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xFE24, 0x0315, 0x0062] },
+{ source: [0x0061, 0xFE24, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xFE24, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xFE24, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xFE24, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xFE24, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xFE25, 0x0062], NFC: [0x00E0, 0x05AE, 0xFE25, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xFE25, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xFE25, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xFE25, 0x0315, 0x0062] },
+{ source: [0x0061, 0xFE25, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xFE25, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xFE25, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xFE25, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xFE25, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xFE26, 0x0062], NFC: [0x00E0, 0x05AE, 0xFE26, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xFE26, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xFE26, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xFE26, 0x0315, 0x0062] },
+{ source: [0x0061, 0xFE26, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xFE26, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xFE26, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xFE26, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xFE26, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0xFE27, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0xFE27, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0xFE27, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0xFE27, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0xFE27, 0x059A, 0x0062] },
+{ source: [0x0061, 0xFE27, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0xFE27, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0xFE27, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0xFE27, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0xFE27, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0xFE28, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0xFE28, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0xFE28, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0xFE28, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0xFE28, 0x059A, 0x0062] },
+{ source: [0x0061, 0xFE28, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0xFE28, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0xFE28, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0xFE28, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0xFE28, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0xFE29, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0xFE29, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0xFE29, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0xFE29, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0xFE29, 0x059A, 0x0062] },
+{ source: [0x0061, 0xFE29, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0xFE29, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0xFE29, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0xFE29, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0xFE29, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0xFE2A, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0xFE2A, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0xFE2A, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0xFE2A, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0xFE2A, 0x059A, 0x0062] },
+{ source: [0x0061, 0xFE2A, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0xFE2A, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0xFE2A, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0xFE2A, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0xFE2A, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0xFE2B, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0xFE2B, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0xFE2B, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0xFE2B, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0xFE2B, 0x059A, 0x0062] },
+{ source: [0x0061, 0xFE2B, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0xFE2B, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0xFE2B, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0xFE2B, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0xFE2B, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0xFE2C, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0xFE2C, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0xFE2C, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0xFE2C, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0xFE2C, 0x059A, 0x0062] },
+{ source: [0x0061, 0xFE2C, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0xFE2C, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0xFE2C, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0xFE2C, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0xFE2C, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0xFE2D, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0xFE2D, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0xFE2D, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0xFE2D, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0xFE2D, 0x059A, 0x0062] },
+{ source: [0x0061, 0xFE2D, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0xFE2D, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0xFE2D, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0xFE2D, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0xFE2D, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xFE2E, 0x0062], NFC: [0x00E0, 0x05AE, 0xFE2E, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xFE2E, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xFE2E, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xFE2E, 0x0315, 0x0062] },
+{ source: [0x0061, 0xFE2E, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xFE2E, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xFE2E, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xFE2E, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xFE2E, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0xFE2F, 0x0062], NFC: [0x00E0, 0x05AE, 0xFE2F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0xFE2F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0xFE2F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0xFE2F, 0x0315, 0x0062] },
+{ source: [0x0061, 0xFE2F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0xFE2F, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0xFE2F, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0xFE2F, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0xFE2F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x101FD, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x101FD, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x101FD, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x101FD, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x101FD, 0x059A, 0x0062] },
+{ source: [0x0061, 0x101FD, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x101FD, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x101FD, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x101FD, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x101FD, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x102E0, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x102E0, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x102E0, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x102E0, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x102E0, 0x059A, 0x0062] },
+{ source: [0x0061, 0x102E0, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x102E0, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x102E0, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x102E0, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x102E0, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x10376, 0x0062], NFC: [0x00E0, 0x05AE, 0x10376, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x10376, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x10376, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x10376, 0x0315, 0x0062] },
+{ source: [0x0061, 0x10376, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x10376, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x10376, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x10376, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x10376, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x10377, 0x0062], NFC: [0x00E0, 0x05AE, 0x10377, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x10377, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x10377, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x10377, 0x0315, 0x0062] },
+{ source: [0x0061, 0x10377, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x10377, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x10377, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x10377, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x10377, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x10378, 0x0062], NFC: [0x00E0, 0x05AE, 0x10378, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x10378, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x10378, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x10378, 0x0315, 0x0062] },
+{ source: [0x0061, 0x10378, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x10378, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x10378, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x10378, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x10378, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x10379, 0x0062], NFC: [0x00E0, 0x05AE, 0x10379, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x10379, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x10379, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x10379, 0x0315, 0x0062] },
+{ source: [0x0061, 0x10379, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x10379, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x10379, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x10379, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x10379, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1037A, 0x0062], NFC: [0x00E0, 0x05AE, 0x1037A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1037A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1037A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1037A, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1037A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1037A, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1037A, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1037A, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1037A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x10A0D, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x10A0D, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x10A0D, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x10A0D, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x10A0D, 0x059A, 0x0062] },
+{ source: [0x0061, 0x10A0D, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x10A0D, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x10A0D, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x10A0D, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x10A0D, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x10A0F, 0x0062], NFC: [0x00E0, 0x05AE, 0x10A0F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x10A0F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x10A0F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x10A0F, 0x0315, 0x0062] },
+{ source: [0x0061, 0x10A0F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x10A0F, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x10A0F, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x10A0F, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x10A0F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x10A38, 0x0062], NFC: [0x00E0, 0x05AE, 0x10A38, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x10A38, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x10A38, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x10A38, 0x0315, 0x0062] },
+{ source: [0x0061, 0x10A38, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x10A38, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x10A38, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x10A38, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x10A38, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x10A39, 0x0062], NFC: [0x0061, 0x0334, 0x10A39, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x10A39, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x10A39, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x10A39, 0x093C, 0x0062] },
+{ source: [0x0061, 0x10A39, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x10A39, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x10A39, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x10A39, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x10A39, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x10A3A, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x10A3A, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x10A3A, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x10A3A, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x10A3A, 0x059A, 0x0062] },
+{ source: [0x0061, 0x10A3A, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x10A3A, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x10A3A, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x10A3A, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x10A3A, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x10A3F, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x10A3F, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x10A3F, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x10A3F, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x10A3F, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x10A3F, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x10A3F, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x10A3F, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x10A3F, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x10A3F, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x10AE5, 0x0062], NFC: [0x00E0, 0x05AE, 0x10AE5, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x10AE5, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x10AE5, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x10AE5, 0x0315, 0x0062] },
+{ source: [0x0061, 0x10AE5, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x10AE5, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x10AE5, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x10AE5, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x10AE5, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x10AE6, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x10AE6, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x10AE6, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x10AE6, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x10AE6, 0x059A, 0x0062] },
+{ source: [0x0061, 0x10AE6, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x10AE6, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x10AE6, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x10AE6, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x10AE6, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x11046, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x11046, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x11046, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x11046, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x11046, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x11046, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x11046, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x11046, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x11046, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x11046, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x1107F, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x1107F, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x1107F, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x1107F, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x1107F, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x1107F, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x1107F, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x1107F, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x1107F, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x1107F, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x110B9, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x110B9, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x110B9, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x110B9, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x110B9, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x110B9, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x110B9, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x110B9, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x110B9, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x110B9, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x110BA, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x110BA, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x110BA, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x110BA, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x110BA, 0x3099, 0x0062] },
+{ source: [0x0061, 0x110BA, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x110BA, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x110BA, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x110BA, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x110BA, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x11100, 0x0062], NFC: [0x00E0, 0x05AE, 0x11100, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x11100, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x11100, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x11100, 0x0315, 0x0062] },
+{ source: [0x0061, 0x11100, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x11100, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x11100, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x11100, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x11100, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x11101, 0x0062], NFC: [0x00E0, 0x05AE, 0x11101, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x11101, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x11101, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x11101, 0x0315, 0x0062] },
+{ source: [0x0061, 0x11101, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x11101, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x11101, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x11101, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x11101, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x11102, 0x0062], NFC: [0x00E0, 0x05AE, 0x11102, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x11102, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x11102, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x11102, 0x0315, 0x0062] },
+{ source: [0x0061, 0x11102, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x11102, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x11102, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x11102, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x11102, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x11133, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x11133, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x11133, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x11133, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x11133, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x11133, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x11133, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x11133, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x11133, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x11133, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x11134, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x11134, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x11134, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x11134, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x11134, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x11134, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x11134, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x11134, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x11134, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x11134, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x11173, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x11173, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x11173, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x11173, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x11173, 0x3099, 0x0062] },
+{ source: [0x0061, 0x11173, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x11173, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x11173, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x11173, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x11173, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x111C0, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x111C0, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x111C0, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x111C0, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x111C0, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x111C0, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x111C0, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x111C0, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x111C0, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x111C0, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x111CA, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x111CA, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x111CA, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x111CA, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x111CA, 0x3099, 0x0062] },
+{ source: [0x0061, 0x111CA, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x111CA, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x111CA, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x111CA, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x111CA, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x11235, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x11235, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x11235, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x11235, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x11235, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x11235, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x11235, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x11235, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x11235, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x11235, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x11236, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x11236, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x11236, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x11236, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x11236, 0x3099, 0x0062] },
+{ source: [0x0061, 0x11236, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x11236, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x11236, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x11236, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x11236, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x112E9, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x112E9, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x112E9, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x112E9, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x112E9, 0x3099, 0x0062] },
+{ source: [0x0061, 0x112E9, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x112E9, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x112E9, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x112E9, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x112E9, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x112EA, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x112EA, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x112EA, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x112EA, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x112EA, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x112EA, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x112EA, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x112EA, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x112EA, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x112EA, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x1133C, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x1133C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x1133C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x1133C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x1133C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x1133C, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x1133C, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x1133C, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x1133C, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x1133C, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x1134D, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x1134D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x1134D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x1134D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x1134D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x1134D, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x1134D, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x1134D, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x1134D, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x1134D, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x11366, 0x0062], NFC: [0x00E0, 0x05AE, 0x11366, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x11366, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x11366, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x11366, 0x0315, 0x0062] },
+{ source: [0x0061, 0x11366, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x11366, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x11366, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x11366, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x11366, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x11367, 0x0062], NFC: [0x00E0, 0x05AE, 0x11367, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x11367, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x11367, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x11367, 0x0315, 0x0062] },
+{ source: [0x0061, 0x11367, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x11367, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x11367, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x11367, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x11367, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x11368, 0x0062], NFC: [0x00E0, 0x05AE, 0x11368, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x11368, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x11368, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x11368, 0x0315, 0x0062] },
+{ source: [0x0061, 0x11368, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x11368, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x11368, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x11368, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x11368, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x11369, 0x0062], NFC: [0x00E0, 0x05AE, 0x11369, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x11369, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x11369, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x11369, 0x0315, 0x0062] },
+{ source: [0x0061, 0x11369, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x11369, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x11369, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x11369, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x11369, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1136A, 0x0062], NFC: [0x00E0, 0x05AE, 0x1136A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1136A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1136A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1136A, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1136A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1136A, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1136A, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1136A, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1136A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1136B, 0x0062], NFC: [0x00E0, 0x05AE, 0x1136B, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1136B, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1136B, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1136B, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1136B, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1136B, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1136B, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1136B, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1136B, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1136C, 0x0062], NFC: [0x00E0, 0x05AE, 0x1136C, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1136C, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1136C, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1136C, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1136C, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1136C, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1136C, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1136C, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1136C, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x11370, 0x0062], NFC: [0x00E0, 0x05AE, 0x11370, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x11370, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x11370, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x11370, 0x0315, 0x0062] },
+{ source: [0x0061, 0x11370, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x11370, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x11370, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x11370, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x11370, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x11371, 0x0062], NFC: [0x00E0, 0x05AE, 0x11371, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x11371, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x11371, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x11371, 0x0315, 0x0062] },
+{ source: [0x0061, 0x11371, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x11371, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x11371, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x11371, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x11371, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x11372, 0x0062], NFC: [0x00E0, 0x05AE, 0x11372, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x11372, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x11372, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x11372, 0x0315, 0x0062] },
+{ source: [0x0061, 0x11372, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x11372, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x11372, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x11372, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x11372, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x11373, 0x0062], NFC: [0x00E0, 0x05AE, 0x11373, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x11373, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x11373, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x11373, 0x0315, 0x0062] },
+{ source: [0x0061, 0x11373, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x11373, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x11373, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x11373, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x11373, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x11374, 0x0062], NFC: [0x00E0, 0x05AE, 0x11374, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x11374, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x11374, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x11374, 0x0315, 0x0062] },
+{ source: [0x0061, 0x11374, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x11374, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x11374, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x11374, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x11374, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x11442, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x11442, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x11442, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x11442, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x11442, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x11442, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x11442, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x11442, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x11442, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x11442, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x11446, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x11446, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x11446, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x11446, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x11446, 0x3099, 0x0062] },
+{ source: [0x0061, 0x11446, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x11446, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x11446, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x11446, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x11446, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x114C2, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x114C2, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x114C2, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x114C2, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x114C2, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x114C2, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x114C2, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x114C2, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x114C2, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x114C2, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x114C3, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x114C3, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x114C3, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x114C3, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x114C3, 0x3099, 0x0062] },
+{ source: [0x0061, 0x114C3, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x114C3, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x114C3, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x114C3, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x114C3, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x115BF, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x115BF, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x115BF, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x115BF, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x115BF, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x115BF, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x115BF, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x115BF, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x115BF, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x115BF, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x115C0, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x115C0, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x115C0, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x115C0, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x115C0, 0x3099, 0x0062] },
+{ source: [0x0061, 0x115C0, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x115C0, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x115C0, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x115C0, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x115C0, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x1163F, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x1163F, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x1163F, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x1163F, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x1163F, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x1163F, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x1163F, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x1163F, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x1163F, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x1163F, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x116B6, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x116B6, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x116B6, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x116B6, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x116B6, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x116B6, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x116B6, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x116B6, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x116B6, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x116B6, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x116B7, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x116B7, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x116B7, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x116B7, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x116B7, 0x3099, 0x0062] },
+{ source: [0x0061, 0x116B7, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x116B7, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x116B7, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x116B7, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x116B7, 0x093C, 0x3099, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x1172B, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x1172B, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x1172B, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x1172B, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x1172B, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x1172B, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x1172B, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x1172B, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x1172B, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x1172B, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x05B0, 0x094D, 0x3099, 0x11C3F, 0x0062], NFC: [0x0061, 0x3099, 0x094D, 0x11C3F, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x094D, 0x11C3F, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x094D, 0x11C3F, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x094D, 0x11C3F, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x11C3F, 0x05B0, 0x094D, 0x3099, 0x0062], NFC: [0x0061, 0x3099, 0x11C3F, 0x094D, 0x05B0, 0x0062], NFD: [0x0061, 0x3099, 0x11C3F, 0x094D, 0x05B0, 0x0062], NFKC: [0x0061, 0x3099, 0x11C3F, 0x094D, 0x05B0, 0x0062], NFKD: [0x0061, 0x3099, 0x11C3F, 0x094D, 0x05B0, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x16AF0, 0x0062], NFC: [0x0061, 0x0334, 0x16AF0, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x16AF0, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x16AF0, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x16AF0, 0x093C, 0x0062] },
+{ source: [0x0061, 0x16AF0, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x16AF0, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x16AF0, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x16AF0, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x16AF0, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x16AF1, 0x0062], NFC: [0x0061, 0x0334, 0x16AF1, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x16AF1, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x16AF1, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x16AF1, 0x093C, 0x0062] },
+{ source: [0x0061, 0x16AF1, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x16AF1, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x16AF1, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x16AF1, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x16AF1, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x16AF2, 0x0062], NFC: [0x0061, 0x0334, 0x16AF2, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x16AF2, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x16AF2, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x16AF2, 0x093C, 0x0062] },
+{ source: [0x0061, 0x16AF2, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x16AF2, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x16AF2, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x16AF2, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x16AF2, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x16AF3, 0x0062], NFC: [0x0061, 0x0334, 0x16AF3, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x16AF3, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x16AF3, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x16AF3, 0x093C, 0x0062] },
+{ source: [0x0061, 0x16AF3, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x16AF3, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x16AF3, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x16AF3, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x16AF3, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x16AF4, 0x0062], NFC: [0x0061, 0x0334, 0x16AF4, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x16AF4, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x16AF4, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x16AF4, 0x093C, 0x0062] },
+{ source: [0x0061, 0x16AF4, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x16AF4, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x16AF4, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x16AF4, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x16AF4, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x16B30, 0x0062], NFC: [0x00E0, 0x05AE, 0x16B30, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x16B30, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x16B30, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x16B30, 0x0315, 0x0062] },
+{ source: [0x0061, 0x16B30, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x16B30, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x16B30, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x16B30, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x16B30, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x16B31, 0x0062], NFC: [0x00E0, 0x05AE, 0x16B31, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x16B31, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x16B31, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x16B31, 0x0315, 0x0062] },
+{ source: [0x0061, 0x16B31, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x16B31, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x16B31, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x16B31, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x16B31, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x16B32, 0x0062], NFC: [0x00E0, 0x05AE, 0x16B32, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x16B32, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x16B32, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x16B32, 0x0315, 0x0062] },
+{ source: [0x0061, 0x16B32, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x16B32, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x16B32, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x16B32, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x16B32, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x16B33, 0x0062], NFC: [0x00E0, 0x05AE, 0x16B33, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x16B33, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x16B33, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x16B33, 0x0315, 0x0062] },
+{ source: [0x0061, 0x16B33, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x16B33, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x16B33, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x16B33, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x16B33, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x16B34, 0x0062], NFC: [0x00E0, 0x05AE, 0x16B34, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x16B34, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x16B34, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x16B34, 0x0315, 0x0062] },
+{ source: [0x0061, 0x16B34, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x16B34, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x16B34, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x16B34, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x16B34, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x16B35, 0x0062], NFC: [0x00E0, 0x05AE, 0x16B35, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x16B35, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x16B35, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x16B35, 0x0315, 0x0062] },
+{ source: [0x0061, 0x16B35, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x16B35, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x16B35, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x16B35, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x16B35, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x16B36, 0x0062], NFC: [0x00E0, 0x05AE, 0x16B36, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x16B36, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x16B36, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x16B36, 0x0315, 0x0062] },
+{ source: [0x0061, 0x16B36, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x16B36, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x16B36, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x16B36, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x16B36, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x1BC9E, 0x0062], NFC: [0x0061, 0x0334, 0x1BC9E, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x1BC9E, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x1BC9E, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x1BC9E, 0x093C, 0x0062] },
+{ source: [0x0061, 0x1BC9E, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x1BC9E, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x1BC9E, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x1BC9E, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x1BC9E, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x302A, 0x031B, 0x1DCE, 0x1D165, 0x0062], NFC: [0x0061, 0x1DCE, 0x031B, 0x1D165, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x031B, 0x1D165, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x031B, 0x1D165, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x031B, 0x1D165, 0x302A, 0x0062] },
+{ source: [0x0061, 0x1D165, 0x302A, 0x031B, 0x1DCE, 0x0062], NFC: [0x0061, 0x1DCE, 0x1D165, 0x031B, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x1D165, 0x031B, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x1D165, 0x031B, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x1D165, 0x031B, 0x302A, 0x0062] },
+{ source: [0x0061, 0x302A, 0x031B, 0x1DCE, 0x1D166, 0x0062], NFC: [0x0061, 0x1DCE, 0x031B, 0x1D166, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x031B, 0x1D166, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x031B, 0x1D166, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x031B, 0x1D166, 0x302A, 0x0062] },
+{ source: [0x0061, 0x1D166, 0x302A, 0x031B, 0x1DCE, 0x0062], NFC: [0x0061, 0x1DCE, 0x1D166, 0x031B, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x1D166, 0x031B, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x1D166, 0x031B, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x1D166, 0x031B, 0x302A, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x1D167, 0x0062], NFC: [0x0061, 0x0334, 0x1D167, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x1D167, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x1D167, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x1D167, 0x093C, 0x0062] },
+{ source: [0x0061, 0x1D167, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x1D167, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x1D167, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x1D167, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x1D167, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x1D168, 0x0062], NFC: [0x0061, 0x0334, 0x1D168, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x1D168, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x1D168, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x1D168, 0x093C, 0x0062] },
+{ source: [0x0061, 0x1D168, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x1D168, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x1D168, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x1D168, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x1D168, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x093C, 0x0334, 0x1D169, 0x0062], NFC: [0x0061, 0x0334, 0x1D169, 0x093C, 0x0062], NFD: [0x0061, 0x0334, 0x1D169, 0x093C, 0x0062], NFKC: [0x0061, 0x0334, 0x1D169, 0x093C, 0x0062], NFKD: [0x0061, 0x0334, 0x1D169, 0x093C, 0x0062] },
+{ source: [0x0061, 0x1D169, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x1D169, 0x0334, 0x093C, 0x0062], NFD: [0x0061, 0x1D169, 0x0334, 0x093C, 0x0062], NFKC: [0x0061, 0x1D169, 0x0334, 0x093C, 0x0062], NFKD: [0x0061, 0x1D169, 0x0334, 0x093C, 0x0062] },
+{ source: [0x0061, 0x05AE, 0x1D16D, 0x302E, 0x1D16D, 0x0062], NFC: [0x0061, 0x302E, 0x1D16D, 0x1D16D, 0x05AE, 0x0062], NFD: [0x0061, 0x302E, 0x1D16D, 0x1D16D, 0x05AE, 0x0062], NFKC: [0x0061, 0x302E, 0x1D16D, 0x1D16D, 0x05AE, 0x0062], NFKD: [0x0061, 0x302E, 0x1D16D, 0x1D16D, 0x05AE, 0x0062] },
+{ source: [0x0061, 0x1D16D, 0x05AE, 0x1D16D, 0x302E, 0x0062], NFC: [0x0061, 0x302E, 0x1D16D, 0x1D16D, 0x05AE, 0x0062], NFD: [0x0061, 0x302E, 0x1D16D, 0x1D16D, 0x05AE, 0x0062], NFKC: [0x0061, 0x302E, 0x1D16D, 0x1D16D, 0x05AE, 0x0062], NFKD: [0x0061, 0x302E, 0x1D16D, 0x1D16D, 0x05AE, 0x0062] },
+{ source: [0x0061, 0x302A, 0x031B, 0x1DCE, 0x1D16E, 0x0062], NFC: [0x0061, 0x1DCE, 0x031B, 0x1D16E, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x031B, 0x1D16E, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x031B, 0x1D16E, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x031B, 0x1D16E, 0x302A, 0x0062] },
+{ source: [0x0061, 0x1D16E, 0x302A, 0x031B, 0x1DCE, 0x0062], NFC: [0x0061, 0x1DCE, 0x1D16E, 0x031B, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x1D16E, 0x031B, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x1D16E, 0x031B, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x1D16E, 0x031B, 0x302A, 0x0062] },
+{ source: [0x0061, 0x302A, 0x031B, 0x1DCE, 0x1D16F, 0x0062], NFC: [0x0061, 0x1DCE, 0x031B, 0x1D16F, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x031B, 0x1D16F, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x031B, 0x1D16F, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x031B, 0x1D16F, 0x302A, 0x0062] },
+{ source: [0x0061, 0x1D16F, 0x302A, 0x031B, 0x1DCE, 0x0062], NFC: [0x0061, 0x1DCE, 0x1D16F, 0x031B, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x1D16F, 0x031B, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x1D16F, 0x031B, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x1D16F, 0x031B, 0x302A, 0x0062] },
+{ source: [0x0061, 0x302A, 0x031B, 0x1DCE, 0x1D170, 0x0062], NFC: [0x0061, 0x1DCE, 0x031B, 0x1D170, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x031B, 0x1D170, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x031B, 0x1D170, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x031B, 0x1D170, 0x302A, 0x0062] },
+{ source: [0x0061, 0x1D170, 0x302A, 0x031B, 0x1DCE, 0x0062], NFC: [0x0061, 0x1DCE, 0x1D170, 0x031B, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x1D170, 0x031B, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x1D170, 0x031B, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x1D170, 0x031B, 0x302A, 0x0062] },
+{ source: [0x0061, 0x302A, 0x031B, 0x1DCE, 0x1D171, 0x0062], NFC: [0x0061, 0x1DCE, 0x031B, 0x1D171, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x031B, 0x1D171, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x031B, 0x1D171, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x031B, 0x1D171, 0x302A, 0x0062] },
+{ source: [0x0061, 0x1D171, 0x302A, 0x031B, 0x1DCE, 0x0062], NFC: [0x0061, 0x1DCE, 0x1D171, 0x031B, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x1D171, 0x031B, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x1D171, 0x031B, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x1D171, 0x031B, 0x302A, 0x0062] },
+{ source: [0x0061, 0x302A, 0x031B, 0x1DCE, 0x1D172, 0x0062], NFC: [0x0061, 0x1DCE, 0x031B, 0x1D172, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x031B, 0x1D172, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x031B, 0x1D172, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x031B, 0x1D172, 0x302A, 0x0062] },
+{ source: [0x0061, 0x1D172, 0x302A, 0x031B, 0x1DCE, 0x0062], NFC: [0x0061, 0x1DCE, 0x1D172, 0x031B, 0x302A, 0x0062], NFD: [0x0061, 0x1DCE, 0x1D172, 0x031B, 0x302A, 0x0062], NFKC: [0x0061, 0x1DCE, 0x1D172, 0x031B, 0x302A, 0x0062], NFKD: [0x0061, 0x1DCE, 0x1D172, 0x031B, 0x302A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1D17B, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1D17B, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1D17B, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1D17B, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1D17B, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1D17B, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1D17B, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1D17B, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1D17B, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1D17B, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1D17C, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1D17C, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1D17C, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1D17C, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1D17C, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1D17C, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1D17C, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1D17C, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1D17C, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1D17C, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1D17D, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1D17D, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1D17D, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1D17D, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1D17D, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1D17D, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1D17D, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1D17D, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1D17D, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1D17D, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1D17E, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1D17E, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1D17E, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1D17E, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1D17E, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1D17E, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1D17E, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1D17E, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1D17E, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1D17E, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1D17F, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1D17F, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1D17F, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1D17F, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1D17F, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1D17F, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1D17F, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1D17F, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1D17F, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1D17F, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1D180, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1D180, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1D180, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1D180, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1D180, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1D180, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1D180, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1D180, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1D180, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1D180, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1D181, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1D181, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1D181, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1D181, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1D181, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1D181, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1D181, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1D181, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1D181, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1D181, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1D182, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1D182, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1D182, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1D182, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1D182, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1D182, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1D182, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1D182, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1D182, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1D182, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1D185, 0x0062], NFC: [0x00E0, 0x05AE, 0x1D185, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1D185, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1D185, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1D185, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1D185, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1D185, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1D185, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1D185, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1D185, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1D186, 0x0062], NFC: [0x00E0, 0x05AE, 0x1D186, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1D186, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1D186, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1D186, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1D186, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1D186, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1D186, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1D186, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1D186, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1D187, 0x0062], NFC: [0x00E0, 0x05AE, 0x1D187, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1D187, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1D187, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1D187, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1D187, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1D187, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1D187, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1D187, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1D187, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1D188, 0x0062], NFC: [0x00E0, 0x05AE, 0x1D188, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1D188, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1D188, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1D188, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1D188, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1D188, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1D188, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1D188, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1D188, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1D189, 0x0062], NFC: [0x00E0, 0x05AE, 0x1D189, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1D189, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1D189, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1D189, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1D189, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1D189, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1D189, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1D189, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1D189, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1D18A, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1D18A, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1D18A, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1D18A, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1D18A, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1D18A, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1D18A, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1D18A, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1D18A, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1D18A, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1D18B, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1D18B, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1D18B, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1D18B, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1D18B, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1D18B, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1D18B, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1D18B, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1D18B, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1D18B, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1D1AA, 0x0062], NFC: [0x00E0, 0x05AE, 0x1D1AA, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1D1AA, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1D1AA, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1D1AA, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1D1AA, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1D1AA, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1D1AA, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1D1AA, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1D1AA, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1D1AB, 0x0062], NFC: [0x00E0, 0x05AE, 0x1D1AB, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1D1AB, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1D1AB, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1D1AB, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1D1AB, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1D1AB, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1D1AB, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1D1AB, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1D1AB, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1D1AC, 0x0062], NFC: [0x00E0, 0x05AE, 0x1D1AC, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1D1AC, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1D1AC, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1D1AC, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1D1AC, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1D1AC, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1D1AC, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1D1AC, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1D1AC, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1D1AD, 0x0062], NFC: [0x00E0, 0x05AE, 0x1D1AD, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1D1AD, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1D1AD, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1D1AD, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1D1AD, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1D1AD, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1D1AD, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1D1AD, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1D1AD, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1D242, 0x0062], NFC: [0x00E0, 0x05AE, 0x1D242, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1D242, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1D242, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1D242, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1D242, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1D242, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1D242, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1D242, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1D242, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1D243, 0x0062], NFC: [0x00E0, 0x05AE, 0x1D243, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1D243, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1D243, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1D243, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1D243, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1D243, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1D243, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1D243, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1D243, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1D244, 0x0062], NFC: [0x00E0, 0x05AE, 0x1D244, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1D244, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1D244, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1D244, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1D244, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1D244, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1D244, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1D244, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1D244, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E000, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E000, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E000, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E000, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E000, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E000, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E000, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E000, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E000, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E000, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E001, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E001, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E001, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E001, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E001, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E001, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E001, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E001, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E001, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E001, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E002, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E002, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E002, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E002, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E002, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E002, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E002, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E002, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E002, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E002, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E003, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E003, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E003, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E003, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E003, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E003, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E003, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E003, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E003, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E003, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E004, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E004, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E004, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E004, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E004, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E004, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E004, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E004, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E004, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E004, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E005, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E005, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E005, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E005, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E005, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E005, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E005, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E005, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E005, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E005, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E006, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E006, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E006, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E006, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E006, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E006, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E006, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E006, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E006, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E006, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E008, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E008, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E008, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E008, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E008, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E008, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E008, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E008, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E008, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E008, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E009, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E009, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E009, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E009, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E009, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E009, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E009, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E009, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E009, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E009, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E00A, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E00A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E00A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E00A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E00A, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E00A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E00A, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E00A, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E00A, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E00A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E00B, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E00B, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E00B, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E00B, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E00B, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E00B, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E00B, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E00B, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E00B, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E00B, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E00C, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E00C, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E00C, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E00C, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E00C, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E00C, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E00C, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E00C, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E00C, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E00C, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E00D, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E00D, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E00D, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E00D, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E00D, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E00D, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E00D, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E00D, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E00D, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E00D, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E00E, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E00E, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E00E, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E00E, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E00E, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E00E, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E00E, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E00E, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E00E, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E00E, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E00F, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E00F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E00F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E00F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E00F, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E00F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E00F, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E00F, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E00F, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E00F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E010, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E010, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E010, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E010, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E010, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E010, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E010, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E010, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E010, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E010, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E011, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E011, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E011, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E011, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E011, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E011, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E011, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E011, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E011, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E011, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E012, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E012, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E012, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E012, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E012, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E012, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E012, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E012, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E012, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E012, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E013, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E013, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E013, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E013, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E013, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E013, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E013, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E013, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E013, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E013, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E014, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E014, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E014, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E014, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E014, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E014, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E014, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E014, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E014, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E014, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E015, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E015, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E015, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E015, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E015, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E015, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E015, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E015, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E015, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E015, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E016, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E016, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E016, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E016, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E016, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E016, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E016, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E016, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E016, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E016, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E017, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E017, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E017, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E017, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E017, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E017, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E017, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E017, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E017, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E017, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E018, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E018, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E018, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E018, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E018, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E018, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E018, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E018, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E018, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E018, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E01B, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E01B, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E01B, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E01B, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E01B, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E01B, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E01B, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E01B, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E01B, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E01B, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E01C, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E01C, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E01C, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E01C, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E01C, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E01C, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E01C, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E01C, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E01C, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E01C, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E01D, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E01D, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E01D, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E01D, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E01D, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E01D, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E01D, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E01D, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E01D, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E01D, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E01E, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E01E, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E01E, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E01E, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E01E, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E01E, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E01E, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E01E, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E01E, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E01E, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E01F, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E01F, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E01F, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E01F, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E01F, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E01F, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E01F, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E01F, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E01F, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E01F, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E020, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E020, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E020, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E020, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E020, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E020, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E020, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E020, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E020, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E020, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E021, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E021, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E021, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E021, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E021, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E021, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E021, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E021, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E021, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E021, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E023, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E023, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E023, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E023, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E023, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E023, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E023, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E023, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E023, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E023, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E024, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E024, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E024, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E024, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E024, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E024, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E024, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E024, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E024, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E024, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E026, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E026, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E026, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E026, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E026, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E026, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E026, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E026, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E026, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E026, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E027, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E027, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E027, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E027, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E027, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E027, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E027, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E027, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E027, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E027, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E028, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E028, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E028, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E028, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E028, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E028, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E028, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E028, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E028, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E028, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E029, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E029, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E029, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E029, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E029, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E029, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E029, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E029, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E029, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E029, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E02A, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E02A, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E02A, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E02A, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E02A, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E02A, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E02A, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E02A, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E02A, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E02A, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1E8D0, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1E8D0, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1E8D0, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1E8D0, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1E8D0, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1E8D0, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1E8D0, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1E8D0, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1E8D0, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1E8D0, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1E8D1, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1E8D1, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1E8D1, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1E8D1, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1E8D1, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1E8D1, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1E8D1, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1E8D1, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1E8D1, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1E8D1, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1E8D2, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1E8D2, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1E8D2, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1E8D2, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1E8D2, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1E8D2, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1E8D2, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1E8D2, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1E8D2, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1E8D2, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1E8D3, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1E8D3, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1E8D3, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1E8D3, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1E8D3, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1E8D3, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1E8D3, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1E8D3, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1E8D3, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1E8D3, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1E8D4, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1E8D4, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1E8D4, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1E8D4, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1E8D4, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1E8D4, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1E8D4, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1E8D4, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1E8D4, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1E8D4, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1E8D5, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1E8D5, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1E8D5, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1E8D5, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1E8D5, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1E8D5, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1E8D5, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1E8D5, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1E8D5, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1E8D5, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x059A, 0x0316, 0x302A, 0x1E8D6, 0x0062], NFC: [0x0061, 0x302A, 0x0316, 0x1E8D6, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x0316, 0x1E8D6, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x0316, 0x1E8D6, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x0316, 0x1E8D6, 0x059A, 0x0062] },
+{ source: [0x0061, 0x1E8D6, 0x059A, 0x0316, 0x302A, 0x0062], NFC: [0x0061, 0x302A, 0x1E8D6, 0x0316, 0x059A, 0x0062], NFD: [0x0061, 0x302A, 0x1E8D6, 0x0316, 0x059A, 0x0062], NFKC: [0x0061, 0x302A, 0x1E8D6, 0x0316, 0x059A, 0x0062], NFKD: [0x0061, 0x302A, 0x1E8D6, 0x0316, 0x059A, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E944, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E944, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E944, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E944, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E944, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E944, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E944, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E944, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E944, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E944, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E945, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E945, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E945, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E945, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E945, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E945, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E945, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E945, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E945, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E945, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E946, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E946, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E946, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E946, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E946, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E946, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E946, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E946, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E946, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E946, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E947, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E947, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E947, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E947, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E947, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E947, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E947, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E947, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E947, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E947, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E948, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E948, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E948, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E948, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E948, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E948, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E948, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E948, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E948, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E948, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x0315, 0x0300, 0x05AE, 0x1E949, 0x0062], NFC: [0x00E0, 0x05AE, 0x1E949, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x0300, 0x1E949, 0x0315, 0x0062], NFKC: [0x00E0, 0x05AE, 0x1E949, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x0300, 0x1E949, 0x0315, 0x0062] },
+{ source: [0x0061, 0x1E949, 0x0315, 0x0300, 0x05AE, 0x0062], NFC: [0x0061, 0x05AE, 0x1E949, 0x0300, 0x0315, 0x0062], NFD: [0x0061, 0x05AE, 0x1E949, 0x0300, 0x0315, 0x0062], NFKC: [0x0061, 0x05AE, 0x1E949, 0x0300, 0x0315, 0x0062], NFKD: [0x0061, 0x05AE, 0x1E949, 0x0300, 0x0315, 0x0062] },
+{ source: [0x0061, 0x3099, 0x093C, 0x0334, 0x1E94A, 0x0062], NFC: [0x0061, 0x0334, 0x093C, 0x1E94A, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x093C, 0x1E94A, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x093C, 0x1E94A, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x093C, 0x1E94A, 0x3099, 0x0062] },
+{ source: [0x0061, 0x1E94A, 0x3099, 0x093C, 0x0334, 0x0062], NFC: [0x0061, 0x0334, 0x1E94A, 0x093C, 0x3099, 0x0062], NFD: [0x0061, 0x0334, 0x1E94A, 0x093C, 0x3099, 0x0062], NFKC: [0x0061, 0x0334, 0x1E94A, 0x093C, 0x3099, 0x0062], NFKD: [0x0061, 0x0334, 0x1E94A, 0x093C, 0x3099, 0x0062] }
+];
+/* Part3 # PRI #29 Test */
+var tests_part3 = [
+{ source: [0x09C7, 0x0334, 0x09BE], NFC: [0x09C7, 0x0334, 0x09BE], NFD: [0x09C7, 0x0334, 0x09BE], NFKC: [0x09C7, 0x0334, 0x09BE], NFKD: [0x09C7, 0x0334, 0x09BE] },
+{ source: [0x09C7, 0x0334, 0x09D7], NFC: [0x09C7, 0x0334, 0x09D7], NFD: [0x09C7, 0x0334, 0x09D7], NFKC: [0x09C7, 0x0334, 0x09D7], NFKD: [0x09C7, 0x0334, 0x09D7] },
+{ source: [0x0B47, 0x0334, 0x0B3E], NFC: [0x0B47, 0x0334, 0x0B3E], NFD: [0x0B47, 0x0334, 0x0B3E], NFKC: [0x0B47, 0x0334, 0x0B3E], NFKD: [0x0B47, 0x0334, 0x0B3E] },
+{ source: [0x0B47, 0x0334, 0x0B56], NFC: [0x0B47, 0x0334, 0x0B56], NFD: [0x0B47, 0x0334, 0x0B56], NFKC: [0x0B47, 0x0334, 0x0B56], NFKD: [0x0B47, 0x0334, 0x0B56] },
+{ source: [0x0B47, 0x0334, 0x0B57], NFC: [0x0B47, 0x0334, 0x0B57], NFD: [0x0B47, 0x0334, 0x0B57], NFKC: [0x0B47, 0x0334, 0x0B57], NFKD: [0x0B47, 0x0334, 0x0B57] },
+{ source: [0x0B92, 0x0334, 0x0BD7], NFC: [0x0B92, 0x0334, 0x0BD7], NFD: [0x0B92, 0x0334, 0x0BD7], NFKC: [0x0B92, 0x0334, 0x0BD7], NFKD: [0x0B92, 0x0334, 0x0BD7] },
+{ source: [0x0BC6, 0x0334, 0x0BBE], NFC: [0x0BC6, 0x0334, 0x0BBE], NFD: [0x0BC6, 0x0334, 0x0BBE], NFKC: [0x0BC6, 0x0334, 0x0BBE], NFKD: [0x0BC6, 0x0334, 0x0BBE] },
+{ source: [0x0BC6, 0x0334, 0x0BD7], NFC: [0x0BC6, 0x0334, 0x0BD7], NFD: [0x0BC6, 0x0334, 0x0BD7], NFKC: [0x0BC6, 0x0334, 0x0BD7], NFKD: [0x0BC6, 0x0334, 0x0BD7] },
+{ source: [0x0BC7, 0x0334, 0x0BBE], NFC: [0x0BC7, 0x0334, 0x0BBE], NFD: [0x0BC7, 0x0334, 0x0BBE], NFKC: [0x0BC7, 0x0334, 0x0BBE], NFKD: [0x0BC7, 0x0334, 0x0BBE] },
+{ source: [0x0CBF, 0x0334, 0x0CD5], NFC: [0x0CBF, 0x0334, 0x0CD5], NFD: [0x0CBF, 0x0334, 0x0CD5], NFKC: [0x0CBF, 0x0334, 0x0CD5], NFKD: [0x0CBF, 0x0334, 0x0CD5] },
+{ source: [0x0CC6, 0x0334, 0x0CC2], NFC: [0x0CC6, 0x0334, 0x0CC2], NFD: [0x0CC6, 0x0334, 0x0CC2], NFKC: [0x0CC6, 0x0334, 0x0CC2], NFKD: [0x0CC6, 0x0334, 0x0CC2] },
+{ source: [0x0CC6, 0x0334, 0x0CD5], NFC: [0x0CC6, 0x0334, 0x0CD5], NFD: [0x0CC6, 0x0334, 0x0CD5], NFKC: [0x0CC6, 0x0334, 0x0CD5], NFKD: [0x0CC6, 0x0334, 0x0CD5] },
+{ source: [0x0CC6, 0x0334, 0x0CD6], NFC: [0x0CC6, 0x0334, 0x0CD6], NFD: [0x0CC6, 0x0334, 0x0CD6], NFKC: [0x0CC6, 0x0334, 0x0CD6], NFKD: [0x0CC6, 0x0334, 0x0CD6] },
+{ source: [0x0CCA, 0x0334, 0x0CD5], NFC: [0x0CCA, 0x0334, 0x0CD5], NFD: [0x0CC6, 0x0CC2, 0x0334, 0x0CD5], NFKC: [0x0CCA, 0x0334, 0x0CD5], NFKD: [0x0CC6, 0x0CC2, 0x0334, 0x0CD5] },
+{ source: [0x0D46, 0x0334, 0x0D3E], NFC: [0x0D46, 0x0334, 0x0D3E], NFD: [0x0D46, 0x0334, 0x0D3E], NFKC: [0x0D46, 0x0334, 0x0D3E], NFKD: [0x0D46, 0x0334, 0x0D3E] },
+{ source: [0x0D46, 0x0334, 0x0D57], NFC: [0x0D46, 0x0334, 0x0D57], NFD: [0x0D46, 0x0334, 0x0D57], NFKC: [0x0D46, 0x0334, 0x0D57], NFKD: [0x0D46, 0x0334, 0x0D57] },
+{ source: [0x0D47, 0x0334, 0x0D3E], NFC: [0x0D47, 0x0334, 0x0D3E], NFD: [0x0D47, 0x0334, 0x0D3E], NFKC: [0x0D47, 0x0334, 0x0D3E], NFKD: [0x0D47, 0x0334, 0x0D3E] },
+{ source: [0x0DD9, 0x0334, 0x0DCF], NFC: [0x0DD9, 0x0334, 0x0DCF], NFD: [0x0DD9, 0x0334, 0x0DCF], NFKC: [0x0DD9, 0x0334, 0x0DCF], NFKD: [0x0DD9, 0x0334, 0x0DCF] },
+{ source: [0x0DD9, 0x0334, 0x0DDF], NFC: [0x0DD9, 0x0334, 0x0DDF], NFD: [0x0DD9, 0x0334, 0x0DDF], NFKC: [0x0DD9, 0x0334, 0x0DDF], NFKD: [0x0DD9, 0x0334, 0x0DDF] },
+{ source: [0x0F40, 0x0334, 0x0FB5], NFC: [0x0F40, 0x0334, 0x0FB5], NFD: [0x0F40, 0x0334, 0x0FB5], NFKC: [0x0F40, 0x0334, 0x0FB5], NFKD: [0x0F40, 0x0334, 0x0FB5] },
+{ source: [0x0F42, 0x0334, 0x0FB7], NFC: [0x0F42, 0x0334, 0x0FB7], NFD: [0x0F42, 0x0334, 0x0FB7], NFKC: [0x0F42, 0x0334, 0x0FB7], NFKD: [0x0F42, 0x0334, 0x0FB7] },
+{ source: [0x0F4C, 0x0334, 0x0FB7], NFC: [0x0F4C, 0x0334, 0x0FB7], NFD: [0x0F4C, 0x0334, 0x0FB7], NFKC: [0x0F4C, 0x0334, 0x0FB7], NFKD: [0x0F4C, 0x0334, 0x0FB7] },
+{ source: [0x0F51, 0x0334, 0x0FB7], NFC: [0x0F51, 0x0334, 0x0FB7], NFD: [0x0F51, 0x0334, 0x0FB7], NFKC: [0x0F51, 0x0334, 0x0FB7], NFKD: [0x0F51, 0x0334, 0x0FB7] },
+{ source: [0x0F56, 0x0334, 0x0FB7], NFC: [0x0F56, 0x0334, 0x0FB7], NFD: [0x0F56, 0x0334, 0x0FB7], NFKC: [0x0F56, 0x0334, 0x0FB7], NFKD: [0x0F56, 0x0334, 0x0FB7] },
+{ source: [0x0F5B, 0x0334, 0x0FB7], NFC: [0x0F5B, 0x0334, 0x0FB7], NFD: [0x0F5B, 0x0334, 0x0FB7], NFKC: [0x0F5B, 0x0334, 0x0FB7], NFKD: [0x0F5B, 0x0334, 0x0FB7] },
+{ source: [0x0F90, 0x0334, 0x0FB5], NFC: [0x0F90, 0x0334, 0x0FB5], NFD: [0x0F90, 0x0334, 0x0FB5], NFKC: [0x0F90, 0x0334, 0x0FB5], NFKD: [0x0F90, 0x0334, 0x0FB5] },
+{ source: [0x0F92, 0x0334, 0x0FB7], NFC: [0x0F92, 0x0334, 0x0FB7], NFD: [0x0F92, 0x0334, 0x0FB7], NFKC: [0x0F92, 0x0334, 0x0FB7], NFKD: [0x0F92, 0x0334, 0x0FB7] },
+{ source: [0x0F9C, 0x0334, 0x0FB7], NFC: [0x0F9C, 0x0334, 0x0FB7], NFD: [0x0F9C, 0x0334, 0x0FB7], NFKC: [0x0F9C, 0x0334, 0x0FB7], NFKD: [0x0F9C, 0x0334, 0x0FB7] },
+{ source: [0x0FA1, 0x0334, 0x0FB7], NFC: [0x0FA1, 0x0334, 0x0FB7], NFD: [0x0FA1, 0x0334, 0x0FB7], NFKC: [0x0FA1, 0x0334, 0x0FB7], NFKD: [0x0FA1, 0x0334, 0x0FB7] },
+{ source: [0x0FA6, 0x0334, 0x0FB7], NFC: [0x0FA6, 0x0334, 0x0FB7], NFD: [0x0FA6, 0x0334, 0x0FB7], NFKC: [0x0FA6, 0x0334, 0x0FB7], NFKD: [0x0FA6, 0x0334, 0x0FB7] },
+{ source: [0x0FAB, 0x0334, 0x0FB7], NFC: [0x0FAB, 0x0334, 0x0FB7], NFD: [0x0FAB, 0x0334, 0x0FB7], NFKC: [0x0FAB, 0x0334, 0x0FB7], NFKD: [0x0FAB, 0x0334, 0x0FB7] },
+{ source: [0x1025, 0x0334, 0x102E], NFC: [0x1025, 0x0334, 0x102E], NFD: [0x1025, 0x0334, 0x102E], NFKC: [0x1025, 0x0334, 0x102E], NFKD: [0x1025, 0x0334, 0x102E] },
+{ source: [0x1100, 0x0334, 0x1161], NFC: [0x1100, 0x0334, 0x1161], NFD: [0x1100, 0x0334, 0x1161], NFKC: [0x1100, 0x0334, 0x1161], NFKD: [0x1100, 0x0334, 0x1161] },
+{ source: [0x1100, 0x0334, 0x116E], NFC: [0x1100, 0x0334, 0x116E], NFD: [0x1100, 0x0334, 0x116E], NFKC: [0x1100, 0x0334, 0x116E], NFKD: [0x1100, 0x0334, 0x116E] },
+{ source: [0x1101, 0x0334, 0x1166], NFC: [0x1101, 0x0334, 0x1166], NFD: [0x1101, 0x0334, 0x1166], NFKC: [0x1101, 0x0334, 0x1166], NFKD: [0x1101, 0x0334, 0x1166] },
+{ source: [0x1101, 0x0334, 0x1173], NFC: [0x1101, 0x0334, 0x1173], NFD: [0x1101, 0x0334, 0x1173], NFKC: [0x1101, 0x0334, 0x1173], NFKD: [0x1101, 0x0334, 0x1173] },
+{ source: [0x1102, 0x0334, 0x116B], NFC: [0x1102, 0x0334, 0x116B], NFD: [0x1102, 0x0334, 0x116B], NFKC: [0x1102, 0x0334, 0x116B], NFKD: [0x1102, 0x0334, 0x116B] },
+{ source: [0x1103, 0x0334, 0x1163], NFC: [0x1103, 0x0334, 0x1163], NFD: [0x1103, 0x0334, 0x1163], NFKC: [0x1103, 0x0334, 0x1163], NFKD: [0x1103, 0x0334, 0x1163] },
+{ source: [0x1103, 0x0334, 0x1170], NFC: [0x1103, 0x0334, 0x1170], NFD: [0x1103, 0x0334, 0x1170], NFKC: [0x1103, 0x0334, 0x1170], NFKD: [0x1103, 0x0334, 0x1170] },
+{ source: [0x1104, 0x0334, 0x1168], NFC: [0x1104, 0x0334, 0x1168], NFD: [0x1104, 0x0334, 0x1168], NFKC: [0x1104, 0x0334, 0x1168], NFKD: [0x1104, 0x0334, 0x1168] },
+{ source: [0x1104, 0x0334, 0x1175], NFC: [0x1104, 0x0334, 0x1175], NFD: [0x1104, 0x0334, 0x1175], NFKC: [0x1104, 0x0334, 0x1175], NFKD: [0x1104, 0x0334, 0x1175] },
+{ source: [0x1105, 0x0334, 0x116D], NFC: [0x1105, 0x0334, 0x116D], NFD: [0x1105, 0x0334, 0x116D], NFKC: [0x1105, 0x0334, 0x116D], NFKD: [0x1105, 0x0334, 0x116D] },
+{ source: [0x1106, 0x0334, 0x1165], NFC: [0x1106, 0x0334, 0x1165], NFD: [0x1106, 0x0334, 0x1165], NFKC: [0x1106, 0x0334, 0x1165], NFKD: [0x1106, 0x0334, 0x1165] },
+{ source: [0x1106, 0x0334, 0x1172], NFC: [0x1106, 0x0334, 0x1172], NFD: [0x1106, 0x0334, 0x1172], NFKC: [0x1106, 0x0334, 0x1172], NFKD: [0x1106, 0x0334, 0x1172] },
+{ source: [0x1107, 0x0334, 0x116A], NFC: [0x1107, 0x0334, 0x116A], NFD: [0x1107, 0x0334, 0x116A], NFKC: [0x1107, 0x0334, 0x116A], NFKD: [0x1107, 0x0334, 0x116A] },
+{ source: [0x1108, 0x0334, 0x1162], NFC: [0x1108, 0x0334, 0x1162], NFD: [0x1108, 0x0334, 0x1162], NFKC: [0x1108, 0x0334, 0x1162], NFKD: [0x1108, 0x0334, 0x1162] },
+{ source: [0x1108, 0x0334, 0x116F], NFC: [0x1108, 0x0334, 0x116F], NFD: [0x1108, 0x0334, 0x116F], NFKC: [0x1108, 0x0334, 0x116F], NFKD: [0x1108, 0x0334, 0x116F] },
+{ source: [0x1109, 0x0334, 0x1167], NFC: [0x1109, 0x0334, 0x1167], NFD: [0x1109, 0x0334, 0x1167], NFKC: [0x1109, 0x0334, 0x1167], NFKD: [0x1109, 0x0334, 0x1167] },
+{ source: [0x1109, 0x0334, 0x1174], NFC: [0x1109, 0x0334, 0x1174], NFD: [0x1109, 0x0334, 0x1174], NFKC: [0x1109, 0x0334, 0x1174], NFKD: [0x1109, 0x0334, 0x1174] },
+{ source: [0x110A, 0x0334, 0x116C], NFC: [0x110A, 0x0334, 0x116C], NFD: [0x110A, 0x0334, 0x116C], NFKC: [0x110A, 0x0334, 0x116C], NFKD: [0x110A, 0x0334, 0x116C] },
+{ source: [0x110B, 0x0334, 0x1164], NFC: [0x110B, 0x0334, 0x1164], NFD: [0x110B, 0x0334, 0x1164], NFKC: [0x110B, 0x0334, 0x1164], NFKD: [0x110B, 0x0334, 0x1164] },
+{ source: [0x110B, 0x0334, 0x1171], NFC: [0x110B, 0x0334, 0x1171], NFD: [0x110B, 0x0334, 0x1171], NFKC: [0x110B, 0x0334, 0x1171], NFKD: [0x110B, 0x0334, 0x1171] },
+{ source: [0x110C, 0x0334, 0x1169], NFC: [0x110C, 0x0334, 0x1169], NFD: [0x110C, 0x0334, 0x1169], NFKC: [0x110C, 0x0334, 0x1169], NFKD: [0x110C, 0x0334, 0x1169] },
+{ source: [0x110D, 0x0334, 0x1161], NFC: [0x110D, 0x0334, 0x1161], NFD: [0x110D, 0x0334, 0x1161], NFKC: [0x110D, 0x0334, 0x1161], NFKD: [0x110D, 0x0334, 0x1161] },
+{ source: [0x110D, 0x0334, 0x116E], NFC: [0x110D, 0x0334, 0x116E], NFD: [0x110D, 0x0334, 0x116E], NFKC: [0x110D, 0x0334, 0x116E], NFKD: [0x110D, 0x0334, 0x116E] },
+{ source: [0x110E, 0x0334, 0x1166], NFC: [0x110E, 0x0334, 0x1166], NFD: [0x110E, 0x0334, 0x1166], NFKC: [0x110E, 0x0334, 0x1166], NFKD: [0x110E, 0x0334, 0x1166] },
+{ source: [0x110E, 0x0334, 0x1173], NFC: [0x110E, 0x0334, 0x1173], NFD: [0x110E, 0x0334, 0x1173], NFKC: [0x110E, 0x0334, 0x1173], NFKD: [0x110E, 0x0334, 0x1173] },
+{ source: [0x110F, 0x0334, 0x116B], NFC: [0x110F, 0x0334, 0x116B], NFD: [0x110F, 0x0334, 0x116B], NFKC: [0x110F, 0x0334, 0x116B], NFKD: [0x110F, 0x0334, 0x116B] },
+{ source: [0x1110, 0x0334, 0x1163], NFC: [0x1110, 0x0334, 0x1163], NFD: [0x1110, 0x0334, 0x1163], NFKC: [0x1110, 0x0334, 0x1163], NFKD: [0x1110, 0x0334, 0x1163] },
+{ source: [0x1110, 0x0334, 0x1170], NFC: [0x1110, 0x0334, 0x1170], NFD: [0x1110, 0x0334, 0x1170], NFKC: [0x1110, 0x0334, 0x1170], NFKD: [0x1110, 0x0334, 0x1170] },
+{ source: [0x1111, 0x0334, 0x1168], NFC: [0x1111, 0x0334, 0x1168], NFD: [0x1111, 0x0334, 0x1168], NFKC: [0x1111, 0x0334, 0x1168], NFKD: [0x1111, 0x0334, 0x1168] },
+{ source: [0x1111, 0x0334, 0x1175], NFC: [0x1111, 0x0334, 0x1175], NFD: [0x1111, 0x0334, 0x1175], NFKC: [0x1111, 0x0334, 0x1175], NFKD: [0x1111, 0x0334, 0x1175] },
+{ source: [0x1112, 0x0334, 0x116D], NFC: [0x1112, 0x0334, 0x116D], NFD: [0x1112, 0x0334, 0x116D], NFKC: [0x1112, 0x0334, 0x116D], NFKD: [0x1112, 0x0334, 0x116D] },
+{ source: [0x1B05, 0x0334, 0x1B35], NFC: [0x1B05, 0x0334, 0x1B35], NFD: [0x1B05, 0x0334, 0x1B35], NFKC: [0x1B05, 0x0334, 0x1B35], NFKD: [0x1B05, 0x0334, 0x1B35] },
+{ source: [0x1B07, 0x0334, 0x1B35], NFC: [0x1B07, 0x0334, 0x1B35], NFD: [0x1B07, 0x0334, 0x1B35], NFKC: [0x1B07, 0x0334, 0x1B35], NFKD: [0x1B07, 0x0334, 0x1B35] },
+{ source: [0x1B09, 0x0334, 0x1B35], NFC: [0x1B09, 0x0334, 0x1B35], NFD: [0x1B09, 0x0334, 0x1B35], NFKC: [0x1B09, 0x0334, 0x1B35], NFKD: [0x1B09, 0x0334, 0x1B35] },
+{ source: [0x1B0B, 0x0334, 0x1B35], NFC: [0x1B0B, 0x0334, 0x1B35], NFD: [0x1B0B, 0x0334, 0x1B35], NFKC: [0x1B0B, 0x0334, 0x1B35], NFKD: [0x1B0B, 0x0334, 0x1B35] },
+{ source: [0x1B0D, 0x0334, 0x1B35], NFC: [0x1B0D, 0x0334, 0x1B35], NFD: [0x1B0D, 0x0334, 0x1B35], NFKC: [0x1B0D, 0x0334, 0x1B35], NFKD: [0x1B0D, 0x0334, 0x1B35] },
+{ source: [0x1B11, 0x0334, 0x1B35], NFC: [0x1B11, 0x0334, 0x1B35], NFD: [0x1B11, 0x0334, 0x1B35], NFKC: [0x1B11, 0x0334, 0x1B35], NFKD: [0x1B11, 0x0334, 0x1B35] },
+{ source: [0x1B3A, 0x0334, 0x1B35], NFC: [0x1B3A, 0x0334, 0x1B35], NFD: [0x1B3A, 0x0334, 0x1B35], NFKC: [0x1B3A, 0x0334, 0x1B35], NFKD: [0x1B3A, 0x0334, 0x1B35] },
+{ source: [0x1B3C, 0x0334, 0x1B35], NFC: [0x1B3C, 0x0334, 0x1B35], NFD: [0x1B3C, 0x0334, 0x1B35], NFKC: [0x1B3C, 0x0334, 0x1B35], NFKD: [0x1B3C, 0x0334, 0x1B35] },
+{ source: [0x1B3E, 0x0334, 0x1B35], NFC: [0x1B3E, 0x0334, 0x1B35], NFD: [0x1B3E, 0x0334, 0x1B35], NFKC: [0x1B3E, 0x0334, 0x1B35], NFKD: [0x1B3E, 0x0334, 0x1B35] },
+{ source: [0x1B3F, 0x0334, 0x1B35], NFC: [0x1B3F, 0x0334, 0x1B35], NFD: [0x1B3F, 0x0334, 0x1B35], NFKC: [0x1B3F, 0x0334, 0x1B35], NFKD: [0x1B3F, 0x0334, 0x1B35] },
+{ source: [0x1B42, 0x0334, 0x1B35], NFC: [0x1B42, 0x0334, 0x1B35], NFD: [0x1B42, 0x0334, 0x1B35], NFKC: [0x1B42, 0x0334, 0x1B35], NFKD: [0x1B42, 0x0334, 0x1B35] },
+{ source: [0xAC54, 0x0334, 0x11AE], NFC: [0xAC54, 0x0334, 0x11AE], NFD: [0x1100, 0x1164, 0x0334, 0x11AE], NFKC: [0xAC54, 0x0334, 0x11AE], NFKD: [0x1100, 0x1164, 0x0334, 0x11AE] },
+{ source: [0xACA8, 0x0334, 0x11B5], NFC: [0xACA8, 0x0334, 0x11B5], NFD: [0x1100, 0x1167, 0x0334, 0x11B5], NFKC: [0xACA8, 0x0334, 0x11B5], NFKD: [0x1100, 0x1167, 0x0334, 0x11B5] },
+{ source: [0xACFC, 0x0334, 0x11BC], NFC: [0xACFC, 0x0334, 0x11BC], NFD: [0x1100, 0x116A, 0x0334, 0x11BC], NFKC: [0xACFC, 0x0334, 0x11BC], NFKD: [0x1100, 0x116A, 0x0334, 0x11BC] },
+{ source: [0xADC0, 0x0334, 0x11AE], NFC: [0xADC0, 0x0334, 0x11AE], NFD: [0x1100, 0x1171, 0x0334, 0x11AE], NFKC: [0xADC0, 0x0334, 0x11AE], NFKD: [0x1100, 0x1171, 0x0334, 0x11AE] },
+{ source: [0xAE14, 0x0334, 0x11B5], NFC: [0xAE14, 0x0334, 0x11B5], NFD: [0x1100, 0x1174, 0x0334, 0x11B5], NFKC: [0xAE14, 0x0334, 0x11B5], NFKD: [0x1100, 0x1174, 0x0334, 0x11B5] },
+{ source: [0xAE68, 0x0334, 0x11BC], NFC: [0xAE68, 0x0334, 0x11BC], NFD: [0x1101, 0x1162, 0x0334, 0x11BC], NFKC: [0xAE68, 0x0334, 0x11BC], NFKD: [0x1101, 0x1162, 0x0334, 0x11BC] },
+{ source: [0xAF2C, 0x0334, 0x11AE], NFC: [0xAF2C, 0x0334, 0x11AE], NFD: [0x1101, 0x1169, 0x0334, 0x11AE], NFKC: [0xAF2C, 0x0334, 0x11AE], NFKD: [0x1101, 0x1169, 0x0334, 0x11AE] },
+{ source: [0xAF80, 0x0334, 0x11B5], NFC: [0xAF80, 0x0334, 0x11B5], NFD: [0x1101, 0x116C, 0x0334, 0x11B5], NFKC: [0xAF80, 0x0334, 0x11B5], NFKD: [0x1101, 0x116C, 0x0334, 0x11B5] },
+{ source: [0xAFD4, 0x0334, 0x11BC], NFC: [0xAFD4, 0x0334, 0x11BC], NFD: [0x1101, 0x116F, 0x0334, 0x11BC], NFKC: [0xAFD4, 0x0334, 0x11BC], NFKD: [0x1101, 0x116F, 0x0334, 0x11BC] },
+{ source: [0xB098, 0x0334, 0x11AE], NFC: [0xB098, 0x0334, 0x11AE], NFD: [0x1102, 0x1161, 0x0334, 0x11AE], NFKC: [0xB098, 0x0334, 0x11AE], NFKD: [0x1102, 0x1161, 0x0334, 0x11AE] },
+{ source: [0xB0EC, 0x0334, 0x11B5], NFC: [0xB0EC, 0x0334, 0x11B5], NFD: [0x1102, 0x1164, 0x0334, 0x11B5], NFKC: [0xB0EC, 0x0334, 0x11B5], NFKD: [0x1102, 0x1164, 0x0334, 0x11B5] },
+{ source: [0xB140, 0x0334, 0x11BC], NFC: [0xB140, 0x0334, 0x11BC], NFD: [0x1102, 0x1167, 0x0334, 0x11BC], NFKC: [0xB140, 0x0334, 0x11BC], NFKD: [0x1102, 0x1167, 0x0334, 0x11BC] },
+{ source: [0xB204, 0x0334, 0x11AE], NFC: [0xB204, 0x0334, 0x11AE], NFD: [0x1102, 0x116E, 0x0334, 0x11AE], NFKC: [0xB204, 0x0334, 0x11AE], NFKD: [0x1102, 0x116E, 0x0334, 0x11AE] },
+{ source: [0xB258, 0x0334, 0x11B5], NFC: [0xB258, 0x0334, 0x11B5], NFD: [0x1102, 0x1171, 0x0334, 0x11B5], NFKC: [0xB258, 0x0334, 0x11B5], NFKD: [0x1102, 0x1171, 0x0334, 0x11B5] },
+{ source: [0xB2AC, 0x0334, 0x11BC], NFC: [0xB2AC, 0x0334, 0x11BC], NFD: [0x1102, 0x1174, 0x0334, 0x11BC], NFKC: [0xB2AC, 0x0334, 0x11BC], NFKD: [0x1102, 0x1174, 0x0334, 0x11BC] },
+{ source: [0xB370, 0x0334, 0x11AE], NFC: [0xB370, 0x0334, 0x11AE], NFD: [0x1103, 0x1166, 0x0334, 0x11AE], NFKC: [0xB370, 0x0334, 0x11AE], NFKD: [0x1103, 0x1166, 0x0334, 0x11AE] },
+{ source: [0xB3C4, 0x0334, 0x11B5], NFC: [0xB3C4, 0x0334, 0x11B5], NFD: [0x1103, 0x1169, 0x0334, 0x11B5], NFKC: [0xB3C4, 0x0334, 0x11B5], NFKD: [0x1103, 0x1169, 0x0334, 0x11B5] },
+{ source: [0xB418, 0x0334, 0x11BC], NFC: [0xB418, 0x0334, 0x11BC], NFD: [0x1103, 0x116C, 0x0334, 0x11BC], NFKC: [0xB418, 0x0334, 0x11BC], NFKD: [0x1103, 0x116C, 0x0334, 0x11BC] },
+{ source: [0xB4DC, 0x0334, 0x11AE], NFC: [0xB4DC, 0x0334, 0x11AE], NFD: [0x1103, 0x1173, 0x0334, 0x11AE], NFKC: [0xB4DC, 0x0334, 0x11AE], NFKD: [0x1103, 0x1173, 0x0334, 0x11AE] },
+{ source: [0xB530, 0x0334, 0x11B5], NFC: [0xB530, 0x0334, 0x11B5], NFD: [0x1104, 0x1161, 0x0334, 0x11B5], NFKC: [0xB530, 0x0334, 0x11B5], NFKD: [0x1104, 0x1161, 0x0334, 0x11B5] },
+{ source: [0xB584, 0x0334, 0x11BC], NFC: [0xB584, 0x0334, 0x11BC], NFD: [0x1104, 0x1164, 0x0334, 0x11BC], NFKC: [0xB584, 0x0334, 0x11BC], NFKD: [0x1104, 0x1164, 0x0334, 0x11BC] },
+{ source: [0xB648, 0x0334, 0x11AE], NFC: [0xB648, 0x0334, 0x11AE], NFD: [0x1104, 0x116B, 0x0334, 0x11AE], NFKC: [0xB648, 0x0334, 0x11AE], NFKD: [0x1104, 0x116B, 0x0334, 0x11AE] },
+{ source: [0xB69C, 0x0334, 0x11B5], NFC: [0xB69C, 0x0334, 0x11B5], NFD: [0x1104, 0x116E, 0x0334, 0x11B5], NFKC: [0xB69C, 0x0334, 0x11B5], NFKD: [0x1104, 0x116E, 0x0334, 0x11B5] },
+{ source: [0xB6F0, 0x0334, 0x11BC], NFC: [0xB6F0, 0x0334, 0x11BC], NFD: [0x1104, 0x1171, 0x0334, 0x11BC], NFKC: [0xB6F0, 0x0334, 0x11BC], NFKD: [0x1104, 0x1171, 0x0334, 0x11BC] },
+{ source: [0xB7B4, 0x0334, 0x11AE], NFC: [0xB7B4, 0x0334, 0x11AE], NFD: [0x1105, 0x1163, 0x0334, 0x11AE], NFKC: [0xB7B4, 0x0334, 0x11AE], NFKD: [0x1105, 0x1163, 0x0334, 0x11AE] },
+{ source: [0xB808, 0x0334, 0x11B5], NFC: [0xB808, 0x0334, 0x11B5], NFD: [0x1105, 0x1166, 0x0334, 0x11B5], NFKC: [0xB808, 0x0334, 0x11B5], NFKD: [0x1105, 0x1166, 0x0334, 0x11B5] },
+{ source: [0xB85C, 0x0334, 0x11BC], NFC: [0xB85C, 0x0334, 0x11BC], NFD: [0x1105, 0x1169, 0x0334, 0x11BC], NFKC: [0xB85C, 0x0334, 0x11BC], NFKD: [0x1105, 0x1169, 0x0334, 0x11BC] },
+{ source: [0xB920, 0x0334, 0x11AE], NFC: [0xB920, 0x0334, 0x11AE], NFD: [0x1105, 0x1170, 0x0334, 0x11AE], NFKC: [0xB920, 0x0334, 0x11AE], NFKD: [0x1105, 0x1170, 0x0334, 0x11AE] },
+{ source: [0xB974, 0x0334, 0x11B5], NFC: [0xB974, 0x0334, 0x11B5], NFD: [0x1105, 0x1173, 0x0334, 0x11B5], NFKC: [0xB974, 0x0334, 0x11B5], NFKD: [0x1105, 0x1173, 0x0334, 0x11B5] },
+{ source: [0xB9C8, 0x0334, 0x11BC], NFC: [0xB9C8, 0x0334, 0x11BC], NFD: [0x1106, 0x1161, 0x0334, 0x11BC], NFKC: [0xB9C8, 0x0334, 0x11BC], NFKD: [0x1106, 0x1161, 0x0334, 0x11BC] },
+{ source: [0xBA8C, 0x0334, 0x11AE], NFC: [0xBA8C, 0x0334, 0x11AE], NFD: [0x1106, 0x1168, 0x0334, 0x11AE], NFKC: [0xBA8C, 0x0334, 0x11AE], NFKD: [0x1106, 0x1168, 0x0334, 0x11AE] },
+{ source: [0xBAE0, 0x0334, 0x11B5], NFC: [0xBAE0, 0x0334, 0x11B5], NFD: [0x1106, 0x116B, 0x0334, 0x11B5], NFKC: [0xBAE0, 0x0334, 0x11B5], NFKD: [0x1106, 0x116B, 0x0334, 0x11B5] },
+{ source: [0xBB34, 0x0334, 0x11BC], NFC: [0xBB34, 0x0334, 0x11BC], NFD: [0x1106, 0x116E, 0x0334, 0x11BC], NFKC: [0xBB34, 0x0334, 0x11BC], NFKD: [0x1106, 0x116E, 0x0334, 0x11BC] },
+{ source: [0xBBF8, 0x0334, 0x11AE], NFC: [0xBBF8, 0x0334, 0x11AE], NFD: [0x1106, 0x1175, 0x0334, 0x11AE], NFKC: [0xBBF8, 0x0334, 0x11AE], NFKD: [0x1106, 0x1175, 0x0334, 0x11AE] },
+{ source: [0xBC4C, 0x0334, 0x11B5], NFC: [0xBC4C, 0x0334, 0x11B5], NFD: [0x1107, 0x1163, 0x0334, 0x11B5], NFKC: [0xBC4C, 0x0334, 0x11B5], NFKD: [0x1107, 0x1163, 0x0334, 0x11B5] },
+{ source: [0xBCA0, 0x0334, 0x11BC], NFC: [0xBCA0, 0x0334, 0x11BC], NFD: [0x1107, 0x1166, 0x0334, 0x11BC], NFKC: [0xBCA0, 0x0334, 0x11BC], NFKD: [0x1107, 0x1166, 0x0334, 0x11BC] },
+{ source: [0xBD64, 0x0334, 0x11AE], NFC: [0xBD64, 0x0334, 0x11AE], NFD: [0x1107, 0x116D, 0x0334, 0x11AE], NFKC: [0xBD64, 0x0334, 0x11AE], NFKD: [0x1107, 0x116D, 0x0334, 0x11AE] },
+{ source: [0xBDB8, 0x0334, 0x11B5], NFC: [0xBDB8, 0x0334, 0x11B5], NFD: [0x1107, 0x1170, 0x0334, 0x11B5], NFKC: [0xBDB8, 0x0334, 0x11B5], NFKD: [0x1107, 0x1170, 0x0334, 0x11B5] },
+{ source: [0xBE0C, 0x0334, 0x11BC], NFC: [0xBE0C, 0x0334, 0x11BC], NFD: [0x1107, 0x1173, 0x0334, 0x11BC], NFKC: [0xBE0C, 0x0334, 0x11BC], NFKD: [0x1107, 0x1173, 0x0334, 0x11BC] },
+{ source: [0xBED0, 0x0334, 0x11AE], NFC: [0xBED0, 0x0334, 0x11AE], NFD: [0x1108, 0x1165, 0x0334, 0x11AE], NFKC: [0xBED0, 0x0334, 0x11AE], NFKD: [0x1108, 0x1165, 0x0334, 0x11AE] },
+{ source: [0xBF24, 0x0334, 0x11B5], NFC: [0xBF24, 0x0334, 0x11B5], NFD: [0x1108, 0x1168, 0x0334, 0x11B5], NFKC: [0xBF24, 0x0334, 0x11B5], NFKD: [0x1108, 0x1168, 0x0334, 0x11B5] },
+{ source: [0xBF78, 0x0334, 0x11BC], NFC: [0xBF78, 0x0334, 0x11BC], NFD: [0x1108, 0x116B, 0x0334, 0x11BC], NFKC: [0xBF78, 0x0334, 0x11BC], NFKD: [0x1108, 0x116B, 0x0334, 0x11BC] },
+{ source: [0xC03C, 0x0334, 0x11AE], NFC: [0xC03C, 0x0334, 0x11AE], NFD: [0x1108, 0x1172, 0x0334, 0x11AE], NFKC: [0xC03C, 0x0334, 0x11AE], NFKD: [0x1108, 0x1172, 0x0334, 0x11AE] },
+{ source: [0xC090, 0x0334, 0x11B5], NFC: [0xC090, 0x0334, 0x11B5], NFD: [0x1108, 0x1175, 0x0334, 0x11B5], NFKC: [0xC090, 0x0334, 0x11B5], NFKD: [0x1108, 0x1175, 0x0334, 0x11B5] },
+{ source: [0xC0E4, 0x0334, 0x11BC], NFC: [0xC0E4, 0x0334, 0x11BC], NFD: [0x1109, 0x1163, 0x0334, 0x11BC], NFKC: [0xC0E4, 0x0334, 0x11BC], NFKD: [0x1109, 0x1163, 0x0334, 0x11BC] },
+{ source: [0xC1A8, 0x0334, 0x11AE], NFC: [0xC1A8, 0x0334, 0x11AE], NFD: [0x1109, 0x116A, 0x0334, 0x11AE], NFKC: [0xC1A8, 0x0334, 0x11AE], NFKD: [0x1109, 0x116A, 0x0334, 0x11AE] },
+{ source: [0xC1FC, 0x0334, 0x11B5], NFC: [0xC1FC, 0x0334, 0x11B5], NFD: [0x1109, 0x116D, 0x0334, 0x11B5], NFKC: [0xC1FC, 0x0334, 0x11B5], NFKD: [0x1109, 0x116D, 0x0334, 0x11B5] },
+{ source: [0xC250, 0x0334, 0x11BC], NFC: [0xC250, 0x0334, 0x11BC], NFD: [0x1109, 0x1170, 0x0334, 0x11BC], NFKC: [0xC250, 0x0334, 0x11BC], NFKD: [0x1109, 0x1170, 0x0334, 0x11BC] },
+{ source: [0xC314, 0x0334, 0x11AE], NFC: [0xC314, 0x0334, 0x11AE], NFD: [0x110A, 0x1162, 0x0334, 0x11AE], NFKC: [0xC314, 0x0334, 0x11AE], NFKD: [0x110A, 0x1162, 0x0334, 0x11AE] },
+{ source: [0xC368, 0x0334, 0x11B5], NFC: [0xC368, 0x0334, 0x11B5], NFD: [0x110A, 0x1165, 0x0334, 0x11B5], NFKC: [0xC368, 0x0334, 0x11B5], NFKD: [0x110A, 0x1165, 0x0334, 0x11B5] },
+{ source: [0xC3BC, 0x0334, 0x11BC], NFC: [0xC3BC, 0x0334, 0x11BC], NFD: [0x110A, 0x1168, 0x0334, 0x11BC], NFKC: [0xC3BC, 0x0334, 0x11BC], NFKD: [0x110A, 0x1168, 0x0334, 0x11BC] },
+{ source: [0xC480, 0x0334, 0x11AE], NFC: [0xC480, 0x0334, 0x11AE], NFD: [0x110A, 0x116F, 0x0334, 0x11AE], NFKC: [0xC480, 0x0334, 0x11AE], NFKD: [0x110A, 0x116F, 0x0334, 0x11AE] },
+{ source: [0xC4D4, 0x0334, 0x11B5], NFC: [0xC4D4, 0x0334, 0x11B5], NFD: [0x110A, 0x1172, 0x0334, 0x11B5], NFKC: [0xC4D4, 0x0334, 0x11B5], NFKD: [0x110A, 0x1172, 0x0334, 0x11B5] },
+{ source: [0xC528, 0x0334, 0x11BC], NFC: [0xC528, 0x0334, 0x11BC], NFD: [0x110A, 0x1175, 0x0334, 0x11BC], NFKC: [0xC528, 0x0334, 0x11BC], NFKD: [0x110A, 0x1175, 0x0334, 0x11BC] },
+{ source: [0xC5EC, 0x0334, 0x11AE], NFC: [0xC5EC, 0x0334, 0x11AE], NFD: [0x110B, 0x1167, 0x0334, 0x11AE], NFKC: [0xC5EC, 0x0334, 0x11AE], NFKD: [0x110B, 0x1167, 0x0334, 0x11AE] },
+{ source: [0xC640, 0x0334, 0x11B5], NFC: [0xC640, 0x0334, 0x11B5], NFD: [0x110B, 0x116A, 0x0334, 0x11B5], NFKC: [0xC640, 0x0334, 0x11B5], NFKD: [0x110B, 0x116A, 0x0334, 0x11B5] },
+{ source: [0xC694, 0x0334, 0x11BC], NFC: [0xC694, 0x0334, 0x11BC], NFD: [0x110B, 0x116D, 0x0334, 0x11BC], NFKC: [0xC694, 0x0334, 0x11BC], NFKD: [0x110B, 0x116D, 0x0334, 0x11BC] },
+{ source: [0xC758, 0x0334, 0x11AE], NFC: [0xC758, 0x0334, 0x11AE], NFD: [0x110B, 0x1174, 0x0334, 0x11AE], NFKC: [0xC758, 0x0334, 0x11AE], NFKD: [0x110B, 0x1174, 0x0334, 0x11AE] },
+{ source: [0xC7AC, 0x0334, 0x11B5], NFC: [0xC7AC, 0x0334, 0x11B5], NFD: [0x110C, 0x1162, 0x0334, 0x11B5], NFKC: [0xC7AC, 0x0334, 0x11B5], NFKD: [0x110C, 0x1162, 0x0334, 0x11B5] },
+{ source: [0xC800, 0x0334, 0x11BC], NFC: [0xC800, 0x0334, 0x11BC], NFD: [0x110C, 0x1165, 0x0334, 0x11BC], NFKC: [0xC800, 0x0334, 0x11BC], NFKD: [0x110C, 0x1165, 0x0334, 0x11BC] },
+{ source: [0xC8C4, 0x0334, 0x11AE], NFC: [0xC8C4, 0x0334, 0x11AE], NFD: [0x110C, 0x116C, 0x0334, 0x11AE], NFKC: [0xC8C4, 0x0334, 0x11AE], NFKD: [0x110C, 0x116C, 0x0334, 0x11AE] },
+{ source: [0xC918, 0x0334, 0x11B5], NFC: [0xC918, 0x0334, 0x11B5], NFD: [0x110C, 0x116F, 0x0334, 0x11B5], NFKC: [0xC918, 0x0334, 0x11B5], NFKD: [0x110C, 0x116F, 0x0334, 0x11B5] },
+{ source: [0xC96C, 0x0334, 0x11BC], NFC: [0xC96C, 0x0334, 0x11BC], NFD: [0x110C, 0x1172, 0x0334, 0x11BC], NFKC: [0xC96C, 0x0334, 0x11BC], NFKD: [0x110C, 0x1172, 0x0334, 0x11BC] },
+{ source: [0xCA30, 0x0334, 0x11AE], NFC: [0xCA30, 0x0334, 0x11AE], NFD: [0x110D, 0x1164, 0x0334, 0x11AE], NFKC: [0xCA30, 0x0334, 0x11AE], NFKD: [0x110D, 0x1164, 0x0334, 0x11AE] },
+{ source: [0xCA84, 0x0334, 0x11B5], NFC: [0xCA84, 0x0334, 0x11B5], NFD: [0x110D, 0x1167, 0x0334, 0x11B5], NFKC: [0xCA84, 0x0334, 0x11B5], NFKD: [0x110D, 0x1167, 0x0334, 0x11B5] },
+{ source: [0xCAD8, 0x0334, 0x11BC], NFC: [0xCAD8, 0x0334, 0x11BC], NFD: [0x110D, 0x116A, 0x0334, 0x11BC], NFKC: [0xCAD8, 0x0334, 0x11BC], NFKD: [0x110D, 0x116A, 0x0334, 0x11BC] },
+{ source: [0xCB9C, 0x0334, 0x11AE], NFC: [0xCB9C, 0x0334, 0x11AE], NFD: [0x110D, 0x1171, 0x0334, 0x11AE], NFKC: [0xCB9C, 0x0334, 0x11AE], NFKD: [0x110D, 0x1171, 0x0334, 0x11AE] },
+{ source: [0xCBF0, 0x0334, 0x11B5], NFC: [0xCBF0, 0x0334, 0x11B5], NFD: [0x110D, 0x1174, 0x0334, 0x11B5], NFKC: [0xCBF0, 0x0334, 0x11B5], NFKD: [0x110D, 0x1174, 0x0334, 0x11B5] },
+{ source: [0xCC44, 0x0334, 0x11BC], NFC: [0xCC44, 0x0334, 0x11BC], NFD: [0x110E, 0x1162, 0x0334, 0x11BC], NFKC: [0xCC44, 0x0334, 0x11BC], NFKD: [0x110E, 0x1162, 0x0334, 0x11BC] },
+{ source: [0xCD08, 0x0334, 0x11AE], NFC: [0xCD08, 0x0334, 0x11AE], NFD: [0x110E, 0x1169, 0x0334, 0x11AE], NFKC: [0xCD08, 0x0334, 0x11AE], NFKD: [0x110E, 0x1169, 0x0334, 0x11AE] },
+{ source: [0xCD5C, 0x0334, 0x11B5], NFC: [0xCD5C, 0x0334, 0x11B5], NFD: [0x110E, 0x116C, 0x0334, 0x11B5], NFKC: [0xCD5C, 0x0334, 0x11B5], NFKD: [0x110E, 0x116C, 0x0334, 0x11B5] },
+{ source: [0xCDB0, 0x0334, 0x11BC], NFC: [0xCDB0, 0x0334, 0x11BC], NFD: [0x110E, 0x116F, 0x0334, 0x11BC], NFKC: [0xCDB0, 0x0334, 0x11BC], NFKD: [0x110E, 0x116F, 0x0334, 0x11BC] },
+{ source: [0xCE74, 0x0334, 0x11AE], NFC: [0xCE74, 0x0334, 0x11AE], NFD: [0x110F, 0x1161, 0x0334, 0x11AE], NFKC: [0xCE74, 0x0334, 0x11AE], NFKD: [0x110F, 0x1161, 0x0334, 0x11AE] },
+{ source: [0xCEC8, 0x0334, 0x11B5], NFC: [0xCEC8, 0x0334, 0x11B5], NFD: [0x110F, 0x1164, 0x0334, 0x11B5], NFKC: [0xCEC8, 0x0334, 0x11B5], NFKD: [0x110F, 0x1164, 0x0334, 0x11B5] },
+{ source: [0xCF1C, 0x0334, 0x11BC], NFC: [0xCF1C, 0x0334, 0x11BC], NFD: [0x110F, 0x1167, 0x0334, 0x11BC], NFKC: [0xCF1C, 0x0334, 0x11BC], NFKD: [0x110F, 0x1167, 0x0334, 0x11BC] },
+{ source: [0xCFE0, 0x0334, 0x11AE], NFC: [0xCFE0, 0x0334, 0x11AE], NFD: [0x110F, 0x116E, 0x0334, 0x11AE], NFKC: [0xCFE0, 0x0334, 0x11AE], NFKD: [0x110F, 0x116E, 0x0334, 0x11AE] },
+{ source: [0xD034, 0x0334, 0x11B5], NFC: [0xD034, 0x0334, 0x11B5], NFD: [0x110F, 0x1171, 0x0334, 0x11B5], NFKC: [0xD034, 0x0334, 0x11B5], NFKD: [0x110F, 0x1171, 0x0334, 0x11B5] },
+{ source: [0xD088, 0x0334, 0x11BC], NFC: [0xD088, 0x0334, 0x11BC], NFD: [0x110F, 0x1174, 0x0334, 0x11BC], NFKC: [0xD088, 0x0334, 0x11BC], NFKD: [0x110F, 0x1174, 0x0334, 0x11BC] },
+{ source: [0xD14C, 0x0334, 0x11AE], NFC: [0xD14C, 0x0334, 0x11AE], NFD: [0x1110, 0x1166, 0x0334, 0x11AE], NFKC: [0xD14C, 0x0334, 0x11AE], NFKD: [0x1110, 0x1166, 0x0334, 0x11AE] },
+{ source: [0xD1A0, 0x0334, 0x11B5], NFC: [0xD1A0, 0x0334, 0x11B5], NFD: [0x1110, 0x1169, 0x0334, 0x11B5], NFKC: [0xD1A0, 0x0334, 0x11B5], NFKD: [0x1110, 0x1169, 0x0334, 0x11B5] },
+{ source: [0xD1F4, 0x0334, 0x11BC], NFC: [0xD1F4, 0x0334, 0x11BC], NFD: [0x1110, 0x116C, 0x0334, 0x11BC], NFKC: [0xD1F4, 0x0334, 0x11BC], NFKD: [0x1110, 0x116C, 0x0334, 0x11BC] },
+{ source: [0xD2B8, 0x0334, 0x11AE], NFC: [0xD2B8, 0x0334, 0x11AE], NFD: [0x1110, 0x1173, 0x0334, 0x11AE], NFKC: [0xD2B8, 0x0334, 0x11AE], NFKD: [0x1110, 0x1173, 0x0334, 0x11AE] },
+{ source: [0xD30C, 0x0334, 0x11B5], NFC: [0xD30C, 0x0334, 0x11B5], NFD: [0x1111, 0x1161, 0x0334, 0x11B5], NFKC: [0xD30C, 0x0334, 0x11B5], NFKD: [0x1111, 0x1161, 0x0334, 0x11B5] },
+{ source: [0xD360, 0x0334, 0x11BC], NFC: [0xD360, 0x0334, 0x11BC], NFD: [0x1111, 0x1164, 0x0334, 0x11BC], NFKC: [0xD360, 0x0334, 0x11BC], NFKD: [0x1111, 0x1164, 0x0334, 0x11BC] },
+{ source: [0xD424, 0x0334, 0x11AE], NFC: [0xD424, 0x0334, 0x11AE], NFD: [0x1111, 0x116B, 0x0334, 0x11AE], NFKC: [0xD424, 0x0334, 0x11AE], NFKD: [0x1111, 0x116B, 0x0334, 0x11AE] },
+{ source: [0xD478, 0x0334, 0x11B5], NFC: [0xD478, 0x0334, 0x11B5], NFD: [0x1111, 0x116E, 0x0334, 0x11B5], NFKC: [0xD478, 0x0334, 0x11B5], NFKD: [0x1111, 0x116E, 0x0334, 0x11B5] },
+{ source: [0xD4CC, 0x0334, 0x11BC], NFC: [0xD4CC, 0x0334, 0x11BC], NFD: [0x1111, 0x1171, 0x0334, 0x11BC], NFKC: [0xD4CC, 0x0334, 0x11BC], NFKD: [0x1111, 0x1171, 0x0334, 0x11BC] },
+{ source: [0xD590, 0x0334, 0x11AE], NFC: [0xD590, 0x0334, 0x11AE], NFD: [0x1112, 0x1163, 0x0334, 0x11AE], NFKC: [0xD590, 0x0334, 0x11AE], NFKD: [0x1112, 0x1163, 0x0334, 0x11AE] },
+{ source: [0xD5E4, 0x0334, 0x11B5], NFC: [0xD5E4, 0x0334, 0x11B5], NFD: [0x1112, 0x1166, 0x0334, 0x11B5], NFKC: [0xD5E4, 0x0334, 0x11B5], NFKD: [0x1112, 0x1166, 0x0334, 0x11B5] },
+{ source: [0xD638, 0x0334, 0x11BC], NFC: [0xD638, 0x0334, 0x11BC], NFD: [0x1112, 0x1169, 0x0334, 0x11BC], NFKC: [0xD638, 0x0334, 0x11BC], NFKD: [0x1112, 0x1169, 0x0334, 0x11BC] },
+{ source: [0xD6FC, 0x0334, 0x11AE], NFC: [0xD6FC, 0x0334, 0x11AE], NFD: [0x1112, 0x1170, 0x0334, 0x11AE], NFKC: [0xD6FC, 0x0334, 0x11AE], NFKD: [0x1112, 0x1170, 0x0334, 0x11AE] },
+{ source: [0xD750, 0x0334, 0x11B5], NFC: [0xD750, 0x0334, 0x11B5], NFD: [0x1112, 0x1173, 0x0334, 0x11B5], NFKC: [0xD750, 0x0334, 0x11B5], NFKD: [0x1112, 0x1173, 0x0334, 0x11B5] },
+{ source: [0x11131, 0x0334, 0x11127], NFC: [0x11131, 0x0334, 0x11127], NFD: [0x11131, 0x0334, 0x11127], NFKC: [0x11131, 0x0334, 0x11127], NFKD: [0x11131, 0x0334, 0x11127] },
+{ source: [0x11132, 0x0334, 0x11127], NFC: [0x11132, 0x0334, 0x11127], NFD: [0x11132, 0x0334, 0x11127], NFKC: [0x11132, 0x0334, 0x11127], NFKD: [0x11132, 0x0334, 0x11127] },
+{ source: [0x11347, 0x0334, 0x1133E], NFC: [0x11347, 0x0334, 0x1133E], NFD: [0x11347, 0x0334, 0x1133E], NFKC: [0x11347, 0x0334, 0x1133E], NFKD: [0x11347, 0x0334, 0x1133E] },
+{ source: [0x11347, 0x0334, 0x11357], NFC: [0x11347, 0x0334, 0x11357], NFD: [0x11347, 0x0334, 0x11357], NFKC: [0x11347, 0x0334, 0x11357], NFKD: [0x11347, 0x0334, 0x11357] },
+{ source: [0x114B9, 0x0334, 0x114B0], NFC: [0x114B9, 0x0334, 0x114B0], NFD: [0x114B9, 0x0334, 0x114B0], NFKC: [0x114B9, 0x0334, 0x114B0], NFKD: [0x114B9, 0x0334, 0x114B0] },
+{ source: [0x114B9, 0x0334, 0x114BA], NFC: [0x114B9, 0x0334, 0x114BA], NFD: [0x114B9, 0x0334, 0x114BA], NFKC: [0x114B9, 0x0334, 0x114BA], NFKD: [0x114B9, 0x0334, 0x114BA] },
+{ source: [0x114B9, 0x0334, 0x114BD], NFC: [0x114B9, 0x0334, 0x114BD], NFD: [0x114B9, 0x0334, 0x114BD], NFKC: [0x114B9, 0x0334, 0x114BD], NFKD: [0x114B9, 0x0334, 0x114BD] },
+{ source: [0x115B8, 0x0334, 0x115AF], NFC: [0x115B8, 0x0334, 0x115AF], NFD: [0x115B8, 0x0334, 0x115AF], NFKC: [0x115B8, 0x0334, 0x115AF], NFKD: [0x115B8, 0x0334, 0x115AF] },
+{ source: [0x115B9, 0x0334, 0x115AF], NFC: [0x115B9, 0x0334, 0x115AF], NFD: [0x115B9, 0x0334, 0x115AF], NFKC: [0x115B9, 0x0334, 0x115AF], NFKD: [0x115B9, 0x0334, 0x115AF] }
+];
diff --git a/js/src/tests/ecma_6/String/normalize-generateddata-part0.js b/js/src/tests/ecma_6/String/normalize-generateddata-part0.js
new file mode 100644
index 000000000..a9bed5b14
--- /dev/null
+++ b/js/src/tests/ecma_6/String/normalize-generateddata-part0.js
@@ -0,0 +1,22 @@
+// |reftest| skip-if(!xulRuntime.shell) -- uses shell load() function
+
+var BUGNUMBER = 918987;
+var summary = 'String.prototype.normalize - part0';
+
+print(BUGNUMBER + ": " + summary);
+
+function test() {
+ load('ecma_6/String/normalize-generateddata-input.js');
+
+ for (var test0 of tests_part0) {
+ runNormalizeTest(test0);
+ }
+}
+
+if ("normalize" in String.prototype) {
+ // String.prototype.normalize is not enabled in all builds.
+ test();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/normalize-generateddata-part1-not-listed.js b/js/src/tests/ecma_6/String/normalize-generateddata-part1-not-listed.js
new file mode 100644
index 000000000..c15fff660
--- /dev/null
+++ b/js/src/tests/ecma_6/String/normalize-generateddata-part1-not-listed.js
@@ -0,0 +1,38 @@
+// |reftest| skip-if(!xulRuntime.shell) -- uses shell load() function
+
+var BUGNUMBER = 918987;
+var summary = 'String.prototype.normalize - not listed in part1';
+
+print(BUGNUMBER + ": " + summary);
+
+function test() {
+ load('ecma_6/String/normalize-generateddata-input.js');
+
+ var part1 = new Set();
+ for (var test1 of tests_part1) {
+ part1.add(test1.source[0]);
+ }
+
+ /* not listed in Part 1 */
+ for (var x = 0; x <= 0x2FFFF; x++) {
+ if (part1.has(x)) {
+ continue;
+ }
+ var xstr = x.toString(16);
+ var c = String.fromCodePoint(x);
+ assertEq(c.normalize(), c, "NFC of " + xstr);
+ assertEq(c.normalize(undefined), c, "NFC of " + xstr);
+ assertEq(c.normalize("NFC"), c, "NFC of " + xstr);
+ assertEq(c.normalize("NFD"), c, "NFD of " + xstr);
+ assertEq(c.normalize("NFKC"), c, "NFKC of " + xstr);
+ assertEq(c.normalize("NFKD"), c, "NFKD of " + xstr);
+ }
+}
+
+if ("normalize" in String.prototype) {
+ // String.prototype.normalize is not enabled in all builds.
+ test();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/normalize-generateddata-part1.js b/js/src/tests/ecma_6/String/normalize-generateddata-part1.js
new file mode 100644
index 000000000..b2a90f5e8
--- /dev/null
+++ b/js/src/tests/ecma_6/String/normalize-generateddata-part1.js
@@ -0,0 +1,22 @@
+// |reftest| skip-if(!xulRuntime.shell) -- uses shell load() function
+
+var BUGNUMBER = 918987;
+var summary = 'String.prototype.normalize - part1';
+
+print(BUGNUMBER + ": " + summary);
+
+function test() {
+ load('ecma_6/String/normalize-generateddata-input.js');
+
+ for (var test1 of tests_part1) {
+ runNormalizeTest(test1);
+ }
+}
+
+if ("normalize" in String.prototype) {
+ // String.prototype.normalize is not enabled in all builds.
+ test();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/normalize-generateddata-part2.js b/js/src/tests/ecma_6/String/normalize-generateddata-part2.js
new file mode 100644
index 000000000..6a942b3a1
--- /dev/null
+++ b/js/src/tests/ecma_6/String/normalize-generateddata-part2.js
@@ -0,0 +1,22 @@
+// |reftest| skip-if(!xulRuntime.shell) -- uses shell load() function
+
+var BUGNUMBER = 918987;
+var summary = 'String.prototype.normalize - part2';
+
+print(BUGNUMBER + ": " + summary);
+
+function test() {
+ load('ecma_6/String/normalize-generateddata-input.js');
+
+ for (var test2 of tests_part2) {
+ runNormalizeTest(test2);
+ }
+}
+
+if ("normalize" in String.prototype) {
+ // String.prototype.normalize is not enabled in all builds.
+ test();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/normalize-generateddata-part3.js b/js/src/tests/ecma_6/String/normalize-generateddata-part3.js
new file mode 100644
index 000000000..d02792701
--- /dev/null
+++ b/js/src/tests/ecma_6/String/normalize-generateddata-part3.js
@@ -0,0 +1,22 @@
+// |reftest| skip-if(!xulRuntime.shell) -- uses shell load() function
+
+var BUGNUMBER = 918987;
+var summary = 'String.prototype.normalize - part3';
+
+print(BUGNUMBER + ": " + summary);
+
+function test() {
+ load('ecma_6/String/normalize-generateddata-input.js');
+
+ for (var test3 of tests_part3) {
+ runNormalizeTest(test3);
+ }
+}
+
+if ("normalize" in String.prototype) {
+ // String.prototype.normalize is not enabled in all builds.
+ test();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/normalize-generic.js b/js/src/tests/ecma_6/String/normalize-generic.js
new file mode 100644
index 000000000..c1c3882cc
--- /dev/null
+++ b/js/src/tests/ecma_6/String/normalize-generic.js
@@ -0,0 +1,20 @@
+var BUGNUMBER = 918987;
+var summary = 'String.prototype.normalize - normalize no String object';
+
+print(BUGNUMBER + ": " + summary);
+
+function test() {
+ var myobj = {
+ toString: () => "a\u0301",
+ normalize: String.prototype.normalize
+ };
+ assertEq(myobj.normalize(), "\u00E1");
+}
+
+if ("normalize" in String.prototype) {
+ // String.prototype.normalize is not enabled in all builds.
+ test();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/normalize-parameter.js b/js/src/tests/ecma_6/String/normalize-parameter.js
new file mode 100644
index 000000000..4831c2717
--- /dev/null
+++ b/js/src/tests/ecma_6/String/normalize-parameter.js
@@ -0,0 +1,19 @@
+var BUGNUMBER = 918987;
+var summary = 'String.prototype.normalize - passing wrong parameter';
+
+print(BUGNUMBER + ": " + summary);
+
+function test() {
+ assertThrowsInstanceOf(() => "abc".normalize("NFE"), RangeError,
+ "String.prototype.normalize should raise RangeError on invalid form");
+
+ assertEq("".normalize(), "");
+}
+
+if ("normalize" in String.prototype) {
+ // String.prototype.normalize is not enabled in all builds.
+ test();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/normalize-rope.js b/js/src/tests/ecma_6/String/normalize-rope.js
new file mode 100644
index 000000000..b5b8800fa
--- /dev/null
+++ b/js/src/tests/ecma_6/String/normalize-rope.js
@@ -0,0 +1,23 @@
+var BUGNUMBER = 918987;
+var summary = 'String.prototype.normalize - normalize rope string';
+
+print(BUGNUMBER + ": " + summary);
+
+function test() {
+ /* JSRope test */
+ var a = "";
+ var b = "";
+ for (var i = 0; i < 100; i++) {
+ a += "\u0100";
+ b += "\u0041\u0304";
+ }
+ assertEq(a.normalize("NFD"), b);
+}
+
+if ("normalize" in String.prototype) {
+ // String.prototype.normalize is not enabled in all builds.
+ test();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/raw.js b/js/src/tests/ecma_6/String/raw.js
new file mode 100644
index 000000000..1472185af
--- /dev/null
+++ b/js/src/tests/ecma_6/String/raw.js
@@ -0,0 +1,55 @@
+var BUGNUMBER = 1039774;
+var summary = 'String.raw';
+
+print(BUGNUMBER + ": " + summary);
+
+assertThrowsInstanceOf(function() { String.raw(); }, TypeError);
+
+assertEq(String.raw.length, 1);
+
+var cooked = [];
+assertThrowsInstanceOf(function() { String.raw(cooked); }, TypeError);
+
+cooked.raw = {};
+assertEq(String.raw(cooked), "");
+
+cooked.raw = {lengt: 0};
+assertEq(String.raw(cooked), "");
+
+cooked.raw = {length: 0};
+assertEq(String.raw(cooked), "");
+
+cooked.raw = {length: -1};
+assertEq(String.raw(cooked), "");
+
+cooked.raw = [];
+assertEq(String.raw(cooked), "");
+
+cooked.raw = ["a"];
+assertEq(String.raw(cooked), "a");
+
+cooked.raw = ["a", "b"];
+assertEq(String.raw(cooked, "x"), "axb");
+
+cooked.raw = ["a", "b"];
+assertEq(String.raw(cooked, "x", "y"), "axb");
+
+cooked.raw = ["a", "b", "c"];
+assertEq(String.raw(cooked, "x"), "axbc");
+
+cooked.raw = ["a", "b", "c"];
+assertEq(String.raw(cooked, "x", "y"), "axbyc");
+
+cooked.raw = ["\n", "\r\n", "\r"];
+assertEq(String.raw(cooked, "x", "y"), "\nx\r\ny\r");
+
+cooked.raw = ["\n", "\r\n", "\r"];
+assertEq(String.raw(cooked, "\r\r", "\n"), "\n\r\r\r\n\n\r");
+
+cooked.raw = {length: 2, '0':"a", '1':"b", '2':"c"};
+assertEq(String.raw(cooked, "x", "y"), "axb");
+
+cooked.raw = {length: 4, '0':"a", '1':"b", '2':"c"};
+assertEq(String.raw(cooked, "x", "y"), "axbycundefined");
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/String/replace-GetMethod.js b/js/src/tests/ecma_6/String/replace-GetMethod.js
new file mode 100644
index 000000000..c596f946f
--- /dev/null
+++ b/js/src/tests/ecma_6/String/replace-GetMethod.js
@@ -0,0 +1,24 @@
+var BUGNUMBER = 1290655;
+var summary = "String.prototype.replace should call GetMethod.";
+
+print(BUGNUMBER + ": " + summary);
+
+function create(value) {
+ return {
+ [Symbol.replace]: value,
+ toString() {
+ return "-";
+ }
+ };
+}
+
+for (let v of [null, undefined]) {
+ assertEq("a-a".replace(create(v), "+"), "a+a");
+}
+
+for (let v of [1, true, Symbol.iterator, "", {}, []]) {
+ assertThrowsInstanceOf(() => "a-a".replace(create(v)), TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/replace.js b/js/src/tests/ecma_6/String/replace.js
new file mode 100644
index 000000000..83aab8f2a
--- /dev/null
+++ b/js/src/tests/ecma_6/String/replace.js
@@ -0,0 +1,19 @@
+var BUGNUMBER = 887016;
+var summary = "Call RegExp.prototype[@@replace] from String.prototype.replace.";
+
+print(BUGNUMBER + ": " + summary);
+
+var called = 0;
+var myRegExp = {
+ [Symbol.replace](S, R) {
+ assertEq(S, "abcAbcABC");
+ assertEq(R, "foo");
+ called++;
+ return 42;
+ }
+};
+assertEq("abcAbcABC".replace(myRegExp, "foo"), 42);
+assertEq(called, 1);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/search-GetMethod.js b/js/src/tests/ecma_6/String/search-GetMethod.js
new file mode 100644
index 000000000..4d54cf3fb
--- /dev/null
+++ b/js/src/tests/ecma_6/String/search-GetMethod.js
@@ -0,0 +1,24 @@
+var BUGNUMBER = 1290655;
+var summary = "String.prototype.search should call GetMethod.";
+
+print(BUGNUMBER + ": " + summary);
+
+function create(value) {
+ return {
+ [Symbol.search]: value,
+ toString() {
+ return "-";
+ }
+ };
+}
+
+for (let v of [null, undefined]) {
+ assertEq("a-a".search(create(v)), 1);
+}
+
+for (let v of [1, true, Symbol.iterator, "", {}, []]) {
+ assertThrowsInstanceOf(() => "a-a".search(create(v)), TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/search.js b/js/src/tests/ecma_6/String/search.js
new file mode 100644
index 000000000..86d0aacc6
--- /dev/null
+++ b/js/src/tests/ecma_6/String/search.js
@@ -0,0 +1,27 @@
+var BUGNUMBER = 887016;
+var summary = "Call RegExp.prototype[@@search] from String.prototype.search.";
+
+print(BUGNUMBER + ": " + summary);
+
+var called = 0;
+var myRegExp = {
+ [Symbol.search](S) {
+ assertEq(S, "abcAbcABC");
+ called++;
+ return 42;
+ }
+};
+assertEq("abcAbcABC".search(myRegExp), 42);
+assertEq(called, 1);
+
+called = 0;
+RegExp.prototype[Symbol.search] = function(S) {
+ assertEq(S, "abcAbcABC");
+ called++;
+ return 43;
+};
+assertEq("abcAbcABC".search("abc"), 43);
+assertEq(called, 1);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/shell.js b/js/src/tests/ecma_6/String/shell.js
new file mode 100644
index 000000000..25e2f7e2f
--- /dev/null
+++ b/js/src/tests/ecma_6/String/shell.js
@@ -0,0 +1,59 @@
+function runNormalizeTest(test) {
+ function codePointsToString(points) {
+ return points.map(x => String.fromCodePoint(x)).join("");
+ }
+ function stringify(points) {
+ return points.map(x => x.toString(16)).join();
+ }
+
+ var source = codePointsToString(test.source);
+ var NFC = codePointsToString(test.NFC);
+ var NFD = codePointsToString(test.NFD);
+ var NFKC = codePointsToString(test.NFKC);
+ var NFKD = codePointsToString(test.NFKD);
+ var sourceStr = stringify(test.source);
+ var nfcStr = stringify(test.NFC);
+ var nfdStr = stringify(test.NFD);
+ var nfkcStr = stringify(test.NFKC);
+ var nfkdStr = stringify(test.NFKD);
+
+ /* NFC */
+ assertEq(source.normalize(), NFC, "NFC of " + sourceStr);
+ assertEq(NFC.normalize(), NFC, "NFC of " + nfcStr);
+ assertEq(NFD.normalize(), NFC, "NFC of " + nfdStr);
+ assertEq(NFKC.normalize(), NFKC, "NFC of " + nfkcStr);
+ assertEq(NFKD.normalize(), NFKC, "NFC of " + nfkdStr);
+
+ assertEq(source.normalize(undefined), NFC, "NFC of " + sourceStr);
+ assertEq(NFC.normalize(undefined), NFC, "NFC of " + nfcStr);
+ assertEq(NFD.normalize(undefined), NFC, "NFC of " + nfdStr);
+ assertEq(NFKC.normalize(undefined), NFKC, "NFC of " + nfkcStr);
+ assertEq(NFKD.normalize(undefined), NFKC, "NFC of " + nfkdStr);
+
+ assertEq(source.normalize("NFC"), NFC, "NFC of " + sourceStr);
+ assertEq(NFC.normalize("NFC"), NFC, "NFC of " + nfcStr);
+ assertEq(NFD.normalize("NFC"), NFC, "NFC of " + nfdStr);
+ assertEq(NFKC.normalize("NFC"), NFKC, "NFC of " + nfkcStr);
+ assertEq(NFKD.normalize("NFC"), NFKC, "NFC of " + nfkdStr);
+
+ /* NFD */
+ assertEq(source.normalize("NFD"), NFD, "NFD of " + sourceStr);
+ assertEq(NFC.normalize("NFD"), NFD, "NFD of " + nfcStr);
+ assertEq(NFD.normalize("NFD"), NFD, "NFD of " + nfdStr);
+ assertEq(NFKC.normalize("NFD"), NFKD, "NFD of " + nfkcStr);
+ assertEq(NFKD.normalize("NFD"), NFKD, "NFD of " + nfkdStr);
+
+ /* NFKC */
+ assertEq(source.normalize("NFKC"), NFKC, "NFKC of " + sourceStr);
+ assertEq(NFC.normalize("NFKC"), NFKC, "NFKC of " + nfcStr);
+ assertEq(NFD.normalize("NFKC"), NFKC, "NFKC of " + nfdStr);
+ assertEq(NFKC.normalize("NFKC"), NFKC, "NFKC of " + nfkcStr);
+ assertEq(NFKD.normalize("NFKC"), NFKC, "NFKC of " + nfkdStr);
+
+ /* NFKD */
+ assertEq(source.normalize("NFKD"), NFKD, "NFKD of " + sourceStr);
+ assertEq(NFC.normalize("NFKD"), NFKD, "NFKD of " + nfcStr);
+ assertEq(NFD.normalize("NFKD"), NFKD, "NFKD of " + nfdStr);
+ assertEq(NFKC.normalize("NFKD"), NFKD, "NFKD of " + nfkcStr);
+ assertEq(NFKD.normalize("NFKD"), NFKD, "NFKD of " + nfkdStr);
+}
diff --git a/js/src/tests/ecma_6/String/split-GetMethod.js b/js/src/tests/ecma_6/String/split-GetMethod.js
new file mode 100644
index 000000000..a56debe2a
--- /dev/null
+++ b/js/src/tests/ecma_6/String/split-GetMethod.js
@@ -0,0 +1,24 @@
+var BUGNUMBER = 1290655;
+var summary = "String.prototype.split should call GetMethod.";
+
+print(BUGNUMBER + ": " + summary);
+
+function create(value) {
+ return {
+ [Symbol.split]: value,
+ toString() {
+ return "-";
+ }
+ };
+}
+
+for (let v of [null, undefined]) {
+ assertDeepEq("a-a".split(create(v)), ["a", "a"]);
+}
+
+for (let v of [1, true, Symbol.iterator, "", {}, []]) {
+ assertThrowsInstanceOf(() => "a-a".split(create(v)), TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/split-order.js b/js/src/tests/ecma_6/String/split-order.js
new file mode 100644
index 000000000..b6583ed32
--- /dev/null
+++ b/js/src/tests/ecma_6/String/split-order.js
@@ -0,0 +1,22 @@
+var BUGNUMBER = 1287521;
+var summary = 'String.prototype.split should call ToUint32(limit) before ToString(separator).';
+
+print(BUGNUMBER + ": " + summary);
+
+var log = [];
+"abba".split({
+ toString() {
+ log.push("separator-tostring");
+ return "b";
+ }
+}, {
+ valueOf() {
+ log.push("limit-valueOf");
+ return 0;
+ }
+});
+
+assertEq(log.join(","), "limit-valueOf,separator-tostring");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/split.js b/js/src/tests/ecma_6/String/split.js
new file mode 100644
index 000000000..1cce47f28
--- /dev/null
+++ b/js/src/tests/ecma_6/String/split.js
@@ -0,0 +1,19 @@
+var BUGNUMBER = 887016;
+var summary = "Call RegExp.prototype[@@split] from String.prototype.split.";
+
+print(BUGNUMBER + ": " + summary);
+
+var called = 0;
+var myRegExp = {
+ [Symbol.split](S, limit) {
+ assertEq(S, "abcAbcABC");
+ assertEq(limit, 10);
+ called++;
+ return ["X", "Y", "Z"];
+ }
+};
+assertEq("abcAbcABC".split(myRegExp, 10).join(","), "X,Y,Z");
+assertEq(called, 1);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/string-code-point-upper-lower-mapping.js b/js/src/tests/ecma_6/String/string-code-point-upper-lower-mapping.js
new file mode 100644
index 000000000..2c897c8c4
--- /dev/null
+++ b/js/src/tests/ecma_6/String/string-code-point-upper-lower-mapping.js
@@ -0,0 +1,396 @@
+/* Generated by make_unicode.py DO NOT MODIFY */
+/* Unicode version: 9.0.0 */
+
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+assertEq(String.fromCodePoint(0x10428).toUpperCase().codePointAt(0), 0x10400);
+assertEq(String.fromCodePoint(0x10429).toUpperCase().codePointAt(0), 0x10401);
+assertEq(String.fromCodePoint(0x1042a).toUpperCase().codePointAt(0), 0x10402);
+assertEq(String.fromCodePoint(0x1042b).toUpperCase().codePointAt(0), 0x10403);
+assertEq(String.fromCodePoint(0x1042c).toUpperCase().codePointAt(0), 0x10404);
+assertEq(String.fromCodePoint(0x1042d).toUpperCase().codePointAt(0), 0x10405);
+assertEq(String.fromCodePoint(0x1042e).toUpperCase().codePointAt(0), 0x10406);
+assertEq(String.fromCodePoint(0x1042f).toUpperCase().codePointAt(0), 0x10407);
+assertEq(String.fromCodePoint(0x10430).toUpperCase().codePointAt(0), 0x10408);
+assertEq(String.fromCodePoint(0x10431).toUpperCase().codePointAt(0), 0x10409);
+assertEq(String.fromCodePoint(0x10432).toUpperCase().codePointAt(0), 0x1040a);
+assertEq(String.fromCodePoint(0x10433).toUpperCase().codePointAt(0), 0x1040b);
+assertEq(String.fromCodePoint(0x10434).toUpperCase().codePointAt(0), 0x1040c);
+assertEq(String.fromCodePoint(0x10435).toUpperCase().codePointAt(0), 0x1040d);
+assertEq(String.fromCodePoint(0x10436).toUpperCase().codePointAt(0), 0x1040e);
+assertEq(String.fromCodePoint(0x10437).toUpperCase().codePointAt(0), 0x1040f);
+assertEq(String.fromCodePoint(0x10438).toUpperCase().codePointAt(0), 0x10410);
+assertEq(String.fromCodePoint(0x10439).toUpperCase().codePointAt(0), 0x10411);
+assertEq(String.fromCodePoint(0x1043a).toUpperCase().codePointAt(0), 0x10412);
+assertEq(String.fromCodePoint(0x1043b).toUpperCase().codePointAt(0), 0x10413);
+assertEq(String.fromCodePoint(0x1043c).toUpperCase().codePointAt(0), 0x10414);
+assertEq(String.fromCodePoint(0x1043d).toUpperCase().codePointAt(0), 0x10415);
+assertEq(String.fromCodePoint(0x1043e).toUpperCase().codePointAt(0), 0x10416);
+assertEq(String.fromCodePoint(0x1043f).toUpperCase().codePointAt(0), 0x10417);
+assertEq(String.fromCodePoint(0x10440).toUpperCase().codePointAt(0), 0x10418);
+assertEq(String.fromCodePoint(0x10441).toUpperCase().codePointAt(0), 0x10419);
+assertEq(String.fromCodePoint(0x10442).toUpperCase().codePointAt(0), 0x1041a);
+assertEq(String.fromCodePoint(0x10443).toUpperCase().codePointAt(0), 0x1041b);
+assertEq(String.fromCodePoint(0x10444).toUpperCase().codePointAt(0), 0x1041c);
+assertEq(String.fromCodePoint(0x10445).toUpperCase().codePointAt(0), 0x1041d);
+assertEq(String.fromCodePoint(0x10446).toUpperCase().codePointAt(0), 0x1041e);
+assertEq(String.fromCodePoint(0x10447).toUpperCase().codePointAt(0), 0x1041f);
+assertEq(String.fromCodePoint(0x10448).toUpperCase().codePointAt(0), 0x10420);
+assertEq(String.fromCodePoint(0x10449).toUpperCase().codePointAt(0), 0x10421);
+assertEq(String.fromCodePoint(0x1044a).toUpperCase().codePointAt(0), 0x10422);
+assertEq(String.fromCodePoint(0x1044b).toUpperCase().codePointAt(0), 0x10423);
+assertEq(String.fromCodePoint(0x1044c).toUpperCase().codePointAt(0), 0x10424);
+assertEq(String.fromCodePoint(0x1044d).toUpperCase().codePointAt(0), 0x10425);
+assertEq(String.fromCodePoint(0x1044e).toUpperCase().codePointAt(0), 0x10426);
+assertEq(String.fromCodePoint(0x1044f).toUpperCase().codePointAt(0), 0x10427);
+assertEq(String.fromCodePoint(0x104d8).toUpperCase().codePointAt(0), 0x104b0);
+assertEq(String.fromCodePoint(0x104d9).toUpperCase().codePointAt(0), 0x104b1);
+assertEq(String.fromCodePoint(0x104da).toUpperCase().codePointAt(0), 0x104b2);
+assertEq(String.fromCodePoint(0x104db).toUpperCase().codePointAt(0), 0x104b3);
+assertEq(String.fromCodePoint(0x104dc).toUpperCase().codePointAt(0), 0x104b4);
+assertEq(String.fromCodePoint(0x104dd).toUpperCase().codePointAt(0), 0x104b5);
+assertEq(String.fromCodePoint(0x104de).toUpperCase().codePointAt(0), 0x104b6);
+assertEq(String.fromCodePoint(0x104df).toUpperCase().codePointAt(0), 0x104b7);
+assertEq(String.fromCodePoint(0x104e0).toUpperCase().codePointAt(0), 0x104b8);
+assertEq(String.fromCodePoint(0x104e1).toUpperCase().codePointAt(0), 0x104b9);
+assertEq(String.fromCodePoint(0x104e2).toUpperCase().codePointAt(0), 0x104ba);
+assertEq(String.fromCodePoint(0x104e3).toUpperCase().codePointAt(0), 0x104bb);
+assertEq(String.fromCodePoint(0x104e4).toUpperCase().codePointAt(0), 0x104bc);
+assertEq(String.fromCodePoint(0x104e5).toUpperCase().codePointAt(0), 0x104bd);
+assertEq(String.fromCodePoint(0x104e6).toUpperCase().codePointAt(0), 0x104be);
+assertEq(String.fromCodePoint(0x104e7).toUpperCase().codePointAt(0), 0x104bf);
+assertEq(String.fromCodePoint(0x104e8).toUpperCase().codePointAt(0), 0x104c0);
+assertEq(String.fromCodePoint(0x104e9).toUpperCase().codePointAt(0), 0x104c1);
+assertEq(String.fromCodePoint(0x104ea).toUpperCase().codePointAt(0), 0x104c2);
+assertEq(String.fromCodePoint(0x104eb).toUpperCase().codePointAt(0), 0x104c3);
+assertEq(String.fromCodePoint(0x104ec).toUpperCase().codePointAt(0), 0x104c4);
+assertEq(String.fromCodePoint(0x104ed).toUpperCase().codePointAt(0), 0x104c5);
+assertEq(String.fromCodePoint(0x104ee).toUpperCase().codePointAt(0), 0x104c6);
+assertEq(String.fromCodePoint(0x104ef).toUpperCase().codePointAt(0), 0x104c7);
+assertEq(String.fromCodePoint(0x104f0).toUpperCase().codePointAt(0), 0x104c8);
+assertEq(String.fromCodePoint(0x104f1).toUpperCase().codePointAt(0), 0x104c9);
+assertEq(String.fromCodePoint(0x104f2).toUpperCase().codePointAt(0), 0x104ca);
+assertEq(String.fromCodePoint(0x104f3).toUpperCase().codePointAt(0), 0x104cb);
+assertEq(String.fromCodePoint(0x104f4).toUpperCase().codePointAt(0), 0x104cc);
+assertEq(String.fromCodePoint(0x104f5).toUpperCase().codePointAt(0), 0x104cd);
+assertEq(String.fromCodePoint(0x104f6).toUpperCase().codePointAt(0), 0x104ce);
+assertEq(String.fromCodePoint(0x104f7).toUpperCase().codePointAt(0), 0x104cf);
+assertEq(String.fromCodePoint(0x104f8).toUpperCase().codePointAt(0), 0x104d0);
+assertEq(String.fromCodePoint(0x104f9).toUpperCase().codePointAt(0), 0x104d1);
+assertEq(String.fromCodePoint(0x104fa).toUpperCase().codePointAt(0), 0x104d2);
+assertEq(String.fromCodePoint(0x104fb).toUpperCase().codePointAt(0), 0x104d3);
+assertEq(String.fromCodePoint(0x10cc0).toUpperCase().codePointAt(0), 0x10c80);
+assertEq(String.fromCodePoint(0x10cc1).toUpperCase().codePointAt(0), 0x10c81);
+assertEq(String.fromCodePoint(0x10cc2).toUpperCase().codePointAt(0), 0x10c82);
+assertEq(String.fromCodePoint(0x10cc3).toUpperCase().codePointAt(0), 0x10c83);
+assertEq(String.fromCodePoint(0x10cc4).toUpperCase().codePointAt(0), 0x10c84);
+assertEq(String.fromCodePoint(0x10cc5).toUpperCase().codePointAt(0), 0x10c85);
+assertEq(String.fromCodePoint(0x10cc6).toUpperCase().codePointAt(0), 0x10c86);
+assertEq(String.fromCodePoint(0x10cc7).toUpperCase().codePointAt(0), 0x10c87);
+assertEq(String.fromCodePoint(0x10cc8).toUpperCase().codePointAt(0), 0x10c88);
+assertEq(String.fromCodePoint(0x10cc9).toUpperCase().codePointAt(0), 0x10c89);
+assertEq(String.fromCodePoint(0x10cca).toUpperCase().codePointAt(0), 0x10c8a);
+assertEq(String.fromCodePoint(0x10ccb).toUpperCase().codePointAt(0), 0x10c8b);
+assertEq(String.fromCodePoint(0x10ccc).toUpperCase().codePointAt(0), 0x10c8c);
+assertEq(String.fromCodePoint(0x10ccd).toUpperCase().codePointAt(0), 0x10c8d);
+assertEq(String.fromCodePoint(0x10cce).toUpperCase().codePointAt(0), 0x10c8e);
+assertEq(String.fromCodePoint(0x10ccf).toUpperCase().codePointAt(0), 0x10c8f);
+assertEq(String.fromCodePoint(0x10cd0).toUpperCase().codePointAt(0), 0x10c90);
+assertEq(String.fromCodePoint(0x10cd1).toUpperCase().codePointAt(0), 0x10c91);
+assertEq(String.fromCodePoint(0x10cd2).toUpperCase().codePointAt(0), 0x10c92);
+assertEq(String.fromCodePoint(0x10cd3).toUpperCase().codePointAt(0), 0x10c93);
+assertEq(String.fromCodePoint(0x10cd4).toUpperCase().codePointAt(0), 0x10c94);
+assertEq(String.fromCodePoint(0x10cd5).toUpperCase().codePointAt(0), 0x10c95);
+assertEq(String.fromCodePoint(0x10cd6).toUpperCase().codePointAt(0), 0x10c96);
+assertEq(String.fromCodePoint(0x10cd7).toUpperCase().codePointAt(0), 0x10c97);
+assertEq(String.fromCodePoint(0x10cd8).toUpperCase().codePointAt(0), 0x10c98);
+assertEq(String.fromCodePoint(0x10cd9).toUpperCase().codePointAt(0), 0x10c99);
+assertEq(String.fromCodePoint(0x10cda).toUpperCase().codePointAt(0), 0x10c9a);
+assertEq(String.fromCodePoint(0x10cdb).toUpperCase().codePointAt(0), 0x10c9b);
+assertEq(String.fromCodePoint(0x10cdc).toUpperCase().codePointAt(0), 0x10c9c);
+assertEq(String.fromCodePoint(0x10cdd).toUpperCase().codePointAt(0), 0x10c9d);
+assertEq(String.fromCodePoint(0x10cde).toUpperCase().codePointAt(0), 0x10c9e);
+assertEq(String.fromCodePoint(0x10cdf).toUpperCase().codePointAt(0), 0x10c9f);
+assertEq(String.fromCodePoint(0x10ce0).toUpperCase().codePointAt(0), 0x10ca0);
+assertEq(String.fromCodePoint(0x10ce1).toUpperCase().codePointAt(0), 0x10ca1);
+assertEq(String.fromCodePoint(0x10ce2).toUpperCase().codePointAt(0), 0x10ca2);
+assertEq(String.fromCodePoint(0x10ce3).toUpperCase().codePointAt(0), 0x10ca3);
+assertEq(String.fromCodePoint(0x10ce4).toUpperCase().codePointAt(0), 0x10ca4);
+assertEq(String.fromCodePoint(0x10ce5).toUpperCase().codePointAt(0), 0x10ca5);
+assertEq(String.fromCodePoint(0x10ce6).toUpperCase().codePointAt(0), 0x10ca6);
+assertEq(String.fromCodePoint(0x10ce7).toUpperCase().codePointAt(0), 0x10ca7);
+assertEq(String.fromCodePoint(0x10ce8).toUpperCase().codePointAt(0), 0x10ca8);
+assertEq(String.fromCodePoint(0x10ce9).toUpperCase().codePointAt(0), 0x10ca9);
+assertEq(String.fromCodePoint(0x10cea).toUpperCase().codePointAt(0), 0x10caa);
+assertEq(String.fromCodePoint(0x10ceb).toUpperCase().codePointAt(0), 0x10cab);
+assertEq(String.fromCodePoint(0x10cec).toUpperCase().codePointAt(0), 0x10cac);
+assertEq(String.fromCodePoint(0x10ced).toUpperCase().codePointAt(0), 0x10cad);
+assertEq(String.fromCodePoint(0x10cee).toUpperCase().codePointAt(0), 0x10cae);
+assertEq(String.fromCodePoint(0x10cef).toUpperCase().codePointAt(0), 0x10caf);
+assertEq(String.fromCodePoint(0x10cf0).toUpperCase().codePointAt(0), 0x10cb0);
+assertEq(String.fromCodePoint(0x10cf1).toUpperCase().codePointAt(0), 0x10cb1);
+assertEq(String.fromCodePoint(0x10cf2).toUpperCase().codePointAt(0), 0x10cb2);
+assertEq(String.fromCodePoint(0x118c0).toUpperCase().codePointAt(0), 0x118a0);
+assertEq(String.fromCodePoint(0x118c1).toUpperCase().codePointAt(0), 0x118a1);
+assertEq(String.fromCodePoint(0x118c2).toUpperCase().codePointAt(0), 0x118a2);
+assertEq(String.fromCodePoint(0x118c3).toUpperCase().codePointAt(0), 0x118a3);
+assertEq(String.fromCodePoint(0x118c4).toUpperCase().codePointAt(0), 0x118a4);
+assertEq(String.fromCodePoint(0x118c5).toUpperCase().codePointAt(0), 0x118a5);
+assertEq(String.fromCodePoint(0x118c6).toUpperCase().codePointAt(0), 0x118a6);
+assertEq(String.fromCodePoint(0x118c7).toUpperCase().codePointAt(0), 0x118a7);
+assertEq(String.fromCodePoint(0x118c8).toUpperCase().codePointAt(0), 0x118a8);
+assertEq(String.fromCodePoint(0x118c9).toUpperCase().codePointAt(0), 0x118a9);
+assertEq(String.fromCodePoint(0x118ca).toUpperCase().codePointAt(0), 0x118aa);
+assertEq(String.fromCodePoint(0x118cb).toUpperCase().codePointAt(0), 0x118ab);
+assertEq(String.fromCodePoint(0x118cc).toUpperCase().codePointAt(0), 0x118ac);
+assertEq(String.fromCodePoint(0x118cd).toUpperCase().codePointAt(0), 0x118ad);
+assertEq(String.fromCodePoint(0x118ce).toUpperCase().codePointAt(0), 0x118ae);
+assertEq(String.fromCodePoint(0x118cf).toUpperCase().codePointAt(0), 0x118af);
+assertEq(String.fromCodePoint(0x118d0).toUpperCase().codePointAt(0), 0x118b0);
+assertEq(String.fromCodePoint(0x118d1).toUpperCase().codePointAt(0), 0x118b1);
+assertEq(String.fromCodePoint(0x118d2).toUpperCase().codePointAt(0), 0x118b2);
+assertEq(String.fromCodePoint(0x118d3).toUpperCase().codePointAt(0), 0x118b3);
+assertEq(String.fromCodePoint(0x118d4).toUpperCase().codePointAt(0), 0x118b4);
+assertEq(String.fromCodePoint(0x118d5).toUpperCase().codePointAt(0), 0x118b5);
+assertEq(String.fromCodePoint(0x118d6).toUpperCase().codePointAt(0), 0x118b6);
+assertEq(String.fromCodePoint(0x118d7).toUpperCase().codePointAt(0), 0x118b7);
+assertEq(String.fromCodePoint(0x118d8).toUpperCase().codePointAt(0), 0x118b8);
+assertEq(String.fromCodePoint(0x118d9).toUpperCase().codePointAt(0), 0x118b9);
+assertEq(String.fromCodePoint(0x118da).toUpperCase().codePointAt(0), 0x118ba);
+assertEq(String.fromCodePoint(0x118db).toUpperCase().codePointAt(0), 0x118bb);
+assertEq(String.fromCodePoint(0x118dc).toUpperCase().codePointAt(0), 0x118bc);
+assertEq(String.fromCodePoint(0x118dd).toUpperCase().codePointAt(0), 0x118bd);
+assertEq(String.fromCodePoint(0x118de).toUpperCase().codePointAt(0), 0x118be);
+assertEq(String.fromCodePoint(0x118df).toUpperCase().codePointAt(0), 0x118bf);
+assertEq(String.fromCodePoint(0x1e922).toUpperCase().codePointAt(0), 0x1e900);
+assertEq(String.fromCodePoint(0x1e923).toUpperCase().codePointAt(0), 0x1e901);
+assertEq(String.fromCodePoint(0x1e924).toUpperCase().codePointAt(0), 0x1e902);
+assertEq(String.fromCodePoint(0x1e925).toUpperCase().codePointAt(0), 0x1e903);
+assertEq(String.fromCodePoint(0x1e926).toUpperCase().codePointAt(0), 0x1e904);
+assertEq(String.fromCodePoint(0x1e927).toUpperCase().codePointAt(0), 0x1e905);
+assertEq(String.fromCodePoint(0x1e928).toUpperCase().codePointAt(0), 0x1e906);
+assertEq(String.fromCodePoint(0x1e929).toUpperCase().codePointAt(0), 0x1e907);
+assertEq(String.fromCodePoint(0x1e92a).toUpperCase().codePointAt(0), 0x1e908);
+assertEq(String.fromCodePoint(0x1e92b).toUpperCase().codePointAt(0), 0x1e909);
+assertEq(String.fromCodePoint(0x1e92c).toUpperCase().codePointAt(0), 0x1e90a);
+assertEq(String.fromCodePoint(0x1e92d).toUpperCase().codePointAt(0), 0x1e90b);
+assertEq(String.fromCodePoint(0x1e92e).toUpperCase().codePointAt(0), 0x1e90c);
+assertEq(String.fromCodePoint(0x1e92f).toUpperCase().codePointAt(0), 0x1e90d);
+assertEq(String.fromCodePoint(0x1e930).toUpperCase().codePointAt(0), 0x1e90e);
+assertEq(String.fromCodePoint(0x1e931).toUpperCase().codePointAt(0), 0x1e90f);
+assertEq(String.fromCodePoint(0x1e932).toUpperCase().codePointAt(0), 0x1e910);
+assertEq(String.fromCodePoint(0x1e933).toUpperCase().codePointAt(0), 0x1e911);
+assertEq(String.fromCodePoint(0x1e934).toUpperCase().codePointAt(0), 0x1e912);
+assertEq(String.fromCodePoint(0x1e935).toUpperCase().codePointAt(0), 0x1e913);
+assertEq(String.fromCodePoint(0x1e936).toUpperCase().codePointAt(0), 0x1e914);
+assertEq(String.fromCodePoint(0x1e937).toUpperCase().codePointAt(0), 0x1e915);
+assertEq(String.fromCodePoint(0x1e938).toUpperCase().codePointAt(0), 0x1e916);
+assertEq(String.fromCodePoint(0x1e939).toUpperCase().codePointAt(0), 0x1e917);
+assertEq(String.fromCodePoint(0x1e93a).toUpperCase().codePointAt(0), 0x1e918);
+assertEq(String.fromCodePoint(0x1e93b).toUpperCase().codePointAt(0), 0x1e919);
+assertEq(String.fromCodePoint(0x1e93c).toUpperCase().codePointAt(0), 0x1e91a);
+assertEq(String.fromCodePoint(0x1e93d).toUpperCase().codePointAt(0), 0x1e91b);
+assertEq(String.fromCodePoint(0x1e93e).toUpperCase().codePointAt(0), 0x1e91c);
+assertEq(String.fromCodePoint(0x1e93f).toUpperCase().codePointAt(0), 0x1e91d);
+assertEq(String.fromCodePoint(0x1e940).toUpperCase().codePointAt(0), 0x1e91e);
+assertEq(String.fromCodePoint(0x1e941).toUpperCase().codePointAt(0), 0x1e91f);
+assertEq(String.fromCodePoint(0x1e942).toUpperCase().codePointAt(0), 0x1e920);
+assertEq(String.fromCodePoint(0x1e943).toUpperCase().codePointAt(0), 0x1e921);
+assertEq(String.fromCodePoint(0x10400).toLowerCase().codePointAt(0), 0x10428);
+assertEq(String.fromCodePoint(0x10401).toLowerCase().codePointAt(0), 0x10429);
+assertEq(String.fromCodePoint(0x10402).toLowerCase().codePointAt(0), 0x1042a);
+assertEq(String.fromCodePoint(0x10403).toLowerCase().codePointAt(0), 0x1042b);
+assertEq(String.fromCodePoint(0x10404).toLowerCase().codePointAt(0), 0x1042c);
+assertEq(String.fromCodePoint(0x10405).toLowerCase().codePointAt(0), 0x1042d);
+assertEq(String.fromCodePoint(0x10406).toLowerCase().codePointAt(0), 0x1042e);
+assertEq(String.fromCodePoint(0x10407).toLowerCase().codePointAt(0), 0x1042f);
+assertEq(String.fromCodePoint(0x10408).toLowerCase().codePointAt(0), 0x10430);
+assertEq(String.fromCodePoint(0x10409).toLowerCase().codePointAt(0), 0x10431);
+assertEq(String.fromCodePoint(0x1040a).toLowerCase().codePointAt(0), 0x10432);
+assertEq(String.fromCodePoint(0x1040b).toLowerCase().codePointAt(0), 0x10433);
+assertEq(String.fromCodePoint(0x1040c).toLowerCase().codePointAt(0), 0x10434);
+assertEq(String.fromCodePoint(0x1040d).toLowerCase().codePointAt(0), 0x10435);
+assertEq(String.fromCodePoint(0x1040e).toLowerCase().codePointAt(0), 0x10436);
+assertEq(String.fromCodePoint(0x1040f).toLowerCase().codePointAt(0), 0x10437);
+assertEq(String.fromCodePoint(0x10410).toLowerCase().codePointAt(0), 0x10438);
+assertEq(String.fromCodePoint(0x10411).toLowerCase().codePointAt(0), 0x10439);
+assertEq(String.fromCodePoint(0x10412).toLowerCase().codePointAt(0), 0x1043a);
+assertEq(String.fromCodePoint(0x10413).toLowerCase().codePointAt(0), 0x1043b);
+assertEq(String.fromCodePoint(0x10414).toLowerCase().codePointAt(0), 0x1043c);
+assertEq(String.fromCodePoint(0x10415).toLowerCase().codePointAt(0), 0x1043d);
+assertEq(String.fromCodePoint(0x10416).toLowerCase().codePointAt(0), 0x1043e);
+assertEq(String.fromCodePoint(0x10417).toLowerCase().codePointAt(0), 0x1043f);
+assertEq(String.fromCodePoint(0x10418).toLowerCase().codePointAt(0), 0x10440);
+assertEq(String.fromCodePoint(0x10419).toLowerCase().codePointAt(0), 0x10441);
+assertEq(String.fromCodePoint(0x1041a).toLowerCase().codePointAt(0), 0x10442);
+assertEq(String.fromCodePoint(0x1041b).toLowerCase().codePointAt(0), 0x10443);
+assertEq(String.fromCodePoint(0x1041c).toLowerCase().codePointAt(0), 0x10444);
+assertEq(String.fromCodePoint(0x1041d).toLowerCase().codePointAt(0), 0x10445);
+assertEq(String.fromCodePoint(0x1041e).toLowerCase().codePointAt(0), 0x10446);
+assertEq(String.fromCodePoint(0x1041f).toLowerCase().codePointAt(0), 0x10447);
+assertEq(String.fromCodePoint(0x10420).toLowerCase().codePointAt(0), 0x10448);
+assertEq(String.fromCodePoint(0x10421).toLowerCase().codePointAt(0), 0x10449);
+assertEq(String.fromCodePoint(0x10422).toLowerCase().codePointAt(0), 0x1044a);
+assertEq(String.fromCodePoint(0x10423).toLowerCase().codePointAt(0), 0x1044b);
+assertEq(String.fromCodePoint(0x10424).toLowerCase().codePointAt(0), 0x1044c);
+assertEq(String.fromCodePoint(0x10425).toLowerCase().codePointAt(0), 0x1044d);
+assertEq(String.fromCodePoint(0x10426).toLowerCase().codePointAt(0), 0x1044e);
+assertEq(String.fromCodePoint(0x10427).toLowerCase().codePointAt(0), 0x1044f);
+assertEq(String.fromCodePoint(0x104b0).toLowerCase().codePointAt(0), 0x104d8);
+assertEq(String.fromCodePoint(0x104b1).toLowerCase().codePointAt(0), 0x104d9);
+assertEq(String.fromCodePoint(0x104b2).toLowerCase().codePointAt(0), 0x104da);
+assertEq(String.fromCodePoint(0x104b3).toLowerCase().codePointAt(0), 0x104db);
+assertEq(String.fromCodePoint(0x104b4).toLowerCase().codePointAt(0), 0x104dc);
+assertEq(String.fromCodePoint(0x104b5).toLowerCase().codePointAt(0), 0x104dd);
+assertEq(String.fromCodePoint(0x104b6).toLowerCase().codePointAt(0), 0x104de);
+assertEq(String.fromCodePoint(0x104b7).toLowerCase().codePointAt(0), 0x104df);
+assertEq(String.fromCodePoint(0x104b8).toLowerCase().codePointAt(0), 0x104e0);
+assertEq(String.fromCodePoint(0x104b9).toLowerCase().codePointAt(0), 0x104e1);
+assertEq(String.fromCodePoint(0x104ba).toLowerCase().codePointAt(0), 0x104e2);
+assertEq(String.fromCodePoint(0x104bb).toLowerCase().codePointAt(0), 0x104e3);
+assertEq(String.fromCodePoint(0x104bc).toLowerCase().codePointAt(0), 0x104e4);
+assertEq(String.fromCodePoint(0x104bd).toLowerCase().codePointAt(0), 0x104e5);
+assertEq(String.fromCodePoint(0x104be).toLowerCase().codePointAt(0), 0x104e6);
+assertEq(String.fromCodePoint(0x104bf).toLowerCase().codePointAt(0), 0x104e7);
+assertEq(String.fromCodePoint(0x104c0).toLowerCase().codePointAt(0), 0x104e8);
+assertEq(String.fromCodePoint(0x104c1).toLowerCase().codePointAt(0), 0x104e9);
+assertEq(String.fromCodePoint(0x104c2).toLowerCase().codePointAt(0), 0x104ea);
+assertEq(String.fromCodePoint(0x104c3).toLowerCase().codePointAt(0), 0x104eb);
+assertEq(String.fromCodePoint(0x104c4).toLowerCase().codePointAt(0), 0x104ec);
+assertEq(String.fromCodePoint(0x104c5).toLowerCase().codePointAt(0), 0x104ed);
+assertEq(String.fromCodePoint(0x104c6).toLowerCase().codePointAt(0), 0x104ee);
+assertEq(String.fromCodePoint(0x104c7).toLowerCase().codePointAt(0), 0x104ef);
+assertEq(String.fromCodePoint(0x104c8).toLowerCase().codePointAt(0), 0x104f0);
+assertEq(String.fromCodePoint(0x104c9).toLowerCase().codePointAt(0), 0x104f1);
+assertEq(String.fromCodePoint(0x104ca).toLowerCase().codePointAt(0), 0x104f2);
+assertEq(String.fromCodePoint(0x104cb).toLowerCase().codePointAt(0), 0x104f3);
+assertEq(String.fromCodePoint(0x104cc).toLowerCase().codePointAt(0), 0x104f4);
+assertEq(String.fromCodePoint(0x104cd).toLowerCase().codePointAt(0), 0x104f5);
+assertEq(String.fromCodePoint(0x104ce).toLowerCase().codePointAt(0), 0x104f6);
+assertEq(String.fromCodePoint(0x104cf).toLowerCase().codePointAt(0), 0x104f7);
+assertEq(String.fromCodePoint(0x104d0).toLowerCase().codePointAt(0), 0x104f8);
+assertEq(String.fromCodePoint(0x104d1).toLowerCase().codePointAt(0), 0x104f9);
+assertEq(String.fromCodePoint(0x104d2).toLowerCase().codePointAt(0), 0x104fa);
+assertEq(String.fromCodePoint(0x104d3).toLowerCase().codePointAt(0), 0x104fb);
+assertEq(String.fromCodePoint(0x10c80).toLowerCase().codePointAt(0), 0x10cc0);
+assertEq(String.fromCodePoint(0x10c81).toLowerCase().codePointAt(0), 0x10cc1);
+assertEq(String.fromCodePoint(0x10c82).toLowerCase().codePointAt(0), 0x10cc2);
+assertEq(String.fromCodePoint(0x10c83).toLowerCase().codePointAt(0), 0x10cc3);
+assertEq(String.fromCodePoint(0x10c84).toLowerCase().codePointAt(0), 0x10cc4);
+assertEq(String.fromCodePoint(0x10c85).toLowerCase().codePointAt(0), 0x10cc5);
+assertEq(String.fromCodePoint(0x10c86).toLowerCase().codePointAt(0), 0x10cc6);
+assertEq(String.fromCodePoint(0x10c87).toLowerCase().codePointAt(0), 0x10cc7);
+assertEq(String.fromCodePoint(0x10c88).toLowerCase().codePointAt(0), 0x10cc8);
+assertEq(String.fromCodePoint(0x10c89).toLowerCase().codePointAt(0), 0x10cc9);
+assertEq(String.fromCodePoint(0x10c8a).toLowerCase().codePointAt(0), 0x10cca);
+assertEq(String.fromCodePoint(0x10c8b).toLowerCase().codePointAt(0), 0x10ccb);
+assertEq(String.fromCodePoint(0x10c8c).toLowerCase().codePointAt(0), 0x10ccc);
+assertEq(String.fromCodePoint(0x10c8d).toLowerCase().codePointAt(0), 0x10ccd);
+assertEq(String.fromCodePoint(0x10c8e).toLowerCase().codePointAt(0), 0x10cce);
+assertEq(String.fromCodePoint(0x10c8f).toLowerCase().codePointAt(0), 0x10ccf);
+assertEq(String.fromCodePoint(0x10c90).toLowerCase().codePointAt(0), 0x10cd0);
+assertEq(String.fromCodePoint(0x10c91).toLowerCase().codePointAt(0), 0x10cd1);
+assertEq(String.fromCodePoint(0x10c92).toLowerCase().codePointAt(0), 0x10cd2);
+assertEq(String.fromCodePoint(0x10c93).toLowerCase().codePointAt(0), 0x10cd3);
+assertEq(String.fromCodePoint(0x10c94).toLowerCase().codePointAt(0), 0x10cd4);
+assertEq(String.fromCodePoint(0x10c95).toLowerCase().codePointAt(0), 0x10cd5);
+assertEq(String.fromCodePoint(0x10c96).toLowerCase().codePointAt(0), 0x10cd6);
+assertEq(String.fromCodePoint(0x10c97).toLowerCase().codePointAt(0), 0x10cd7);
+assertEq(String.fromCodePoint(0x10c98).toLowerCase().codePointAt(0), 0x10cd8);
+assertEq(String.fromCodePoint(0x10c99).toLowerCase().codePointAt(0), 0x10cd9);
+assertEq(String.fromCodePoint(0x10c9a).toLowerCase().codePointAt(0), 0x10cda);
+assertEq(String.fromCodePoint(0x10c9b).toLowerCase().codePointAt(0), 0x10cdb);
+assertEq(String.fromCodePoint(0x10c9c).toLowerCase().codePointAt(0), 0x10cdc);
+assertEq(String.fromCodePoint(0x10c9d).toLowerCase().codePointAt(0), 0x10cdd);
+assertEq(String.fromCodePoint(0x10c9e).toLowerCase().codePointAt(0), 0x10cde);
+assertEq(String.fromCodePoint(0x10c9f).toLowerCase().codePointAt(0), 0x10cdf);
+assertEq(String.fromCodePoint(0x10ca0).toLowerCase().codePointAt(0), 0x10ce0);
+assertEq(String.fromCodePoint(0x10ca1).toLowerCase().codePointAt(0), 0x10ce1);
+assertEq(String.fromCodePoint(0x10ca2).toLowerCase().codePointAt(0), 0x10ce2);
+assertEq(String.fromCodePoint(0x10ca3).toLowerCase().codePointAt(0), 0x10ce3);
+assertEq(String.fromCodePoint(0x10ca4).toLowerCase().codePointAt(0), 0x10ce4);
+assertEq(String.fromCodePoint(0x10ca5).toLowerCase().codePointAt(0), 0x10ce5);
+assertEq(String.fromCodePoint(0x10ca6).toLowerCase().codePointAt(0), 0x10ce6);
+assertEq(String.fromCodePoint(0x10ca7).toLowerCase().codePointAt(0), 0x10ce7);
+assertEq(String.fromCodePoint(0x10ca8).toLowerCase().codePointAt(0), 0x10ce8);
+assertEq(String.fromCodePoint(0x10ca9).toLowerCase().codePointAt(0), 0x10ce9);
+assertEq(String.fromCodePoint(0x10caa).toLowerCase().codePointAt(0), 0x10cea);
+assertEq(String.fromCodePoint(0x10cab).toLowerCase().codePointAt(0), 0x10ceb);
+assertEq(String.fromCodePoint(0x10cac).toLowerCase().codePointAt(0), 0x10cec);
+assertEq(String.fromCodePoint(0x10cad).toLowerCase().codePointAt(0), 0x10ced);
+assertEq(String.fromCodePoint(0x10cae).toLowerCase().codePointAt(0), 0x10cee);
+assertEq(String.fromCodePoint(0x10caf).toLowerCase().codePointAt(0), 0x10cef);
+assertEq(String.fromCodePoint(0x10cb0).toLowerCase().codePointAt(0), 0x10cf0);
+assertEq(String.fromCodePoint(0x10cb1).toLowerCase().codePointAt(0), 0x10cf1);
+assertEq(String.fromCodePoint(0x10cb2).toLowerCase().codePointAt(0), 0x10cf2);
+assertEq(String.fromCodePoint(0x118a0).toLowerCase().codePointAt(0), 0x118c0);
+assertEq(String.fromCodePoint(0x118a1).toLowerCase().codePointAt(0), 0x118c1);
+assertEq(String.fromCodePoint(0x118a2).toLowerCase().codePointAt(0), 0x118c2);
+assertEq(String.fromCodePoint(0x118a3).toLowerCase().codePointAt(0), 0x118c3);
+assertEq(String.fromCodePoint(0x118a4).toLowerCase().codePointAt(0), 0x118c4);
+assertEq(String.fromCodePoint(0x118a5).toLowerCase().codePointAt(0), 0x118c5);
+assertEq(String.fromCodePoint(0x118a6).toLowerCase().codePointAt(0), 0x118c6);
+assertEq(String.fromCodePoint(0x118a7).toLowerCase().codePointAt(0), 0x118c7);
+assertEq(String.fromCodePoint(0x118a8).toLowerCase().codePointAt(0), 0x118c8);
+assertEq(String.fromCodePoint(0x118a9).toLowerCase().codePointAt(0), 0x118c9);
+assertEq(String.fromCodePoint(0x118aa).toLowerCase().codePointAt(0), 0x118ca);
+assertEq(String.fromCodePoint(0x118ab).toLowerCase().codePointAt(0), 0x118cb);
+assertEq(String.fromCodePoint(0x118ac).toLowerCase().codePointAt(0), 0x118cc);
+assertEq(String.fromCodePoint(0x118ad).toLowerCase().codePointAt(0), 0x118cd);
+assertEq(String.fromCodePoint(0x118ae).toLowerCase().codePointAt(0), 0x118ce);
+assertEq(String.fromCodePoint(0x118af).toLowerCase().codePointAt(0), 0x118cf);
+assertEq(String.fromCodePoint(0x118b0).toLowerCase().codePointAt(0), 0x118d0);
+assertEq(String.fromCodePoint(0x118b1).toLowerCase().codePointAt(0), 0x118d1);
+assertEq(String.fromCodePoint(0x118b2).toLowerCase().codePointAt(0), 0x118d2);
+assertEq(String.fromCodePoint(0x118b3).toLowerCase().codePointAt(0), 0x118d3);
+assertEq(String.fromCodePoint(0x118b4).toLowerCase().codePointAt(0), 0x118d4);
+assertEq(String.fromCodePoint(0x118b5).toLowerCase().codePointAt(0), 0x118d5);
+assertEq(String.fromCodePoint(0x118b6).toLowerCase().codePointAt(0), 0x118d6);
+assertEq(String.fromCodePoint(0x118b7).toLowerCase().codePointAt(0), 0x118d7);
+assertEq(String.fromCodePoint(0x118b8).toLowerCase().codePointAt(0), 0x118d8);
+assertEq(String.fromCodePoint(0x118b9).toLowerCase().codePointAt(0), 0x118d9);
+assertEq(String.fromCodePoint(0x118ba).toLowerCase().codePointAt(0), 0x118da);
+assertEq(String.fromCodePoint(0x118bb).toLowerCase().codePointAt(0), 0x118db);
+assertEq(String.fromCodePoint(0x118bc).toLowerCase().codePointAt(0), 0x118dc);
+assertEq(String.fromCodePoint(0x118bd).toLowerCase().codePointAt(0), 0x118dd);
+assertEq(String.fromCodePoint(0x118be).toLowerCase().codePointAt(0), 0x118de);
+assertEq(String.fromCodePoint(0x118bf).toLowerCase().codePointAt(0), 0x118df);
+assertEq(String.fromCodePoint(0x1e900).toLowerCase().codePointAt(0), 0x1e922);
+assertEq(String.fromCodePoint(0x1e901).toLowerCase().codePointAt(0), 0x1e923);
+assertEq(String.fromCodePoint(0x1e902).toLowerCase().codePointAt(0), 0x1e924);
+assertEq(String.fromCodePoint(0x1e903).toLowerCase().codePointAt(0), 0x1e925);
+assertEq(String.fromCodePoint(0x1e904).toLowerCase().codePointAt(0), 0x1e926);
+assertEq(String.fromCodePoint(0x1e905).toLowerCase().codePointAt(0), 0x1e927);
+assertEq(String.fromCodePoint(0x1e906).toLowerCase().codePointAt(0), 0x1e928);
+assertEq(String.fromCodePoint(0x1e907).toLowerCase().codePointAt(0), 0x1e929);
+assertEq(String.fromCodePoint(0x1e908).toLowerCase().codePointAt(0), 0x1e92a);
+assertEq(String.fromCodePoint(0x1e909).toLowerCase().codePointAt(0), 0x1e92b);
+assertEq(String.fromCodePoint(0x1e90a).toLowerCase().codePointAt(0), 0x1e92c);
+assertEq(String.fromCodePoint(0x1e90b).toLowerCase().codePointAt(0), 0x1e92d);
+assertEq(String.fromCodePoint(0x1e90c).toLowerCase().codePointAt(0), 0x1e92e);
+assertEq(String.fromCodePoint(0x1e90d).toLowerCase().codePointAt(0), 0x1e92f);
+assertEq(String.fromCodePoint(0x1e90e).toLowerCase().codePointAt(0), 0x1e930);
+assertEq(String.fromCodePoint(0x1e90f).toLowerCase().codePointAt(0), 0x1e931);
+assertEq(String.fromCodePoint(0x1e910).toLowerCase().codePointAt(0), 0x1e932);
+assertEq(String.fromCodePoint(0x1e911).toLowerCase().codePointAt(0), 0x1e933);
+assertEq(String.fromCodePoint(0x1e912).toLowerCase().codePointAt(0), 0x1e934);
+assertEq(String.fromCodePoint(0x1e913).toLowerCase().codePointAt(0), 0x1e935);
+assertEq(String.fromCodePoint(0x1e914).toLowerCase().codePointAt(0), 0x1e936);
+assertEq(String.fromCodePoint(0x1e915).toLowerCase().codePointAt(0), 0x1e937);
+assertEq(String.fromCodePoint(0x1e916).toLowerCase().codePointAt(0), 0x1e938);
+assertEq(String.fromCodePoint(0x1e917).toLowerCase().codePointAt(0), 0x1e939);
+assertEq(String.fromCodePoint(0x1e918).toLowerCase().codePointAt(0), 0x1e93a);
+assertEq(String.fromCodePoint(0x1e919).toLowerCase().codePointAt(0), 0x1e93b);
+assertEq(String.fromCodePoint(0x1e91a).toLowerCase().codePointAt(0), 0x1e93c);
+assertEq(String.fromCodePoint(0x1e91b).toLowerCase().codePointAt(0), 0x1e93d);
+assertEq(String.fromCodePoint(0x1e91c).toLowerCase().codePointAt(0), 0x1e93e);
+assertEq(String.fromCodePoint(0x1e91d).toLowerCase().codePointAt(0), 0x1e93f);
+assertEq(String.fromCodePoint(0x1e91e).toLowerCase().codePointAt(0), 0x1e940);
+assertEq(String.fromCodePoint(0x1e91f).toLowerCase().codePointAt(0), 0x1e941);
+assertEq(String.fromCodePoint(0x1e920).toLowerCase().codePointAt(0), 0x1e942);
+assertEq(String.fromCodePoint(0x1e921).toLowerCase().codePointAt(0), 0x1e943);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/String/unicode-braced.js b/js/src/tests/ecma_6/String/unicode-braced.js
new file mode 100644
index 000000000..62d96b844
--- /dev/null
+++ b/js/src/tests/ecma_6/String/unicode-braced.js
@@ -0,0 +1,64 @@
+var BUGNUMBER = 320500;
+var summary = 'Add \\u{xxxxxx} string literals';
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq("\u{0}", String.fromCodePoint(0x0));
+assertEq("\u{1}", String.fromCodePoint(0x1));
+assertEq("\u{10}", String.fromCodePoint(0x10));
+assertEq("\u{100}", String.fromCodePoint(0x100));
+assertEq("\u{1000}", String.fromCodePoint(0x1000));
+assertEq("\u{D7FF}", String.fromCodePoint(0xD7FF));
+assertEq("\u{D800}", String.fromCodePoint(0xD800));
+assertEq("\u{DBFF}", String.fromCodePoint(0xDBFF));
+assertEq("\u{DC00}", String.fromCodePoint(0xDC00));
+assertEq("\u{DFFF}", String.fromCodePoint(0xDFFF));
+assertEq("\u{E000}", String.fromCodePoint(0xE000));
+assertEq("\u{10000}", String.fromCodePoint(0x10000));
+assertEq("\u{100000}", String.fromCodePoint(0x100000));
+assertEq("\u{10FFFF}", String.fromCodePoint(0x10FFFF));
+assertEq("\u{10ffff}", String.fromCodePoint(0x10FFFF));
+
+assertEq("A\u{1}\u{10}B\u{100}\u{1000}\u{10000}C\u{100000}",
+ "A" +
+ String.fromCodePoint(0x1) +
+ String.fromCodePoint(0x10) +
+ "B" +
+ String.fromCodePoint(0x100) +
+ String.fromCodePoint(0x1000) +
+ String.fromCodePoint(0x10000) +
+ "C" +
+ String.fromCodePoint(0x100000));
+
+assertEq('\u{10ffff}', String.fromCodePoint(0x10FFFF));
+assertEq(`\u{10ffff}`, String.fromCodePoint(0x10FFFF));
+assertEq(`\u{10ffff}${""}`, String.fromCodePoint(0x10FFFF));
+assertEq(`${""}\u{10ffff}`, String.fromCodePoint(0x10FFFF));
+assertEq(`${""}\u{10ffff}${""}`, String.fromCodePoint(0x10FFFF));
+
+assertEq("\u{00}", String.fromCodePoint(0x0));
+assertEq("\u{00000000000000000}", String.fromCodePoint(0x0));
+assertEq("\u{00000000000001000}", String.fromCodePoint(0x1000));
+
+assertEq(eval(`"\\u{${"0".repeat(Math.pow(2, 24)) + "1234"}}"`), String.fromCodePoint(0x1234));
+
+assertEq("\U{0}", "U{0}");
+
+assertThrowsInstanceOf(() => eval(`"\\u{-1}"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{0.0}"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{G}"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{}"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{{"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{110000}"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{00110000}"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{100000000000000000000000000000}"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{ FFFF}"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{FFFF }"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{FF FF}"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{F F F F}"`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`"\\u{100000001}"`), SyntaxError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Symbol/as-base-value.js b/js/src/tests/ecma_6/Symbol/as-base-value.js
new file mode 100644
index 000000000..f0e8400a2
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/as-base-value.js
@@ -0,0 +1,87 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Like other primitives, symbols can be treated as objects, using object-like
+// syntax: `symbol.prop` or `symbol[key]`.
+//
+// In ECMAScript spec jargon, this creates a Reference whose base value is a
+// primitive Symbol value.
+
+var symbols = [
+ Symbol(),
+ Symbol("ponies"),
+ Symbol.for("sym"),
+ Symbol.iterator
+];
+
+// Test accessor property, used below.
+var gets, sets;
+Object.defineProperty(Symbol.prototype, "prop", {
+ get: function () {
+ "use strict";
+ gets++;
+ assertEq(typeof this, "symbol");
+ assertEq(this, sym);
+ return "got";
+ },
+ set: function (v) {
+ "use strict";
+ sets++;
+ assertEq(typeof this, "symbol");
+ assertEq(this, sym);
+ assertEq(v, "newvalue");
+ }
+});
+
+for (var sym of symbols) {
+ assertEq(sym.constructor, Symbol);
+
+ // method on Object.prototype
+ assertEq(sym.hasOwnProperty("constructor"), false);
+ assertEq(sym.toLocaleString(), sym.toString()); // once .toString() exists
+
+ // custom method monkeypatched onto Symbol.prototype
+ Symbol.prototype.nonStrictMethod = function (arg) {
+ assertEq(arg, "ok");
+ assertEq(this instanceof Symbol, true);
+ assertEq(this.valueOf(), sym);
+ return 13;
+ };
+ assertEq(sym.nonStrictMethod("ok"), 13);
+
+ // the same, but strict mode
+ Symbol.prototype.strictMethod = function (arg) {
+ "use strict";
+ assertEq(arg, "ok2");
+ assertEq(this, sym);
+ return 14;
+ };
+ assertEq(sym.strictMethod("ok2"), 14);
+
+ // getter/setter on Symbol.prototype
+ gets = 0;
+ sets = 0;
+ var propname = "prop";
+
+ assertEq(sym.prop, "got");
+ assertEq(gets, 1);
+ assertEq(sym[propname], "got");
+ assertEq(gets, 2);
+
+ assertEq(sym.prop = "newvalue", "newvalue");
+ assertEq(sets, 1);
+ assertEq(sym[propname] = "newvalue", "newvalue");
+ assertEq(sets, 2);
+
+ // non-existent property
+ assertEq(sym.noSuchProp, undefined);
+ var noSuchPropName = "nonesuch";
+ assertEq(sym[noSuchPropName], undefined);
+
+ // non-existent method
+ assertThrowsInstanceOf(() => sym.noSuchProp(), TypeError);
+ assertThrowsInstanceOf(() => sym[noSuchPropName](), TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/browser.js b/js/src/tests/ecma_6/Symbol/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/browser.js
diff --git a/js/src/tests/ecma_6/Symbol/comparisons.js b/js/src/tests/ecma_6/Symbol/comparisons.js
new file mode 100644
index 000000000..d2105c8a1
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/comparisons.js
@@ -0,0 +1,34 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+var symbols = [
+ Symbol(),
+ Symbol("0"),
+ Symbol.for("snowman"),
+ Symbol.iterator
+];
+
+var values = [
+ undefined, null, 0, 3.14, -0, NaN, "", "alphabet", Symbol("0"),
+ {}, []
+];
+
+for (var comparator of ["==", "!=", "===", "!=="]) {
+ var f = Function("a, b", "return a " + comparator + " b;");
+ var expected = (comparator[0] == '!');
+ for (var a of symbols) {
+ for (var b of values)
+ assertEq(f(a, b), expected);
+ }
+}
+
+for (var comparator of ["<", "<=", ">", ">="]) {
+ var f = Function("a, b", "return a " + comparator + " b;");
+ for (var a of symbols) {
+ for (var b of values)
+ assertThrowsInstanceOf(() => f(a, b), TypeError);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/constructor.js b/js/src/tests/ecma_6/Symbol/constructor.js
new file mode 100644
index 000000000..5143b02a9
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/constructor.js
@@ -0,0 +1,35 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Symbol(symbol) throws a TypeError.
+var sym = Symbol();
+assertThrowsInstanceOf(() => Symbol(sym), TypeError);
+
+// Symbol(undefined) is equivalent to Symbol().
+assertEq(Symbol(undefined).toString(), "Symbol()");
+
+// Otherwise, Symbol(v) means Symbol(ToString(v)).
+assertEq(Symbol(7).toString(), "Symbol(7)");
+assertEq(Symbol(true).toString(), "Symbol(true)");
+assertEq(Symbol(null).toString(), "Symbol(null)");
+assertEq(Symbol([1, 2]).toString(), "Symbol(1,2)");
+var symobj = Object(sym);
+assertThrowsInstanceOf(() => Symbol(symobj), TypeError);
+
+var hits = 0;
+var obj = {
+ toString: function () {
+ hits++;
+ return "ponies";
+ }
+};
+assertEq(Symbol(obj).toString(), "Symbol(ponies)");
+assertEq(hits, 1);
+
+assertEq(Object.getPrototypeOf(Symbol.prototype), Object.prototype);
+
+// Symbol.prototype is not itself a Symbol object.
+assertThrowsInstanceOf(() => Symbol.prototype.valueOf(), TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/conversions.js b/js/src/tests/ecma_6/Symbol/conversions.js
new file mode 100644
index 000000000..e6265f09c
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/conversions.js
@@ -0,0 +1,89 @@
+// Section numbers cite ES6 rev 24 (2014 April 27).
+
+var symbols = [
+ Symbol(),
+ Symbol("one"),
+ Symbol.for("two"),
+ Symbol.iterator
+];
+
+function testSymbolConversions(sym) {
+ // 7.1.2 ToBoolean
+ assertEq(Boolean(sym), true);
+ assertEq(!sym, false);
+ assertEq(sym || 13, sym);
+ assertEq(sym && 13, 13);
+
+ // 7.1.3 ToNumber
+ assertThrowsInstanceOf(() => +sym, TypeError);
+ assertThrowsInstanceOf(() => sym | 0, TypeError);
+
+ // 7.1.12 ToString
+ assertThrowsInstanceOf(() => "" + sym, TypeError);
+ assertThrowsInstanceOf(() => sym + "", TypeError);
+ assertThrowsInstanceOf(() => "" + [1, 2, sym], TypeError);
+ assertThrowsInstanceOf(() => ["simple", "thimble", sym].join(), TypeError);
+
+ // 21.1.1.1 String()
+ assertEq(String(sym), sym.toString());
+
+ // 21.1.1.2 new String()
+ assertThrowsInstanceOf(() => new String(sym), TypeError);
+
+ // 7.1.13 ToObject
+ var obj = Object(sym);
+ assertEq(typeof obj, "object");
+ assertEq(Object.prototype.toString.call(obj), "[object Symbol]");
+ assertEq(Object.getPrototypeOf(obj), Symbol.prototype);
+ assertEq(Object.getOwnPropertyNames(obj).length, 0);
+ assertEq(Object(sym) === Object(sym), false); // new object each time
+ var f = function () { return this; };
+ assertEq(f.call(sym) === f.call(sym), false); // new object each time
+}
+
+
+for (var sym of symbols) {
+ testSymbolConversions(sym);
+
+ // 7.1.1 ToPrimitive
+ var symobj = Object(sym);
+ assertThrowsInstanceOf(() => Number(symobj), TypeError);
+ assertThrowsInstanceOf(() => String(symobj), TypeError);
+ assertThrowsInstanceOf(() => symobj < 0, TypeError);
+ assertThrowsInstanceOf(() => 0 < symobj, TypeError);
+ assertThrowsInstanceOf(() => symobj + 1, TypeError);
+ assertThrowsInstanceOf(() => "" + symobj, TypeError);
+ assertEq(sym == symobj, true);
+ assertEq(sym === symobj, false);
+ assertEq(symobj == 0, false);
+ assertEq(0 != symobj, true);
+
+ // 7.1.12 ToString
+ assertThrowsInstanceOf(() => String(Object(sym)), TypeError);
+}
+
+// Deleting Symbol.prototype[@@toPrimitive] does not change the behavior of
+// conversions from a symbol to other types.
+delete Symbol.prototype[Symbol.toPrimitive];
+assertEq(Symbol.toPrimitive in Symbol.prototype, false);
+testSymbolConversions(symbols[0]);
+
+// It does change the behavior of ToPrimitive on Symbol objects, though.
+// It causes the default algorithm (OrdinaryToPrimitive) to be used.
+var VALUEOF_CALLED = 117.25;
+Symbol.prototype.valueOf = function () { return VALUEOF_CALLED; };
+Symbol.prototype.toString = function () { return "toString called"; };
+for (var sym of symbols) {
+ var symobj = Object(sym);
+ assertEq(Number(symobj), VALUEOF_CALLED);
+ assertEq(String(symobj), "toString called");
+ assertEq(symobj < 0, VALUEOF_CALLED < 0);
+ assertEq(0 < symobj, 0 < VALUEOF_CALLED);
+ assertEq(symobj + 1, VALUEOF_CALLED + 1);
+ assertEq("" + symobj, "" + VALUEOF_CALLED);
+ assertEq(symobj == 0, false);
+ assertEq(0 != symobj, true);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/enumeration-order.js b/js/src/tests/ecma_6/Symbol/enumeration-order.js
new file mode 100644
index 000000000..8bcd1f02f
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/enumeration-order.js
@@ -0,0 +1,40 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Symbols follow all other property keys in the result list.
+var log;
+function LoggingProxy() {
+ return new Proxy({}, {
+ defineProperty: (t, key, desc) => {
+ log.push(key);
+ return true;
+ }
+ });
+}
+
+var keys = [
+ "before",
+ Symbol(),
+ "during",
+ Symbol.for("during"),
+ Symbol.iterator,
+ "after"
+];
+var descs = {};
+for (var k of keys)
+ descs[k] = {configurable: true, value: 0};
+
+function test(descsObj) {
+ log = [];
+ Object.defineProperties(LoggingProxy(), descs);
+ assertEq(log.length, keys.length);
+ assertDeepEq(log.map(k => typeof k), ["string", "string", "string", "symbol", "symbol", "symbol"]);
+ for (var key of keys)
+ assertEq(log.indexOf(key) !== -1, true);
+}
+
+test(descs);
+test(new Proxy(descs, {}));
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/enumeration.js b/js/src/tests/ecma_6/Symbol/enumeration.js
new file mode 100644
index 000000000..e7ca426e6
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/enumeration.js
@@ -0,0 +1,52 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// for-in loops skip properties with symbol keys, even enumerable properties.
+var obj = {};
+obj[Symbol.for("moon")] = "sun";
+obj[Symbol("asleep")] = "awake";
+obj[Symbol.iterator] = "List";
+for (var x in obj)
+ throw "FAIL: " + uneval(x);
+
+// This includes inherited properties.
+var obj2 = Object.create(obj);
+for (var x in obj2)
+ throw "FAIL: " + uneval(x);
+
+// The same goes for proxies.
+var p = new Proxy(obj, {});
+for (var x in p)
+ throw "FAIL: " + uneval(x);
+var p2 = new Proxy(obj2, {});
+for (var x in p2)
+ throw "FAIL: " + uneval(x);
+
+// Object.keys() and .getOwnPropertyNames() also skip symbols.
+assertEq(Object.keys(obj).length, 0);
+assertEq(Object.keys(p).length, 0);
+assertEq(Object.keys(obj2).length, 0);
+assertEq(Object.keys(p2).length, 0);
+assertEq(Object.getOwnPropertyNames(obj).length, 0);
+assertEq(Object.getOwnPropertyNames(p).length, 0);
+assertEq(Object.getOwnPropertyNames(obj2).length, 0);
+assertEq(Object.getOwnPropertyNames(p2).length, 0);
+
+// Test interaction of Object.keys(), proxies, and symbol property keys.
+var log = [];
+var h = {
+ ownKeys: (t) => {
+ log.push("ownKeys");
+ return ["a", "0", Symbol.for("moon"), Symbol("asleep"), Symbol.iterator];
+ },
+ getOwnPropertyDescriptor: (t, key) => {
+ log.push("gopd", key);
+ return {configurable: true, enumerable: true, value: 0, writable: true};
+ }
+};
+p = new Proxy({}, h);
+assertDeepEq(Object.keys(p), ["a", "0"]);
+assertDeepEq(log, ["ownKeys", "gopd", "a", "gopd", "0"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/equality.js b/js/src/tests/ecma_6/Symbol/equality.js
new file mode 100644
index 000000000..eaa091ba4
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/equality.js
@@ -0,0 +1,30 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Symbol.for returns the same symbol whenever the same argument is passed.
+assertEq(Symbol.for("q") === Symbol.for("q"), true);
+
+// Several distinct Symbol values.
+var symbols = [
+ Symbol(),
+ Symbol("Symbol.iterator"),
+ Symbol("Symbol.iterator"), // distinct new symbol with the same description
+ Symbol.for("Symbol.iterator"),
+ Symbol.iterator
+];
+
+// Distinct symbols are never equal to each other, even if they have the same
+// description.
+for (var i = 0; i < symbols.length; i++) {
+ for (var j = i; j < symbols.length; j++) {
+ var expected = (i === j);
+ assertEq(symbols[i] == symbols[j], expected);
+ assertEq(symbols[i] != symbols[j], !expected);
+ assertEq(symbols[i] === symbols[j], expected);
+ assertEq(symbols[i] !== symbols[j], !expected);
+ assertEq(Object.is(symbols[i], symbols[j]), expected);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/errors.js b/js/src/tests/ecma_6/Symbol/errors.js
new file mode 100644
index 000000000..d6eb37abc
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/errors.js
@@ -0,0 +1,17 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Section numbers cite ES6 rev 24 (2014 April 27).
+
+var sym = Symbol();
+
+// 7.2.2 IsCallable
+assertThrowsInstanceOf(() => sym(), TypeError);
+assertThrowsInstanceOf(() => Function.prototype.call.call(sym), TypeError);
+
+// 7.2.5 IsConstructor
+assertThrowsInstanceOf(() => new sym(), TypeError);
+assertThrowsInstanceOf(() => new Symbol(), TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/for-in-order.js b/js/src/tests/ecma_6/Symbol/for-in-order.js
new file mode 100644
index 000000000..7d1f23430
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/for-in-order.js
@@ -0,0 +1,33 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// ES6 does not specify enumeration order, but implementations mostly retain
+// property insertion order -- and must, for web compatibility. This test checks
+// that symbol-keyed properties do not interfere with that order.
+
+var obj = {};
+obj[Symbol("moon")] = 0;
+obj.x = 1;
+obj[Symbol.for("y")] = 2
+obj.y = 3;
+obj[Symbol.iterator] = function* () { yield 4; };
+obj.z = 5;
+Object.prototype[Symbol.for("comet")] = 6;
+
+var keys = [];
+for (var k in obj)
+ keys.push(k);
+assertDeepEq(keys, ["x", "y", "z"]);
+assertDeepEq(Object.keys(obj), ["x", "y", "z"]);
+
+// Test with more properties.
+for (var i = 0; i < 1000; i++)
+ obj[Symbol(i)] = i;
+obj.w = 1000;
+keys = []
+for (var k in obj)
+ keys.push(k);
+assertDeepEq(keys, ["x", "y", "z", "w"]);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/for.js b/js/src/tests/ecma_6/Symbol/for.js
new file mode 100644
index 000000000..43e285511
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/for.js
@@ -0,0 +1,31 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Symbol.for called twice with the same argument returns the same symbol.
+assertEq(Symbol.for("ponies"), Symbol.for("ponies"));
+
+// Called twice with equal strings: still the same result.
+var one = Array(64+1).join("x");
+var two = Array(8+1).join(Array(8+1).join("x"));
+assertEq(Symbol.for(one), Symbol.for(two));
+
+// Symbols created by calling Symbol() are not in the symbol registry.
+var sym = Symbol("123");
+assertEq(Symbol.for("123") !== sym, true);
+
+// Empty string is fine.
+assertEq(typeof Symbol.for(""), "symbol");
+
+// Primitive arguments.
+assertEq(Symbol.for(3), Symbol.for("3"));
+assertEq(Symbol.for(null), Symbol.for("null"));
+assertEq(Symbol.for(undefined), Symbol.for("undefined"));
+assertEq(Symbol.for(), Symbol.for("undefined"));
+
+// Symbol.for ignores the 'this' value.
+var foo = Symbol.for("foo")
+assertEq(Symbol.for.call(String, "foo"), foo);
+assertEq(Symbol.for.call(3.14, "foo"), foo);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/json-stringify-keys.js b/js/src/tests/ecma_6/Symbol/json-stringify-keys.js
new file mode 100644
index 000000000..3818cbb33
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/json-stringify-keys.js
@@ -0,0 +1,19 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// JSON.stringify ignores symbol-keyed properties, even enumerable ones.
+
+var obj = {a: 1};
+obj[Symbol.for("ponies")] = {toJSON: function () { throw "fit"; }};
+obj[Symbol.iterator] = {toJSON: function () { throw "fit"; }};
+assertEq(JSON.stringify(obj), '{"a":1}');
+
+var replacer = function (k, v) {
+ if (typeof k === "symbol")
+ throw "fit";
+ return v;
+};
+assertEq(JSON.stringify(obj, replacer), '{"a":1}');
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0, 'ok');
diff --git a/js/src/tests/ecma_6/Symbol/json-stringify-values.js b/js/src/tests/ecma_6/Symbol/json-stringify-values.js
new file mode 100644
index 000000000..0fe32eee5
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/json-stringify-values.js
@@ -0,0 +1,33 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// To JSON.stringify, symbols are the same as undefined.
+
+var symbols = [
+ Symbol(),
+ Symbol.for("ponies"),
+ Symbol.iterator
+];
+
+for (var sym of symbols) {
+ assertEq(JSON.stringify(sym), undefined);
+ assertEq(JSON.stringify([sym]), "[null]");
+
+ // JSON.stringify skips symbol-valued properties!
+ assertEq(JSON.stringify({x: sym}), '{}');
+
+ // However such properties are passed to the replacerFunction if any.
+ var replacer = function (key, val) {
+ assertEq(typeof this, "object");
+ if (typeof val === "symbol") {
+ assertEq(val, sym);
+ return "ding";
+ }
+ return val;
+ };
+ assertEq(JSON.stringify(sym, replacer), '"ding"');
+ assertEq(JSON.stringify({x: sym}, replacer), '{"x":"ding"}');
+}
+
+if (typeof reportCompare === 'function')
+ reportCompare(0, 0, 'ok');
diff --git a/js/src/tests/ecma_6/Symbol/keyFor.js b/js/src/tests/ecma_6/Symbol/keyFor.js
new file mode 100644
index 000000000..868c3bda7
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/keyFor.js
@@ -0,0 +1,15 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+assertEq(Symbol.keyFor(Symbol.for("moon")), "moon");
+assertEq(Symbol.keyFor(Symbol.for("")), "");
+assertEq(Symbol.keyFor(Symbol("moon")), undefined);
+assertEq(Symbol.keyFor(Symbol.iterator), undefined);
+
+assertThrowsInstanceOf(() => Symbol.keyFor(), TypeError);
+assertThrowsInstanceOf(() => Symbol.keyFor(Object(Symbol("moon"))), TypeError);
+
+assertEq(Symbol.keyFor.length, 1);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/property-accessor.js b/js/src/tests/ecma_6/Symbol/property-accessor.js
new file mode 100644
index 000000000..7a2c149a1
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/property-accessor.js
@@ -0,0 +1,39 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+var obj = {};
+var sym = Symbol();
+
+var gets = 0;
+var sets = [];
+Object.defineProperty(obj, sym, {
+ get: function () { return ++gets; },
+ set: function (v) { sets.push(v); }
+});
+
+// getter
+for (var i = 1; i < 9; i++)
+ assertEq(obj[sym], i);
+
+// setter
+var expected = [];
+for (var i = 0; i < 9; i++) {
+ assertEq(obj[sym] = i, i);
+ expected.push(i);
+}
+assertDeepEq(sets, expected);
+
+// increment operator
+gets = 0;
+sets = [];
+assertEq(obj[sym]++, 1);
+assertDeepEq(sets, [2]);
+
+// assignment
+gets = 0;
+sets = [];
+assertEq(obj[sym] *= 12, 12);
+assertDeepEq(sets, [12]);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/property-basics.js b/js/src/tests/ecma_6/Symbol/property-basics.js
new file mode 100644
index 000000000..63bcb3867
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/property-basics.js
@@ -0,0 +1,44 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+var symbols = [
+ Symbol(),
+ Symbol("one"),
+ Symbol.for("two"),
+ Symbol.iterator,
+ Object(Symbol())
+];
+
+for (var sym of symbols) {
+ var obj = {};
+
+ // access a nonexistent property
+ assertEq(sym in obj, false);
+ assertEq(obj.hasOwnProperty(sym), false);
+ assertEq(obj[sym], undefined);
+ assertEq(typeof obj[sym], "undefined");
+ assertEq(Object.getOwnPropertyDescriptor(obj, sym), undefined);
+
+ // assign, then try accessing again
+ obj[sym] = "ok";
+ assertEq(sym in obj, true);
+ assertEq(obj.hasOwnProperty(sym), true);
+ assertEq(obj[sym], "ok");
+ assertDeepEq(Object.getOwnPropertyDescriptor(obj, sym), {
+ value: "ok",
+ writable: true,
+ enumerable: true,
+ configurable: true
+ });
+
+ // assign again, observe value is overwritten
+ obj[sym] = 12;
+ assertEq(obj[sym], 12);
+
+ // increment
+ assertEq(obj[sym]++, 12);
+ assertEq(obj[sym], 13);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/property-inheritance.js b/js/src/tests/ecma_6/Symbol/property-inheritance.js
new file mode 100644
index 000000000..2fe618968
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/property-inheritance.js
@@ -0,0 +1,50 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+var sym = Symbol.for("hello");
+function F() {}
+var f = new F();
+
+// inherited data property
+F.prototype[sym] = "world";
+assertEq(sym in f, true);
+assertEq(f.hasOwnProperty(sym), false);
+assertEq(f[sym], "world");
+
+// shadowing assignment
+f[sym] = "kitty";
+assertEq(f[sym], "kitty");
+assertEq(F.prototype[sym], "world");
+
+// deletion, revealing previously shadowed property
+assertEq(delete f[sym], true);
+assertEq(f.hasOwnProperty(sym), false);
+assertEq(f[sym], "world");
+
+// inherited accessor property
+var value = undefined;
+Object.defineProperty(F.prototype, sym, {
+ configurable: true,
+ get: function () { return 23; },
+ set: function (v) { value = v; }
+});
+assertEq(sym in f, true);
+assertEq(f.hasOwnProperty(sym), false);
+assertEq(f[sym], 23);
+f[sym] = "gravity";
+assertEq(value, "gravity");
+
+// inherited accessor property with no setter
+Object.defineProperty(F.prototype, sym, {
+ set: undefined
+});
+assertThrowsInstanceOf(function () { "use strict"; f[sym] = 0; }, TypeError);
+
+// deeply inherited accessor property
+var g = Object.create(f);
+for (var i = 0; i < 100; i++)
+ g = Object.create(g);
+assertEq(g[sym], 23);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/property-nonwritable.js b/js/src/tests/ecma_6/Symbol/property-nonwritable.js
new file mode 100644
index 000000000..3e58383c7
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/property-nonwritable.js
@@ -0,0 +1,31 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+var sym = Symbol.for("moon");
+function checkNotWritable(obj) {
+ // In sloppy mode, assigning to a nonwritable property silently fails.
+ obj[sym] = "portals";
+ assertEq(obj[sym], "cheese");
+
+ // In strict mode code, it throws.
+ assertThrowsInstanceOf(function () { "use strict"; obj[sym] = "robots"; }, TypeError);
+ assertEq(obj[sym], "cheese");
+}
+
+var x = {};
+Object.defineProperty(x, sym, {
+ configurable: true,
+ enumerable: true,
+ value: "cheese",
+ writable: false
+});
+
+checkNotWritable(x);
+
+// Assignment can't shadow inherited nonwritable properties either.
+var y = Object.create(x);
+checkNotWritable(y);
+checkNotWritable(Object.create(y));
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/property-reflection.js b/js/src/tests/ecma_6/Symbol/property-reflection.js
new file mode 100644
index 000000000..5bdecf663
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/property-reflection.js
@@ -0,0 +1,136 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Basic tests for standard Object APIs interacting with symbols.
+
+// Object.defineProperty
+function F() {}
+var f = new F;
+Object.defineProperty(f, Symbol.for("name"), {
+ configurable: true,
+ value: "eff"
+});
+assertEq("name" in f, false);
+assertEq("Symbol(name)" in f, false);
+assertEq(Symbol.for("name") in f, true);
+assertEq(f[Symbol.for("name")], "eff");
+
+// Object.defineProperties
+function D() {}
+var descs = new D;
+var s1 = Symbol("s1");
+var hits = 0;
+descs[s1] = {
+ get: () => hits++,
+ set: undefined,
+ enumerable: true,
+ configurable: true
+};
+var s2 = Symbol("s2");
+descs[s2] = {
+ value: {},
+ writable: true,
+ enumerable: false,
+ configurable: true
+};
+var s3 = Symbol("s3");
+D.prototype[s3] = {value: "FAIL"};
+assertEq(Object.defineProperties(f, descs), f);
+assertEq(s1 in f, true);
+assertEq(f[s1], 0);
+assertEq(hits, 1);
+assertEq(s2 in f, true);
+assertEq(f[s2], descs[s2].value);
+assertEq(s3 in f, false);
+
+// Object.create
+var n = Object.create({}, descs);
+assertEq(s1 in n, true);
+assertEq(n[s1], 1);
+assertEq(hits, 2);
+assertEq(s2 in n, true);
+assertEq(n[s2], descs[s2].value);
+assertEq(s3 in n, false);
+
+// Object.getOwnPropertyDescriptor
+var desc = Object.getOwnPropertyDescriptor(n, s1);
+assertDeepEq(desc, descs[s1]);
+assertEq(desc.get, descs[s1].get);
+desc = Object.getOwnPropertyDescriptor(n, s2);
+assertDeepEq(desc, descs[s2]);
+assertEq(desc.value, descs[s2].value);
+
+// Object.prototype.hasOwnProperty
+assertEq(descs.hasOwnProperty(s1), true);
+assertEq(descs.hasOwnProperty(s2), true);
+assertEq(descs.hasOwnProperty(s3), false);
+assertEq([].hasOwnProperty(Symbol.iterator), false);
+assertEq(Array.prototype.hasOwnProperty(Symbol.iterator), true);
+
+// Object.prototype.propertyIsEnumerable
+assertEq(n.propertyIsEnumerable(s1), true);
+assertEq(n.propertyIsEnumerable(s2), false);
+assertEq(n.propertyIsEnumerable(s3), false); // no such property
+assertEq(D.prototype.propertyIsEnumerable(s3), true);
+assertEq(descs.propertyIsEnumerable(s3), false); // inherited properties are not considered
+
+// Object.preventExtensions
+var obj = {};
+obj[s1] = 1;
+assertEq(Object.preventExtensions(obj), obj);
+assertThrowsInstanceOf(function () { "use strict"; obj[s2] = 2; }, TypeError);
+obj[s2] = 2; // still no effect
+assertEq(s2 in obj, false);
+
+// Object.isSealed, Object.isFrozen
+assertEq(Object.isSealed(obj), false);
+assertEq(Object.isFrozen(obj), false);
+assertEq(delete obj[s1], true);
+assertEq(Object.isSealed(obj), true);
+assertEq(Object.isFrozen(obj), true);
+
+obj = {};
+obj[s1] = 1;
+Object.preventExtensions(obj);
+Object.defineProperty(obj, s1, {configurable: false}); // still writable
+assertEq(Object.isSealed(obj), true);
+assertEq(Object.isFrozen(obj), false);
+obj[s1] = 2;
+assertEq(obj[s1], 2);
+Object.defineProperty(obj, s1, {writable: false});
+assertEq(Object.isFrozen(obj), true);
+
+// Object.seal, Object.freeze
+var obj = {};
+obj[s1] = 1;
+Object.seal(obj);
+desc = Object.getOwnPropertyDescriptor(obj, s1);
+assertEq(desc.configurable, false);
+assertEq(desc.writable, true);
+Object.freeze(obj);
+assertEq(Object.getOwnPropertyDescriptor(obj, s1).writable, false);
+
+// Object.setPrototypeOf purges caches for symbol-keyed properties.
+var proto = {};
+proto[s1] = 1;
+Object.defineProperty(proto, s2, {
+ get: () => 2,
+ set: v => undefined
+});
+var obj = Object.create(proto);
+var last1, last2;
+var N = 9;
+for (var i = 0; i < N; i++) {
+ last1 = obj[s1];
+ last2 = obj[s2];
+ obj[s2] = "marker";
+ if (i === N - 2)
+ Object.setPrototypeOf(obj, {});
+}
+assertEq(last1, undefined);
+assertEq(last2, undefined);
+assertEq(obj.hasOwnProperty(s2), true);
+assertEq(obj[s2], "marker");
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/realms.js b/js/src/tests/ecma_6/Symbol/realms.js
new file mode 100644
index 000000000..98a1284ee
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/realms.js
@@ -0,0 +1,36 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Symbols can be shared across realms.
+
+if (typeof Reflect !== "undefined" && typeof Reflect.Realm === "function") {
+ throw new Error("Congratulations on implementing Reflect.Realm! " +
+ "Please update this test to use it.");
+}
+if (typeof newGlobal === "function") {
+ var g = newGlobal();
+ var gj = g.eval("jones = Symbol('jones')");
+ assertEq(typeof gj, "symbol");
+ assertEq(g.jones, g.jones);
+ assertEq(gj, g.jones);
+ assertEq(gj !== Symbol("jones"), true);
+
+ // A symbol can be round-tripped to another realm and back;
+ // the result is the original symbol.
+ var smith = Symbol("smith");
+ g.smith = smith; // put smith into the realm
+ assertEq(g.smith, smith); // pull it back out
+
+ // Spot-check that non-generic methods can be applied to symbols and Symbol
+ // objects from other realms.
+ assertEq(Symbol.prototype.toString.call(gj), "Symbol(jones)");
+ assertEq(Symbol.prototype.toString.call(g.eval("Object(Symbol('brown'))")),
+ "Symbol(brown)");
+
+ // Symbol.for functions share a symbol registry across all realms.
+ assertEq(g.Symbol.for("ponies"), Symbol.for("ponies"));
+ assertEq(g.eval("Symbol.for('rainbows')"), Symbol.for("rainbows"));
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/shell.js b/js/src/tests/ecma_6/Symbol/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/shell.js
diff --git a/js/src/tests/ecma_6/Symbol/species.js b/js/src/tests/ecma_6/Symbol/species.js
new file mode 100644
index 000000000..ba45066e1
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/species.js
@@ -0,0 +1,30 @@
+var BUGNUMBER = 1131043;
+var summary = "Implement @@species getter for builtin types";
+
+print(BUGNUMBER + ": " + summary);
+
+var TypedArray = Object.getPrototypeOf(Int8Array);
+
+for (var C of [Array, Map, Set, RegExp,
+ Int8Array, Uint8Array, Uint8ClampedArray,
+ Int16Array, Uint16Array, Int32Array, Uint32Array,
+ Float32Array, Float64Array,
+ ArrayBuffer]) {
+ assertEq(C[Symbol.species], C);
+}
+
+for (C of [Array, Map, Set, RegExp,
+ TypedArray,
+ ArrayBuffer]) {
+ var desc = Object.getOwnPropertyDescriptor(C, Symbol.species);
+ assertDeepEq(Object.keys(desc).sort(), ["configurable", "enumerable", "get", "set"]);
+ assertEq(desc.set, undefined);
+ assertEq(desc.enumerable, false);
+ assertEq(desc.configurable, true);
+ assertEq(desc.get.apply(null), null);
+ assertEq(desc.get.apply(undefined), undefined);
+ assertEq(desc.get.apply(42), 42);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/surfaces.js b/js/src/tests/ecma_6/Symbol/surfaces.js
new file mode 100644
index 000000000..7b3ef9f9b
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/surfaces.js
@@ -0,0 +1,34 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Test superficial properties of the Symbol constructor and prototype.
+
+var desc = Object.getOwnPropertyDescriptor(this, "Symbol");
+assertEq(desc.configurable, true);
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, true);
+assertEq(typeof Symbol, "function");
+assertEq(Symbol.length, 0);
+
+desc = Object.getOwnPropertyDescriptor(Symbol, "prototype");
+assertEq(desc.configurable, false);
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, false);
+
+assertEq(Symbol.prototype.constructor, Symbol);
+desc = Object.getOwnPropertyDescriptor(Symbol.prototype, "constructor");
+assertEq(desc.configurable, true);
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, true);
+
+desc = Object.getOwnPropertyDescriptor(Symbol, "iterator");
+assertEq(desc.configurable, false);
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, false);
+
+assertEq(Symbol.for.length, 1);
+assertEq(Symbol.prototype.toString.length, 0);
+assertEq(Symbol.prototype.valueOf.length, 0);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/toPrimitive.js b/js/src/tests/ecma_6/Symbol/toPrimitive.js
new file mode 100644
index 000000000..06262f99c
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/toPrimitive.js
@@ -0,0 +1,39 @@
+// ES6 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
+
+// This method gets the primitive symbol from a Symbol wrapper object.
+var sym = Symbol.for("truth")
+var obj = Object(sym);
+assertEq(obj[Symbol.toPrimitive]("default"), sym);
+
+// The hint argument is ignored.
+assertEq(obj[Symbol.toPrimitive]("number"), sym);
+assertEq(obj[Symbol.toPrimitive]("string"), sym);
+assertEq(obj[Symbol.toPrimitive](), sym);
+assertEq(obj[Symbol.toPrimitive](Math.atan2), sym);
+
+// The this value can also be a primitive symbol.
+assertEq(sym[Symbol.toPrimitive](), sym);
+
+// Or a wrapper to a Symbol object in another compartment.
+var obj2 = newGlobal().Object(sym);
+assertEq(obj2[Symbol.toPrimitive]("default"), sym);
+
+// Otherwise a TypeError is thrown.
+var symbolToPrimitive = Symbol.prototype[Symbol.toPrimitive];
+var nonSymbols = [
+ undefined, null, true, 13, NaN, "justice", {}, [sym],
+ symbolToPrimitive,
+ new Proxy(obj, {})
+];
+for (var value of nonSymbols) {
+ assertThrowsInstanceOf(() => symbolToPrimitive.call(value, "string"), TypeError);
+}
+
+// Surface features:
+assertEq(symbolToPrimitive.name, "[Symbol.toPrimitive]");
+var desc = Object.getOwnPropertyDescriptor(Symbol.prototype, Symbol.toPrimitive);
+assertEq(desc.configurable, true);
+assertEq(desc.enumerable, false);
+assertEq(desc.writable, false);
+
+reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/toString.js b/js/src/tests/ecma_6/Symbol/toString.js
new file mode 100644
index 000000000..b7bbda876
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/toString.js
@@ -0,0 +1,27 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+var cases = [
+ {sym: Symbol(), str: "Symbol()"},
+ {sym: Symbol("ok"), str: "Symbol(ok)"},
+ {sym: Symbol("\0"), str: "Symbol(\0)"},
+ {sym: Symbol.iterator, str: "Symbol(Symbol.iterator)"},
+ {sym: Symbol.for("dummies"), str: "Symbol(dummies)"}
+];
+
+// Symbol.prototype.toString works on both primitive symbols and Symbol
+// objects.
+for (var test of cases) {
+ assertEq(test.sym.toString(), test.str);
+ assertEq(Object(test.sym).toString(), test.str);
+}
+
+// Any other value throws.
+var nonsymbols = [
+ undefined, null, "not-ok", new String("still-not-ok"), {}, []
+];
+for (var nonsym of nonsymbols)
+ assertThrowsInstanceOf(() => Symbol.prototype.toString.call(nonsym), TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/toStringTag.js b/js/src/tests/ecma_6/Symbol/toStringTag.js
new file mode 100644
index 000000000..20aac2c42
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/toStringTag.js
@@ -0,0 +1,155 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// ES6 19.1.3.6 Object.prototype.toString ( )
+function testToString() {
+ var tests = [
+ [undefined, "[object Undefined]"],
+ [null, "[object Null]"],
+ [[], "[object Array]"],
+ [new String("abc"), "[object String]"],
+ [(function () {return arguments;})(), "[object Arguments]"],
+ [(function () {"use strict"; return arguments;})(), "[object Arguments]"],
+ [function() {}, "[object Function]"],
+ [new Error("abc"), "[object Error]"],
+ [true, "[object Boolean]"],
+ [5, "[object Number]"],
+ [new Date(), "[object Date]"],
+ [/regexp/, "[object RegExp]"],
+ [{[Symbol.toStringTag]: "abc"}, "[object abc]"],
+ [Object.create(JSON), "[object JSON]"],
+ [Object.create(new Number), "[object Object]"],
+ [Object.create(new Number, {[Symbol.toStringTag]: {value: "abc"}}), "[object abc]"],
+ [(function() { var x = new Number(); x[Symbol.toStringTag] = "abc"; return x; })(), "[object abc]"],
+ [[], "[object Array]"]
+ ];
+
+ // Testing if the values are obtained the right way.
+ for (let [value, expected] of tests) {
+ let result = Object.prototype.toString.call(value);
+ assertEq(result, expected);
+ }
+}
+testToString();
+
+function testProxy() {
+ var count = 0;
+ var metaHandler = new Proxy({}, {
+ get(target, property, receiver) {
+ assertEq(property, "get");
+
+ return function(target, property, receiver) {
+ assertEq(property, Symbol.toStringTag);
+ count++;
+ return undefined;
+ }
+ }
+ });
+
+ assertEq(Object.prototype.toString.call(new Proxy({}, metaHandler)), "[object Object]")
+ assertEq(Object.prototype.toString.call(new Proxy(new Date, metaHandler)), "[object Object]")
+ assertEq(Object.prototype.toString.call(new Proxy([], metaHandler)), "[object Array]")
+ assertEq(Object.prototype.toString.call(new Proxy(function() {}, metaHandler)), "[object Function]")
+ var {proxy, revoke} = Proxy.revocable({}, metaHandler);
+ revoke();
+ assertThrowsInstanceOf(() => Object.prototype.toString.call(proxy), TypeError);
+
+ assertEq(count, 4);
+}
+testProxy();
+
+// Tests the passed objects toStringTag values and ensures it's
+// desc is writable: false, enumerable: false, configurable: true
+function testDefault(object, expected) {
+ let desc = Object.getOwnPropertyDescriptor(object, Symbol.toStringTag);
+ assertEq(desc.value, expected);
+ assertEq(desc.writable, false);
+ assertEq(desc.enumerable, false);
+ assertEq(desc.configurable, true);
+}
+
+// ES6 19.4.3.5 Symbol.prototype [ @@toStringTag ]
+testDefault(Symbol.prototype, "Symbol");
+
+// ES6 20.2.1.9 Math [ @@toStringTag ]
+testDefault(Math, "Math");
+
+// ES6 21.1.5.2.2 %StringIteratorPrototype% [ @@toStringTag ]
+testDefault(""[Symbol.iterator]().__proto__, "String Iterator")
+
+// ES6 22.1.5.2.2 %ArrayIteratorPrototype% [ @@toStringTag ]
+testDefault([][Symbol.iterator]().__proto__, "Array Iterator")
+
+// ES6 22.2.3.31 get %TypedArray%.prototype [ @@toStringTag ]
+function testTypedArray() {
+ let ta = (new Uint8Array(0)).__proto__.__proto__;
+ let desc = Object.getOwnPropertyDescriptor(ta, Symbol.toStringTag);
+ assertEq(desc.enumerable, false);
+ assertEq(desc.configurable, true);
+ assertEq(desc.set, undefined);
+
+ let get = desc.get;
+ assertEq(get.name, "get [Symbol.toStringTag]");
+ assertEq(get.call(3.14), undefined);
+ assertEq(get.call({}), undefined);
+ assertEq(get.call(ta), undefined);
+
+ let types = [
+ Int8Array,
+ Uint8Array,
+ Int16Array,
+ Uint16Array,
+ Int32Array,
+ Uint32Array,
+ Float32Array,
+ Float64Array
+ ];
+
+ for (let type of types) {
+ let array = new type(0);
+ assertEq(get.call(array), type.name);
+ assertEq(Object.prototype.toString.call(array), `[object ${type.name}]`);
+ }
+}
+testTypedArray();
+
+// ES6 23.1.3.13 Map.prototype [ @@toStringTag ]
+testDefault(Map.prototype, "Map");
+
+// ES6 23.1.5.2.2 %MapIteratorPrototype% [ @@toStringTag ]
+testDefault(new Map()[Symbol.iterator]().__proto__, "Map Iterator")
+
+// ES6 23.2.3.12 Set.prototype [ @@toStringTag ]
+testDefault(Set.prototype, "Set");
+
+// ES6 23.2.5.2.2 %SetIteratorPrototype% [ @@toStringTag ]
+testDefault(new Set()[Symbol.iterator]().__proto__, "Set Iterator")
+
+// ES6 23.3.3.6 WeakMap.prototype [ @@toStringTag ]
+testDefault(WeakMap.prototype, "WeakMap");
+
+// ES6 23.4.3.5 WeakSet.prototype [ @@toStringTag ]
+testDefault(WeakSet.prototype, "WeakSet");
+
+// ES6 24.1.4.4 ArrayBuffer.prototype [ @@toStringTag ]
+testDefault(ArrayBuffer.prototype, "ArrayBuffer");
+
+// ES6 24.2.4.21 DataView.prototype[ @@toStringTag ]
+testDefault(DataView.prototype, "DataView");
+
+// ES6 24.3.3 JSON [ @@toStringTag ]
+testDefault(JSON, "JSON");
+
+// ES6 25.2.3.3 GeneratorFunction.prototype [ @@toStringTag ]
+testDefault(function* () {}.constructor.prototype, "GeneratorFunction");
+
+// ES6 25.3.1.5 Generator.prototype [ @@toStringTag ]
+testDefault(function* () {}().__proto__.__proto__, "Generator");
+
+// ES6 25.4.5.4 Promise.prototype [ @@toStringTag ]
+testDefault(Promise.prototype, "Promise");
+
+// AsyncFunction.prototype [ @@toStringTag ]
+testDefault(async function() {}.constructor.prototype, "AsyncFunction");
+
+reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/Symbol/typed-arrays.js b/js/src/tests/ecma_6/Symbol/typed-arrays.js
new file mode 100644
index 000000000..a07cf396b
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/typed-arrays.js
@@ -0,0 +1,17 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Symbol-to-number type conversions involving typed arrays.
+
+for (var T of [Uint8Array, Uint8ClampedArray, Int16Array, Float32Array]) {
+ // Typed array constructors convert symbols using ToNumber(), which throws.
+ assertThrowsInstanceOf(() => new T([Symbol("a")]), TypeError);
+
+ // Assignment does the same.
+ var arr = new T([1]);
+ assertThrowsInstanceOf(() => { arr[0] = Symbol.iterator; }, TypeError);
+ assertEq(arr[0], 1);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/typeof.js b/js/src/tests/ecma_6/Symbol/typeof.js
new file mode 100644
index 000000000..104ae66df
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/typeof.js
@@ -0,0 +1,11 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+assertEq(typeof Symbol(), "symbol");
+assertEq(typeof Symbol("ponies"), "symbol");
+assertEq(typeof Symbol.for("ponies"), "symbol");
+
+assertEq(typeof Object(Symbol()), "object");
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/valueOf.js b/js/src/tests/ecma_6/Symbol/valueOf.js
new file mode 100644
index 000000000..a3823c3ff
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/valueOf.js
@@ -0,0 +1,22 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+var symbols = [
+ Symbol(),
+ Symbol("ok"),
+ Symbol.for("dummies"),
+ Symbol.iterator
+];
+
+for (var sym of symbols) {
+ assertEq(sym.valueOf(), sym);
+ assertEq(Object(sym).valueOf(), sym);
+}
+
+// Any other value throws.
+var nonsymbols = [undefined, null, NaN, {}, Symbol.prototype];
+for (var nonsym of nonsymbols)
+ assertThrowsInstanceOf(() => Symbol.prototype.valueOf.call(nonsym), TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Symbol/well-known.js b/js/src/tests/ecma_6/Symbol/well-known.js
new file mode 100644
index 000000000..8c5de1279
--- /dev/null
+++ b/js/src/tests/ecma_6/Symbol/well-known.js
@@ -0,0 +1,41 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+var names = [
+ "isConcatSpreadable",
+ "iterator",
+ "match",
+ "replace",
+ "search",
+ "species",
+ "hasInstance",
+ "split",
+ "toPrimitive",
+ "unscopables"
+];
+
+for (var name of names) {
+ // Well-known symbols exist.
+ assertEq(typeof Symbol[name], "symbol");
+
+ // They are never in the registry.
+ assertEq(Symbol[name] !== Symbol.for("Symbol." + name), true);
+
+ // They are shared across realms.
+ if (typeof Realm === 'function')
+ throw new Error("please update this test to use Realms");
+ if (typeof newGlobal === 'function') {
+ var g = newGlobal();
+ assertEq(Symbol[name], g.Symbol[name]);
+ }
+
+ // Descriptor is all false.
+ var desc = Object.getOwnPropertyDescriptor(Symbol, name);
+ assertEq(typeof desc.value, "symbol");
+ assertEq(desc.writable, false);
+ assertEq(desc.enumerable, false);
+ assertEq(desc.configurable, false);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/Syntax/browser.js b/js/src/tests/ecma_6/Syntax/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Syntax/browser.js
diff --git a/js/src/tests/ecma_6/Syntax/declaration-forbidden-in-label.js b/js/src/tests/ecma_6/Syntax/declaration-forbidden-in-label.js
new file mode 100644
index 000000000..53acb3996
--- /dev/null
+++ b/js/src/tests/ecma_6/Syntax/declaration-forbidden-in-label.js
@@ -0,0 +1,34 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1288459;
+var summary =
+ "Properly implement the spec's distinctions between StatementListItem and " +
+ "Statement grammar productions and their uses";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+assertThrowsInstanceOf(() => Function("a: let x;"), SyntaxError);
+assertThrowsInstanceOf(() => Function("b: const y = 3;"), SyntaxError);
+assertThrowsInstanceOf(() => Function("c: class z {};"), SyntaxError);
+
+assertThrowsInstanceOf(() => Function("'use strict'; d: function w() {};"), SyntaxError);
+
+// Annex B.3.2 allows this in non-strict mode code.
+Function("e: function x() {};");
+
+assertThrowsInstanceOf(() => Function("f: function* y() {}"), SyntaxError);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Syntax/escaped-let-static-identifier.js b/js/src/tests/ecma_6/Syntax/escaped-let-static-identifier.js
new file mode 100644
index 000000000..a4353a516
--- /dev/null
+++ b/js/src/tests/ecma_6/Syntax/escaped-let-static-identifier.js
@@ -0,0 +1,57 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1288460;
+var summary =
+ "|let| and |static| are forbidden as Identifier only in strict mode code, " +
+ "and it's permissible to use them as Identifier (with or without " +
+ "containing escapes) in non-strict code";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function t(code)
+{
+ var strictSemi = " 'use strict'; " + code;
+ var strictASI = " 'use strict' \n " + code;
+
+ var creationFunctions = [Function];
+ if (typeof evaluate === "function")
+ creationFunctions.push(evaluate);
+ if (typeof parseModule === "function")
+ creationFunctions.push(parseModule);
+
+ for (var func of creationFunctions)
+ {
+ if (typeof parseModule === "function" && func === parseModule)
+ assertThrowsInstanceOf(() => func(code), SyntaxError);
+ else
+ func(code);
+
+ assertThrowsInstanceOf(() => func(strictSemi), SyntaxError);
+ assertThrowsInstanceOf(() => func(strictASI), SyntaxError);
+ }
+}
+
+t("l\\u0065t: 42;");
+t("if (1) l\\u0065t: 42;");
+t("l\\u0065t = 42;");
+t("if (1) l\\u0065t = 42;");
+
+t("st\\u0061tic: 42;");
+t("if (1) st\\u0061tic: 42;");
+t("st\\u0061tic = 42;");
+t("if (1) st\\u0061tic = 42;");
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Syntax/escaped-strict-reserved-words-and-yield.js b/js/src/tests/ecma_6/Syntax/escaped-strict-reserved-words-and-yield.js
new file mode 100644
index 000000000..9d683bd97
--- /dev/null
+++ b/js/src/tests/ecma_6/Syntax/escaped-strict-reserved-words-and-yield.js
@@ -0,0 +1,105 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+const testCases = [
+ // Label identifier.
+ id => `${id}: ;`,
+
+ // Binding identifier.
+ id => `var ${id};`,
+ id => `let ${id};`,
+ id => `const ${id} = 0;`,
+
+ // Binding identifier in binding pattern.
+ id => `var [${id}] = [];`,
+ id => `var [${id} = 0] = [];`,
+ id => `var [...${id}] = [];`,
+ id => `var {a: ${id}} = {};`,
+ id => `var {${id}} = {};`,
+ id => `var {${id} = 0} = {};`,
+
+ id => `let [${id}] = [];`,
+ id => `let [${id} = 0] = [];`,
+ id => `let [...${id}] = [];`,
+ id => `let {a: ${id}} = {};`,
+ id => `let {${id}} = {};`,
+ id => `let {${id} = 0} = {};`,
+
+ id => `const [${id}] = [];`,
+ id => `const [${id} = 0] = [];`,
+ id => `const [...${id}] = [];`,
+ id => `const {a: ${id}} = {};`,
+ id => `const {${id}} = {};`,
+ id => `const {${id} = 0} = {};`,
+
+ // Identifier reference.
+ id => `void ${id};`,
+];
+
+const strictReservedWords = [
+ "implements",
+ "interface",
+ "package",
+ "private",
+ "protected",
+ "public",
+];
+
+function escapeWord(s) {
+ return "\\u00" + s.charCodeAt(0).toString(16) + s.substring(1);
+}
+
+for (let strictReservedWordOrYield of [...strictReservedWords, "yield"]) {
+ let escapedStrictReservedWordOrYield = escapeWord(strictReservedWordOrYield);
+
+ for (let testCase of testCases) {
+ eval(testCase(strictReservedWordOrYield));
+ eval(testCase(escapedStrictReservedWordOrYield));
+
+ assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ ${testCase(strictReservedWordOrYield)}
+ `), SyntaxError);
+
+ assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ ${testCase(escapedStrictReservedWordOrYield)}
+ `), SyntaxError);
+ }
+}
+
+// |yield| is always a keyword in generator functions.
+for (let testCase of testCases) {
+ let yield = "yield";
+ let escapedYield = escapeWord("yield");
+
+ assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ ${testCase(yield)}
+ }
+ `), SyntaxError);
+
+ assertThrowsInstanceOf(() => eval(String.raw`
+ function* g() {
+ ${testCase(escapedYield)}
+ }
+ `), SyntaxError);
+
+ assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ ${testCase(yield)}
+ }
+ `), SyntaxError);
+
+ assertThrowsInstanceOf(() => eval(String.raw`
+ "use strict";
+ function* g() {
+ ${testCase(escapedYield)}
+ }
+ `), SyntaxError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Syntax/identifier_vertical_tilde.js b/js/src/tests/ecma_6/Syntax/identifier_vertical_tilde.js
new file mode 100644
index 000000000..94fb55f63
--- /dev/null
+++ b/js/src/tests/ecma_6/Syntax/identifier_vertical_tilde.js
@@ -0,0 +1,20 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// U+2E2F (VERTICAL TILDE) is in Gc=Lm, but also in [:Pattern_Syntax:].
+// http://www.unicode.org/reports/tr31/
+const verticalTilde = 0x2E2F;
+
+// Leading character in identifier.
+assertThrowsInstanceOf(() => eval(`${String.fromCodePoint(verticalTilde)}`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`\\u${verticalTilde.toString(16).padStart(4, "0")}`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`\\u{${verticalTilde.toString(16)}}`), SyntaxError);
+
+// Not leading character in identifier.
+assertThrowsInstanceOf(() => eval(`A${String.fromCodePoint(verticalTilde)}`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`A\\u${verticalTilde.toString(16).padStart(4, "0")}`), SyntaxError);
+assertThrowsInstanceOf(() => eval(`A\\u{${verticalTilde.toString(16)}}`), SyntaxError);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Syntax/identifiers-with-extended-unicode-escape.js b/js/src/tests/ecma_6/Syntax/identifiers-with-extended-unicode-escape.js
new file mode 100644
index 000000000..8e0a05fb5
--- /dev/null
+++ b/js/src/tests/ecma_6/Syntax/identifiers-with-extended-unicode-escape.js
@@ -0,0 +1,222 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Simple cases, not using eval.
+{
+ let \u{61} = 123;
+ assertEq(a, 123);
+
+ let \u{6A} = 123;
+ assertEq(j, 123);
+
+ let a\u{62} = 456;
+ assertEq(ab, 456);
+
+ let \u{63}\u{6b} = 789;
+ assertEq(ck, 789);
+}
+
+const leadingZeros = [0, 1, 2, 3, 4, 100].map(c => "0".repeat(c));
+
+
+// From DerivedCoreProperties.txt (Unicode 9):
+// Derived Property: ID_Start
+// Characters that can start an identifier.
+// Generated from:
+// Lu + Ll + Lt + Lm + Lo + Nl
+// + Other_ID_Start
+// - Pattern_Syntax
+// - Pattern_White_Space
+const idStart = [
+ 0x0041, // LATIN CAPITAL LETTER A, Gc=Lu
+ 0x006A, // LATIN SMALL LETTER J, Gc=Ll
+ 0x00C9, // LATIN CAPITAL LETTER E WITH ACUTE, Gc=Lu
+ 0x00FF, // LATIN SMALL LETTER Y WITH DIAERESIS, Gc=Ll
+ 0x01C5, // LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON, Gc=Lt
+ 0x0294, // LATIN LETTER GLOTTAL STOP, Gc=Lo
+ 0x037A, // GREEK YPOGEGRAMMENI, Gc=Lm
+ 0x16EE, // RUNIC ARLAUG SYMBOL, Gc=Nl
+ 0xFF70, // HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK, Gc=Lm
+];
+
+const idStartSupplemental = [
+ 0x10140, // GREEK ACROPHONIC ATTIC ONE QUARTER, Gc=Nl
+ 0x10300, // OLD ITALIC LETTER A, Gc=Lo
+ 0x10400, // DESERET CAPITAL LETTER LONG I, Gc=Lu
+ 0x10430, // DESERET SMALL LETTER SHORT A, Gc=Ll
+ 0x16B40, // PAHAWH HMONG SIGN VOS SEEV, Gc=Lm
+];
+
+// From PropList.txt (Unicode 9):
+const otherIdStart = [
+ 0x1885, // MONGOLIAN LETTER ALI GALI BALUDA, Gc=Mn
+ 0x1886, // MONGOLIAN LETTER ALI GALI THREE BALUDA, Gc=Mn
+ 0x2118, // SCRIPT CAPITAL P, Gc=Sm
+ 0x212E, // ESTIMATED SYMBOL, Gc=So
+ 0x309B, // KATAKANA-HIRAGANA VOICED SOUND MARK, Gc=Sk
+ 0x309C, // KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, Gc=Sk
+];
+
+// From DerivedCoreProperties.txt (Unicode 9):
+// Derived Property: ID_Continue
+// Characters that can continue an identifier.
+// Generated from:
+// ID_Start
+// + Mn + Mc + Nd + Pc
+// + Other_ID_Continue
+// - Pattern_Syntax
+// - Pattern_White_Space
+const idContinue = [
+ 0x0030, // DIGIT ZERO, Gc=Nd
+ 0x0300, // COMBINING GRAVE ACCENT, Gc=Mn
+ 0x0660, // ARABIC-INDIC DIGIT ZERO, Gc=Nd
+ 0x0903, // DEVANAGARI SIGN VISARGA, Gc=Mc
+ 0xFF10, // FULLWIDTH DIGIT ZERO, Gc=Nd
+ 0xFF3F, // FULLWIDTH LOW LINE, Gc=Pc
+];
+
+const idContinueSupplemental = [
+ 0x101FD, // PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE, Gc=Mn
+ 0x104A0, // OSMANYA DIGIT ZERO, Gc=Nd
+ 0x11000, // BRAHMI SIGN CANDRABINDU, Gc=Mc
+];
+
+// From PropList.txt (Unicode 9):
+const otherIdContinue = [
+ 0x00B7, // MIDDLE DOT, Gc=Po
+ 0x0387, // GREEK ANO TELEIA, Gc=Po
+ 0x1369, // ETHIOPIC DIGIT ONE, Gc=No
+ 0x136A, // ETHIOPIC DIGIT TWO, Gc=No
+ 0x136B, // ETHIOPIC DIGIT THREE, Gc=No
+ 0x136C, // ETHIOPIC DIGIT FOUR, Gc=No
+ 0x136D, // ETHIOPIC DIGIT FIVE, Gc=No
+ 0x136E, // ETHIOPIC DIGIT SIX, Gc=No
+ 0x136F, // ETHIOPIC DIGIT SEVEN, Gc=No
+ 0x1370, // ETHIOPIC DIGIT EIGHT, Gc=No
+ 0x1371, // ETHIOPIC DIGIT NINE, Gc=No
+ 0x19DA, // NEW TAI LUE THAM DIGIT ONE, Gc=No
+];
+
+for (let ident of [...idStart, ...otherIdStart]) {
+ for (let count of leadingZeros) {
+ let zeros = "0".repeat(count);
+ eval(`
+ let \\u{${zeros}${ident.toString(16)}} = 123;
+ assertEq(${String.fromCodePoint(ident)}, 123);
+ `);
+ }
+}
+
+// Move this to the loop above when Bug 1197230 is fixed.
+for (let ident of [...idStartSupplemental]) {
+ for (let zeros of leadingZeros) {
+ assertThrowsInstanceOf(() => eval(`\\u{${zeros}${ident.toString(16)}}`), SyntaxError);
+ }
+}
+
+for (let ident of [...idContinue, ...idContinueSupplemental, ...otherIdContinue]) {
+ for (let zeros of leadingZeros) {
+ assertThrowsInstanceOf(() => eval(`\\u{${zeros}${ident.toString(16)}}`), SyntaxError);
+ }
+}
+
+for (let ident of [...idStart, ...otherIdStart, ...idContinue, ...otherIdContinue]) {
+ for (let zeros of leadingZeros) {
+ eval(`
+ let A\\u{${zeros}${ident.toString(16)}} = 123;
+ assertEq(${String.fromCodePoint(0x41, ident)}, 123);
+ `);
+ }
+}
+
+// Move this to the loop above when Bug 1197230 is fixed.
+for (let ident of [...idStartSupplemental, ...idContinueSupplemental]) {
+ for (let zeros of leadingZeros) {
+ assertThrowsInstanceOf(() => eval(`\\u{${zeros}${ident.toString(16)}}`), SyntaxError);
+ }
+}
+
+
+const notIdentifiers = [
+ 0x0000, // NULL, Gc=Cc
+ 0x000A, // LINE FEED (LF), Gc=Cc
+ 0x005E, // CIRCUMFLEX ACCENT, Gc=Sk
+ 0x00B1, // PLUS-MINUS SIGN, Gc=Sm
+ 0xFF61, // HALFWIDTH IDEOGRAPHIC FULL STOP, Gc=Po
+ 0x10061, // Not assigned.
+ 0x10100, // AEGEAN WORD SEPARATOR LINE, Gc=Po
+ 0x100061, // <Plane 16 Private Use>, Gc=Co
+];
+
+for (let ident of notIdentifiers) {
+ for (let zeros of leadingZeros) {
+ assertThrowsInstanceOf(() => eval(`\\u{${zeros}${ident.toString(16)}}`), SyntaxError);
+ }
+}
+
+
+const incompleteEscapes = [
+ "\\u{",
+ "\\u{6",
+ "\\u{61",
+ "\\u{061",
+ "\\u{0061",
+ "\\u{00061",
+ "\\u{000061",
+ "\\u{0000061",
+
+ "\\u}",
+];
+for (let invalid of incompleteEscapes) {
+ // Ends with EOF.
+ assertThrowsInstanceOf(() => eval(invalid), SyntaxError);
+
+ // Ends with EOL.
+ assertThrowsInstanceOf(() => eval(invalid + "\n"), SyntaxError);
+
+ // Ends with space.
+ assertThrowsInstanceOf(() => eval(invalid + " "), SyntaxError);
+}
+
+
+const invalidEscapes = [
+ // Empty escape.
+ "",
+
+ // Not hexadecimal characters.
+ "\0",
+ "G",
+ "Z",
+ "\uFFFF",
+ "\uDBFF\uDFFF",
+
+ // Has space characters.
+ " 61",
+ "61 ",
+
+ // Has newline characters.
+ "\n61",
+ "61\n",
+
+ // Exceeds 0x10FFFF, six characters.
+ "110000",
+ "110001",
+ "fffffe",
+ "ffffff",
+
+ // Exceeds 0x10FFFF, more than six characters.
+ "10ffff0",
+ "10ffffabcdef",
+];
+
+for (let invalid of invalidEscapes) {
+ for (let zeros of leadingZeros) {
+ assertThrowsInstanceOf(() => eval(`\\u{${zeros}${invalid}}`), SyntaxError);
+ assertThrowsInstanceOf(() => eval(`var \\u{${zeros}${invalid}}`), SyntaxError);
+ }
+}
+
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Syntax/keyword-unescaped-requirement.js b/js/src/tests/ecma_6/Syntax/keyword-unescaped-requirement.js
new file mode 100644
index 000000000..eb6edd57d
--- /dev/null
+++ b/js/src/tests/ecma_6/Syntax/keyword-unescaped-requirement.js
@@ -0,0 +1,68 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1204027;
+var summary =
+ "Escape sequences aren't allowed in bolded grammar tokens (that is, in " +
+ "keywords, possibly contextual keywords)";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function memberVariants(code)
+{
+ return ["(class { constructor() {} " + code + " });",
+ "({ " + code + " })"];
+}
+
+var badScripts =
+ [
+ "class { st\\u0061tic m() { return 0; } }",
+ "class { st\\u0061tic get foo() { return 0; } }",
+ "class { st\\u0061tic set foo(v) {} }",
+ "class { st\\u0061tic get ['hi']() { return 0; } }",
+ "class { st\\u0061tic set ['hi'](v) {} }",
+ "class { st\\u0061tic get 'hi'() { return 0; } }",
+ "class { st\\u0061tic set 'hi'(v) {} }",
+ "class { st\\u0061tic get 42() { return 0; } }",
+ "class { st\\u0061tic set 42(v) {} }",
+ ...memberVariants("\\u0067et foo() { return 0; }"),
+ ...memberVariants("\\u0073et foo() {}"),
+ ...memberVariants("g\\u0065t foo() { return 0; }"),
+ ...memberVariants("s\\u0065t foo() {}"),
+ ...memberVariants("g\\u0065t ['hi']() { return 0; }"),
+ ...memberVariants("s\\u0065t ['hi']() {}"),
+ ...memberVariants("g\\u0065t 'hi'() { return 0; }"),
+ ...memberVariants("s\\u0065t 'hi'() {}"),
+ ...memberVariants("g\\u0065t 42() { return 0; }"),
+ ...memberVariants("s\\u0065t 42() {}"),
+ "for (var foo o\\u0066 [1]) ;",
+ "for (var foo \\u006ff [1]) ;",
+ "for (var foo i\\u006e [1]) ;",
+ "for (var foo \\u0069n [1]) ;",
+ "function f() { return n\\u0065w.target }",
+ "function f() { return \\u006eew.target }",
+ "function f() { return new.t\\u0061rget }",
+ "function f() { return new.\\u0074arget }",
+ "function f() { return n\\u0065w Array }",
+ "function f() { return \\u006eew Array }",
+ "\\u0064o { } while (0)",
+ "[for (x \\u006ff [1]) x]",
+ "[for (x o\\u0066 [1]) x]",
+ ];
+
+for (var script of badScripts)
+ assertThrowsInstanceOf(() => Function(script), SyntaxError);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Syntax/let-as-label.js b/js/src/tests/ecma_6/Syntax/let-as-label.js
new file mode 100644
index 000000000..a01ad556e
--- /dev/null
+++ b/js/src/tests/ecma_6/Syntax/let-as-label.js
@@ -0,0 +1,35 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1288459;
+var summary = "let can't be used as a label in strict mode code";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+Function("let: 42");
+Function("l\\u0065t: 42");
+assertThrowsInstanceOf(() => Function(" 'use strict'; let: 42"), SyntaxError);
+assertThrowsInstanceOf(() => Function(" 'use strict' \n let: 42"), SyntaxError);
+assertThrowsInstanceOf(() => Function(" 'use strict'; l\\u0065t: 42"), SyntaxError);
+assertThrowsInstanceOf(() => Function(" 'use strict' \n l\\u0065t: 42"), SyntaxError);
+
+eval("let: 42");
+eval("l\\u0065t: 42");
+assertThrowsInstanceOf(() => eval(" 'use strict'; let: 42"), SyntaxError);
+assertThrowsInstanceOf(() => eval(" 'use strict' \n let: 42;"), SyntaxError);
+assertThrowsInstanceOf(() => eval(" 'use strict'; l\\u0065t: 42"), SyntaxError);
+assertThrowsInstanceOf(() => eval(" 'use strict' \n l\\u0065t: 42;"), SyntaxError);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Syntax/shell.js b/js/src/tests/ecma_6/Syntax/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/Syntax/shell.js
diff --git a/js/src/tests/ecma_6/Syntax/statement-versus-statementlistitem.js b/js/src/tests/ecma_6/Syntax/statement-versus-statementlistitem.js
new file mode 100644
index 000000000..d0565353d
--- /dev/null
+++ b/js/src/tests/ecma_6/Syntax/statement-versus-statementlistitem.js
@@ -0,0 +1,148 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs evaluate, parseModule
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1288459;
+var summary =
+ "Properly implement the spec's distinctions between StatementListItem and " +
+ "Statement grammar productions and their uses";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var counter = 0;
+
+// Test all the different contexts that expect a Statement.
+
+function contextAcceptsStatement(pat)
+{
+ var goodCode =
+`function f${counter++}()
+{
+ ${pat.replace("@@@", "let \n {} \n ;")}
+}
+`;
+
+ evaluate(goodCode);
+
+ var badCode =
+`function f${counter++}()
+{
+ ${pat.replace("@@@", "let {} \n ;")}
+}
+`;
+
+ try
+ {
+ evaluate(badCode);
+ throw new Error("didn't throw");
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "didn't get a syntax error, instead got: " + e);
+ }
+}
+
+contextAcceptsStatement("if (0) @@@");
+contextAcceptsStatement("if (0) ; else @@@");
+contextAcceptsStatement("if (0) ; else if (0) @@@");
+contextAcceptsStatement("if (0) ; else if (0) ; else @@@");
+// Can't test do-while loops this way because the Statement isn't in trailing
+// position, so 'let' followed by newline *must* be followed by 'while'.
+contextAcceptsStatement("while (1) @@@");
+contextAcceptsStatement("for (1; 1; 0) @@@");
+contextAcceptsStatement("for (var x; 1; 0) @@@");
+contextAcceptsStatement("for (let x; 1; 0) @@@");
+contextAcceptsStatement("for (const x = 1; 1; 0) @@@");
+contextAcceptsStatement("for (x in 0) @@@");
+contextAcceptsStatement("for (var x in 0) @@@");
+contextAcceptsStatement("for (let x in 0) @@@");
+contextAcceptsStatement("for (const x in 0) @@@");
+contextAcceptsStatement("for (x of []) @@@");
+contextAcceptsStatement("for (var x of []) @@@");
+contextAcceptsStatement("for (let x of []) @@@");
+contextAcceptsStatement("for (const x of []) @@@");
+contextAcceptsStatement("with (1) @@@");
+contextAcceptsStatement("foo: @@@");
+
+// Test all the different contexts that expect a StatementListItem.
+
+function contextAcceptsStatementListItem(pat)
+{
+ var goodCode =
+`function f${counter++}()
+{
+ ${pat.replace("@@@", "let \n [] = [] ;")}
+}
+`;
+
+ evaluate(goodCode);
+
+ var moarGoodCode = pat.replace("@@@", "let \n [] = [] ;");
+ evaluate(moarGoodCode);
+
+ var goodModuleCode = pat.replace("@@@", "let \n [] = [] ;");
+ parseModule(goodModuleCode);
+
+ var badCode =
+`function f${counter++}()
+{
+ ${pat.replace("@@@", "let \n let = 3 ;")}
+}
+`;
+
+ try
+ {
+ evaluate(badCode);
+ throw new Error("didn't throw");
+ }
+ catch (e)
+ {
+ assertEq(e instanceof SyntaxError, true,
+ "didn't get a syntax error, instead got: " + e);
+ }
+}
+
+contextAcceptsStatementListItem("{ @@@ }");
+contextAcceptsStatementListItem("switch (1) { case 1: @@@ }");
+contextAcceptsStatementListItem("switch (1) { default: @@@ }");
+contextAcceptsStatementListItem("switch (1) { case 0: case 1: @@@ }");
+contextAcceptsStatementListItem("switch (1) { case 0: break; case 1: @@@ }");
+contextAcceptsStatementListItem("switch (1) { default: @@@ case 2: }");
+contextAcceptsStatementListItem("try { @@@ } catch (e) { }");
+contextAcceptsStatementListItem("try { @@@ } finally { }");
+contextAcceptsStatementListItem("try { @@@ } catch (e) { } finally { }");
+contextAcceptsStatementListItem("try { } catch (e) { @@@ }");
+contextAcceptsStatementListItem("try { } finally { @@@ }");
+contextAcceptsStatementListItem("try { } catch (e) { @@@ } finally { }");
+contextAcceptsStatementListItem("try { } catch (e) { } finally { @@@ }");
+contextAcceptsStatementListItem("_ => { @@@ }");
+contextAcceptsStatementListItem("function q() { @@@ }");
+contextAcceptsStatementListItem("function* q() { @@@ }");
+contextAcceptsStatementListItem("(function() { @@@ })");
+contextAcceptsStatementListItem("(function*() { @@@ })");
+contextAcceptsStatementListItem("({ *q() { @@@ } })");
+contextAcceptsStatementListItem("({ q() { @@@ } })");
+contextAcceptsStatementListItem("({ get q() { @@@ } })");
+contextAcceptsStatementListItem("({ set q(v) { @@@ } })");
+contextAcceptsStatementListItem("(class { f() { @@@ } })");
+contextAcceptsStatementListItem("(class { static f() { @@@ } })");
+contextAcceptsStatementListItem("(class { static *f() { @@@ } })");
+contextAcceptsStatementListItem("(class { static get f() { @@@ } })");
+contextAcceptsStatementListItem("(class { static set f(v) { @@@ } })");
+contextAcceptsStatementListItem("(class { static() { @@@ } })");
+contextAcceptsStatementListItem("@@@");
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/Syntax/unicode_other_id_continue.js b/js/src/tests/ecma_6/Syntax/unicode_other_id_continue.js
new file mode 100644
index 000000000..03dd09b71
--- /dev/null
+++ b/js/src/tests/ecma_6/Syntax/unicode_other_id_continue.js
@@ -0,0 +1,45 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// From PropList.txt (Unicode 9):
+const otherIdContinue = [
+ 0x00B7, // MIDDLE DOT, Gc=Po
+ 0x0387, // GREEK ANO TELEIA, Gc=Po
+ 0x1369, // ETHIOPIC DIGIT ONE, Gc=No
+ 0x136A, // ETHIOPIC DIGIT TWO, Gc=No
+ 0x136B, // ETHIOPIC DIGIT THREE, Gc=No
+ 0x136C, // ETHIOPIC DIGIT FOUR, Gc=No
+ 0x136D, // ETHIOPIC DIGIT FIVE, Gc=No
+ 0x136E, // ETHIOPIC DIGIT SIX, Gc=No
+ 0x136F, // ETHIOPIC DIGIT SEVEN, Gc=No
+ 0x1370, // ETHIOPIC DIGIT EIGHT, Gc=No
+ 0x1371, // ETHIOPIC DIGIT NINE, Gc=No
+ 0x19DA, // NEW TAI LUE THAM DIGIT ONE, Gc=No
+];
+
+// Leading character in identifier.
+for (let ident of [...otherIdContinue]) {
+ assertThrowsInstanceOf(() => eval(`${String.fromCodePoint(ident)}`), SyntaxError);
+ assertThrowsInstanceOf(() => eval(`\\u${ident.toString(16).padStart(4, "0")}`), SyntaxError);
+ assertThrowsInstanceOf(() => eval(`\\u{${ident.toString(16)}}`), SyntaxError);
+}
+
+// Not leading character in identifier.
+for (let ident of [...otherIdContinue]) {
+ eval(`
+ let A${String.fromCodePoint(ident)} = 123;
+ assertEq(${String.fromCodePoint(0x41, ident)}, 123);
+ `);
+ eval(`
+ let A\\u${ident.toString(16).padStart(4, "0")} = 123;
+ assertEq(${String.fromCodePoint(0x41, ident)}, 123);
+ `);
+ eval(`
+ let A\\u{${ident.toString(16)}} = 123;
+ assertEq(${String.fromCodePoint(0x41, ident)}, 123);
+ `);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Syntax/unicode_other_id_start.js b/js/src/tests/ecma_6/Syntax/unicode_other_id_start.js
new file mode 100644
index 000000000..86790dd00
--- /dev/null
+++ b/js/src/tests/ecma_6/Syntax/unicode_other_id_start.js
@@ -0,0 +1,48 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// From PropList.txt (Unicode 9):
+const otherIdStart = [
+ 0x1885, // MONGOLIAN LETTER ALI GALI BALUDA, Gc=Mn
+ 0x1886, // MONGOLIAN LETTER ALI GALI THREE BALUDA, Gc=Mn
+ 0x2118, // SCRIPT CAPITAL P, Gc=Sm
+ 0x212E, // ESTIMATED SYMBOL, Gc=So
+ 0x309B, // KATAKANA-HIRAGANA VOICED SOUND MARK, Gc=Sk
+ 0x309C, // KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK, Gc=Sk
+];
+
+// Leading character in identifier.
+for (let ident of otherIdStart) {
+ eval(`
+ let ${String.fromCodePoint(ident)} = 123;
+ assertEq(${String.fromCodePoint(ident)}, 123);
+ `);
+ eval(`
+ let \\u${ident.toString(16).padStart(4, "0")} = 123;
+ assertEq(${String.fromCodePoint(ident)}, 123);
+ `);
+ eval(`
+ let \\u{${ident.toString(16)}} = 123;
+ assertEq(${String.fromCodePoint(ident)}, 123);
+ `);
+}
+
+// Not leading character in identifier.
+for (let ident of otherIdStart) {
+ eval(`
+ let A${String.fromCodePoint(ident)} = 123;
+ assertEq(${String.fromCodePoint(0x41, ident)}, 123);
+ `);
+ eval(`
+ let A\\u${ident.toString(16).padStart(4, "0")} = 123;
+ assertEq(${String.fromCodePoint(0x41, ident)}, 123);
+ `);
+ eval(`
+ let A\\u{${ident.toString(16)}} = 123;
+ assertEq(${String.fromCodePoint(0x41, ident)}, 123);
+ `);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/Syntax/yield-as-identifier.js b/js/src/tests/ecma_6/Syntax/yield-as-identifier.js
new file mode 100644
index 000000000..665b0b11c
--- /dev/null
+++ b/js/src/tests/ecma_6/Syntax/yield-as-identifier.js
@@ -0,0 +1,54 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1288459;
+var summary = "|yield| is sometimes a valid identifier";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function t(code)
+{
+ var strictSemi = " 'use strict'; " + code;
+ var strictASI = " 'use strict' \n " + code;
+
+ var creationFunctions = ["Function"];
+ if (typeof evaluate === "function")
+ creationFunctions.push("evaluate");
+ if (typeof parseModule === "function")
+ creationFunctions.push("parseModule");
+
+ for (var func of creationFunctions)
+ {
+ var g = newGlobal();
+ var f = g[func];
+
+ if (func === "parseModule")
+ assertThrowsInstanceOf(() => f(code), g.SyntaxError);
+ else
+ f(code);
+
+ assertThrowsInstanceOf(() => f(strictSemi), g.SyntaxError);
+ assertThrowsInstanceOf(() => f(strictASI), g.SyntaxError);
+ }
+}
+
+t("var yield = 3;");
+t("let yield = 3;");
+t("const yield = 3;");
+t("for (var yield = 3; ; ) break;");
+t("for (let yield = 3; ; ) break;");
+t("for (const yield = 3; ; ) break;");
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/TemplateStrings/browser.js b/js/src/tests/ecma_6/TemplateStrings/browser.js
new file mode 100644
index 000000000..139597f9c
--- /dev/null
+++ b/js/src/tests/ecma_6/TemplateStrings/browser.js
@@ -0,0 +1,2 @@
+
+
diff --git a/js/src/tests/ecma_6/TemplateStrings/debugLineNumber.js b/js/src/tests/ecma_6/TemplateStrings/debugLineNumber.js
new file mode 100644
index 000000000..2cf41cd9c
--- /dev/null
+++ b/js/src/tests/ecma_6/TemplateStrings/debugLineNumber.js
@@ -0,0 +1,50 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// TEST BEGIN
+
+// verify debugger line numbers are accurate
+try {
+ `
+ a
+ b
+ c
+ `;
+ throw Error("error");
+} catch (e) {
+ assertEq(e.lineNumber, 14);
+}
+
+try {
+ function tagThatThrows(...args) { throw new Error(); }
+
+ tagThatThrows`
+ multi-line
+ template
+ string`;
+} catch (e) {
+ var stackLines = e.stack.split('\n');
+ var firstLine = stackLines[0].split(':');
+ var secondLine = stackLines[1].split(':');
+ var firstLineSize = firstLine.length;
+ var secondLineSize = secondLine.length;
+ assertEq(firstLine[firstLineSize - 2], "20");
+ assertEq(firstLine[firstLineSize - 1], "45");
+ assertEq(secondLine[secondLineSize - 2], "22");
+ assertEq(secondLine[secondLineSize - 1], "5");
+}
+
+try {
+ ` multi-line
+ template
+ with
+ ${substitutionThatThrows()}`
+
+} catch (e) {
+ assertEq(e.lineNumber, 42);
+}
+
+
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/TemplateStrings/lineNumber.js b/js/src/tests/ecma_6/TemplateStrings/lineNumber.js
new file mode 100644
index 000000000..6163d5421
--- /dev/null
+++ b/js/src/tests/ecma_6/TemplateStrings/lineNumber.js
@@ -0,0 +1,72 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+var BUGNUMBER = 1253847;
+var summary = 'Line numbers should be updated correctly when a template literal contains CRLF sequences.';
+
+print(BUGNUMBER + ": " + summary);
+
+// lineNumber after template literal.
+var base, x, lineno;
+eval([
+ "base = new Error().lineNumber;",
+ "x = `",
+ "`;",
+ "lineno = new Error().lineNumber;",
+].join("\r\n"));
+assertEq(lineno, base + 3);
+
+eval([
+ "base = new Error().lineNumber;",
+ "x = `",
+ "",
+ "`;",
+ "lineno = new Error().lineNumber;",
+].join("\r\n"));
+assertEq(lineno, base + 4);
+
+eval([
+ "base = new Error().lineNumber;",
+ "x = `a",
+ "b`;",
+ "lineno = new Error().lineNumber;",
+].join("\r\n"));
+assertEq(lineno, base + 3);
+
+// lineNumber inside template literal
+eval([
+ "base = new Error().lineNumber;",
+ "x = `${new Error().lineNumber}",
+ "${new Error().lineNumber}",
+ "${new Error().lineNumber}`;",
+ "lineno = new Error().lineNumber;",
+].join("\r\n"));
+assertEq(lineno, base + 4);
+assertEq(x, (base + 1) + '\n' + (base + 2) + '\n' + (base + 3));
+
+eval([
+ "var base = new Error().lineNumber;",
+ "var x = `",
+ "${new Error().lineNumber}",
+ "${new Error().lineNumber}",
+ "${new Error().lineNumber}",
+ "`;",
+ "var lineno = new Error().lineNumber;",
+].join("\r\n"));
+assertEq(lineno, base + 6);
+assertEq(x, '\n' + (base + 2) + '\n' + (base + 3) + '\n' + (base + 4) + '\n');
+
+// When CR, LF, and CRLF are mixed.
+eval([
+ "var base = new Error().lineNumber;", "\n",
+ "var x = `${new Error().lineNumber}", "\n",
+ "${new Error().lineNumber}", "\r\n",
+ "${new Error().lineNumber}", "\r",
+ "${new Error().lineNumber}`;", "\n",
+ "var lineno = new Error().lineNumber;",
+].join(""));
+assertEq(lineno, base + 5);
+assertEq(x, (base + 1) + '\n' + (base + 2) + '\n' + (base + 3) + '\n' + (base + 4));
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TemplateStrings/noSubst.js b/js/src/tests/ecma_6/TemplateStrings/noSubst.js
new file mode 100644
index 000000000..730275fd9
--- /dev/null
+++ b/js/src/tests/ecma_6/TemplateStrings/noSubst.js
@@ -0,0 +1,148 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// This test case is weird in the sense the actual work happens at the eval
+// at the end. If template strings are not enabled, the test cases would throw
+// a syntax error and we'd have failure reported. To avoid that, the entire
+// test case is commented out and is part of a function. We use toString to
+// get the string version, obtain the actual lines to run, and then use eval to
+// do the actual evaluation.
+
+function syntaxError (script) {
+ try {
+ Function(script);
+ } catch (e) {
+ if (e.name === "SyntaxError") {
+ return;
+ }
+ }
+ throw "Expected syntax error: " + script;
+}
+
+// TEST BEGIN
+
+// unterminated quasi literal
+syntaxError("`");
+syntaxError("`$");
+syntaxError("`${");
+syntaxError("`${}");
+syntaxError("`${1}");
+syntaxError("`${1 + 2}");
+
+// almost template substitutions
+assertEq("$", `$`);
+assertEq("$}", `$}`);
+assertEq("}", `}`);
+assertEq("{", `{`);
+
+
+// character escape sequence (single escape character)
+assertEq("\'", `\'`);
+assertEq("\"", `\"`);
+assertEq("\\", `\\`);
+assertEq("\b", `\b`);
+assertEq("\f", `\f`);
+assertEq("\n", `\n`);
+assertEq("\r", `\r`);
+assertEq("\t", `\t`);
+assertEq("\v", `\v`);
+assertEq("\r\n", `\r\n`);
+
+
+assertEq("\0", eval("`\\" + String.fromCharCode(0) + "`"));
+assertEq("$", `\$`);
+assertEq(".", `\.`);
+assertEq("A", `\A`);
+assertEq("a", `\a`);
+
+
+// digit escape sequence
+assertEq("\0", `\0`);
+syntaxError("`\\1`");
+syntaxError("`\\2`");
+syntaxError("`\\3`");
+syntaxError("`\\4`");
+syntaxError("`\\5`");
+syntaxError("`\\6`");
+syntaxError("`\\7`");
+syntaxError("`\\01`");
+syntaxError("`\\001`");
+syntaxError("`\\00`");
+
+// hex escape sequence
+syntaxError("`\\x`");
+syntaxError("`\\x0`");
+syntaxError("`\\x0Z`");
+syntaxError("`\\xZ`");
+
+assertEq("\0", `\x00`);
+assertEq("$", `\x24`);
+assertEq(".", `\x2E`);
+assertEq("A", `\x41`);
+assertEq("a", `\x61`);
+assertEq("AB", `\x41B`);
+assertEq(String.fromCharCode(0xFF), `\xFF`);
+
+
+// unicode escape sequence
+
+assertEq("\0", `\u0000`);
+assertEq("$", `\u0024`);
+assertEq(".", `\u002E`);
+assertEq("A", `\u0041`);
+assertEq("a", `\u0061`);
+assertEq("AB", `\u0041B`);
+assertEq(String.fromCharCode(0xFFFF), `\uFFFF`);
+
+
+// line continuation
+assertEq("", eval("`\\\n`"));
+assertEq("", eval("`\\\r`"));
+assertEq("", eval("`\\\u2028`"));
+assertEq("", eval("`\\\u2029`"));
+assertEq("\u2028", eval("`\u2028`"));
+assertEq("\u2029", eval("`\u2029`"));
+
+assertEq("a\nb", eval("`a\rb`"))
+assertEq("a\nb", eval("`a\r\nb`"))
+assertEq("a\n\nb", eval("`a\r\rb`"))
+
+
+// source character
+for (var i = 0; i < 0xFF; ++i) {
+ var c = String.fromCharCode(i);
+ if (c == "`" || c == "\\" || c == "\r") continue;
+ assertEq(c, eval("`" + c + "`"));
+}
+
+assertEq("", ``);
+assertEq("`", `\``);
+assertEq("$", `$`);
+assertEq("$$", `$$`);
+assertEq("$$}", `$$}`);
+
+// multi-line
+assertEq(`hey
+there`, "hey\nthere");
+
+// differences between strings and template strings
+syntaxError("var obj = { `illegal`: 1}");
+
+// test for JSON.parse
+assertThrowsInstanceOf(() => JSON.parse('[1, `false`]'), SyntaxError);
+
+syntaxError('({get `name`() { return 10; }});');
+
+// test for "use strict" directive
+assertEq(5, Function("`use strict`; return 05;")());
+var func = function f() {
+ `ignored string`;
+ "use strict";
+ return 06;
+}
+assertEq(6, func());
+syntaxError("\"use strict\"; return 06;");
+
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/TemplateStrings/shell.js b/js/src/tests/ecma_6/TemplateStrings/shell.js
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/js/src/tests/ecma_6/TemplateStrings/shell.js
@@ -0,0 +1 @@
+
diff --git a/js/src/tests/ecma_6/TemplateStrings/tagTempl.js b/js/src/tests/ecma_6/TemplateStrings/tagTempl.js
new file mode 100644
index 000000000..1e3f52bfb
--- /dev/null
+++ b/js/src/tests/ecma_6/TemplateStrings/tagTempl.js
@@ -0,0 +1,291 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// This test case is weird in the sense the actual work happens at the eval
+// at the end. If template strings are not enabled, the test cases would throw
+// a syntax error and we'd have failure reported. To avoid that, the entire
+// test case is commented out and is part of a function. We use toString to
+// get the string version, obtain the actual lines to run, and then use eval to
+// do the actual evaluation.
+
+function syntaxError (script) {
+ try {
+ Function(script);
+ } catch (e) {
+ if (e.name === "SyntaxError") {
+ return;
+ }
+ }
+ throw new Error('Expected syntax error: ' + script);
+}
+
+// function definitions
+function check(actual, expected) {
+ assertEq(actual.length, expected.length);
+ for (var i = 0; i < expected.length; i++)
+ assertEq(actual[i], expected[i]);
+}
+
+function cooked(cs) { return cs; }
+function raw(cs) { return cs.raw; }
+function args(cs, ...rest) { return rest; }
+
+
+// TEST BEGIN
+
+// Literals
+check(raw``, [""]);
+check(raw`${4}a`, ["","a"]);
+check(raw`${4}`, ["",""]);
+check(raw`a${4}`, ["a",""]);
+check(raw`a${4}b`, ["a","b"]);
+check(raw`a${4}b${3}`, ["a","b",""]);
+check(raw`a${4}b${3}c`, ["a","b","c"]);
+check(raw`a${4}${3}c`, ["a","","c"]);
+check(raw`${4}${3}`, ["","",""]);
+check(raw`${4}\r\r${3}`, ["","\\r\\r",""]);
+check(raw`${4}${3}c`, ["","","c"]);
+check(raw`zyx${4}wvut${3}c`, ["zyx","wvut","c"]);
+check(raw`zyx${4}wvut${3}\r\n`, ["zyx","wvut","\\r\\n"]);
+
+check(raw`hey`, ["hey"]);
+check(raw`he\r\ny`, ["he\\r\\ny"]);
+check(raw`he\ry`, ["he\\ry"]);
+check(raw`he\r\ry`, ["he\\r\\ry"]);
+check(raw`he\ny`, ["he\\ny"]);
+check(raw`he\n\ny`, ["he\\n\\ny"]);
+
+check(cooked`hey`, ["hey"]);
+check(cooked`he\r\ny`, ["he\r\ny"]);
+check(cooked`he\ry`, ["he\ry"]);
+check(cooked`he\r\ry`, ["he\r\ry"]);
+check(cooked`he\ny`, ["he\ny"]);
+check(cooked`he\n\ny`, ["he\n\ny"]);
+
+check(eval("raw`\r`"), ["\n"]);
+check(eval("raw`\r\n`"), ["\n"]);
+check(eval("raw`\r\r\n`"), ["\n\n"]);
+check(eval("raw`he\r\ny`"), ["he\ny"]);
+check(eval("raw`he\ry`"), ["he\ny"]);
+check(eval("raw`he\r\ry`"), ["he\n\ny"]);
+check(eval("raw`he\r\r\ny`"), ["he\n\ny"]);
+
+
+check(eval("cooked`\r`"), ["\n"]);
+check(eval("cooked`\r\n`"), ["\n"]);
+check(eval("cooked`\r\r\n`"), ["\n\n"]);
+check(eval("cooked`he\r\ny`"), ["he\ny"]);
+check(eval("cooked`he\ry`"), ["he\ny"]);
+check(eval("cooked`he\r\ry`"), ["he\n\ny"]);
+check(eval("cooked`he\r\r\ny`"), ["he\n\ny"]);
+
+// Expressions
+check(args`hey${"there"}now`, ["there"]);
+check(args`hey${4}now`, [4]);
+check(args`hey${4}`, [4]);
+check(args`${4}`, [4]);
+check(args`${4}${5}`, [4,5]);
+check(args`a${4}${5}`, [4,5]);
+check(args`a${4}b${5}`, [4,5]);
+check(args`a${4}b${5}c`, [4,5]);
+check(args`${4}b${5}c`, [4,5]);
+check(args`${4}${5}c`, [4,5]);
+
+var a = 10;
+var b = 15;
+check(args`${4 + a}${5 + b}c`, [14,20]);
+check(args`${4 + a}${a + b}c`, [14,25]);
+check(args`${b + a}${5 + b}c`, [25,20]);
+check(args`${4 + a}${a + b}c${"a"}`, [14,25,"a"]);
+check(args`a${"b"}${"c"}${"d"}`, ["b","c","d"]);
+check(args`a${"b"}${"c"}${a + b}`, ["b","c",25]);
+check(args`a${"b"}`, ["b"]);
+
+// Expressions - complex substitutions
+check(args`${`hey ${b + a} there`}${5 + b}c`, ["hey 25 there",20]);
+check(args`${`hey ${`my ${b + a} good`} there`}${5 + b}c`, ["hey my 25 good there",20]);
+
+syntaxError("args`${}`");
+syntaxError("args`${`");
+syntaxError("args`${\\n}`");
+syntaxError("args`${yield 0}`");
+syntaxError("args`");
+syntaxError("args`$");
+syntaxError("args`${");
+syntaxError("args.``");
+
+// Template substitution tests in the context of tagged templates
+// Extra whitespace inside a template substitution is ignored.
+check(args`a${
+0
+}`, [0]);
+
+// Extra whitespace between tag and template is ignored
+check(args
+`a
+${
+0
+}`, [0]);
+
+
+check(args`${5}${ // Comments work in template substitutions.
+// Even comments that look like code:
+// 0}`, "FAIL"); /* NOTE: This whole line is a comment.
+0}`, [5,0]);
+
+check(args // Comments work in template substitutions.
+// Even comments that look like code:
+// 0}`, "FAIL"); /* NOTE: This whole line is a comment.
+`${5}${0}`, [5,0]);
+
+
+// Template substitutions are expressions, not statements.
+syntaxError("args`${0;}`");
+check(args`${
+ function f() {
+ return "ok";
+ }()
+}`, ["ok"]);
+
+// Template substitutions can have side effects.
+var x = 0;
+check(args`${x += 1}`, [1]);
+assertEq(x, 1);
+
+// The production for a template substitution is Expression, not
+// AssignmentExpression.
+x = 0;
+check(args`${++x, "o"}k`, ["o"]);
+assertEq(x, 1);
+
+
+// --> is not a comment inside a template.
+check(cooked`
+--> this is text
+`, ["\n--> this is text\n"]);
+
+// reentrancy
+function f(n) {
+ if (n === 0)
+ return "";
+ var res = args`${n}${f(n - 1)}`;
+ return res[0] + res[1] + "";
+}
+assertEq(f(9), "987654321");
+
+// Template string substitutions in generator functions can yield.
+function* g() {
+ var res = args`${yield 1} ${yield 2}`;
+ return res[0] + res[1] + "";
+}
+
+var it = g();
+var next = it.next();
+assertEq(next.done, false);
+assertEq(next.value, 1);
+next = it.next("hello");
+assertEq(next.done, false);
+assertEq(next.value, 2);
+next = it.next("world");
+assertEq(next.done, true);
+assertEq(next.value, "helloworld");
+
+// undefined
+assertEq(args`${void 0}`[0] + "", "undefined");
+assertEq(args`${Object.doesNotHaveThisProperty}`[0] + "", "undefined");
+
+var callSiteObj = [];
+callSiteObj[0] = cooked`aa${4}bb`;
+for (var i = 1; i < 3; i++)
+ callSiteObj[i] = cooked`aa${4}bb`;
+
+// Same call site object behavior
+assertEq(callSiteObj[1], callSiteObj[2]);
+assertEq(callSiteObj[0] !== callSiteObj[1], true);
+assertEq("raw" in callSiteObj[0], true);
+
+// Array length
+assertEq(callSiteObj[0].raw.length, 2);
+assertEq(callSiteObj[0].length, 2);
+
+// Frozen objects
+assertEq(Object.isFrozen(callSiteObj[0]), true);
+assertEq(Object.isFrozen(callSiteObj[0].raw), true);
+
+// Raw not enumerable
+assertEq(callSiteObj[0].propertyIsEnumerable(callSiteObj[0].raw), false);
+
+// Allow call syntax
+check(new ((cs, sub) => function(){ return sub }) `${[1, 2, 3]}`, [1,2,3]);
+
+var a = [];
+function test() {
+ var x = callSite => callSite;
+ for (var i = 0; i < 2; i++)
+ a[i] = eval("x``");
+}
+test();
+assertEq(a[0] !== a[1], true);
+
+// Test that |obj.method`template`| works
+var newObj = {
+ methodRetThis : function () {
+ return this;
+ },
+ methodRetCooked : function (a) {
+ return a;
+ },
+ methodRetRaw : function (a) {
+ return a.raw;
+ },
+ methodRetArgs : function (a, ...args) {
+ return args;
+ }
+}
+
+assertEq(newObj.methodRetThis`abc${4}`, newObj);
+check(newObj.methodRetCooked`abc${4}\r`, ["abc","\r"]);
+check(eval("newObj.methodRetCooked`abc${4}\r`"), ["abc","\n"]);
+check(newObj.methodRetRaw`abc${4}\r`, ["abc","\\r"]);
+check(eval("newObj.methodRetRaw`abc${4}\r`"), ["abc","\n"]);
+check(eval("newObj.methodRetArgs`abc${4}${5}\r${6}`"), [4,5,6]);
+
+// Chained calls
+function func(a) {
+ if (a[0] === "hey") {
+ return function(a) {
+ if (a[0] === "there") {
+ return function(a) {
+ if (a[0] === "mine")
+ return "was mine";
+ else
+ return "was not mine";
+ }
+ } else {
+ return function(a) {
+ return "was not there";
+ }
+ }
+ }
+ } else {
+ return function(a) {
+ return function(a) {
+ return "was not hey";
+ }
+ }
+ }
+}
+
+assertEq(func`hey``there``mine`, "was mine");
+assertEq(func`hey``there``amine`, "was not mine");
+assertEq(func`hey``tshere``amine`, "was not there");
+assertEq(func`heys``there``mine`, "was not hey");
+
+// String.raw
+assertEq(String.raw`h\r\ney${4}there\n`, "h\\r\\ney4there\\n");
+assertEq(String.raw`hey`, "hey");
+assertEq(String.raw``, "");
+
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/TemplateStrings/templLit.js b/js/src/tests/ecma_6/TemplateStrings/templLit.js
new file mode 100644
index 000000000..0b85ad7d1
--- /dev/null
+++ b/js/src/tests/ecma_6/TemplateStrings/templLit.js
@@ -0,0 +1,118 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+// This test case is weird in the sense the actual work happens at the eval
+// at the end. If template strings are not enabled, the test cases would throw
+// a syntax error and we'd have failure reported. To avoid that, the entire
+// test case is commented out and is part of a function. We use toString to
+// get the string version, obtain the actual lines to run, and then use eval to
+// do the actual evaluation.
+
+function syntaxError (script) {
+ try {
+ Function(script);
+ } catch (e) {
+ if (e.name === "SyntaxError") {
+ return;
+ }
+ }
+ throw new Error('Expected syntax error: ' + script);
+}
+
+// TEST BEGIN
+
+
+
+// combinations of substitutions
+assertEq("abcdef", `ab${"cd"}ef`);
+assertEq("ab9ef", `ab${4+5}ef`);
+assertEq("cdef", `${"cd"}ef`);
+assertEq("abcd", `ab${"cd"}`);
+assertEq("cd", `${"cd"}`);
+assertEq("", `${""}`);
+assertEq("4", `${4}`);
+
+// multiple substitutions
+assertEq("abcdef", `ab${"cd"}e${"f"}`);
+assertEq("abcdef", `ab${"cd"}${"e"}f`);
+assertEq("abcdef", `a${"b"}${"cd"}e${"f"}`);
+assertEq("abcdef", `${"ab"}${"cd"}${"ef"}`);
+
+// inception
+assertEq("abcdef", `a${`b${"cd"}e${"f"}`}`);
+
+syntaxError("`${}`");
+syntaxError("`${`");
+syntaxError("`${\\n}`");
+syntaxError("`${yield 0}`");
+
+// Extra whitespace inside a template substitution is ignored.
+assertEq(`${
+0
+}`, "0");
+
+assertEq(`${ // Comments work in template substitutions.
+// Even comments that look like code:
+// 0}`, "FAIL"); /* NOTE: This whole line is a comment.
+0}`, "0");
+
+// Template substitutions are expressions, not statements.
+syntaxError("`${0;}`");
+assertEq(`${{}}`, "[object Object]");
+assertEq(`${
+ function f() {
+ return "ok";
+ }()
+}`, "ok");
+
+// Template substitutions can have side effects.
+var x = 0;
+assertEq(`= ${x += 1}`, "= 1");
+assertEq(x, 1);
+
+// The production for a template substitution is Expression, not
+// AssignmentExpression.
+x = 0;
+assertEq(`${++x, "o"}k`, "ok");
+assertEq(x, 1);
+
+// --> is not a comment inside a template.
+assertEq(`
+--> this is text
+`, "\n--> this is text\n");
+
+// reentrancy
+function f(n) {
+ if (n === 0)
+ return "";
+ return `${n}${f(n - 1)}`;
+}
+assertEq(f(9), "987654321");
+
+// Template string substitutions in generator functions can yield.
+function* g() {
+ return `${yield 1} ${yield 2}`;
+}
+
+var it = g();
+var next = it.next();
+assertEq(next.done, false);
+assertEq(next.value, 1);
+next = it.next("hello");
+assertEq(next.done, false);
+assertEq(next.value, 2);
+next = it.next("world");
+assertEq(next.done, true);
+assertEq(next.value, "hello world");
+
+// undefined
+assertEq(`${void 0}`, "undefined");
+assertEq(`${Object.doesNotHaveThisProperty}`, "undefined");
+
+// toString behavior
+assertEq("<toString>", `${{valueOf: () => "<valueOf>", toString: () => "<toString>"}}`);
+assertEq("Hi 42", Function("try {`${{toString: () => { throw 42;}}}`} catch(e) {return \"Hi \" + e;}")());
+
+
+reportCompare(0, 0, "ok");
diff --git a/js/src/tests/ecma_6/TypedArray/Tconstructor-fromTypedArray-byteLength.js b/js/src/tests/ecma_6/TypedArray/Tconstructor-fromTypedArray-byteLength.js
new file mode 100644
index 000000000..6aadca5c8
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/Tconstructor-fromTypedArray-byteLength.js
@@ -0,0 +1,17 @@
+var g = newGlobal();
+
+var arr = [1, 2, 3];
+for (var constructor of anyTypedArrayConstructors) {
+ var tarr = new constructor(arr);
+ for (var constructor2 of anyTypedArrayConstructors) {
+ var copied = new constructor2(tarr);
+ assertEq(copied.buffer.byteLength, arr.length * constructor2.BYTES_PER_ELEMENT);
+
+ g.tarr = tarr;
+ copied = g.eval(`new ${constructor2.name}(tarr);`);
+ assertEq(copied.buffer.byteLength, arr.length * constructor2.BYTES_PER_ELEMENT);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/browser.js b/js/src/tests/ecma_6/TypedArray/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/browser.js
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-ArrayBuffer-species-wrap.js b/js/src/tests/ecma_6/TypedArray/constructor-ArrayBuffer-species-wrap.js
new file mode 100644
index 000000000..67a50fc91
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-ArrayBuffer-species-wrap.js
@@ -0,0 +1,63 @@
+// |reftest| skip-if(!xulRuntime.shell)
+
+let g = newGlobal();
+
+// Both TypedArray and ArrayBuffer from different global.
+for (let ctor of typedArrayConstructors) {
+ let a = g.eval(`new ${ctor.name}([1, 2, 3, 4, 5]);`);
+ for (let ctor2 of typedArrayConstructors) {
+ let b = new ctor2(a);
+ assertEq(Object.getPrototypeOf(b).constructor, ctor2);
+ assertEq(Object.getPrototypeOf(b.buffer).constructor, g.ArrayBuffer);
+ }
+}
+
+// Only ArrayBuffer from different global.
+let called = false;
+let origSpecies = Object.getOwnPropertyDescriptor(ArrayBuffer, Symbol.species);
+let modSpecies = {
+ get() {
+ called = true;
+ return g.ArrayBuffer;
+ }
+};
+for (let ctor of typedArrayConstructors) {
+ let a = new ctor([1, 2, 3, 4, 5]);
+ for (let ctor2 of typedArrayConstructors) {
+ called = false;
+ Object.defineProperty(ArrayBuffer, Symbol.species, modSpecies);
+ let b = new ctor2(a);
+ Object.defineProperty(ArrayBuffer, Symbol.species, origSpecies);
+ assertEq(called, true);
+ assertEq(Object.getPrototypeOf(b).constructor, ctor2);
+ assertEq(Object.getPrototypeOf(b.buffer).constructor, g.ArrayBuffer);
+ }
+}
+
+// Only TypedArray from different global.
+g.otherArrayBuffer = ArrayBuffer;
+g.eval(`
+var called = false;
+var origSpecies = Object.getOwnPropertyDescriptor(ArrayBuffer, Symbol.species);
+var modSpecies = {
+ get() {
+ called = true;
+ return otherArrayBuffer;
+ }
+};
+`);
+for (let ctor of typedArrayConstructors) {
+ let a = g.eval(`new ${ctor.name}([1, 2, 3, 4, 5]);`);
+ for (let ctor2 of typedArrayConstructors) {
+ g.called = false;
+ g.eval(`Object.defineProperty(ArrayBuffer, Symbol.species, modSpecies);`);
+ let b = new ctor2(a);
+ g.eval(`Object.defineProperty(ArrayBuffer, Symbol.species, origSpecies);`);
+ assertEq(g.called, true);
+ assertEq(Object.getPrototypeOf(b).constructor, ctor2);
+ assertEq(Object.getPrototypeOf(b.buffer).constructor, ArrayBuffer);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-ArrayBuffer-species.js b/js/src/tests/ecma_6/TypedArray/constructor-ArrayBuffer-species.js
new file mode 100644
index 000000000..4ff511848
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-ArrayBuffer-species.js
@@ -0,0 +1,51 @@
+let logs = [];
+for (let ctor of typedArrayConstructors) {
+ let arr = new ctor([1, 2, 3, 4, 5, 6, 7, 8]);
+
+ let ctorObj = {};
+
+ let proxyProto = new Proxy({}, {
+ get(that, name) {
+ logs.push("get proto." + String(name));
+ if (name == "constructor")
+ return ctorObj;
+ throw new Error("unexpected prop access");
+ }
+ });
+
+ arr.buffer.constructor = {
+ get [Symbol.species]() {
+ logs.push("get @@species");
+ let C = new Proxy(function(...args) {
+ logs.push("call ctor");
+ return new ArrayBuffer(...args);
+ }, {
+ get(that, name) {
+ logs.push("get ctor." + String(name));
+ if (name == "prototype") {
+ return proxyProto;
+ }
+ throw new Error("unexpected prop access");
+ }
+ });
+ return C;
+ }
+ };
+
+ for (let ctor2 of typedArrayConstructors) {
+ logs.length = 0;
+ let arr2 = new ctor2(arr);
+ assertDeepEq(logs, ["get @@species", "get ctor.prototype"]);
+
+ logs.length = 0;
+ assertEq(Object.getPrototypeOf(arr2.buffer), proxyProto);
+ assertDeepEq(logs, []);
+
+ logs.length = 0;
+ assertEq(arr2.buffer.constructor, ctorObj);
+ assertDeepEq(logs, ["get proto.constructor"]);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-iterable-generator.js b/js/src/tests/ecma_6/TypedArray/constructor-iterable-generator.js
new file mode 100644
index 000000000..233eeb9d9
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-iterable-generator.js
@@ -0,0 +1,16 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Construct typed array from generator.
+for (let constructor of anyTypedArrayConstructors) {
+ for (let array of [[], [1], [2, 3], [4, 5, 6], Array(1024).fill(0).map((v, i) => i % 128)]) {
+ let typedArray = new constructor(function*(){ yield* array; }());
+
+ assertEq(typedArray.length, array.length);
+ assertEqArray(typedArray, array);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-iterable-modified-array-iterator-next.js b/js/src/tests/ecma_6/TypedArray/constructor-iterable-modified-array-iterator-next.js
new file mode 100644
index 000000000..76eaaae46
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-iterable-modified-array-iterator-next.js
@@ -0,0 +1,28 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Construct typed array from array with modified array iterator next method.
+const ArrayIteratorPrototype = Object.getPrototypeOf([][Symbol.iterator]());
+const origNext = ArrayIteratorPrototype.next;
+const modifiedNext = function() {
+ let {value, done} = origNext.call(this);
+ return {value: value * 5, done};
+};
+for (let constructor of anyTypedArrayConstructors) {
+ for (let array of [[], [1], [2, 3], [4, 5, 6], Array(1024).fill(0).map((v, i) => i % 24)]) {
+ ArrayIteratorPrototype.next = modifiedNext;
+ let typedArray;
+ try {
+ typedArray = new constructor(array);
+ } finally {
+ ArrayIteratorPrototype.next = origNext;
+ }
+
+ assertEq(typedArray.length, array.length);
+ assertEqArray(typedArray, array.map(v => v * 5));
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-iterable-modified-array-iterator.js b/js/src/tests/ecma_6/TypedArray/constructor-iterable-modified-array-iterator.js
new file mode 100644
index 000000000..7c3192a6a
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-iterable-modified-array-iterator.js
@@ -0,0 +1,28 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Construct typed array from array with modified array iterator.
+const origIterator = Array.prototype[Symbol.iterator];
+const modifiedIterator = function*() {
+ for (let v of origIterator.call(this)) {
+ yield v * 5;
+ }
+};
+for (let constructor of anyTypedArrayConstructors) {
+ for (let array of [[], [1], [2, 3], [4, 5, 6], Array(1024).fill(0).map((v, i) => i % 24)]) {
+ Array.prototype[Symbol.iterator] = modifiedIterator;
+ let typedArray;
+ try {
+ typedArray = new constructor(array)
+ } finally {
+ Array.prototype[Symbol.iterator] = origIterator;
+ }
+
+ assertEq(typedArray.length, array.length);
+ assertEqArray(typedArray, array.map(v => v * 5));
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-iterable-nonpacked-array.js b/js/src/tests/ecma_6/TypedArray/constructor-iterable-nonpacked-array.js
new file mode 100644
index 000000000..b9586a57e
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-iterable-nonpacked-array.js
@@ -0,0 +1,17 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Construct typed array from iterable non-packed array.
+for (let constructor of anyTypedArrayConstructors) {
+ for (let array of [[,], [,,], Array(1024)]) {
+ let typedArray = new constructor(array);
+
+ assertEq(typedArray.length, array.length);
+ let expectedArray = Array(array.length).fill(isFloatConstructor(constructor) ? NaN : 0);
+ assertEqArray(typedArray, expectedArray);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-iterable-not-callable.js b/js/src/tests/ecma_6/TypedArray/constructor-iterable-not-callable.js
new file mode 100644
index 000000000..824760900
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-iterable-not-callable.js
@@ -0,0 +1,15 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Construct typed array from object with non-callable [Symbol.iterator] property.
+for (let constructor of anyTypedArrayConstructors) {
+ for (let iterator of [true, 0, Math.PI, "", "10", Symbol.iterator, {}, []]) {
+ assertThrowsInstanceOf(() => new constructor({
+ [Symbol.iterator]: iterator
+ }), TypeError);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-iterable-packed-array-side-effect.js b/js/src/tests/ecma_6/TypedArray/constructor-iterable-packed-array-side-effect.js
new file mode 100644
index 000000000..3c00af0de
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-iterable-packed-array-side-effect.js
@@ -0,0 +1,17 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Construct typed array from iterable packed array, array contains object with modifying
+// valueOf() method.
+for (let constructor of anyTypedArrayConstructors) {
+ let array = [
+ 0, 1, {valueOf() { array[3] = 30; return 2; }}, 3, 4
+ ];
+ let typedArray = new constructor(array);
+ assertEq(typedArray.length, array.length);
+ assertEqArray(typedArray, [0, 1, 2, 3, 4]);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-iterable-packed-array.js b/js/src/tests/ecma_6/TypedArray/constructor-iterable-packed-array.js
new file mode 100644
index 000000000..495c2da49
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-iterable-packed-array.js
@@ -0,0 +1,16 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Construct typed array from iterable packed array.
+for (let constructor of anyTypedArrayConstructors) {
+ for (let array of [[], [1], [2, 3], [4, 5, 6], Array(1024).fill(0).map((v, i) => i % 128)]) {
+ let typedArray = new constructor(array);
+
+ assertEq(typedArray.length, array.length);
+ assertEqArray(typedArray, array);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-iterable-undefined-or-null.js b/js/src/tests/ecma_6/TypedArray/constructor-iterable-undefined-or-null.js
new file mode 100644
index 000000000..48e5aaa64
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-iterable-undefined-or-null.js
@@ -0,0 +1,22 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// Construct typed array from object with undefined or null [Symbol.iterator] property.
+for (let constructor of anyTypedArrayConstructors) {
+ for (let iterator of [undefined, null]) {
+ let arrayLike = {
+ [Symbol.iterator]: iterator,
+ length: 2,
+ 0: 10,
+ 1: 20,
+ };
+ let typedArray = new constructor(arrayLike);
+
+ assertEq(typedArray.length, arrayLike.length);
+ assertEqArray(typedArray, arrayLike);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-iterator-primitive.js b/js/src/tests/ecma_6/TypedArray/constructor-iterator-primitive.js
new file mode 100644
index 000000000..5a14d7d5a
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-iterator-primitive.js
@@ -0,0 +1,29 @@
+var BUGNUMBER = 1021835;
+var summary = "Returning non-object from @@iterator should throw";
+
+print(BUGNUMBER + ": " + summary);
+
+let primitives = [
+ 1,
+ true,
+ undefined,
+ null,
+ "foo",
+ Symbol.iterator
+];
+
+for (let ctor of typedArrayConstructors) {
+ for (let primitive of primitives) {
+ let arg = {
+ [Symbol.iterator]() {
+ return primitive;
+ }
+ };
+ assertThrowsInstanceOf(() => {
+ new ctor(arg);
+ }, TypeError);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-non-detached.js b/js/src/tests/ecma_6/TypedArray/constructor-non-detached.js
new file mode 100644
index 000000000..bbfb317dc
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-non-detached.js
@@ -0,0 +1,15 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs detachArrayBuffer
+
+for (var constructor of typedArrayConstructors) {
+ var buf = new constructor();
+ detachArrayBuffer(buf.buffer);
+ assertThrowsInstanceOf(() => new constructor(buf), TypeError);
+
+ var buffer = new ArrayBuffer();
+ detachArrayBuffer(buffer);
+ assertThrowsInstanceOf(() => new constructor(buffer), TypeError);
+}
+
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-not-callable.js b/js/src/tests/ecma_6/TypedArray/constructor-not-callable.js
new file mode 100644
index 000000000..a3a2f8d1d
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-not-callable.js
@@ -0,0 +1,10 @@
+for (var constructor of anyTypedArrayConstructors) {
+ assertThrowsInstanceOf(() => constructor(), TypeError);
+ assertThrowsInstanceOf(() => constructor(1), TypeError);
+ assertThrowsInstanceOf(() => constructor.call(null), TypeError);
+ assertThrowsInstanceOf(() => constructor.apply(null, []), TypeError);
+ assertThrowsInstanceOf(() => Reflect.apply(constructor, null, []), TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor-undefined-args.js b/js/src/tests/ecma_6/TypedArray/constructor-undefined-args.js
new file mode 100644
index 000000000..91a557a2c
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor-undefined-args.js
@@ -0,0 +1,14 @@
+// Bug 1040402
+
+var ab = new ArrayBuffer(16);
+
+assertEq(new Int32Array(ab).length, 4);
+assertEq(new Int32Array(ab, undefined).length, 4);
+assertEq(new Int32Array(ab, undefined, undefined).length, 4);
+assertEq(new Int32Array(ab, 0).length, 4);
+assertEq(new Int32Array(ab, 0, undefined).length, 4);
+assertEq(new Int32Array(ab, 4).length, 3);
+assertEq(new Int32Array(ab, 4, undefined).length, 3);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/constructor_bad-args.js b/js/src/tests/ecma_6/TypedArray/constructor_bad-args.js
new file mode 100644
index 000000000..00bbf884c
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/constructor_bad-args.js
@@ -0,0 +1,13 @@
+// Bug 1227207
+
+var AB = new ArrayBuffer(12); // Length divides 4
+var BC = new ArrayBuffer(14); // Length does not divide 4
+
+assertThrowsInstanceOf(() => new Int32Array(AB, -1), RangeError); // 22.2.4.5 #8
+assertThrowsInstanceOf(() => new Int32Array(AB, 2), RangeError); // 22.2.4.5 #10
+assertThrowsInstanceOf(() => new Int32Array(BC), RangeError); // 22.2.4.5 #13.a
+assertThrowsInstanceOf(() => new Int32Array(AB, 16), RangeError); // 22.2.4.5 #13.c
+assertThrowsInstanceOf(() => new Int32Array(AB, 0, 4), RangeError); // 22.2.4.5 #14.c
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/detached-array-buffer-checks.js b/js/src/tests/ecma_6/TypedArray/detached-array-buffer-checks.js
new file mode 100644
index 000000000..76a00d886
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/detached-array-buffer-checks.js
@@ -0,0 +1,109 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs detachArrayBuffer
+
+// Nearly every %TypedArray%.prototype method should throw a TypeError when called
+// atop a detached array buffer. Here we check verify that this holds true for
+// all relevant functions.
+let buffer = new ArrayBuffer(32);
+let array = new Int32Array(buffer);
+detachArrayBuffer(buffer);
+
+// A nice poisoned callable to ensure that we fail on a detached buffer check
+// before a method attempts to do anything with its arguments.
+var POISON = (function() {
+ var internalTarget = {};
+ var throwForAllTraps =
+ new Proxy(internalTarget, { get(target, prop, receiver) {
+ assertEq(target, internalTarget);
+ assertEq(receiver, throwForAllTraps);
+ throw "FAIL: " + prop + " trap invoked";
+ }});
+ return new Proxy(throwForAllTraps, throwForAllTraps);
+});
+
+
+assertThrowsInstanceOf(() => {
+ array.copyWithin(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.entries();
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.fill(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.filter(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.find(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.findIndex(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.forEach(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.indexOf(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.includes(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.join(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.keys();
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.lastIndexOf(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.map(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.reduce(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.reduceRight(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.reverse();
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.slice(POISON, POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.some(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.values();
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.every(POISON);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ array.sort(POISON);
+}, TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/element-setting-converts-using-ToNumber.js b/js/src/tests/ecma_6/TypedArray/element-setting-converts-using-ToNumber.js
new file mode 100644
index 000000000..8cfef6769
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/element-setting-converts-using-ToNumber.js
@@ -0,0 +1,90 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = 'element-setting-converts-using-ToNumber.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 985733;
+var summary =
+ "Typed array element-setting should convert to target type using ToNumber "
+ "followed by an element-type-specific truncation function";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+anyTypedArrayConstructors.forEach(function(TypedArray) {
+ var ta = new TypedArray(1);
+ assertEq(ta[0], 0);
+
+ var count = 0;
+ function setToObject()
+ {
+ for (var i = 0; i < 1e4; i++)
+ {
+ assertEq(count, i);
+ ta[0] = { valueOf: function() { count++; return 17; } };
+ }
+ }
+ setToObject();
+ assertEq(count, 1e4);
+ assertEq(ta[0], 17);
+
+ function setToString()
+ {
+ for (var i = 0; i < 2e4; i++)
+ ta[0] = "17.0000000000000000000000000000000000000000000000000000001";
+ }
+ setToString();
+ assertEq(ta[0], 17);
+
+ count = 0;
+ var arrayConstructed =
+ new TypedArray([{ valueOf: function() { count++; return 17; } },
+ "17.0000000000000000000000000000000000000000000000000001"]);
+ assertEq(count, 1);
+ assertEq(arrayConstructed[0], 17);
+ assertEq(arrayConstructed[1], 17);
+
+ count = 0;
+ var arraySet = new TypedArray(5);
+ arraySet.set({ 0: 17,
+ 1: "17.000000000000000000000000000000000000000000000000000",
+ get 2() {
+ return { valueOf: undefined,
+ toString: function() { count++; return 42; } };
+ },
+ get 3() { return true; },
+ set 3(v) { throw "FAIL"; },
+ 4: { valueOf: function() { count++; return 127; } },
+ length: 5 });
+ assertEq(count, 2);
+ assertEq(arraySet[0], 17);
+ assertEq(arraySet[1], 17);
+ assertEq(arraySet[2], 42);
+ assertEq(arraySet[3], 1);
+ assertEq(arraySet[4], 127);
+
+ var bigLen = 1e4;
+ var big = new TypedArray(bigLen);
+ function initBig()
+ {
+ for (var i = 0; i < bigLen; i++)
+ big[i] = (i % 2) ? 3 : { valueOf: function() { return 3; } };
+ }
+ initBig();
+ for (var i = 0; i < bigLen; i++)
+ {
+ assertEq(big[i], 3,
+ "(" + Object.prototype.toString.call(big) + ")");
+ }
+});
+
+/******************************************************************************/
+
+reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/TypedArray/entries.js b/js/src/tests/ecma_6/TypedArray/entries.js
new file mode 100644
index 000000000..c55a959e3
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/entries.js
@@ -0,0 +1,38 @@
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.prototype.entries.length, 0);
+ assertEq(constructor.prototype.entries.name, "entries");
+
+ assertDeepEq([...new constructor(0).entries()], []);
+ assertDeepEq([...new constructor(1).entries()], [[0, 0]]);
+ assertDeepEq([...new constructor(2).entries()], [[0, 0], [1, 0]]);
+ assertDeepEq([...new constructor([15]).entries()], [[0, 15]]);
+
+ var arr = new constructor([1, 2, 3]);
+ var iterator = arr.entries();
+ assertDeepEq(iterator.next(), {value: [0, 1], done: false});
+ assertDeepEq(iterator.next(), {value: [1, 2], done: false});
+ assertDeepEq(iterator.next(), {value: [2, 3], done: false});
+ assertDeepEq(iterator.next(), {value: undefined, done: true});
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var otherGlobal = newGlobal();
+ var entries = otherGlobal[constructor.name].prototype.entries;
+ assertDeepEq([...entries.call(new constructor(2))],
+ [new otherGlobal.Array(0, 0), new otherGlobal.Array(1, 0)]);
+ arr = new (newGlobal()[constructor.name])(2);
+ assertEq([...constructor.prototype.entries.call(arr)].toString(), "0,0,1,0");
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.entries.call(invalidReceiver);
+ }, TypeError, "Assert that entries fails if this value is not a TypedArray");
+ });
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/every-and-some.js b/js/src/tests/ecma_6/TypedArray/every-and-some.js
new file mode 100644
index 000000000..940ac736f
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/every-and-some.js
@@ -0,0 +1,249 @@
+// Tests for TypedArray#every.
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.prototype.every.length, 1);
+
+ // Basic tests.
+ assertEq(new constructor([1, 3, 5]).every(v => v % 2), true);
+ assertEq(new constructor([1, 3, 5]).every(v => v > 2), false);
+ assertEq(new constructor(10).every(v => v === 0), true);
+ assertEq(new constructor().every(v => v > 1), true);
+
+ var arr = new constructor([1, 2, 3, 4, 5]);
+ var sum = 0;
+ var count = 0;
+ assertEq(arr.every((v, k, o) => {
+ count++;
+ sum += v;
+ assertEq(k, v - 1);
+ assertEq(o, arr);
+ return v < 3;
+ }), false);
+ assertEq(sum, 6);
+ assertEq(count, 3);
+
+ // Tests for `thisArg` argument.
+ function assertThisArg(thisArg, thisValue) {
+ // In sloppy mode, `this` could be global object or a wrapper of `thisArg`.
+ assertEq(arr.every(function() {
+ assertDeepEq(this, thisValue);
+ return true;
+ }, thisArg), true);
+
+ // In strict mode, `this` strictly equals `thisArg`.
+ assertEq(arr.every(function() {
+ "use strict";
+ assertDeepEq(this, thisArg);
+ return true;
+ }, thisArg), true);
+
+ // Passing `thisArg` has no effect if callback is an arrow function.
+ var self = this;
+ assertEq(arr.every(() => {
+ assertEq(this, self);
+ return true;
+ }, thisArg), true);
+ }
+ assertThisArg([1, 2, 3], [1, 2, 3]);
+ assertThisArg(Object, Object);
+ assertThisArg(1, Object(1));
+ assertThisArg("1", Object("1"));
+ assertThisArg(false, Object(false));
+ assertThisArg(undefined, this);
+ assertThisArg(null, this);
+
+ // Throw an exception in the callback.
+ var sum = 0;
+ var count = 0;
+ var thrown = false;
+ try {
+ arr.every((v, k, o) => {
+ count++;
+ sum += v;
+ assertEq(k, v - 1);
+ assertEq(o, arr);
+ if (v === 3) {
+ throw "every";
+ }
+ return true
+ })
+ } catch(e) {
+ assertEq(e, "every");
+ thrown = true;
+ }
+ assertEq(thrown, true);
+ assertEq(sum, 6);
+ assertEq(count, 3);
+
+ // There is no callback or callback is not a function.
+ assertThrowsInstanceOf(() => {
+ arr.every();
+ }, TypeError);
+ var invalidCallbacks = [undefined, null, 1, false, "", Symbol(), [], {}, /./];
+ invalidCallbacks.forEach(callback => {
+ assertThrowsInstanceOf(() => {
+ arr.every(callback);
+ }, TypeError);
+ })
+
+ // Callback is a generator.
+ arr.every(function*(){
+ throw "This line will not be executed";
+ });
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var every = newGlobal()[constructor.name].prototype.every;
+ var sum = 0;
+ assertEq(every.call(new constructor([1, 2, 3]), v => sum += v), true);
+ assertEq(sum, 6);
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.every.call(invalidReceiver, () => true);
+ }, TypeError, "Assert that every fails if this value is not a TypedArray");
+ });
+
+ // Test that the length getter is never called.
+ assertEq(Object.defineProperty(new constructor([1, 2, 3]), "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ }).every(() => true), true);
+}
+
+for (let constructor of anyTypedArrayConstructors.filter(isFloatConstructor)) {
+ assertEq(new constructor([undefined, , NaN]).every(v => Object.is(v, NaN)), true);
+}
+
+// Tests for TypedArray#some.
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.prototype.some.length, 1);
+
+ // Basic tests.
+ assertEq(new constructor([1, 2, 3]).some(v => v % 2), true);
+ assertEq(new constructor([0, 2, 4]).some(v => v % 2), false);
+ assertEq(new constructor([1, 3, 5]).some(v => v > 2), true);
+ assertEq(new constructor([1, 3, 5]).some(v => v < 0), false);
+ assertEq(new constructor(10).some(v => v !== 0), false);
+ assertEq(new constructor().some(v => v > 1), false);
+
+ var arr = new constructor([1, 2, 3, 4, 5]);
+ var sum = 0;
+ var count = 0;
+ assertEq(arr.some((v, k, o) => {
+ count++;
+ sum += v;
+ assertEq(k, v - 1);
+ assertEq(o, arr);
+ return v > 2;
+ }), true);
+ assertEq(sum, 6);
+ assertEq(count, 3);
+
+ // Tests for `thisArg` argument.
+ function assertThisArg(thisArg, thisValue) {
+ // In sloppy mode, `this` could be global object or a wrapper of `thisArg`.
+ assertEq(arr.some(function() {
+ assertDeepEq(this, thisValue);
+ return false;
+ }, thisArg), false);
+
+ // In strict mode, `this` strictly equals `thisArg`.
+ assertEq(arr.some(function() {
+ "use strict";
+ assertDeepEq(this, thisArg);
+ return false;
+ }, thisArg), false);
+
+ // Passing `thisArg` has no effect if callback is an arrow function.
+ var self = this;
+ assertEq(arr.some(() => {
+ assertEq(this, self);
+ return false;
+ }, thisArg), false);
+ }
+ assertThisArg([1, 2, 3], [1, 2, 3]);
+ assertThisArg(Object, Object);
+ assertThisArg(1, Object(1));
+ assertThisArg("1", Object("1"));
+ assertThisArg(false, Object(false));
+ assertThisArg(undefined, this);
+ assertThisArg(null, this);
+
+ // Throw an exception in the callback.
+ var sum = 0;
+ var count = 0;
+ var thrown = false;
+ try {
+ arr.some((v, k, o) => {
+ count++;
+ sum += v;
+ assertEq(k, v - 1);
+ assertEq(o, arr);
+ if (v === 3) {
+ throw "some";
+ }
+ return false
+ })
+ } catch(e) {
+ assertEq(e, "some");
+ thrown = true;
+ }
+ assertEq(thrown, true);
+ assertEq(sum, 6);
+ assertEq(count, 3);
+
+ // There is no callback or callback is not a function.
+ assertThrowsInstanceOf(() => {
+ arr.some();
+ }, TypeError);
+ var invalidCallbacks = [undefined, null, 1, false, "", Symbol(), [], {}, /./];
+ invalidCallbacks.forEach(callback => {
+ assertThrowsInstanceOf(() => {
+ arr.some(callback);
+ }, TypeError);
+ })
+
+ // Callback is a generator.
+ arr.some(function*(){
+ throw "This line will not be executed";
+ });
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var some = newGlobal()[constructor.name].prototype.some;
+ var sum = 0;
+ assertEq(some.call(new constructor([1, 2, 3]), v => {
+ sum += v;
+ return false;
+ }), false);
+ assertEq(sum, 6);
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.some.call(invalidReceiver, () => true);
+ }, TypeError, "Assert that some fails if this value is not a TypedArray");
+ });
+
+ // Test that the length getter is never called.
+ assertEq(Object.defineProperty(new constructor([1, 2, 3]), "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ }).some(() => false), false);
+}
+
+for (let constructor of anyTypedArrayConstructors.filter(isFloatConstructor)) {
+ assertEq(new constructor([undefined, , NaN]).some(v => v === v), false);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/fill.js b/js/src/tests/ecma_6/TypedArray/fill.js
new file mode 100644
index 000000000..4349da06a
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/fill.js
@@ -0,0 +1,65 @@
+for (var constructor of anyTypedArrayConstructors) {
+ assertDeepEq(constructor.prototype.fill.length, 1);
+
+ assertDeepEq(new constructor([]).fill(1), new constructor([]));
+ assertDeepEq(new constructor([1,1,1]).fill(2), new constructor([2,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 1), new constructor([1,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 1, 2), new constructor([1,2,1]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, -2), new constructor([1,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, -2, -1), new constructor([1,2,1]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, undefined), new constructor([2,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, undefined, undefined), new constructor([2,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 1, undefined), new constructor([1,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, undefined, 1), new constructor([2,1,1]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 2, 1), new constructor([1,1,1]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, -1, 1), new constructor([1,1,1]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, -2, 1), new constructor([1,1,1]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 1, -2), new constructor([1,1,1]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 0.1), new constructor([2,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 0.9), new constructor([2,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 1.1), new constructor([1,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 0.1, 0.9), new constructor([1,1,1]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 0.1, 1.9), new constructor([2,1,1]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 0.1, 1.9), new constructor([2,1,1]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, -0), new constructor([2,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 0, -0), new constructor([1,1,1]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, NaN), new constructor([2,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 0, NaN), new constructor([1,1,1]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, false), new constructor([2,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, true), new constructor([1,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, "0"), new constructor([2,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, "1"), new constructor([1,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, "-2"), new constructor([1,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, "-2", "-1"), new constructor([1,2,1]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, {valueOf: ()=>1}), new constructor([1,2,2]));
+ assertDeepEq(new constructor([1,1,1]).fill(2, 0, {valueOf: ()=>1}), new constructor([2,1,1]));
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var fill = newGlobal()[constructor.name].prototype.fill;
+ assertDeepEq(fill.call(new constructor([3, 2, 1]), 2), new constructor([2, 2, 2]));
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.fill.call(invalidReceiver, 1);
+ }, TypeError);
+ });
+
+ // Test that the length getter is never called.
+ Object.defineProperty(new constructor([1, 2, 3]), "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ }).fill(1);
+}
+
+for (let constructor of anyTypedArrayConstructors.filter(isFloatConstructor)) {
+ assertDeepEq(new constructor([0, 0]).fill(NaN), new constructor([NaN, NaN]));
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/filter-species.js b/js/src/tests/ecma_6/TypedArray/filter-species.js
new file mode 100644
index 000000000..2de4e254e
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/filter-species.js
@@ -0,0 +1,56 @@
+function test(constructor, constructor2, from=[1, 2, 3, 4, 5], to=[2, 4]) {
+ var modifiedConstructor = new constructor(from);
+ modifiedConstructor.constructor = constructor2;
+ assertDeepEq(modifiedConstructor.filter(x => x % 2 == 0), new constructor2(to));
+ var modifiedSpecies = new constructor(from);
+ modifiedSpecies.constructor = { [Symbol.species]: constructor2 };
+ assertDeepEq(modifiedSpecies.filter(x => x % 2 == 0), new constructor2(to));
+}
+
+// same size, same sign
+
+test(Int8Array, Uint8Array);
+test(Int8Array, Uint8ClampedArray);
+
+test(Uint8Array, Int8Array);
+test(Uint8Array, Uint8ClampedArray);
+
+test(Uint8ClampedArray, Int8Array);
+test(Uint8ClampedArray, Uint8Array);
+
+test(Int16Array, Uint16Array);
+test(Uint16Array, Int16Array);
+
+test(Int32Array, Uint32Array);
+test(Uint32Array, Int32Array);
+
+// same size, different sign
+
+test(Int8Array, Uint8Array, [-1, -2, -3, -4, -5], [0xFE, 0xFC]);
+test(Int8Array, Uint8ClampedArray, [-1, -2, -3, -4, -5], [0, 0]);
+
+test(Uint8Array, Int8Array, [0xFF, 0xFE, 0xFD, 0xFC, 0xFB], [-2, -4]);
+test(Uint8ClampedArray, Int8Array, [0xFF, 0xFE, 0xFD, 0xFC, 0xFB], [-2, -4]);
+
+test(Int16Array, Uint16Array, [-1, -2, -3, -4, -5], [0xFFFE, 0xFFFC]);
+test(Uint16Array, Int16Array, [0xFFFF, 0xFFFE, 0xFFFD, 0xFFFC, 0xFFFB], [-2, -4]);
+
+test(Int32Array, Uint32Array, [-1, -2, -3, -4, -5], [0xFFFFFFFE, 0xFFFFFFFC]);
+test(Uint32Array, Int32Array, [0xFFFFFFFF, 0xFFFFFFFE, 0xFFFFFFFD, 0xFFFFFFFC, 0xFFFFFFFB], [-2, -4]);
+
+// different size
+
+test(Uint8Array, Uint16Array);
+test(Uint16Array, Uint8Array);
+
+test(Uint8Array, Uint32Array);
+test(Uint32Array, Uint8Array);
+
+test(Uint16Array, Uint32Array);
+test(Uint32Array, Uint16Array);
+
+test(Float32Array, Float64Array);
+test(Float64Array, Float32Array);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/find-and-findIndex.js b/js/src/tests/ecma_6/TypedArray/find-and-findIndex.js
new file mode 100644
index 000000000..125ababd0
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/find-and-findIndex.js
@@ -0,0 +1,52 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * https://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var BUGNUMBER = 1078975;
+var summary = "Implement %TypedArray%.prototype.{find, findIndex}";
+print(BUGNUMBER + ": " + summary);
+
+const methods = ["find", "findIndex"];
+
+anyTypedArrayConstructors.forEach(constructor => {
+ methods.forEach(method => {
+ var arr = new constructor([0, 1, 2, 3, 4, 5]);
+ // test that this.length is never called
+ Object.defineProperty(arr, "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ });
+ assertEq(arr[method].length, 1);
+ assertEq(arr[method](v => v === 3), 3);
+ assertEq(arr[method](v => v === 6), method === "find" ? undefined : -1);
+
+ var thisValues = [undefined, null, true, 1, "foo", [], {}];
+ if (typeof Symbol == "function")
+ thisValues.push(Symbol());
+
+ thisValues.forEach(thisArg =>
+ assertThrowsInstanceOf(() => arr[method].call(thisArg, () => true), TypeError)
+ );
+
+ assertThrowsInstanceOf(() => arr[method](), TypeError);
+ assertThrowsInstanceOf(() => arr[method](1), TypeError);
+ });
+});
+
+anyTypedArrayConstructors.filter(isFloatConstructor).forEach(constructor => {
+ var arr = new constructor([-0, 0, 1, 5, NaN, 6]);
+ assertEq(arr.find(v => Number.isNaN(v)), NaN);
+ assertEq(arr.findIndex(v => Number.isNaN(v)), 4);
+
+ assertEq(arr.find(v => Object.is(v, 0)), 0);
+ assertEq(arr.findIndex(v => Object.is(v, 0)), 1);
+
+ assertEq(arr.find(v => Object.is(v, -0)), -0);
+ assertEq(arr.findIndex(v => Object.is(v, -0)), 0);
+})
+
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/forEach.js b/js/src/tests/ecma_6/TypedArray/forEach.js
new file mode 100644
index 000000000..9daa690e2
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/forEach.js
@@ -0,0 +1,93 @@
+// Tests for TypedArray#forEach
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.prototype.forEach.length, 1);
+
+ var arr = new constructor([1, 2, 3, 4, 5]);
+ // Tests for `thisArg` argument.
+ function assertThisArg(thisArg, thisValue) {
+ // In sloppy mode, `this` could be global object or a wrapper of `thisArg`.
+ arr.forEach(function() {
+ assertDeepEq(this, thisValue);
+ return false;
+ }, thisArg);
+
+ // In strict mode, `this` strictly equals `thisArg`.
+ arr.forEach(function() {
+ "use strict";
+ assertDeepEq(this, thisArg);
+ return false;
+ }, thisArg);
+
+ // Passing `thisArg` has no effect if callback is an arrow function.
+ var self = this;
+ arr.forEach(() => {
+ assertEq(this, self);
+ return false;
+ }, thisArg);
+ }
+ assertThisArg([1, 2, 3], [1, 2, 3]);
+ assertThisArg(Object, Object);
+ assertThisArg(1, Object(1));
+ assertThisArg("1", Object("1"));
+ assertThisArg(false, Object(false));
+ assertThisArg(undefined, this);
+ assertThisArg(null, this);
+
+ // Throw an exception in the callback.
+ var sum = 0;
+ var count = 0;
+ var thrown = false;
+ try {
+ assertEq(arr.forEach((v) => {
+ count++;
+ sum += v;
+ if (v === 3) {
+ throw "forEach";
+ }
+ }), undefined)
+ } catch(e) {
+ assertEq(e, "forEach");
+ thrown = true;
+ }
+ assertEq(thrown, true);
+ assertEq(sum, 6);
+ assertEq(count, 3);
+
+ // There is no callback or callback is not a function.
+ assertThrowsInstanceOf(() => {
+ arr.forEach();
+ }, TypeError);
+ var invalidCallbacks = [undefined, null, 1, false, "", Symbol(), [], {}, /./];
+ invalidCallbacks.forEach(callback => {
+ assertThrowsInstanceOf(() => {
+ arr.forEach(callback);
+ }, TypeError);
+ })
+
+ // Callback is a generator.
+ arr.forEach(function*(){
+ throw "This line will not be executed";
+ });
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var forEach = newGlobal()[constructor.name].prototype.forEach;
+ var sum = 0;
+ forEach.call(new constructor([1, 2, 3]), v => {
+ sum += v;
+ });
+ assertEq(sum, 6);
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.forEach.call(invalidReceiver, () => true);
+ }, TypeError, "Assert that some fails if this value is not a TypedArray");
+ });
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/from_basics.js b/js/src/tests/ecma_6/TypedArray/from_basics.js
new file mode 100644
index 000000000..9f53feb72
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/from_basics.js
@@ -0,0 +1,42 @@
+for (var constructor of anyTypedArrayConstructors) {
+ // 'from' method is identical for all typed array constructors.
+ assertEq(anyTypedArrayConstructors[0].from === constructor.from, true);
+
+ // %TypedArray%.from copies arrays.
+ var src = new constructor([1, 2, 3]), copy = constructor.from(src);
+ assertEq(copy === src, false);
+ assertEq(copy instanceof constructor, true);
+ assertDeepEq(copy, src);
+
+ // Non-element properties are not copied.
+ var a = new constructor([0, 1]);
+ a.name = "lisa";
+ assertDeepEq(constructor.from(a), new constructor([0, 1]));
+
+ // %TypedArray%.from can copy non-iterable objects, if they're array-like.
+ src = {0: 0, 1: 1, length: 2};
+ copy = constructor.from(src);
+ assertEq(copy instanceof constructor, true);
+ assertDeepEq(copy, new constructor([0, 1]));
+
+ // Properties past the .length are not copied.
+ src = {0: "0", 1: "1", 2: "two", 9: "nine", name: "lisa", length: 2};
+ assertDeepEq(constructor.from(src), new constructor([0, 1]));
+
+ // If an object has neither an @@iterator method nor .length,
+ // then it's treated as zero-length.
+ assertDeepEq(constructor.from({}), new constructor());
+
+ // Primitives will be coerced to primitive wrapper first.
+ assertDeepEq(constructor.from(1), new constructor());
+ assertDeepEq(constructor.from("123"), new constructor([1, 2, 3]));
+ assertDeepEq(constructor.from(true), new constructor());
+ assertDeepEq(constructor.from(Symbol()), new constructor());
+
+ // Source object property order doesn't matter.
+ src = {length: 2, 1: "1", 0: "0"};
+ assertDeepEq(constructor.from(src), new constructor([0, 1]));
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/from_constructor.js b/js/src/tests/ecma_6/TypedArray/from_constructor.js
new file mode 100644
index 000000000..0b0773b85
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/from_constructor.js
@@ -0,0 +1,36 @@
+for (var constructor of anyTypedArrayConstructors) {
+ // Note %TypedArray%.from(iterable) calls 'this' with an argument whose value is
+ // `[...iterable].length`, while Array.from(iterable) doesn't pass any argument.
+ constructor.from.call(function(len){
+ assertEq(len, 3);
+ return new constructor(len);
+ }, Array(3));
+
+ // If the 'this' value passed to %TypedArray.from is not a constructor,
+ // then an exception is thrown, while Array.from will use Array as it's constructor.
+ var arr = [3, 4, 5];
+ var nonconstructors = [
+ {}, Math, Object.getPrototypeOf, undefined, 17,
+ () => ({}) // arrow functions are not constructors
+ ];
+ for (var v of nonconstructors) {
+ assertThrowsInstanceOf(() => {
+ constructor.from.call(v, arr);
+ }, TypeError);
+ }
+
+ // %TypedArray%.from does not get confused if global constructors for typed arrays
+ // are replaced with another constructor.
+ function NotArray(...rest) {
+ return new constructor(...rest);
+ }
+ var RealArray = constructor;
+ NotArray.from = constructor.from;
+ this[constructor.name] = NotArray;
+ assertEq(RealArray.from([1]) instanceof RealArray, true);
+ assertEq(NotArray.from([1]) instanceof RealArray, true);
+ this[constructor.name] = RealArray;
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/from_errors.js b/js/src/tests/ecma_6/TypedArray/from_errors.js
new file mode 100644
index 000000000..281b1b512
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/from_errors.js
@@ -0,0 +1,76 @@
+for (var constructor of anyTypedArrayConstructors) {
+ // %TypedArray%.from throws if the argument is undefined or null.
+ assertThrowsInstanceOf(() => constructor.from(), TypeError);
+ assertThrowsInstanceOf(() => constructor.from(undefined), TypeError);
+ assertThrowsInstanceOf(() => constructor.from(null), TypeError);
+
+ // Unlike Array.from, %TypedArray%.from doesn't get or set the length property.
+ function ObjectWithThrowingLengthGetterSetter(...rest) {
+ var ta = new constructor(...rest);
+ Object.defineProperty(ta, "length", {
+ configurable: true,
+ get() { throw new RangeError("getter!"); },
+ set() { throw new RangeError("setter!"); }
+ });
+ return ta;
+ }
+ ObjectWithThrowingLengthGetterSetter.from = constructor.from;
+ assertEq(ObjectWithThrowingLengthGetterSetter.from([123])[0], 123);
+
+ // %TypedArray%.from throws if mapfn is neither callable nor undefined.
+ assertThrowsInstanceOf(() => constructor.from([3, 4, 5], {}), TypeError);
+ assertThrowsInstanceOf(() => constructor.from([3, 4, 5], "also not a function"), TypeError);
+ assertThrowsInstanceOf(() => constructor.from([3, 4, 5], null), TypeError);
+
+ // Even if the function would not have been called.
+ assertThrowsInstanceOf(() => constructor.from([], JSON), TypeError);
+
+ // If mapfn is not undefined and not callable, the error happens before anything else.
+ // Before calling the constructor, before touching the arrayLike.
+ var log = "";
+ var obj;
+ function C(...rest) {
+ log += "C";
+ obj = new constructor(...rest);
+ return obj;
+ }
+ var p = new Proxy({}, {
+ has: function () { log += "1"; },
+ get: function () { log += "2"; },
+ getOwnPropertyDescriptor: function () { log += "3"; }
+ });
+ assertThrowsInstanceOf(() => constructor.from.call(C, p, {}), TypeError);
+ assertEq(log, "");
+
+ // If mapfn throws, the new object has already been created.
+ var arrayish = {
+ get length() { log += "l"; return 1; },
+ get 0() { log += "0"; return "q"; }
+ };
+ log = "";
+ var exc = {surprise: "ponies"};
+ assertThrowsValue(() => constructor.from.call(C, arrayish, () => { throw exc; }), exc);
+ assertEq(log, "lC0");
+ assertEq(obj instanceof constructor, true);
+
+ // It's a TypeError if the @@iterator property is a primitive (except null and undefined).
+ for (var primitive of ["foo", 17, Symbol(), true]) {
+ assertThrowsInstanceOf(() => constructor.from({[Symbol.iterator] : primitive}), TypeError);
+ }
+ assertDeepEq(constructor.from({[Symbol.iterator]: null}), new constructor());
+ assertDeepEq(constructor.from({[Symbol.iterator]: undefined}), new constructor());
+
+ // It's a TypeError if the iterator's .next() method returns a primitive.
+ for (var primitive of [undefined, null, "foo", 17, Symbol(), true]) {
+ assertThrowsInstanceOf(
+ () => constructor.from({
+ [Symbol.iterator]() {
+ return {next() { return primitive; }};
+ }
+ }),
+ TypeError);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/from_iterable.js b/js/src/tests/ecma_6/TypedArray/from_iterable.js
new file mode 100644
index 000000000..889c81589
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/from_iterable.js
@@ -0,0 +1,49 @@
+for (var constructor of anyTypedArrayConstructors) {
+ // %TypedArray%.from works on arguments objects.
+ (function () {
+ assertDeepEq(constructor.from(arguments), new constructor(["0", "1", undefined]));
+ })("0", "1", undefined);
+
+ // If an object has both .length and [@@iterator] properties, [@@iterator] is used.
+ var a = ['0', '1', '2', '3', '4'];
+ a[Symbol.iterator] = function* () {
+ for (var i = 5; i--; )
+ yield this[i];
+ };
+
+ var log = '';
+ function f(x) {
+ log += x;
+ return x + x;
+ }
+
+ var b = constructor.from(a, f);
+ assertDeepEq(b, new constructor(['44', '33', '22', '11', '00']));
+ assertEq(log, '43210');
+
+ // In fact, if [@@iterator] is present, .length isn't queried at all.
+ var pa = new Proxy(a, {
+ has: function (target, id) {
+ if (id === "length")
+ throw new Error(".length should not be queried (has)");
+ return id in target;
+ },
+ get: function (target, id) {
+ if (id === "length")
+ throw new Error(".length should not be queried (get)");
+ return target[id];
+ },
+ getOwnPropertyDescriptor: function (target, id) {
+ if (id === "length")
+ throw new Error(".length should not be queried (getOwnPropertyDescriptor)");
+ return Object.getOwnPropertyDescriptor(target, id)
+ }
+ });
+ log = "";
+ b = constructor.from(pa, f);
+ assertDeepEq(b, new constructor(['44', '33', '22', '11', '00']));
+ assertEq(log, '43210');
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/from_mapping.js b/js/src/tests/ecma_6/TypedArray/from_mapping.js
new file mode 100644
index 000000000..1c2481541
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/from_mapping.js
@@ -0,0 +1,45 @@
+for (var constructor of anyTypedArrayConstructors) {
+ // If the mapfn argument to %TypedArray%.from is undefined, don't map.
+ assertDeepEq(constructor.from([3, 4, 5], undefined), new constructor([3, 4, 5]));
+ assertDeepEq(constructor.from([4, 5, 6], undefined, Math), new constructor([4, 5, 6]));
+
+ // mapfn is called with two arguments: value and index.
+ var log = [];
+ function f(...args) {
+ log.push(args);
+ return log.length;
+ }
+ assertDeepEq(constructor.from(['a', 'e', 'i', 'o', 'u'], f), new constructor([1, 2, 3, 4, 5]));
+ assertDeepEq(log, [['a', 0], ['e', 1], ['i', 2], ['o', 3], ['u', 4]]);
+
+ // If the object to be copied is non-iterable, mapfn is still called with two
+ // arguments.
+ log = [];
+ assertDeepEq(constructor.from({0: "zero", 1: "one", length: 2}, f), new constructor([1, 2]));
+ assertDeepEq(log, [["zero", 0], ["one", 1]]);
+
+ // If the object to be copied is iterable and the constructor is not Array,
+ // mapfn is still called with two arguments.
+ log = [];
+ function C(...rest) {
+ return new constructor(...rest);
+ }
+ C.from = constructor.from;
+ var c = new C(2);
+ c[0] = 1;
+ c[1] = 2;
+ assertDeepEq(C.from(["zero", "one"], f), c);
+ assertDeepEq(log, [["zero", 0], ["one", 1]]);
+
+ // The mapfn is called even if the value to be mapped is undefined.
+ assertDeepEq(constructor.from([0, 1, , 3], String), new constructor(["0", "1", "undefined", "3"]));
+ var arraylike = {length: 4, "0": 0, "1": 1, "3": 3};
+ assertDeepEq(constructor.from(arraylike, String), new constructor(["0", "1", "undefined", "3"]));
+}
+
+// %TypedArray%.from(obj, map) is not exactly the same as %TypedArray%.from(obj).map(mapFn).
+assertDeepEq(Int8Array.from([150], v => v / 2), new Int8Array([75]));
+assertDeepEq(Int8Array.from([150]).map(v => v / 2), new Int8Array([-53]));
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/from_realms.js b/js/src/tests/ecma_6/TypedArray/from_realms.js
new file mode 100644
index 000000000..590589392
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/from_realms.js
@@ -0,0 +1,32 @@
+for (var constructor of anyTypedArrayConstructors) {
+ if (typeof newGlobal !== 'function')
+ break;
+
+ // G[constructor.name].from, where G is any global, produces an array whose prototype
+ // is G[constructor.name].prototype.
+ var g = newGlobal();
+ var ga = g[constructor.name].from([1, 2, 3]);
+ assertEq(ga instanceof g[constructor.name], true);
+
+ // %TypedArray%.from can be applied to a constructor from another realm.
+ var p = constructor.from.call(g[constructor.name], [1, 2, 3]);
+ assertEq(p instanceof g[constructor.name], true);
+ var q = g[constructor.name].from.call(constructor, [3, 4, 5]);
+ assertEq(q instanceof constructor, true);
+
+ // The default 'this' value received by a non-strict mapping function is
+ // that function's global, not %TypedArray%.from's global or the caller's global.
+ var h = newGlobal(), result = undefined;
+ h.mainGlobal = this;
+ h.eval("function f() { mainGlobal.result = this; }");
+ g[constructor.name].from.call(constructor, [5, 6, 7], h.f);
+ // (Give each global in the test a name, for better error messages. But use
+ // globalName, because window.name is complicated.)
+ this.globalName = "main";
+ g.globalName = "g";
+ h.globalName = "h";
+ assertEq(result.globalName, "h");
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/from_string.js b/js/src/tests/ecma_6/TypedArray/from_string.js
new file mode 100644
index 000000000..09a2c3671
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/from_string.js
@@ -0,0 +1,24 @@
+// %TypedArray%.from called on Array should also handle strings correctly.
+var from = Int8Array.from.bind(Uint32Array);
+var toCodePoint = s => s.codePointAt(0);
+
+// %TypedArray%.from on a string iterates over the string.
+assertEqArray(from("test string", toCodePoint),
+ ['t', 'e', 's', 't', ' ', 's', 't', 'r', 'i', 'n', 'g'].map(toCodePoint));
+
+// %TypedArray%.from on a string handles surrogate pairs correctly.
+var gclef = "\uD834\uDD1E"; // U+1D11E MUSICAL SYMBOL G CLEF
+assertEqArray(from(gclef, toCodePoint), [gclef].map(toCodePoint));
+assertEqArray(from(gclef + " G", toCodePoint), [gclef, " ", "G"].map(toCodePoint));
+
+// %TypedArray%.from on a string calls the @@iterator method.
+String.prototype[Symbol.iterator] = function* () { yield 1; yield 2; };
+assertEqArray(from("anything"), [1, 2]);
+
+// If the iterator method is deleted, Strings are still arraylike.
+delete String.prototype[Symbol.iterator];
+assertEqArray(from("works", toCodePoint), ['w', 'o', 'r', 'k', 's'].map(toCodePoint));
+assertEqArray(from(gclef, toCodePoint), ['\uD834', '\uDD1E'].map(toCodePoint));
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/from_surfaces.js b/js/src/tests/ecma_6/TypedArray/from_surfaces.js
new file mode 100644
index 000000000..ef1553637
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/from_surfaces.js
@@ -0,0 +1,12 @@
+for (var constructor of anyTypedArrayConstructors) {
+ // Check superficial features of %TypeArray%.from.
+ var desc = Object.getOwnPropertyDescriptor(constructor.__proto__, "from");
+ assertEq(desc.configurable, true);
+ assertEq(desc.enumerable, false);
+ assertEq(desc.writable, true);
+ assertEq(constructor.from.length, 1);
+ assertThrowsInstanceOf(() => new constructor.from(), TypeError); // not a constructor
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/from_this.js b/js/src/tests/ecma_6/TypedArray/from_this.js
new file mode 100644
index 000000000..95af053b8
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/from_this.js
@@ -0,0 +1,59 @@
+for (var constructor of anyTypedArrayConstructors) {
+ // The third argument to %TypedArray%.from is passed as the 'this' value to the
+ // mapping function.
+ var hits = 0, obj = {};
+ function f(x) {
+ assertEq(this, obj);
+ hits++;
+ }
+ constructor.from(["a", "b", "c"], f, obj);
+ assertEq(hits, 3);
+
+ // Without an argument, undefined is passed...
+ hits = 0;
+ function gs(x) {
+ "use strict";
+ assertEq(this, undefined);
+ hits++;
+ }
+ constructor.from("def", gs);
+ assertEq(hits, 3);
+
+ // ...and if the mapping function is non-strict, that means the global is
+ // passed.
+ var global = this;
+ hits = 0;
+ function g(x) {
+ assertEq(this, global);
+ hits++;
+ }
+ constructor.from("ghi", g);
+ assertEq(hits, 3);
+
+ // A primitive value can be passed.
+ for (var v of [0, "str", undefined]) {
+ hits = 0;
+ var mapfn = function h(x) {
+ "use strict";
+ assertEq(this, v);
+ hits++;
+ };
+ constructor.from("pq", mapfn, v);
+ assertEq(hits, 2);
+ }
+
+ // ...and if the mapping function is non-strict, primitive values will
+ // be wrapped to objects.
+ for (var v of [0, "str", true]) {
+ hits = 0;
+ var mapfn = function h(x) {
+ assertDeepEq(this, Object(v));
+ hits++;
+ };
+ constructor.from("pq", mapfn, v);
+ assertEq(hits, 2);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/getter-name.js b/js/src/tests/ecma_6/TypedArray/getter-name.js
new file mode 100644
index 000000000..47050e3c1
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/getter-name.js
@@ -0,0 +1,16 @@
+var BUGNUMBER = 1180290;
+var summary = 'TypedArray getters should have get prefix';
+
+print(BUGNUMBER + ": " + summary);
+
+let TypedArray = Object.getPrototypeOf(Float32Array.prototype).constructor;
+
+assertEq(Object.getOwnPropertyDescriptor(TypedArray, Symbol.species).get.name, "get [Symbol.species]");
+assertEq(Object.getOwnPropertyDescriptor(TypedArray.prototype, "buffer").get.name, "get buffer");
+assertEq(Object.getOwnPropertyDescriptor(TypedArray.prototype, "byteLength").get.name, "get byteLength");
+assertEq(Object.getOwnPropertyDescriptor(TypedArray.prototype, "byteOffset").get.name, "get byteOffset");
+assertEq(Object.getOwnPropertyDescriptor(TypedArray.prototype, "length").get.name, "get length");
+assertEq(Object.getOwnPropertyDescriptor(TypedArray.prototype, Symbol.toStringTag).get.name, "get [Symbol.toStringTag]");
+
+if (typeof reportCompare === 'function')
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/has-property-op.js b/js/src/tests/ecma_6/TypedArray/has-property-op.js
new file mode 100644
index 000000000..7ae70ef36
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/has-property-op.js
@@ -0,0 +1,22 @@
+for (var constructor of anyTypedArrayConstructors) {
+ var obj = new constructor(5);
+
+ for (var i = 0; i < obj.length; i++)
+ assertEq(i in obj, true);
+
+ for (var v of [20, 300, -1, 5, -10, Math.pow(2, 32) - 1, -Math.pow(2, 32)])
+ assertEq(v in obj, false);
+
+ // Don't inherit elements
+ obj.__proto__[50] = "hello";
+ assertEq(obj.__proto__[50], "hello");
+ assertEq(50 in obj, false);
+
+ // Do inherit normal properties
+ obj.__proto__.a = "world";
+ assertEq(obj.__proto__.a, "world");
+ assertEq("a" in obj, true);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/includes.js b/js/src/tests/ecma_6/TypedArray/includes.js
new file mode 100644
index 000000000..bcc50a257
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/includes.js
@@ -0,0 +1,40 @@
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.prototype.includes.length, 1);
+
+ assertEq(new constructor([1, 2, 3]).includes(1), true);
+ assertEq(new constructor([1, 2, 3]).includes(2), true);
+ assertEq(new constructor([1, 2, 3]).includes(3), true);
+ assertEq(new constructor([1, 2, 3]).includes(2, 1), true);
+ assertEq(new constructor([1, 2, 3]).includes(2, -2), true);
+ assertEq(new constructor([1, 2, 3]).includes(2, -100), true);
+
+ assertEq(new constructor([1, 2, 3]).includes("2"), false);
+ assertEq(new constructor([1, 2, 3]).includes(2, 2), false);
+ assertEq(new constructor([1, 2, 3]).includes(2, -1), false);
+ assertEq(new constructor([1, 2, 3]).includes(2, 100), false);
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var includes = newGlobal()[constructor.name].prototype.includes;
+ assertEq(includes.call(new constructor([1, 2, 3]), 2), true);
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.includes.call(invalidReceiver);
+ }, TypeError, "Assert that reverse fails if this value is not a TypedArray");
+ });
+
+ // Test that the length getter is never called.
+ assertEq(Object.defineProperty(new constructor([1, 2, 3]), "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ }).includes(2), true);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/indexOf-and-lastIndexOf.js b/js/src/tests/ecma_6/TypedArray/indexOf-and-lastIndexOf.js
new file mode 100644
index 000000000..33c775485
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/indexOf-and-lastIndexOf.js
@@ -0,0 +1,117 @@
+// Tests for TypedArray#indexOf.
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.prototype.indexOf.length, 1);
+
+ // Works with one argument.
+ assertEq(new constructor([1, 2, 3, 4, 5]).indexOf(0), -1);
+ assertEq(new constructor([1, 2, 3, 4, 5]).indexOf(1), 0);
+ assertEq(new constructor([1, 2, 3, 4, 5]).indexOf(5), 4);
+ assertEq(new constructor([1, 2, 3, 4, 5]).indexOf(6), -1);
+ assertEq(new constructor([1, 2, 1, 2, 1]).indexOf(1), 0);
+
+ if (isFloatConstructor(constructor)) {
+ assertEq(new constructor([NaN, 0, -0]).indexOf(NaN), -1);
+ assertEq(new constructor([NaN, 0, -0]).indexOf(0), 1);
+ assertEq(new constructor([NaN, 0, -0]).indexOf(-0), 1);
+ } else {
+ // [NaN, 0, -0] will be coerced to [0, 0, 0]
+ assertEq(new constructor([NaN, 0, -0]).indexOf(NaN), -1);
+ assertEq(new constructor([NaN, 0, -0]).indexOf(0), 0);
+ assertEq(new constructor([NaN, 0, -0]).indexOf(-0), 0);
+ }
+
+ // Works with two arguments.
+ assertEq(new constructor([1, 2, 3, 4, 5]).indexOf(1, 1), -1);
+ assertEq(new constructor([1, 2, 3, 4, 5]).indexOf(1, -100), 0);
+ assertEq(new constructor([1, 2, 3, 4, 5]).indexOf(3, 100), -1);
+ assertEq(new constructor([1, 2, 3, 4, 5]).indexOf(5, -1), 4);
+ assertEq(new constructor([1, 2, 1, 2, 1]).indexOf(1, 2), 2);
+ assertEq(new constructor([1, 2, 1, 2, 1]).indexOf(1, -2), 4);
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.indexOf.call(invalidReceiver);
+ }, TypeError, "Assert that indexOf fails if this value is not a TypedArray");
+ });
+
+ // test that this.length is never called
+ assertEq(Object.defineProperty(new constructor([0, 1, 2, 3, 5]), "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ }).indexOf(1), 1);
+}
+
+for (let constructor of anyTypedArrayConstructors.filter(isFloatConstructor)) {
+ if (constructor.BYTES_PER_ELEMENT === 4) {
+ assertEq(new constructor([.1, .2, .3]).indexOf(.2), -1);
+ assertEq(new constructor([.1, .2, .3]).indexOf(Math.fround(.2)), 1);
+ } else {
+ assertEq(constructor.BYTES_PER_ELEMENT, 8);
+ assertEq(new constructor([.1, .2, .3]).indexOf(.2), 1);
+ }
+}
+
+// Tests for TypedArray#lastIndexOf.
+for (var constructor of anyTypedArrayConstructors) {
+
+ assertEq(constructor.prototype.lastIndexOf.length, 1);
+
+ // Works with one arguments.
+ assertEq(new constructor([1, 2, 3, 4, 5]).lastIndexOf(0), -1);
+ assertEq(new constructor([1, 2, 3, 4, 5]).lastIndexOf(1), 0);
+ assertEq(new constructor([1, 2, 3, 4, 5]).lastIndexOf(5), 4);
+ assertEq(new constructor([1, 2, 3, 4, 5]).lastIndexOf(6), -1);
+ assertEq(new constructor([1, 2, 1, 2, 1]).lastIndexOf(1), 4);
+
+ if (isFloatConstructor(constructor)) {
+ assertEq(new constructor([NaN, 0, -0]).lastIndexOf(NaN), -1);
+ assertEq(new constructor([NaN, 0, -0]).lastIndexOf(0), 2);
+ assertEq(new constructor([NaN, 0, -0]).lastIndexOf(-0), 2);
+ } else {
+ // [NaN, 0, -0] will be coerced to [0, 0, 0].
+ assertEq(new constructor([NaN, 0, -0]).lastIndexOf(NaN), -1);
+ assertEq(new constructor([NaN, 0, -0]).lastIndexOf(0), 2);
+ assertEq(new constructor([NaN, 0, -0]).lastIndexOf(-0), 2);
+ }
+
+ // Works with two arguments.
+ assertEq(new constructor([1, 2, 3, 4, 5]).lastIndexOf(1, 1), 0);
+ assertEq(new constructor([1, 2, 3, 4, 5]).lastIndexOf(1, -100), -1);
+ assertEq(new constructor([1, 2, 3, 4, 5]).lastIndexOf(3, 100), 2);
+ assertEq(new constructor([1, 2, 3, 4, 5]).lastIndexOf(5, -1), 4);
+ assertEq(new constructor([1, 2, 1, 2, 1]).lastIndexOf(1, 2), 2);
+ assertEq(new constructor([1, 2, 1, 2, 1]).lastIndexOf(1, -2), 2);
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.lastIndexOf.call(invalidReceiver);
+ }, TypeError, "Assert that lastIndexOf fails if this value is not a TypedArray");
+ });
+
+ // Test that the length getter is never called.
+ assertEq(Object.defineProperty(new constructor([0, 1, 2, 3, 5]), "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ }).lastIndexOf(1), 1);
+}
+
+for (let constructor of anyTypedArrayConstructors.filter(isFloatConstructor)) {
+ if (constructor.BYTES_PER_ELEMENT === 4) {
+ assertEq(new constructor([.1, .2, .3]).lastIndexOf(.2), -1);
+ assertEq(new constructor([.1, .2, .3]).lastIndexOf(Math.fround(.2)), 1);
+ } else {
+ assertEq(constructor.BYTES_PER_ELEMENT, 8);
+ assertEq(new constructor([.1, .2, .3]).lastIndexOf(.2), 1);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/indexOf-never-returns-negative-zero.js b/js/src/tests/ecma_6/TypedArray/indexOf-never-returns-negative-zero.js
new file mode 100644
index 000000000..72f834215
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/indexOf-never-returns-negative-zero.js
@@ -0,0 +1,7 @@
+var ta = new Uint8Array(1);
+ta[0] = 17;
+
+assertEq(ta.indexOf(17, -0), +0);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/iterator.js b/js/src/tests/ecma_6/TypedArray/iterator.js
new file mode 100644
index 000000000..3f943aa70
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/iterator.js
@@ -0,0 +1,42 @@
+// Ensure that we're using [[ArrayLength]] to determine the number of
+// values to produce instead of the length property.
+
+function testIterationCount(iterator, expectedLength) {
+ for (let i = 0; i < expectedLength; i++)
+ assertEq(iterator.next().done, false);
+ assertEq(iterator.next().done, true);
+}
+
+let i8Array = new Int8Array(4);
+Object.defineProperty(i8Array, "length", {value: 0});
+let i8Iterator = i8Array[Symbol.iterator]();
+testIterationCount(i8Iterator, 4);
+
+// Veryify that the length property isn't even touched
+i8Array = new Int8Array();
+Object.defineProperty(i8Array, "length", {
+ get() {
+ throw TypeError;
+ }
+});
+i8Iterator = i8Array[Symbol.iterator]();
+testIterationCount(i8Iterator, 0);
+
+// Verify that it works for set as well
+i8Array = new Uint8Array(1);
+// Try setting a high length which would trigger failure
+Object.defineProperty(i8Array, "length", {value: 15});
+// Works if the fake length is ignored
+(new Uint8Array(4)).set(i8Array, 3);
+
+// Ensure that it works across globals
+let g2 = newGlobal();
+
+i8Array = new Int8Array(8);
+Object.defineProperty(i8Array, "length", {value: 0});
+let iterator = i8Array[Symbol.iterator]();
+iterator.next = g2.Array.prototype[Symbol.iterator]().next;
+testIterationCount(iterator, 8);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/join.js b/js/src/tests/ecma_6/TypedArray/join.js
new file mode 100644
index 000000000..0e797320f
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/join.js
@@ -0,0 +1,48 @@
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.prototype.join.length, 1);
+
+ assertEq(new constructor([1, 2, 3]).join(), "1,2,3");
+ assertEq(new constructor([1, 2, 3]).join(undefined), "1,2,3");
+ assertEq(new constructor([1, 2, 3]).join(null), "1null2null3");
+ assertEq(new constructor([1, 2, 3]).join(""), "123");
+ assertEq(new constructor([1, 2, 3]).join("+"), "1+2+3");
+ assertEq(new constructor([1, 2, 3]).join(.1), "10.120.13");
+ assertEq(new constructor([1, 2, 3]).join({toString(){return "foo"}}), "1foo2foo3");
+ assertEq(new constructor([1]).join("-"), "1");
+ assertEq(new constructor().join(), "");
+ assertEq(new constructor().join("*"), "");
+ assertEq(new constructor(1).join(), "0");
+ assertEq(new constructor(3).join(), "0,0,0");
+
+ assertThrowsInstanceOf(() => new constructor().join({toString(){throw new TypeError}}), TypeError);
+ assertThrowsInstanceOf(() => new constructor().join(Symbol()), TypeError);
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var join = newGlobal()[constructor.name].prototype.join;
+ assertEq(join.call(new constructor([1, 2, 3]), "\t"), "1\t2\t3");
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.join.call(invalidReceiver);
+ }, TypeError, "Assert that join fails if this value is not a TypedArray");
+ });
+
+ // Test that the length getter is never called.
+ assertEq(Object.defineProperty(new constructor([1, 2, 3]), "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ }).join("\0"), "1\0002\0003");
+}
+
+for (let constructor of anyTypedArrayConstructors.filter(isFloatConstructor)) {
+ assertDeepEq(new constructor([null, , NaN]).join(), "0,NaN,NaN");
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/keys.js b/js/src/tests/ecma_6/TypedArray/keys.js
new file mode 100644
index 000000000..88477cd75
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/keys.js
@@ -0,0 +1,36 @@
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.prototype.keys.length, 0);
+ assertEq(constructor.prototype.keys.name, "keys");
+
+ assertDeepEq([...new constructor(0).keys()], []);
+ assertDeepEq([...new constructor(1).keys()], [0]);
+ assertDeepEq([...new constructor(2).keys()], [0, 1]);
+ assertDeepEq([...new constructor([15]).keys()], [0]);
+
+ var arr = new constructor([1, 2, 3]);
+ var iterator = arr.keys();
+ assertDeepEq(iterator.next(), {value: 0, done: false});
+ assertDeepEq(iterator.next(), {value: 1, done: false});
+ assertDeepEq(iterator.next(), {value: 2, done: false});
+ assertDeepEq(iterator.next(), {value: undefined, done: true});
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var keys = newGlobal()[constructor.name].prototype.keys;
+ assertDeepEq([...keys.call(new constructor(2))], [0, 1]);
+ arr = new (newGlobal()[constructor.name])(2);
+ assertEq([...constructor.prototype.keys.call(arr)].toString(), "0,1");
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.keys.call(invalidReceiver);
+ }, TypeError, "Assert that keys fails if this value is not a TypedArray");
+ });
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/lastIndexOf-never-returns-negative-zero.js b/js/src/tests/ecma_6/TypedArray/lastIndexOf-never-returns-negative-zero.js
new file mode 100644
index 000000000..bffc05af7
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/lastIndexOf-never-returns-negative-zero.js
@@ -0,0 +1,7 @@
+var ta = new Uint8Array(1);
+ta[0] = 17;
+
+assertEq(ta.lastIndexOf(17, -0), +0);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/map-and-filter.js b/js/src/tests/ecma_6/TypedArray/map-and-filter.js
new file mode 100644
index 000000000..0d86fc02b
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/map-and-filter.js
@@ -0,0 +1,274 @@
+// Tests for TypedArray#map.
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.prototype.map.length, 1);
+
+ // Basic tests.
+ assertDeepEq(new constructor([1, 3, 5]).map(v => v * 2), new constructor([2,6,10]));
+ assertDeepEq(new constructor([-1, 13, 5]).map(v => v - 2), new constructor([-3, 11, 3]));
+ assertDeepEq(new constructor(10).map(v => v), new constructor(10));
+ assertDeepEq(new constructor().map(v => v + 1), new constructor);
+ assertDeepEq(new constructor([1,2,3]).map(v => v), new constructor([1,2,3]));
+
+ var arr = new constructor([1, 2, 3, 4, 5]);
+ var sum = 0;
+ var count = 0;
+ assertDeepEq(arr.map((v, k, o) => {
+ count++;
+ sum += v;
+ assertEq(k, v - 1);
+ assertEq(o, arr);
+ return v;
+ }), arr);
+ assertEq(sum, 15);
+ assertEq(count, 5);
+
+ // Test that changing elements that have been visited does not affect the result.
+ var changeArr = new constructor([1,2,3,4,5]);
+ assertDeepEq(arr.map((v,k) => {
+ changeArr[k] = v + 1;
+ return v;
+ }), new constructor([1,2,3,4,5]));
+
+ // Tests for `thisArg` argument.
+ function assertThisArg(thisArg, thisValue) {
+ // In sloppy mode, `this` could be global object or a wrapper of `thisArg`.
+ assertDeepEq(arr.map(function(v) {
+ assertDeepEq(this, thisValue);
+ return v;
+ }, thisArg), arr);
+
+ // In strict mode, `this` strictly equals `thisArg`.
+ assertDeepEq(arr.map(function(v) {
+ "use strict";
+ assertDeepEq(this, thisArg);
+ return v;
+ }, thisArg), arr);
+
+ // Passing `thisArg` has no effect if callback is an arrow function.
+ var self = this;
+ assertDeepEq(arr.map((v) => {
+ assertEq(this, self);
+ return v;
+ }, thisArg), arr);
+ }
+ assertThisArg([1, 2, 3], [1, 2, 3]);
+ assertThisArg(Object, Object);
+ assertThisArg(1, Object(1));
+ assertThisArg("1", Object("1"));
+ assertThisArg(false, Object(false));
+ assertThisArg(undefined, this);
+ assertThisArg(null, this);
+
+ // Throw an exception in the callback.
+ var sum = 0;
+ var count = 0;
+ var thrown = false;
+ try {
+ arr.map((v, k, o) => {
+ count++;
+ sum += v;
+ assertEq(k, v - 1);
+ assertEq(o, arr);
+ if (v === 3) {
+ throw "map";
+ }
+ return v;
+ })
+ } catch(e) {
+ assertEq(e, "map");
+ thrown = true;
+ }
+ assertEq(thrown, true);
+ assertEq(sum, 6);
+ assertEq(count, 3);
+
+ // There is no callback or callback is not a function.
+ assertThrowsInstanceOf(() => {
+ arr.map();
+ }, TypeError);
+ var invalidCallbacks = [undefined, null, 1, false, "", Symbol(), [], {}, /./];
+ invalidCallbacks.forEach(callback => {
+ assertThrowsInstanceOf(() => {
+ arr.map(callback);
+ }, TypeError);
+ })
+
+ // Callback is a generator.
+ arr.map(function*(){
+ throw "This line will not be executed";
+ });
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var map = newGlobal()[constructor.name].prototype.map;
+ var sum = 0;
+ assertDeepEq(map.call(new constructor([1, 2, 3]), v => sum += v), new constructor([1,3,6]));
+ assertEq(sum, 6);
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.filter.call(invalidReceiver, () => true);
+ }, TypeError, "Assert that map fails if this value is not a TypedArray");
+ });
+
+ // Test that the length getter is never called.
+ assertDeepEq(Object.defineProperty(new constructor([1, 2, 3]), "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ }).map((b) => b), new constructor([1,2,3]));
+}
+
+// Test For TypedArray#filter.
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.prototype.filter.length, 1)
+
+ // Basic tests.
+ assertDeepEq(new constructor([1,2,3]).filter(x => x == x), new constructor([1,2,3]));
+ assertDeepEq(new constructor([1,2,3,4]).filter(x => x % 2 == 0), new constructor([2,4]));
+ assertDeepEq(new constructor([1,2,3,4,5]).filter(x => x < 4), new constructor([1,2,3]));
+ assertDeepEq(new constructor().filter(x => x * 2 == 4), new constructor());
+
+ var arr = new constructor([1,2,3,4,5]);
+ var sum = 0;
+ var count = 0;
+ assertDeepEq(arr.filter((v, k, o) => {
+ count++;
+ sum += v;
+ assertEq(k, v - 1);
+ assertEq(o, arr);
+ return (v < 4);
+ }), new constructor([1,2,3]));
+ assertEq(sum, 15);
+ assertEq(count, 5);
+
+ // Test that changing elements that have been visited does not affect the result.
+ var changeArr = new constructor([1,2,3,4,5]);
+ assertDeepEq(arr.filter((v,k) => {
+ changeArr[k] = v + 1;
+ return true;
+ }), new constructor([1,2,3,4,5]));
+
+ // Tests for `thisArg` argument.
+ function assertThisArg(thisArg, thisValue) {
+ // In sloppy mode, `this` could be global object or a wrapper of `thisArg`.
+ assertDeepEq(arr.filter(function(v) {
+ assertDeepEq(this, thisValue);
+ return v;
+ }, thisArg), arr);
+
+ // In strict mode, `this` strictly equals `thisArg`.
+ assertDeepEq(arr.filter(function(v) {
+ "use strict";
+ assertDeepEq(this, thisArg);
+ return v;
+ }, thisArg), arr);
+
+ // Passing `thisArg` has no effect if callback is an arrow function.
+ var self = this;
+ assertDeepEq(arr.filter((v) => {
+ assertEq(this, self);
+ return v;
+ }, thisArg), arr);
+ }
+ assertThisArg([1, 2, 3], [1, 2, 3]);
+ assertThisArg(Object, Object);
+ assertThisArg(1, Object(1));
+ assertThisArg("1", Object("1"));
+ assertThisArg(false, Object(false));
+ assertThisArg(undefined, this);
+ assertThisArg(null, this);
+
+ // Throw an exception in the callback.
+ var sum = 0;
+ var count = 0;
+ var thrown = false;
+ try {
+ arr.filter((v, k, o) => {
+ count++;
+ sum += v;
+ assertEq(k, v - 1);
+ assertEq(o, arr);
+ if (v === 3) {
+ throw "filter";
+ }
+ return v;
+ })
+ } catch(e) {
+ assertEq(e, "filter");
+ thrown = true;
+ }
+ assertEq(thrown, true);
+ assertEq(sum, 6);
+ assertEq(count, 3);
+
+ // There is no callback or callback is not a function.
+ assertThrowsInstanceOf(() => {
+ arr.filter();
+ }, TypeError);
+ var invalidCallbacks = [undefined, null, 1, false, "", Symbol(), [], {}, /./];
+ invalidCallbacks.forEach(callback => {
+ assertThrowsInstanceOf(() => {
+ arr.filter(callback);
+ }, TypeError);
+ })
+
+ // Callback is a generator.
+ arr.filter(function*(){
+ throw "This line will not be executed";
+ });
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var filter = newGlobal()[constructor.name].prototype.filter;
+ var sum = 0;
+ assertDeepEq(filter.call(new constructor([1, 2, 3]), v => {sum += v; return true}),
+ new constructor([1,2,3]));
+ assertEq(sum, 6);
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.filter.call(invalidReceiver, () => true);
+ }, TypeError, "Assert that filter fails if this value is not a TypedArray");
+ });
+
+ // Test that the length getter is never called.
+ assertDeepEq(Object.defineProperty(new constructor([1, 2, 3]), "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ }).filter((b) => true), new constructor([1,2,3]));
+}
+
+// Test that changing Array.prototype[Symbol.iterator] does not affect the
+// behaviour of filter. See https://bugzilla.mozilla.org/show_bug.cgi?id=1121936#c18
+// for more details.
+
+var arr = new Uint16Array([1,2,3]);
+
+// save
+var old = Array.prototype[Symbol.iterator];
+
+Array.prototype[Symbol.iterator] = () => { throw new Error("unreachable"); };
+assertDeepEq(arr.filter(v => true), arr);
+
+// restore
+Array.prototype[Symbol.iterator] = old;
+
+// Test that defining accessors on Array.prototype doesn't affect the behaviour
+// of filter. See https://bugzilla.mozilla.org/show_bug.cgi?id=1121936#c18
+// for more details.
+Object.defineProperty(Array.prototype, 0, {configurable: true, get: function() { return 1; }, set: function() { this.b = 1; }});
+assertDeepEq(new Uint16Array([1,2,3]).filter(v => true), new Uint16Array([1,2,3]));
+delete Array.prototype[0];
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/map-species.js b/js/src/tests/ecma_6/TypedArray/map-species.js
new file mode 100644
index 000000000..8353d914b
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/map-species.js
@@ -0,0 +1,56 @@
+function test(constructor, constructor2, from=[1, 2, 3, 4, 5], to=[2, 4, 6, 8, 10]) {
+ var modifiedConstructor = new constructor(from);
+ modifiedConstructor.constructor = constructor2;
+ assertDeepEq(modifiedConstructor.map(x => x * 2), new constructor2(to));
+ var modifiedSpecies = new constructor(from);
+ modifiedSpecies.constructor = { [Symbol.species]: constructor2 };
+ assertDeepEq(modifiedSpecies.map(x => x * 2), new constructor2(to));
+}
+
+// same size, same sign
+
+test(Int8Array, Uint8Array);
+test(Int8Array, Uint8ClampedArray);
+
+test(Uint8Array, Int8Array);
+test(Uint8Array, Uint8ClampedArray);
+
+test(Uint8ClampedArray, Int8Array);
+test(Uint8ClampedArray, Uint8Array);
+
+test(Int16Array, Uint16Array);
+test(Uint16Array, Int16Array);
+
+test(Int32Array, Uint32Array);
+test(Uint32Array, Int32Array);
+
+// same size, different sign
+
+test(Int8Array, Uint8Array, [-1, -2, -3, -4, -5], [0xFE, 0xFC, 0xFA, 0xF8, 0xF6]);
+test(Int8Array, Uint8ClampedArray, [-1, -2, -3, -4, -5], [0, 0, 0, 0, 0]);
+
+test(Uint8Array, Int8Array, [0xFF, 0xFE, 0xFD, 0xFC, 0xFB], [-2, -4, -6, -8, -10]);
+test(Uint8ClampedArray, Int8Array, [0xFF, 0xFE, 0xFD, 0xFC, 0xFB], [-2, -4, -6, -8, -10]);
+
+test(Int16Array, Uint16Array, [-1, -2, -3, -4, -5], [0xFFFE, 0xFFFC, 0xFFFA, 0xFFF8, 0xFFF6]);
+test(Uint16Array, Int16Array, [0xFFFF, 0xFFFE, 0xFFFD, 0xFFFC, 0xFFFB], [-2, -4, -6, -8, -10]);
+
+test(Int32Array, Uint32Array, [-1, -2, -3, -4, -5], [0xFFFFFFFE, 0xFFFFFFFC, 0xFFFFFFFA, 0xFFFFFFF8, 0xFFFFFFF6]);
+test(Uint32Array, Int32Array, [0xFFFFFFFF, 0xFFFFFFFE, 0xFFFFFFFD, 0xFFFFFFFC, 0xFFFFFFFB], [-2, -4, -6, -8, -10]);
+
+// different size
+
+test(Uint8Array, Uint16Array);
+test(Uint16Array, Uint8Array);
+
+test(Uint8Array, Uint32Array);
+test(Uint32Array, Uint8Array);
+
+test(Uint16Array, Uint32Array);
+test(Uint32Array, Uint16Array);
+
+test(Float32Array, Float64Array);
+test(Float64Array, Float32Array);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/object-defineproperty.js b/js/src/tests/ecma_6/TypedArray/object-defineproperty.js
new file mode 100644
index 000000000..1f25f6552
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/object-defineproperty.js
@@ -0,0 +1,68 @@
+var obj = new Int32Array(2);
+obj[0] = 100;
+
+var throws = [
+ // Disallow accessors
+ {get: undefined},
+ {set: undefined},
+ {get: undefined, set: undefined},
+ {get: function() {}},
+ {set: function() {}},
+ {get: function() {}, set: function() {}},
+
+ {configurable: true},
+ {enumerable: false},
+ {writable: false},
+
+ {configurable: true, writable: true},
+ {enumerable: false, configurable: false},
+
+ {configurable: true, value: 15}
+];
+
+for (var desc of throws) {
+ assertThrowsInstanceOf(function() { Object.defineProperty(obj, 0, desc); }, TypeError);
+ assertThrowsInstanceOf(function() { Object.defineProperties(obj, {0: desc}); }, TypeError);
+}
+
+Object.defineProperty(obj, 0, {});
+Object.defineProperty(obj, 0, {configurable: false});
+Object.defineProperty(obj, 0, {enumerable: true});
+Object.defineProperty(obj, 0, {writable: true});
+
+assertEq(obj[0], 100);
+
+Object.defineProperty(obj, 0, {configurable: false, value: 15});
+assertEq(obj[0], 15);
+Object.defineProperty(obj, 0, {enumerable: true, value: 16});
+assertEq(obj[0], 16);
+Object.defineProperty(obj, 0, {writable: true, value: 17});
+assertEq(obj[0], 17);
+Object.defineProperty(obj, 0, {value: 18});
+assertEq(obj[0], 18);
+
+var desc = Object.getOwnPropertyDescriptor(obj, 0);
+assertEq(desc.configurable, false);
+assertEq(desc.enumerable, true);
+assertEq(desc.writable, true);
+assertEq(desc.value, 18);
+assertEq('get' in desc, false);
+assertEq('set' in desc, false);
+
+Object.defineProperties(obj, {0: {value: 20}, 1: {value: 42}});
+assertEq(obj[0], 20);
+assertEq(obj[1], 42);
+
+anyTypedArrayConstructors.forEach(constructor => {
+ var obj = new constructor(4);
+ obj[0] = 100;
+ obj[1] = 200;
+
+ for (var v of [20, 300, -10, Math.pow(2, 32), -Math.pow(2, 32), NaN]) {
+ Object.defineProperty(obj, 0, {value: v});
+ obj[1] = v;
+ assertEq(obj[0], obj[1]);
+ }
+});
+
+reportCompare(true, true, "test");
diff --git a/js/src/tests/ecma_6/TypedArray/of.js b/js/src/tests/ecma_6/TypedArray/of.js
new file mode 100644
index 000000000..fffc06325
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/of.js
@@ -0,0 +1,92 @@
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.of.length, 0);
+
+ assertDeepEq(Object.getOwnPropertyDescriptor(constructor.__proto__, "of"), {
+ value: constructor.of,
+ writable: true,
+ enumerable: false,
+ configurable: true
+ });
+
+ // Basic tests.
+ assertEq(constructor.of().constructor, constructor);
+ assertEq(constructor.of() instanceof constructor, true);
+ assertDeepEq(constructor.of(10), new constructor([10]));
+ assertDeepEq(constructor.of(1, 2, 3), new constructor([1, 2, 3]));
+ assertDeepEq(constructor.of("1", "2", "3"), new constructor([1, 2, 3]));
+
+ // This method can't be transplanted to other constructors.
+ assertThrows(() => constructor.of.call(Array), TypeError);
+ assertThrows(() => constructor.of.call(Array, 1, 2, 3), TypeError);
+
+ var hits = 0;
+ assertDeepEq(constructor.of.call(function(len) {
+ assertEq(arguments.length, 1);
+ assertEq(len, 3);
+ hits++;
+ return new constructor(len);
+ }, 10, 20, 30), new constructor([10, 20, 30]));
+ assertEq(hits, 1);
+
+ // Behavior across compartments.
+ if (typeof newGlobal === "function") {
+ var newC = newGlobal()[constructor.name];
+ assertEq(newC.of() instanceof newC, true);
+ assertEq(newC.of() instanceof constructor, false);
+ assertEq(newC.of.call(constructor) instanceof constructor, true);
+ }
+
+ // Throws if `this` isn't a constructor.
+ var invalidConstructors = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ constructor.of, () => {}];
+ invalidConstructors.forEach(C => {
+ assertThrowsInstanceOf(() => {
+ constructor.of.call(C);
+ }, TypeError);
+ });
+
+ // Throw if `this` is a method definition or a getter/setter function.
+ assertThrowsInstanceOf(() => {
+ constructor.of.call({method() {}}.method);
+ }, TypeError);
+ assertThrowsInstanceOf(() => {
+ constructor.of.call(Object.getOwnPropertyDescriptor({get getter() {}}, "getter").get);
+ }, TypeError);
+
+ // Generators are not legal constructors.
+ assertThrowsInstanceOf(() => {
+ constructor.of.call(function*(len) {
+ return len;
+ }, "a")
+ }, TypeError);
+
+ // An exception might be thrown in a strict assignment to the new object's indexed properties.
+ assertThrowsInstanceOf(() => {
+ constructor.of.call(function() {
+ return {get 0() {}};
+ }, "a");
+ }, TypeError);
+
+ assertThrowsInstanceOf(() => {
+ constructor.of.call(function() {
+ return Object("1");
+ }, "a");
+ }, TypeError);
+
+ assertThrowsInstanceOf(() => {
+ constructor.of.call(function() {
+ return Object.create({
+ set 0(v) {
+ throw new TypeError;
+ }
+ });
+ }, "a");
+ }, TypeError);
+}
+
+for (let constructor of anyTypedArrayConstructors.filter(isFloatConstructor)) {
+ assertDeepEq(constructor.of(0.1, null, undefined, NaN), new constructor([0.1, 0, NaN, NaN]));
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/prototype-constructor-identity.js b/js/src/tests/ecma_6/TypedArray/prototype-constructor-identity.js
new file mode 100644
index 000000000..10324f572
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/prototype-constructor-identity.js
@@ -0,0 +1,55 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var gTestfile = 'prototype-constructor-identity.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 896116;
+var summary =
+ "Typed array prototypes/constructors should be largely empty, inheriting "
+ "most functionality from %TypedArray% and %TypedArray%.prototype";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var TypedArray = Object.getPrototypeOf(Int8Array);
+
+assertEq(TypedArray !== Function.prototype, true,
+ "%TypedArray% should be in constructors' [[Prototype]] chains");
+assertEq(Object.getPrototypeOf(TypedArray), Function.prototype,
+ "%TypedArray%.prototype should inherit from Function.prototype");
+
+assertEq(TypedArray.prototype.constructor, TypedArray,
+ "bad %TypedArray%.prototype.constructor");
+
+// Check a few different functions we implement are here, as a sanity check.
+var typedArrayProps = Object.getOwnPropertyNames(TypedArray.prototype);
+assertEq(typedArrayProps.indexOf("copyWithin") >= 0, true);
+assertEq(typedArrayProps.indexOf("subarray") >= 0, true);
+assertEq(typedArrayProps.indexOf("set") >= 0, true);
+
+anyTypedArrayConstructors.forEach(function(ctor) {
+ assertEq(Object.getPrototypeOf(ctor), TypedArray);
+
+ var proto = ctor.prototype;
+
+ // Inherited functions aren't present.
+ var props = Object.getOwnPropertyNames(proto).sort();
+ assertEq(props[0], "BYTES_PER_ELEMENT");
+ assertEq(props[1], "constructor");
+ assertEq(props.length, 2);
+
+ // The inheritance chain should be set up properly.
+ assertEq(Object.getPrototypeOf(proto), TypedArray.prototype,
+ "prototype should inherit from %TypedArray%.prototype");
+});
+
+/******************************************************************************/
+
+reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/TypedArray/reduce-and-reduceRight.js b/js/src/tests/ecma_6/TypedArray/reduce-and-reduceRight.js
new file mode 100644
index 000000000..21a7d99e9
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/reduce-and-reduceRight.js
@@ -0,0 +1,188 @@
+// Tests for TypedArray#reduce.
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.prototype.reduce.length, 1);
+
+ // Basic tests.
+ var arr = new constructor([1, 2, 3, 4, 5]);
+
+ assertEq(arr.reduce((previous, current) => previous + current), 15);
+ assertEq(arr.reduce((previous, current) => current - previous), 3);
+
+ var count = 0;
+ var sum = 0;
+ assertEq(arr.reduce((previous, current, index, array) => {
+ count++;
+ sum += current;
+ assertEq(current - 1, index);
+ assertEq(current, arr[index]);
+ assertEq(array, arr);
+ return previous * current;
+ }), 120);
+ assertEq(count, 4);
+ assertEq(sum, 14);
+
+ // Tests for `initialValue` argument.
+ assertEq(arr.reduce((previous, current) => previous + current, -15), 0);
+ assertEq(arr.reduce((previous, current) => previous + current, ""), "12345");
+ assertDeepEq(arr.reduce((previous, current) => previous.concat(current), []), [1, 2, 3, 4, 5]);
+
+ // Tests for `this` value.
+ var global = this;
+ arr.reduce(function(){
+ assertEq(this, global);
+ });
+ arr.reduce(function(){
+ "use strict";
+ assertEq(this, undefined);
+ });
+ arr.reduce(() => assertEq(this, global));
+
+ // Throw an exception in the callback.
+ var count = 0;
+ var sum = 0;
+ assertThrowsInstanceOf(() => {
+ arr.reduce((previous, current, index, array) => {
+ count++;
+ sum += current;
+ if (index === 3) {
+ throw TypeError("reduce");
+ }
+ })
+ }, TypeError);
+ assertEq(count, 3);
+ assertEq(sum, 9);
+
+ // There is no callback or callback is not a function.
+ assertThrowsInstanceOf(() => {
+ arr.reduce();
+ }, TypeError);
+ var invalidCallbacks = [undefined, null, 1, false, "", Symbol(), [], {}, /./];
+ invalidCallbacks.forEach(callback => {
+ assertThrowsInstanceOf(() => {
+ arr.reduce(callback);
+ }, TypeError);
+ })
+
+ // Callback is a generator.
+ arr.reduce(function*(){
+ throw "This line will not be executed";
+ });
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var reduce = newGlobal()[constructor.name].prototype.reduce;
+ assertEq(reduce.call(arr, (previous, current) => Math.min(previous, current)), 1);
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(3), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.reduce.call(invalidReceiver, () => {});
+ }, TypeError, "Assert that reduce fails if this value is not a TypedArray");
+ });
+
+ // Test that the length getter is never called.
+ assertEq(Object.defineProperty(arr, "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ }).reduce((previous, current) => Math.max(previous, current)), 5);
+}
+
+// Tests for TypedArray#reduceRight.
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.prototype.reduceRight.length, 1);
+
+ // Basic tests.
+ var arr = new constructor([1, 2, 3, 4, 5]);
+
+ assertEq(arr.reduceRight((previous, current) => previous + current), 15);
+ assertEq(arr.reduceRight((previous, current) => current - previous), 3);
+
+ var count = 0;
+ var sum = 0;
+ assertEq(arr.reduceRight((previous, current, index, array) => {
+ count++;
+ sum += current;
+ assertEq(current - 1, index);
+ assertEq(current, arr[index]);
+ assertEq(array, arr);
+ return previous * current;
+ }), 120);
+ assertEq(count, 4);
+ assertEq(sum, 10);
+
+ // Tests for `initialValue` argument.
+ assertEq(arr.reduceRight((previous, current) => previous + current, -15), 0);
+ assertEq(arr.reduceRight((previous, current) => previous + current, ""), "54321");
+ assertDeepEq(arr.reduceRight((previous, current) => previous.concat(current), []), [5, 4, 3, 2, 1]);
+
+ // Tests for `this` value.
+ var global = this;
+ arr.reduceRight(function(){
+ assertEq(this, global);
+ });
+ arr.reduceRight(function(){
+ "use strict";
+ assertEq(this, undefined);
+ });
+ arr.reduceRight(() => assertEq(this, global));
+
+ // Throw an exception in the callback.
+ var count = 0;
+ var sum = 0;
+ assertThrowsInstanceOf(() => {
+ arr.reduceRight((previous, current, index, array) => {
+ count++;
+ sum += current;
+ if (index === 1) {
+ throw TypeError("reduceRight");
+ }
+ })
+ }, TypeError);
+ assertEq(count, 3);
+ assertEq(sum, 9);
+
+ // There is no callback or callback is not a function.
+ assertThrowsInstanceOf(() => {
+ arr.reduceRight();
+ }, TypeError);
+ var invalidCallbacks = [undefined, null, 1, false, "", Symbol(), [], {}, /./];
+ invalidCallbacks.forEach(callback => {
+ assertThrowsInstanceOf(() => {
+ arr.reduceRight(callback);
+ }, TypeError);
+ })
+
+ // Callback is a generator.
+ arr.reduceRight(function*(){
+ throw "This line will not be executed";
+ });
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var reduceRight = newGlobal()[constructor.name].prototype.reduceRight;
+ assertEq(reduceRight.call(arr, (previous, current) => Math.min(previous, current)), 1);
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(3), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.reduceRight.call(invalidReceiver, () => {});
+ }, TypeError, "Assert that reduceRight fails if this value is not a TypedArray");
+ });
+
+ // Test that the length getter is never called.
+ assertEq(Object.defineProperty(arr, "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ }).reduceRight((previous, current) => Math.max(previous, current)), 5);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/reverse.js b/js/src/tests/ecma_6/TypedArray/reverse.js
new file mode 100644
index 000000000..f8146506c
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/reverse.js
@@ -0,0 +1,38 @@
+for (var constructor of anyTypedArrayConstructors) {
+ assertDeepEq(constructor.prototype.reverse.length, 0);
+
+ assertDeepEq(new constructor().reverse(), new constructor());
+ assertDeepEq(new constructor(10).reverse(), new constructor(10));
+ assertDeepEq(new constructor([]).reverse(), new constructor([]));
+ assertDeepEq(new constructor([1]).reverse(), new constructor([1]));
+ assertDeepEq(new constructor([1, 2]).reverse(), new constructor([2, 1]));
+ assertDeepEq(new constructor([1, 2, 3]).reverse(), new constructor([3, 2, 1]));
+ assertDeepEq(new constructor([1, 2, 3, 4]).reverse(), new constructor([4, 3, 2, 1]));
+ assertDeepEq(new constructor([1, 2, 3, 4, 5]).reverse(), new constructor([5, 4, 3, 2, 1]));
+ assertDeepEq(new constructor([.1, .2, .3]).reverse(), new constructor([.3, .2, .1]));
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var reverse = newGlobal()[constructor.name].prototype.reverse;
+ assertDeepEq(reverse.call(new constructor([3, 2, 1])), new constructor([1, 2, 3]));
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.reverse.call(invalidReceiver);
+ }, TypeError, "Assert that reverse fails if this value is not a TypedArray");
+ });
+
+ // Test that the length getter is never called.
+ Object.defineProperty(new constructor([1, 2, 3]), "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ }).reverse();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/seal-and-freeze.js b/js/src/tests/ecma_6/TypedArray/seal-and-freeze.js
new file mode 100644
index 000000000..f3919f7ea
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/seal-and-freeze.js
@@ -0,0 +1,48 @@
+"use strict";
+
+// Seal
+assertEq(Object.isSealed(new Int32Array(2)), false);
+assertEq(Object.isSealed(new Int32Array(0)), false);
+
+var array = new Int32Array(0);
+Object.preventExtensions(array);
+assertEq(Object.isSealed(array), true);
+
+array = new Int32Array(1);
+array.b = "test";
+Object.preventExtensions(array);
+assertEq(Object.isSealed(array), false);
+Object.defineProperty(array, "b", {configurable: false});
+assertEq(Object.isSealed(array), true);
+
+array = new Int32Array(2);
+array.b = "test";
+Object.seal(array);
+assertEq(Object.isSealed(array), true);
+assertThrowsInstanceOf(() => array.c = 15, TypeError);
+
+// Freeze
+assertEq(Object.isFrozen(new Int32Array(2)), false);
+assertEq(Object.isFrozen(new Int32Array(0)), false);
+
+// Empty non-extensible typed-array is trvially frozen
+var array = new Int32Array(0);
+Object.preventExtensions(array);
+assertEq(Object.isFrozen(array), true);
+
+array = new Int32Array(0);
+array.b = "test";
+assertEq(Object.isFrozen(array), false);
+Object.preventExtensions(array);
+assertEq(Object.isFrozen(array), false);
+Object.defineProperty(array, "b", {configurable: false, writable: false});
+assertEq(Object.isFrozen(array), true);
+
+// Non-empty typed arrays can never be frozen, because the elements stay writable
+array = new Int32Array(1);
+assertThrowsInstanceOf(() => Object.freeze(array), TypeError);
+assertEq(Object.isExtensible(array), false);
+assertEq(Object.isFrozen(array), false);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/set-negative-offset.js b/js/src/tests/ecma_6/TypedArray/set-negative-offset.js
new file mode 100644
index 000000000..6d9c45ffb
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/set-negative-offset.js
@@ -0,0 +1,35 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var gTestfile = "set-negative-offset.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1140752;
+var summary =
+ "%TypedArray%.prototype.set must throw a RangeError when passed a negative " +
+ "offset";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+try
+{
+ new Uint8Array().set([], -1);
+ throw new Error("didn't throw at all");
+}
+catch (e)
+{
+ assertEq(e instanceof RangeError, true,
+ "expected RangeError, instead got: " + e);
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/TypedArray/set-same-buffer-different-source-target-types.js b/js/src/tests/ecma_6/TypedArray/set-same-buffer-different-source-target-types.js
new file mode 100644
index 000000000..9084ce883
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/set-same-buffer-different-source-target-types.js
@@ -0,0 +1,41 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var gTestfile = "set-same-buffer-different-source-target-types.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 896116;
+var summary =
+ "When setting a typed array from an overlapping typed array of different " +
+ "element type, copy the source elements into properly-sized temporary " +
+ "memory, and properly copy them into the target without overflow (of " +
+ "either source *or* target) when finished";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// smallest 2**n triggering segfaults in a pre-patch build locally, then
+// quadrupled in case the boundary ever changes, or is different in some other
+// memory-allocating implementation
+var srclen = 65536;
+
+var ta = new Uint8Array(srclen * Float64Array.BYTES_PER_ELEMENT);
+var ta2 = new Float64Array(ta.buffer, 0, srclen);
+ta.set(ta2);
+
+// This test mostly exists to check for no crash above, but it's worth testing
+// for no uninitialized memory (in case of buffer overflow) being copied into
+// the array, too.
+for (var i = 0, len = ta.length; i < len; i++)
+ assertEq(ta[i], 0, "zero-bits double should convert to zero");
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/TypedArray/set.js b/js/src/tests/ecma_6/TypedArray/set.js
new file mode 100644
index 000000000..2af5a129a
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/set.js
@@ -0,0 +1,21 @@
+const TypedArrayPrototype = Object.getPrototypeOf(Int8Array.prototype);
+
+// %TypedArrayPrototype% has an own "set" function property.
+assertEq(TypedArrayPrototype.hasOwnProperty("set"), true);
+assertEq(typeof TypedArrayPrototype.set, "function");
+
+// The concrete TypedArray prototypes do not have an own "set" property.
+assertEq(anyTypedArrayConstructors.every(c => !c.hasOwnProperty("set")), true);
+
+assertDeepEq(Object.getOwnPropertyDescriptor(TypedArrayPrototype, "set"), {
+ value: TypedArrayPrototype.set,
+ writable: true,
+ enumerable: false,
+ configurable: true,
+});
+
+assertEq(TypedArrayPrototype.set.name, "set");
+assertEq(TypedArrayPrototype.set.length, 1);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/shell.js b/js/src/tests/ecma_6/TypedArray/shell.js
new file mode 100644
index 000000000..2fb0ab8f1
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/shell.js
@@ -0,0 +1,114 @@
+(function(global) {
+ "use strict";
+
+ const {
+ Float32Array, Float64Array, Object, Reflect, SharedArrayBuffer, WeakMap,
+ assertEq
+ } = global;
+ const {
+ apply: Reflect_apply,
+ construct: Reflect_construct,
+ } = Reflect;
+ const {
+ get: WeakMap_prototype_get,
+ has: WeakMap_prototype_has,
+ } = WeakMap.prototype;
+
+ const sharedConstructors = new WeakMap();
+
+ // Synthesize a constructor for a shared memory array from the constructor
+ // for unshared memory. This has "good enough" fidelity for many uses. In
+ // cases where it's not good enough, call isSharedConstructor for local
+ // workarounds.
+ function sharedConstructor(baseConstructor) {
+ // Create SharedTypedArray as a subclass of %TypedArray%, following the
+ // built-in %TypedArray% subclasses.
+ class SharedTypedArray extends Object.getPrototypeOf(baseConstructor) {
+ constructor(...args) {
+ var array = Reflect_construct(baseConstructor, args);
+ var {buffer, byteOffset, length} = array;
+ var sharedBuffer = new SharedArrayBuffer(buffer.byteLength);
+ var sharedArray = Reflect_construct(baseConstructor,
+ [sharedBuffer, byteOffset, length],
+ new.target);
+ for (var i = 0; i < length; i++)
+ sharedArray[i] = array[i];
+ assertEq(sharedArray.buffer, sharedBuffer);
+ return sharedArray;
+ }
+ }
+
+ // 22.2.5.1 TypedArray.BYTES_PER_ELEMENT
+ Object.defineProperty(SharedTypedArray, "BYTES_PER_ELEMENT",
+ {__proto__: null, value: baseConstructor.BYTES_PER_ELEMENT});
+
+ // 22.2.6.1 TypedArray.prototype.BYTES_PER_ELEMENT
+ Object.defineProperty(SharedTypedArray.prototype, "BYTES_PER_ELEMENT",
+ {__proto__: null, value: baseConstructor.BYTES_PER_ELEMENT});
+
+ // Share the same name with the base constructor to avoid calling
+ // isSharedConstructor() in multiple places.
+ Object.defineProperty(SharedTypedArray, "name",
+ {__proto__: null, value: baseConstructor.name});
+
+ sharedConstructors.set(SharedTypedArray, baseConstructor);
+
+ return SharedTypedArray;
+ }
+
+ /**
+ * All TypedArray constructors for unshared memory.
+ */
+ const typedArrayConstructors = Object.freeze([
+ Int8Array,
+ Uint8Array,
+ Uint8ClampedArray,
+ Int16Array,
+ Uint16Array,
+ Int32Array,
+ Uint32Array,
+ Float32Array,
+ Float64Array,
+ ]);
+
+ /**
+ * All TypedArray constructors for shared memory.
+ */
+ const sharedTypedArrayConstructors = Object.freeze(
+ typeof SharedArrayBuffer === "function"
+ ? typedArrayConstructors.map(sharedConstructor)
+ : []
+ );
+
+ /**
+ * All TypedArray constructors for unshared and shared memory.
+ */
+ const anyTypedArrayConstructors = Object.freeze([
+ ...typedArrayConstructors, ...sharedTypedArrayConstructors,
+ ]);
+
+ /**
+ * Returns `true` if `constructor` is a TypedArray constructor for shared
+ * memory.
+ */
+ function isSharedConstructor(constructor) {
+ return Reflect_apply(WeakMap_prototype_has, sharedConstructors, [constructor]);
+ }
+
+ /**
+ * Returns `true` if `constructor` is a TypedArray constructor for shared
+ * or unshared memory, with an underlying element type of either Float32 or
+ * Float64.
+ */
+ function isFloatConstructor(constructor) {
+ if (isSharedConstructor(constructor))
+ constructor = Reflect_apply(WeakMap_prototype_get, sharedConstructors, [constructor]);
+ return constructor == Float32Array || constructor == Float64Array;
+ }
+
+ global.typedArrayConstructors = typedArrayConstructors;
+ global.sharedTypedArrayConstructors = sharedTypedArrayConstructors;
+ global.anyTypedArrayConstructors = anyTypedArrayConstructors;
+ global.isSharedConstructor = isSharedConstructor;
+ global.isFloatConstructor = isFloatConstructor;
+})(this);
diff --git a/js/src/tests/ecma_6/TypedArray/slice-species.js b/js/src/tests/ecma_6/TypedArray/slice-species.js
new file mode 100644
index 000000000..8a03f2f6e
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/slice-species.js
@@ -0,0 +1,49 @@
+for (var constructor of typedArrayConstructors) {
+ // Basic tests for our SpeciesConstructor implementation.
+ var undefConstructor = new constructor(2);
+ undefConstructor.constructor = undefined;
+ assertDeepEq(undefConstructor.slice(1), new constructor(1));
+
+ assertThrowsInstanceOf(() => {
+ var strConstructor = new constructor;
+ strConstructor.constructor = "not a constructor";
+ strConstructor.slice(123);
+ }, TypeError, "Assert that we have an invalid constructor");
+
+ // If obj.constructor[@@species] is undefined or null then the default
+ // constructor is used.
+ var mathConstructor = new constructor(8);
+ mathConstructor.constructor = Math.sin;
+ assertDeepEq(mathConstructor.slice(4), new constructor(4));
+
+ var undefSpecies = new constructor(2);
+ undefSpecies.constructor = { [Symbol.species]: undefined };
+ assertDeepEq(undefSpecies.slice(1), new constructor(1));
+
+ var nullSpecies = new constructor(2);
+ nullSpecies.constructor = { [Symbol.species]: null };
+ assertDeepEq(nullSpecies.slice(1), new constructor(1));
+
+ // If obj.constructor[@@species] is different constructor, it should be
+ // used.
+ for (var constructor2 of typedArrayConstructors) {
+ var modifiedConstructor = new constructor(2);
+ modifiedConstructor.constructor = constructor2;
+ assertDeepEq(modifiedConstructor.slice(1), new constructor2(1));
+
+ var modifiedSpecies = new constructor(2);
+ modifiedSpecies.constructor = { [Symbol.species]: constructor2 };
+ assertDeepEq(modifiedSpecies.slice(1), new constructor2(1));
+ }
+
+ // If obj.constructor[@@species] is neither undefined nor null, and it's
+ // not a constructor, TypeError should be thrown.
+ assertThrowsInstanceOf(() => {
+ var strSpecies = new constructor;
+ strSpecies.constructor = { [Symbol.species]: "not a constructor" };
+ strSpecies.slice(123);
+ }, TypeError);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/slice.js b/js/src/tests/ecma_6/TypedArray/slice.js
new file mode 100644
index 000000000..0a5ce4c50
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/slice.js
@@ -0,0 +1,45 @@
+for (var constructor of anyTypedArrayConstructors) {
+ assertDeepEq(constructor.prototype.slice.length, 2);
+
+ assertDeepEq(new constructor().slice(0), new constructor());
+ assertDeepEq(new constructor().slice(0, 4), new constructor());
+ assertDeepEq(new constructor(10).slice(0, 2), new constructor(2));
+
+ assertDeepEq(new constructor([1, 2]).slice(1), new constructor([2]));
+ assertDeepEq(new constructor([1, 2]).slice(0), new constructor([1, 2]));
+ assertDeepEq(new constructor([1, 2, 3]).slice(-1), new constructor([3]));
+ assertDeepEq(new constructor([1, 2, 3, 4]).slice(-3, -1), new constructor([2, 3]));
+ assertDeepEq(new constructor([.1, .2]).slice(0), new constructor([.1, .2]));
+
+ assertDeepEq(new constructor([1, 2]).slice(-3), new constructor([1, 2]));
+ assertDeepEq(new constructor([1, 2]).slice(0, -3), new constructor());
+ assertDeepEq(new constructor([1, 2]).slice(4), new constructor());
+ assertDeepEq(new constructor([1, 2]).slice(1, 5), new constructor([2]));
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var slice = newGlobal()[constructor.name].prototype.slice;
+ assertDeepEq(slice.call(new constructor([3, 2, 1]), 1),
+ new constructor([2, 1]));
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.slice.call(invalidReceiver, 0);
+ }, TypeError, "Assert that slice fails if this value is not a TypedArray");
+ });
+
+ // Test that the length getter is never called.
+ Object.defineProperty(new constructor([1, 2, 3]), "length", {
+ get() {
+ throw new Error("length accessor called");
+ }
+ }).slice(2);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
diff --git a/js/src/tests/ecma_6/TypedArray/sort_basics.js b/js/src/tests/ecma_6/TypedArray/sort_basics.js
new file mode 100644
index 000000000..cbfc53e91
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/sort_basics.js
@@ -0,0 +1,73 @@
+// Note: failed runs should include their "SEED" value in error messages,
+// setting "const SEED" to that value will recreate the data from any such run.
+const SEED = (Math.random() * 10) + 1;
+
+// Fill up an array buffer with random values and return it in raw form.
+// 'size' is the desired length of the view we will place atop the buffer,
+// 'width' is the bit-width of the view we plan on placing atop the buffer,
+// and 'seed' is an initial value supplied to a pseudo-random number generator.
+function genRandomArrayBuffer(size, width, seed) {
+ let buf = new ArrayBuffer((width / 8) * size);
+ let arr = new Uint8Array(buf);
+ let len = 0;
+ // We generate a random number, n, where 0 <= n <= 255 for every space
+ // available in our buffer.
+ for (let n of XorShiftGenerator(seed, buf.byteLength))
+ arr[len++] = n;
+ return buf;
+}
+
+// Because we can generate any possible combination of bits, some floating point
+// entries will take on -Infinity, Infinity, and NaN values. This function ensures
+// that a is <= b, where, like the default comparator, -Infinity < Infinity and
+// every non-NaN < NaN.
+function lte(a, b) {
+ if (isNaN(b))
+ return true;
+ return a <= b;
+}
+
+// A a >= b counterpart to the helper function above.
+function gte(a, b) {
+ return lte(b, a);
+}
+
+// A custom comparator.
+function cmp(a, b) {
+ return lte(a, b) ? gte(a, b) ? 0 : -1 : 1;
+}
+
+function SortTest(dataType, dataSource) {
+ let typedArray = new dataType(dataSource);
+ let originalValues = Array.from(typedArray);
+
+ // Test the default comparator
+ typedArray.sort();
+
+ // Test against regular array sort
+ assertDeepEq(Array.from(typedArray), Array.from(originalValues).sort(cmp),
+ `The array is not properly sorted! seed: ${SEED}`);
+
+ // Another sanity check
+ for (let i=0; i < typedArray.length - 1; i++)
+ assertEq(lte(typedArray[i], typedArray[i + 1]), true,
+ `The array is not properly sorted! ${typedArray[i]} > ${typedArray[i + 1]}, seed: ${SEED}`)
+
+ // Test custom comparators
+ typedArray.sort((x, y) => cmp(y, x));
+
+ // The array should be in reverse order
+ for (let i=typedArray.length - 2; i >= 0; i--)
+ assertEq(gte(typedArray[i], typedArray[i + 1]), true,
+ `The array is not properly sorted! ${typedArray[i]} < ${typedArray[i + 1]}, seed: ${SEED}`)
+}
+
+for (let constructor of anyTypedArrayConstructors) {
+ for (let arrayLength of [256, 16, 0]) {
+ let source = genRandomArrayBuffer(arrayLength, constructor.BYTES_PER_ELEMENT * 8, SEED);
+ SortTest(constructor, source);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/sort_comparators.js b/js/src/tests/ecma_6/TypedArray/sort_comparators.js
new file mode 100644
index 000000000..ca190948f
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/sort_comparators.js
@@ -0,0 +1,32 @@
+// Ensure that sorts finish even if a comparator adds items
+// Note: the array is not expected to be properly sorted.
+let outsideArray = new Int32Array([1, 99, 2]);
+function addingComparator(x, y) {
+ if (x == 99 || y == 99) {
+ outsideArray[0] = 101;
+ outsideArray[outsideArray.length - 1] = 102;
+ }
+ return x - y;
+}
+outsideArray.sort(addingComparator);
+assertEq(outsideArray.every(x => [1, 2, 99, 101, 102].includes(x)), true);
+
+// Ensure that sorts finish even if a comparator calls sort again
+// Note: the array is not expected to be properly sorted.
+outsideArray = new Int32Array([1, 99, 2]);
+function recursiveComparator(x, y) {
+ outsideArray.sort();
+ return x - y;
+}
+outsideArray.sort(recursiveComparator);
+assertEq(outsideArray.every(x => outsideArray.includes(x)), true)
+
+// Ensure that NaN's returned from custom comparators behave as / are converted
+// to +0s.
+let nanComparatorData = [2112, 42, 1111, 34];
+let nanComparatorArray = new Int32Array(nanComparatorData);
+nanComparatorArray.sort((x, y) => NaN);
+assertEq(nanComparatorData.every(x => nanComparatorArray.includes(x)), true);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/sort_errors.js b/js/src/tests/ecma_6/TypedArray/sort_errors.js
new file mode 100644
index 000000000..2b8921be9
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/sort_errors.js
@@ -0,0 +1,87 @@
+// Ensure that TypedArrays throw when attempting to sort a detached ArrayBuffer
+if (typeof detachArrayBuffer === "function") {
+ assertThrowsInstanceOf(() => {
+ let buffer = new ArrayBuffer(32);
+ let array = new Int32Array(buffer);
+ detachArrayBuffer(buffer);
+ array.sort();
+ }, TypeError);
+}
+
+// Ensure detachment check works when buffer is detached in comparator.
+if (typeof detachArrayBuffer === "function") {
+ let detached = false;
+ let ta = new Int32Array(3);
+ assertThrowsInstanceOf(() => {
+ ta.sort(function(a, b) {
+ assertEq(detached, false);
+ detached = true;
+ detachArrayBuffer(ta.buffer);
+ return a - b;
+ });
+ }, TypeError);
+}
+
+// Ensure detachment check doesn't choke on wrapped typed array.
+if (typeof newGlobal === "function") {
+ let ta = new Int32Array(3);
+ let otherGlobal = newGlobal();
+ otherGlobal.Int32Array.prototype.sort.call(ta, function(a, b) {
+ return a - b;
+ });
+}
+
+// Ensure detachment check works for wrapped typed arrays.
+if (typeof newGlobal === "function" && typeof detachArrayBuffer === "function") {
+ let detached = false;
+ let ta = new Int32Array(3);
+ let otherGlobal = newGlobal();
+ assertThrowsInstanceOf(() => {
+ otherGlobal.Int32Array.prototype.sort.call(ta, function(a,b) {
+ assertEq(detached, false);
+ detached = true;
+ detachArrayBuffer(ta.buffer);
+ return a - b;
+ });
+ }, TypeError);
+}
+
+// Ensure that TypedArray.prototype.sort will not sort non-TypedArrays
+assertThrowsInstanceOf(() => {
+ let array = [4, 3, 2, 1];
+ Int32Array.prototype.sort.call(array);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ Int32Array.prototype.sort.call({a: 1, b: 2});
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ Int32Array.prototype.sort.call(Int32Array.prototype);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ let buf = new ArrayBuffer(32);
+ Int32Array.prototype.sort.call(buf);
+}, TypeError);
+
+// Ensure that comparator errors are propagataed
+function badComparator(x, y) {
+ if (x == 99 && y == 99)
+ throw new TypeError;
+ return x - y;
+}
+
+assertThrowsInstanceOf(() => {
+ let array = new Uint8Array([99, 99, 99, 99]);
+ array.sort(badComparator);
+}, TypeError);
+
+assertThrowsInstanceOf(() => {
+ let array = new Uint8Array([1, 99, 2, 99]);
+ array.sort(badComparator);
+}, TypeError);
+
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/sort_globals.js b/js/src/tests/ecma_6/TypedArray/sort_globals.js
new file mode 100644
index 000000000..6bab6a391
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/sort_globals.js
@@ -0,0 +1,9 @@
+// TypedArray.prototype.sort should work across globals
+let g2 = newGlobal();
+assertEqArray(
+ Int32Array.prototype.sort.call(new g2.Int32Array([3, 2, 1])),
+ new Int32Array([1, 2, 3])
+);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/sort_small.js b/js/src/tests/ecma_6/TypedArray/sort_small.js
new file mode 100644
index 000000000..22f9dc69a
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/sort_small.js
@@ -0,0 +1,38 @@
+const testCases = {
+ // Pre-sorted test data, it's important that these arrays remain in ascending order.
+ [Int8Array.name]: [[-128, 127]],
+ [Int16Array.name]: [[-32768, -999, 1942, 32767]],
+ [Int32Array.name]: [[-2147483648, -320000, -244000, 2147483647]],
+ [Uint8Array.name]: [[255]],
+ [Uint16Array.name]: [[0, 65535, 65535]],
+ [Uint32Array.name]: [[0, 987632, 4294967295]],
+ [Uint8ClampedArray.name]: [[255]],
+
+ // Test the behavior in the default comparator as described in 22.2.3.26.
+ // The spec boils down to, -0s come before +0s, and NaNs always come last.
+ // Float Arrays are used because all other types convert -0 and NaN to +0.
+ [Float32Array.name]: [
+ [-2147483647, -2147483646.99, -0, 0, 2147483646.99, NaN],
+ [1/undefined, NaN, Number.NaN]
+ ],
+ [Float64Array.name]: [
+ [-2147483646.99, -0, 0, 4147483646.99, NaN],
+ [1/undefined, NaN, Number.NaN]
+ ],
+};
+
+// Sort every possible permutation of an arrays
+function sortAllPermutations(dataType, testData) {
+ let reference = new dataType(testData);
+ for (let permutation of Permutations(testData))
+ assertDeepEq((new dataType(permutation)).sort(), reference);
+}
+
+for (let constructor of sharedTypedArrayConstructors) {
+ for (let data of testCases[constructor.name]) {
+ sortAllPermutations(constructor, data);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/sort_snans.js b/js/src/tests/ecma_6/TypedArray/sort_snans.js
new file mode 100644
index 000000000..9e3ad1698
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/sort_snans.js
@@ -0,0 +1,72 @@
+// Ensure that signaling NaN's don't cause problems while sorting
+
+function getNaNArray(length) {
+ let a = [];
+ for (let i = 0; i < length; i++)
+ a.push(NaN);
+ return a;
+}
+
+// Test every skipNth value in some range n, where start <= n <= end
+// and start/stop should be 32-bit integers with bit patterns that
+// form Float32 NaNs.
+function testFloat32NaNRanges(start, end) {
+ let skipN = 10e3;
+
+ // sample the space of possible NaNs to save time
+ let sampleSize = Math.floor((end - start)/ skipN);
+
+ let NaNArray = new Float32Array(getNaNArray(sampleSize));
+ let buffer = new ArrayBuffer(4 * sampleSize);
+ let uintView = new Uint32Array(buffer);
+ let floatView = new Float32Array(buffer);
+
+ uintView[0] = start;
+ for (let i = 1; i < sampleSize; i++) {
+ uintView[i] = uintView[0] + (i * skipN);
+ }
+
+ floatView.sort();
+ assertDeepEq(floatView, NaNArray);
+}
+
+// Test every skipNth value in some range n, where start <= n <= end
+// and startHi, startLow and endHi, endLow should be 32-bit integers which,
+// when combined (Hi + Low), form Float64 NaNs.
+function testFloat64NaNRanges(startHi, startLow, endHi, endLow) {
+ let skipN = 10e6;
+
+ let sampleSizeHi = Math.floor((endHi - startHi)/skipN);
+ let sampleSizeLow = Math.floor((endLow - startLow)/skipN);
+
+ let NaNArray = new Float64Array(getNaNArray(sampleSizeHi + sampleSizeLow));
+ let buffer = new ArrayBuffer(8 * (sampleSizeHi + sampleSizeLow));
+ let uintView = new Uint32Array(buffer);
+ let floatView = new Float64Array(buffer);
+
+ // Fill in all of the low bits first.
+ for (let i = 0; i <= sampleSizeLow; i++) {
+ uintView[i * 2] = startLow + (i * skipN);
+ uintView[(i * 2) + 1] = startHi;
+ }
+
+ // Then the high bits.
+ for (let i = sampleSizeLow; i <= sampleSizeLow + sampleSizeHi; i++) {
+ uintView[i * 2] = endLow;
+ uintView[(i * 2) + 1] = startHi + ((i - sampleSizeLow) * skipN);
+ }
+
+ floatView.sort();
+ assertDeepEq(floatView, NaNArray);
+}
+
+// Float32 Signaling NaN ranges
+testFloat32NaNRanges(0x7F800001, 0x7FBFFFFF);
+testFloat32NaNRanges(0xFF800001, 0xFFBFFFFF);
+
+// Float64 Signaling NaN ranges
+testFloat64NaNRanges(0x7FF00000, 0x00000001, 0x7FF7FFFF, 0xFFFFFFFF);
+testFloat64NaNRanges(0xFFF00000, 0x00000001, 0xFFF7FFFF, 0xFFFFFFFF);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/sorting_buffer_access.js b/js/src/tests/ecma_6/TypedArray/sorting_buffer_access.js
new file mode 100644
index 000000000..c31f4ca16
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/sorting_buffer_access.js
@@ -0,0 +1,15 @@
+// Ensure that when sorting arrays of size greater than 128, which
+// calls RadixSort under the hood, we don't access the 'buffer'
+// property of the typed array directly.
+
+
+// The buggy behavior in the RadixSort is only exposed when we use
+// float arrays, but checking everything just to be sure.
+for (var ctor of anyTypedArrayConstructors) {
+ var testArray = new ctor(1024);
+ Object.defineProperty(testArray, "buffer", { get() { throw new Error("FAIL: Buffer accessed directly"); } });
+ testArray.sort();
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/subarray-species.js b/js/src/tests/ecma_6/TypedArray/subarray-species.js
new file mode 100644
index 000000000..91c34e80c
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/subarray-species.js
@@ -0,0 +1,63 @@
+function test(constructor, constructor2, from=[1, 2, 3, 4, 5], to=[3, 4], begin=2, end=4) {
+ var modifiedConstructor = new constructor(from);
+ modifiedConstructor.constructor = constructor2;
+ assertDeepEq(modifiedConstructor.subarray(begin, end), new constructor2(to));
+ var modifiedSpecies = new constructor(from);
+ modifiedSpecies.constructor = { [Symbol.species]: constructor2 };
+ assertDeepEq(modifiedSpecies.subarray(begin, end), new constructor2(to));
+}
+
+// same size, same sign
+
+test(Int8Array, Uint8Array);
+test(Int8Array, Uint8ClampedArray);
+
+test(Uint8Array, Int8Array);
+test(Uint8Array, Uint8ClampedArray);
+
+test(Uint8ClampedArray, Int8Array);
+test(Uint8ClampedArray, Uint8Array);
+
+test(Int16Array, Uint16Array);
+test(Uint16Array, Int16Array);
+
+test(Int32Array, Uint32Array);
+test(Uint32Array, Int32Array);
+
+// same size, different sign
+
+test(Int8Array, Uint8Array, [-1, -2, -3, -4, -5], [0xFD, 0xFC]);
+test(Int8Array, Uint8ClampedArray, [-1, -2, -3, -4, -5], [0xFD, 0xFC]);
+
+test(Uint8Array, Int8Array, [0xFF, 0xFE, 0xFD, 0xFC, 0xFB], [-3, -4]);
+test(Uint8ClampedArray, Int8Array, [0xFF, 0xFE, 0xFD, 0xFC, 0xFB], [-3, -4]);
+
+test(Int16Array, Uint16Array, [-1, -2, -3, -4, -5], [0xFFFD, 0xFFFC]);
+test(Uint16Array, Int16Array, [0xFFFF, 0xFFFE, 0xFFFD, 0xFFFC, 0xFFFB], [-3, -4]);
+
+test(Int32Array, Uint32Array, [-1, -2, -3, -4, -5], [0xFFFFFFFD, 0xFFFFFFFC]);
+test(Uint32Array, Int32Array, [0xFFFFFFFF, 0xFFFFFFFE, 0xFFFFFFFD, 0xFFFFFFFC, 0xFFFFFFFB], [-3, -4]);
+
+// different size
+
+// To avoid handling endian, use ArrayBuffer as an argument.
+var a = new Int8Array([0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0,
+ 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0x01,
+ 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88,
+ 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x0F]);
+
+test(Uint8Array, Uint16Array, a.buffer, a.slice(2, 6).buffer);
+test(Uint16Array, Uint8Array, a.buffer, a.slice(4, 6).buffer);
+
+test(Uint8Array, Uint32Array, a.buffer, a.slice(4, 12).buffer, 4, 6);
+test(Uint32Array, Uint8Array, a.buffer, a.slice(8, 10).buffer);
+
+test(Uint16Array, Uint32Array, a.buffer, a.slice(4, 12).buffer);
+test(Uint32Array, Uint16Array, a.buffer, a.slice(8, 12).buffer);
+
+test(Float32Array, Float64Array, a.buffer, a.slice(8, 24).buffer);
+test(Float64Array, Float32Array, a.buffer, a.slice(16, 24).buffer);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
diff --git a/js/src/tests/ecma_6/TypedArray/subarray.js b/js/src/tests/ecma_6/TypedArray/subarray.js
new file mode 100644
index 000000000..a7bfab0ef
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/subarray.js
@@ -0,0 +1,29 @@
+// Bug 1291003
+if (typeof detachArrayBuffer === "function") {
+ for (let constructor of typedArrayConstructors) {
+ const elementSize = constructor.BYTES_PER_ELEMENT;
+
+ let targetOffset;
+ let buffer = new ArrayBuffer(2 * elementSize);
+ let typedArray = new constructor(buffer, 1 * elementSize, 1);
+ typedArray.constructor = {
+ [Symbol.species]: function(ab, offset, length) {
+ targetOffset = offset;
+ return new constructor(1);
+ }
+ };
+
+ let beginIndex = {
+ valueOf() {
+ detachArrayBuffer(buffer);
+ return 0;
+ }
+ };
+ typedArray.subarray(beginIndex);
+
+ assertEq(targetOffset, 1 * elementSize);
+ }
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/toLocaleString-detached.js b/js/src/tests/ecma_6/TypedArray/toLocaleString-detached.js
new file mode 100644
index 000000000..fe95ae689
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/toLocaleString-detached.js
@@ -0,0 +1,38 @@
+if (typeof detachArrayBuffer === "function") {
+ const originalNumberToLocaleString = Number.prototype.toLocaleString;
+
+ // Throws if array buffer is detached.
+ for (let constructor of typedArrayConstructors) {
+ let typedArray = new constructor(42);
+ detachArrayBuffer(typedArray.buffer);
+ assertThrowsInstanceOf(() => typedArray.toLocaleString(), TypeError);
+ }
+
+ // Throws a TypeError if detached in Number.prototype.toLocaleString.
+ for (let constructor of typedArrayConstructors) {
+ Number.prototype.toLocaleString = function() {
+ "use strict";
+ if (!detached) {
+ detachArrayBuffer(typedArray.buffer);
+ detached = true;
+ }
+ return this;
+ };
+
+ // No error for single element arrays.
+ let detached = false;
+ let typedArray = new constructor(1);
+ assertEq(typedArray.toLocaleString(), "0");
+ assertEq(detached, true);
+
+ // TypeError if more than one element is present.
+ detached = false;
+ typedArray = new constructor(2);
+ assertThrowsInstanceOf(() => typedArray.toLocaleString(), TypeError);
+ assertEq(detached, true);
+ }
+ Number.prototype.toLocaleString = originalNumberToLocaleString;
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/toLocaleString-nointl.js b/js/src/tests/ecma_6/TypedArray/toLocaleString-nointl.js
new file mode 100644
index 000000000..f2870efbe
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/toLocaleString-nointl.js
@@ -0,0 +1,40 @@
+if (typeof Intl !== "object") {
+ const localeSep = [,,].toLocaleString();
+
+ const originalNumberToLocaleString = Number.prototype.toLocaleString;
+
+ // Ensure no arguments are passed to the array elements.
+ for (let constructor of anyTypedArrayConstructors) {
+ Number.prototype.toLocaleString = function() {
+ assertEq(arguments.length, 0);
+ return "pass";
+ };
+
+ // Single element case.
+ assertEq(new constructor(1).toLocaleString(), "pass");
+
+ // More than one element.
+ assertEq(new constructor(2).toLocaleString(), "pass" + localeSep + "pass");
+ }
+ Number.prototype.toLocaleString = originalNumberToLocaleString;
+
+ // Ensure no arguments are passed to the array elements even if supplied.
+ for (let constructor of anyTypedArrayConstructors) {
+ Number.prototype.toLocaleString = function() {
+ assertEq(arguments.length, 0);
+ return "pass";
+ };
+ let locales = {};
+ let options = {};
+
+ // Single element case.
+ assertEq(new constructor(1).toLocaleString(locales, options), "pass");
+
+ // More than one element.
+ assertEq(new constructor(2).toLocaleString(locales, options), "pass" + localeSep + "pass");
+ }
+ Number.prototype.toLocaleString = originalNumberToLocaleString;
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/toLocaleString.js b/js/src/tests/ecma_6/TypedArray/toLocaleString.js
new file mode 100644
index 000000000..78049ec22
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/toLocaleString.js
@@ -0,0 +1,80 @@
+const TypedArrayPrototype = Object.getPrototypeOf(Int8Array.prototype);
+
+// %TypedArrayPrototype% has an own "toLocaleString" function property.
+assertEq(TypedArrayPrototype.hasOwnProperty("toLocaleString"), true);
+assertEq(typeof TypedArrayPrototype.toLocaleString, "function");
+
+// The initial value of %TypedArrayPrototype%.toLocaleString is not Array.prototype.toLocaleString.
+assertEq(TypedArrayPrototype.toLocaleString === Array.prototype.toLocaleString, false);
+
+// The concrete TypedArray prototypes do not have an own "toLocaleString" property.
+assertEq(anyTypedArrayConstructors.every(c => !c.hasOwnProperty("toLocaleString")), true);
+
+assertDeepEq(Object.getOwnPropertyDescriptor(TypedArrayPrototype, "toLocaleString"), {
+ value: TypedArrayPrototype.toLocaleString,
+ writable: true,
+ enumerable: false,
+ configurable: true,
+});
+
+assertEq(TypedArrayPrototype.toLocaleString.name, "toLocaleString");
+assertEq(TypedArrayPrototype.toLocaleString.length, 0);
+
+// It's not a generic method.
+assertThrowsInstanceOf(() => TypedArrayPrototype.toLocaleString.call(), TypeError);
+for (let invalid of [void 0, null, {}, [], function(){}, true, 0, "", Symbol()]) {
+ assertThrowsInstanceOf(() => TypedArrayPrototype.toLocaleString.call(invalid), TypeError);
+}
+
+const localeOne = 1..toLocaleString(),
+ localeTwo = 2..toLocaleString(),
+ localeSep = [,,].toLocaleString();
+
+for (let constructor of anyTypedArrayConstructors) {
+ assertEq(new constructor([]).toLocaleString(), "");
+ assertEq(new constructor([1]).toLocaleString(), localeOne);
+ assertEq(new constructor([1, 2]).toLocaleString(), localeOne + localeSep + localeTwo);
+}
+
+const originalNumberToLocaleString = Number.prototype.toLocaleString;
+
+// Calls Number.prototype.toLocaleString on each element.
+for (let constructor of anyTypedArrayConstructors) {
+ Number.prototype.toLocaleString = function() {
+ "use strict";
+
+ // Ensure this-value is not boxed.
+ assertEq(typeof this, "number");
+
+ // Test ToString is applied.
+ return {
+ valueOf: () => {
+ throw new Error("valueOf called");
+ },
+ toString: () => {
+ return this + 10;
+ }
+ };
+ };
+ let typedArray = new constructor([1, 2]);
+ assertEq(typedArray.toLocaleString(), "11" + localeSep + "12");
+}
+Number.prototype.toLocaleString = originalNumberToLocaleString;
+
+// Calls Number.prototype.toLocaleString from the current Realm.
+const otherGlobal = newGlobal();
+for (let constructor of anyTypedArrayConstructors) {
+ Number.prototype.toLocaleString = function() {
+ "use strict";
+ called = true;
+ return this;
+ };
+ let typedArray = new otherGlobal[constructor.name]([1]);
+ let called = false;
+ assertEq(TypedArrayPrototype.toLocaleString.call(typedArray), "1");
+ assertEq(called, true);
+}
+Number.prototype.toLocaleString = originalNumberToLocaleString;
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/toString.js b/js/src/tests/ecma_6/TypedArray/toString.js
new file mode 100644
index 000000000..0879b8b31
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/toString.js
@@ -0,0 +1,69 @@
+const TypedArrayPrototype = Object.getPrototypeOf(Int8Array.prototype);
+
+// %TypedArrayPrototype% has an own "toString" property.
+assertEq(TypedArrayPrototype.hasOwnProperty("toString"), true);
+
+// The initial value of %TypedArrayPrototype%.toString is Array.prototype.toString.
+assertEq(TypedArrayPrototype.toString, Array.prototype.toString);
+
+// The concrete TypedArray prototypes do not have an own "toString" property.
+assertEq(anyTypedArrayConstructors.every(c => !c.hasOwnProperty("toString")), true);
+
+assertDeepEq(Object.getOwnPropertyDescriptor(TypedArrayPrototype, "toString"), {
+ value: TypedArrayPrototype.toString,
+ writable: true,
+ enumerable: false,
+ configurable: true,
+});
+
+for (let constructor of anyTypedArrayConstructors) {
+ assertEq(new constructor([]).toString(), "");
+ assertEq(new constructor([1]).toString(), "1");
+ assertEq(new constructor([1, 2]).toString(), "1,2");
+}
+
+const testCases = {
+ [Int8Array.name]: {
+ array: [-1, 2, -3, 4, NaN],
+ expected: "-1,2,-3,4,0",
+ },
+ [Int16Array.name]: {
+ array: [-1, 2, -3, 4, NaN],
+ expected: "-1,2,-3,4,0",
+ },
+ [Int32Array.name]: {
+ array: [-1, 2, -3, 4, NaN],
+ expected: "-1,2,-3,4,0",
+ },
+ [Uint8Array.name]: {
+ array: [255, 2, 3, 4, NaN],
+ expected: "255,2,3,4,0",
+ },
+ [Uint16Array.name]: {
+ array: [-1, 2, 3, 4, NaN],
+ expected: "65535,2,3,4,0",
+ },
+ [Uint32Array.name]: {
+ array: [-1, 2, 3, 4, NaN],
+ expected: "4294967295,2,3,4,0",
+ },
+ [Uint8ClampedArray.name]: {
+ array: [255, 256, 2, 3, 4, NaN],
+ expected: "255,255,2,3,4,0",
+ },
+ [Float32Array.name]: {
+ array: [-0, 0, 0.5, -0.5, NaN, Infinity, -Infinity],
+ expected: "0,0,0.5,-0.5,NaN,Infinity,-Infinity",
+ },
+ [Float64Array.name]: {
+ array: [-0, 0, 0.5, -0.5, NaN, Infinity, -Infinity],
+ expected: "0,0,0.5,-0.5,NaN,Infinity,-Infinity",
+ },
+};
+for (let constructor of anyTypedArrayConstructors) {
+ let {array, expected} = testCases[constructor.name];
+ assertEq(new constructor(array).toString(), expected);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/uint8clamped-constructor.js b/js/src/tests/ecma_6/TypedArray/uint8clamped-constructor.js
new file mode 100644
index 000000000..3eefe70f1
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/uint8clamped-constructor.js
@@ -0,0 +1,9 @@
+for (var v of [-300, 255.6, 300, 3.5, -3.9]) {
+ var a = new Uint8ClampedArray([v]);
+ var b = new Uint8ClampedArray(1);
+ b[0] = v;
+
+ assertEq(a[0], b[0]);
+}
+
+reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/TypedArray/values.js b/js/src/tests/ecma_6/TypedArray/values.js
new file mode 100644
index 000000000..bf486bfa0
--- /dev/null
+++ b/js/src/tests/ecma_6/TypedArray/values.js
@@ -0,0 +1,37 @@
+for (var constructor of anyTypedArrayConstructors) {
+ assertEq(constructor.prototype.values.length, 0);
+ assertEq(constructor.prototype.values.name, "values");
+ assertEq(constructor.prototype.values, constructor.prototype[Symbol.iterator]);
+
+ assertDeepEq([...new constructor(0).values()], []);
+ assertDeepEq([...new constructor(1).values()], [0]);
+ assertDeepEq([...new constructor(2).values()], [0, 0]);
+ assertDeepEq([...new constructor([15]).values()], [15]);
+
+ var arr = new constructor([1, 2, 3]);
+ var iterator = arr.values();
+ assertDeepEq(iterator.next(), {value: 1, done: false});
+ assertDeepEq(iterator.next(), {value: 2, done: false});
+ assertDeepEq(iterator.next(), {value: 3, done: false});
+ assertDeepEq(iterator.next(), {value: undefined, done: true});
+
+ // Called from other globals.
+ if (typeof newGlobal === "function") {
+ var values = newGlobal()[constructor.name].prototype.values;
+ assertDeepEq([...values.call(new constructor([42, 36]))], [42, 36]);
+ arr = new (newGlobal()[constructor.name])([42, 36]);
+ assertEq([...constructor.prototype.values.call(arr)].toString(), "42,36");
+ }
+
+ // Throws if `this` isn't a TypedArray.
+ var invalidReceivers = [undefined, null, 1, false, "", Symbol(), [], {}, /./,
+ new Proxy(new constructor(), {})];
+ invalidReceivers.forEach(invalidReceiver => {
+ assertThrowsInstanceOf(() => {
+ constructor.prototype.values.call(invalidReceiver);
+ }, TypeError, "Assert that values fails if this value is not a TypedArray");
+ });
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/WeakMap/browser.js b/js/src/tests/ecma_6/WeakMap/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/WeakMap/browser.js
diff --git a/js/src/tests/ecma_6/WeakMap/shell.js b/js/src/tests/ecma_6/WeakMap/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/WeakMap/shell.js
diff --git a/js/src/tests/ecma_6/WeakMap/symbols.js b/js/src/tests/ecma_6/WeakMap/symbols.js
new file mode 100644
index 000000000..68d6518f2
--- /dev/null
+++ b/js/src/tests/ecma_6/WeakMap/symbols.js
@@ -0,0 +1,10 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/ */
+
+// Symbols can't be WeakMap keys.
+var m = new WeakMap;
+var sym = Symbol();
+assertThrowsInstanceOf(() => m.set(sym, 0), TypeError);
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);
diff --git a/js/src/tests/ecma_6/browser.js b/js/src/tests/ecma_6/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/browser.js
diff --git a/js/src/tests/ecma_6/extensions/ArrayBuffer-slice-arguments-detaching.js b/js/src/tests/ecma_6/extensions/ArrayBuffer-slice-arguments-detaching.js
new file mode 100644
index 000000000..1ff5c1ad5
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/ArrayBuffer-slice-arguments-detaching.js
@@ -0,0 +1,81 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs detachArrayBuffer()
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "ArrayBuffer-slice-arguments-detaching.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 991981;
+var summary =
+ "ArrayBuffer.prototype.slice shouldn't misbehave horribly if " +
+ "index-argument conversion detaches the ArrayBuffer being sliced";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function testStart()
+{
+ var ab = new ArrayBuffer(0x1000);
+
+ var start =
+ {
+ valueOf: function()
+ {
+ detachArrayBuffer(ab);
+ gc();
+ return 0x800;
+ }
+ };
+
+ var ok = false;
+ try
+ {
+ ab.slice(start);
+ }
+ catch (e)
+ {
+ ok = true;
+ }
+ assertEq(ok, true, "start weirdness should have thrown");
+ assertEq(ab.byteLength, 0, "detaching should work for start weirdness");
+}
+testStart();
+
+function testEnd()
+{
+ var ab = new ArrayBuffer(0x1000);
+
+ var end =
+ {
+ valueOf: function()
+ {
+ detachArrayBuffer(ab);
+ gc();
+ return 0x1000;
+ }
+ };
+
+ var ok = false;
+ try
+ {
+ ab.slice(0x800, end);
+ }
+ catch (e)
+ {
+ ok = true;
+ }
+ assertEq(ok, true, "byteLength weirdness should have thrown");
+ assertEq(ab.byteLength, 0, "detaching should work for byteLength weirdness");
+}
+testEnd();
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/extensions/DataView-construct-arguments-detaching.js b/js/src/tests/ecma_6/extensions/DataView-construct-arguments-detaching.js
new file mode 100644
index 000000000..14659f1d2
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/DataView-construct-arguments-detaching.js
@@ -0,0 +1,81 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs detachArrayBuffer()
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "DataView-construct-arguments-detaching.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 991981;
+var summary =
+ "new DataView(...) shouldn't misbehave horribly if index-argument " +
+ "conversion detaches the ArrayBuffer to be viewed";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function testByteOffset()
+{
+ var ab = new ArrayBuffer(0x1000);
+
+ var start =
+ {
+ valueOf: function()
+ {
+ detachArrayBuffer(ab);
+ gc();
+ return 0x800;
+ }
+ };
+
+ var ok = false;
+ try
+ {
+ new DataView(ab, start);
+ }
+ catch (e)
+ {
+ ok = true;
+ }
+ assertEq(ok, true, "byteOffset weirdness should have thrown");
+ assertEq(ab.byteLength, 0, "detaching should work for byteOffset weirdness");
+}
+testByteOffset();
+
+function testByteLength()
+{
+ var ab = new ArrayBuffer(0x1000);
+
+ var len =
+ {
+ valueOf: function()
+ {
+ detachArrayBuffer(ab);
+ gc();
+ return 0x800;
+ }
+ };
+
+ var ok = false;
+ try
+ {
+ new DataView(ab, 0x800, len);
+ }
+ catch (e)
+ {
+ ok = true;
+ }
+ assertEq(ok, true, "byteLength weirdness should have thrown");
+ assertEq(ab.byteLength, 0, "detaching should work for byteLength weirdness");
+}
+testByteLength();
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/extensions/DataView-set-arguments-detaching.js b/js/src/tests/ecma_6/extensions/DataView-set-arguments-detaching.js
new file mode 100644
index 000000000..b05ec480d
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/DataView-set-arguments-detaching.js
@@ -0,0 +1,85 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs detachArrayBuffer()
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "DataView-set-arguments-detaching.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 991981;
+var summary =
+ "DataView.prototype.set* methods shouldn't misbehave horribly if " +
+ "index-argument conversion detaches the ArrayBuffer being modified";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function testIndex()
+{
+ var ab = new ArrayBuffer(0x1000);
+
+ var dv = new DataView(ab);
+
+ var start =
+ {
+ valueOf: function()
+ {
+ detachArrayBuffer(ab);
+ gc();
+ return 0xFFF;
+ }
+ };
+
+ var ok = false;
+ try
+ {
+ dv.setUint8(start, 0x42);
+ }
+ catch (e)
+ {
+ ok = true;
+ }
+ assertEq(ok, true, "should have thrown");
+ assertEq(ab.byteLength, 0, "should have been detached correctly");
+}
+testIndex();
+
+function testValue()
+{
+ var ab = new ArrayBuffer(0x100000);
+
+ var dv = new DataView(ab);
+
+ var value =
+ {
+ valueOf: function()
+ {
+ detachArrayBuffer(ab);
+ gc();
+ return 0x42;
+ }
+ };
+
+ var ok = false;
+ try
+ {
+ dv.setUint8(0xFFFFF, value);
+ }
+ catch (e)
+ {
+ ok = true;
+ }
+ assertEq(ok, true, "should have thrown");
+ assertEq(ab.byteLength, 0, "should have been detached correctly");
+}
+testValue();
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/extensions/RegExp-replace-lastParen.js b/js/src/tests/ecma_6/extensions/RegExp-replace-lastParen.js
new file mode 100644
index 000000000..d06bfe7cd
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/RegExp-replace-lastParen.js
@@ -0,0 +1,12 @@
+var BUGNUMBER = 1263118;
+var summary = "RegExp.prototype[@@replace] with non-standard $+ substitution.";
+
+print(BUGNUMBER + ": " + summary);
+
+assertEq(/(a)(b)(c)/[Symbol.replace]("abc", "[$+]"), "[c]");
+assertEq(/(a)(b)c/[Symbol.replace]("abc", "[$+]"), "[b]");
+assertEq(/(a)bc/[Symbol.replace]("abc", "[$+]"), "[a]");
+assertEq(/abc/[Symbol.replace]("abc", "[$+]"), "[]");
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/extensions/String-match-flags.js b/js/src/tests/ecma_6/extensions/String-match-flags.js
new file mode 100644
index 000000000..b1a382fdf
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/String-match-flags.js
@@ -0,0 +1,27 @@
+var BUGNUMBER = 1263139;
+var summary = "String.prototype.match with non-string non-standard flags argument.";
+
+print(BUGNUMBER + ": " + summary);
+
+var called;
+var flags = {
+ toString() {
+ called = true;
+ return "";
+ }
+};
+
+called = false;
+"a".match("a", flags);
+assertEq(called, false);
+
+called = false;
+"a".search("a", flags);
+assertEq(called, false);
+
+called = false;
+"a".replace("a", "b", flags);
+assertEq(called, false);
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
diff --git a/js/src/tests/ecma_6/extensions/TypedArray-set-object-funky-length-detaches.js b/js/src/tests/ecma_6/extensions/TypedArray-set-object-funky-length-detaches.js
new file mode 100644
index 000000000..7379bf9a4
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/TypedArray-set-object-funky-length-detaches.js
@@ -0,0 +1,66 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs detachArrayBuffer()
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "set-object-funky-length-detaches.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 991981;
+var summary =
+ "%TypedArray%.prototype.set(object w/funky length property, offset) " +
+ "shouldn't misbehave if the funky length property detaches this typed " +
+ "array's buffer";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var ctors = [Int8Array, Uint8Array, Uint8ClampedArray,
+ Int16Array, Uint16Array,
+ Int32Array, Uint32Array,
+ Float32Array, Float64Array];
+ctors.forEach(function(TypedArray) {
+ var buf = new ArrayBuffer(512 * 1024);
+ var ta = new TypedArray(buf);
+
+ var arraylike =
+ {
+ 0: 17,
+ 1: 42,
+ 2: 3,
+ 3: 99,
+ 4: 37,
+ 5: 9,
+ 6: 72,
+ 7: 31,
+ 8: 22,
+ 9: 0,
+ get length()
+ {
+ detachArrayBuffer(buf);
+ return 10;
+ }
+ };
+
+ var passed = false;
+ try
+ {
+ ta.set(arraylike, 0x1234);
+ }
+ catch (e)
+ {
+ passed = true;
+ }
+
+ assertEq(passed, true);
+});
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/extensions/TypedArray-subarray-arguments-detaching.js b/js/src/tests/ecma_6/extensions/TypedArray-subarray-arguments-detaching.js
new file mode 100644
index 000000000..a6349657c
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/TypedArray-subarray-arguments-detaching.js
@@ -0,0 +1,112 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs detachArrayBuffer()
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile = "TypedArray-subarray-arguments-detaching.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 991981;
+var summary =
+ "%TypedArray.prototype.subarray shouldn't misbehave horribly if " +
+ "index-argument conversion detaches the underlying ArrayBuffer";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+function testBegin()
+{
+ var ab = new ArrayBuffer(0x1000);
+
+ var begin =
+ {
+ valueOf: function()
+ {
+ detachArrayBuffer(ab);
+ return 0x800;
+ }
+ };
+
+ var ta = new Uint8Array(ab);
+
+ var ok = false;
+ try
+ {
+ ta.subarray(begin);
+ }
+ catch (e)
+ {
+ ok = true;
+ }
+ assertEq(ok, true, "start weirdness should have thrown");
+ assertEq(ab.byteLength, 0, "detaching should work for start weirdness");
+}
+testBegin();
+
+function testBeginWithEnd()
+{
+ var ab = new ArrayBuffer(0x1000);
+
+ var begin =
+ {
+ valueOf: function()
+ {
+ detachArrayBuffer(ab);
+ return 0x800;
+ }
+ };
+
+ var ta = new Uint8Array(ab);
+
+ var ok = false;
+ try
+ {
+ ta.subarray(begin, 0x1000);
+ }
+ catch (e)
+ {
+ ok = true;
+ }
+ assertEq(ok, true, "start weirdness should have thrown");
+ assertEq(ab.byteLength, 0, "detaching should work for start weirdness");
+}
+testBeginWithEnd();
+
+function testEnd()
+{
+ var ab = new ArrayBuffer(0x1000);
+
+ var end =
+ {
+ valueOf: function()
+ {
+ detachArrayBuffer(ab);
+ return 0x1000;
+ }
+ };
+
+ var ta = new Uint8Array(ab);
+
+ var ok = false;
+ try
+ {
+ ta.subarray(0x800, end);
+ }
+ catch (e)
+ {
+ ok = true;
+ }
+ assertEq(ok, true, "start weirdness should have thrown");
+ assertEq(ab.byteLength, 0, "detaching should work for start weirdness");
+}
+testEnd();
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/extensions/array-isArray-proxy-recursion.js b/js/src/tests/ecma_6/extensions/array-isArray-proxy-recursion.js
new file mode 100644
index 000000000..ca2907a99
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/array-isArray-proxy-recursion.js
@@ -0,0 +1,41 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1282047;
+var summary = 'Infinite recursion via Array.isArray on a proxy';
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var proxy = Proxy.revocable([], {}).proxy;
+
+// A depth of 100000 ought to be enough for any platform to consume its entire
+// stack, hopefully without making any recalcitrant platforms time out. If no
+// timeout happens, the assertEq checks for the proper expected value.
+for (var i = 0; i < 1e5; i++)
+ proxy = new Proxy(proxy, {});
+
+try
+{
+ assertEq(Array.isArray(proxy), true);
+
+ // If we reach here, it's cool, we just didn't consume the entire stack.
+}
+catch (e)
+{
+ assertEq(e instanceof InternalError, true,
+ "should have thrown for over-recursion");
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/extensions/browser.js b/js/src/tests/ecma_6/extensions/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/browser.js
diff --git a/js/src/tests/ecma_6/extensions/element-setting-ToNumber-detaches.js b/js/src/tests/ecma_6/extensions/element-setting-ToNumber-detaches.js
new file mode 100644
index 000000000..82e0c0d87
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/element-setting-ToNumber-detaches.js
@@ -0,0 +1,36 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs detachArrayBuffer()
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+"use strict"; // make test fail when limitation below is fixed
+
+var gTestfile = 'element-setting-ToNumber-detaches.js';
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1001547;
+var summary =
+ "Don't assert assigning into memory detached while converting the value to " +
+ "assign into a number";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// Technically per current spec the element-sets should throw in strict mode,
+// but we just silently do nothing for now, somewhat due to limitations of our
+// internal MOP (which can't easily say "try this special behavior, else fall
+// back on normal logic"), somewhat because it's consistent with current
+// behavior (as of this test's addition) for out-of-bounds sets.
+
+var ab = new ArrayBuffer(64);
+var ta = new Uint32Array(ab);
+ta[4] = { valueOf() { detachArrayBuffer(ab); return 5; } };
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/extensions/for-loop-with-lexical-declaration-and-nested-function-statement.js b/js/src/tests/ecma_6/extensions/for-loop-with-lexical-declaration-and-nested-function-statement.js
new file mode 100644
index 000000000..9f6fd6467
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/for-loop-with-lexical-declaration-and-nested-function-statement.js
@@ -0,0 +1,130 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile =
+ "for-loop-with-lexical-declaration-and-nested-function-statement.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1149797;
+var summary =
+ "Don't assert when freshening the scope chain for a for-loop whose head " +
+ "contains a lexical declaration, where the loop body might add more " +
+ "bindings at runtime";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+for (let x = 0; x < 9; ++x) {
+ function q1() {}
+}
+
+{
+ for (let x = 0; x < 9; ++x) {
+ function q2() {}
+ }
+}
+
+function f1()
+{
+ for (let x = 0; x < 9; ++x) {
+ function q3() {}
+ }
+}
+f1();
+
+function f2()
+{
+ {
+ for (let x = 0; x < 9; ++x) {
+ function q4() {}
+ }
+ }
+}
+f2();
+
+for (let x = 0; x < 9; ++x)
+{
+ // deliberately inside a block statement
+ function q5() {}
+}
+
+{
+ for (let x = 0; x < 9; ++x)
+ {
+ // deliberately inside a block statement
+ function q6() {}
+ }
+}
+
+function g1()
+{
+ for (let x = 0; x < 9; ++x)
+ {
+ // deliberately inside a block statement
+ function q7() {}
+ }
+}
+g1();
+
+function g2()
+{
+ {
+ for (let x = 0; x < 9; ++x)
+ {
+ // deliberately inside a block statement
+ function q8() {}
+ }
+ }
+}
+g2();
+
+for (let x = 0; x < 9; ++x) {
+ (function() {
+ eval("function q9() {}");
+ })();
+}
+
+{
+ for (let x = 0; x < 9; ++x)
+ {
+ // deliberately inside a block statement
+ (function() {
+ eval("function q10() {}");
+ })();
+ }
+}
+
+function h1()
+{
+ for (let x = 0; x < 9; ++x)
+ {
+ // deliberately inside a block statement
+ (function() {
+ eval("function q11() {}");
+ })();
+ }
+}
+h1();
+
+function h2()
+{
+ {
+ for (let x = 0; x < 9; ++x)
+ {
+ // deliberately inside a block statement
+ (function() { eval("function q12() {}"); })();
+ }
+ }
+}
+h2();
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/extensions/keyword-unescaped-requirement-modules.js b/js/src/tests/ecma_6/extensions/keyword-unescaped-requirement-modules.js
new file mode 100644
index 000000000..260948cfe
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/keyword-unescaped-requirement-modules.js
@@ -0,0 +1,99 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1204027;
+var summary =
+ "Escape sequences aren't allowed in bolded grammar tokens (that is, in " +
+ "keywords, possibly contextual keywords)";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var badModules =
+ [
+ "\\u0069mport f from 'g'",
+ "i\\u006dport g from 'h'",
+ "import * \\u0061s foo",
+ "import {} fro\\u006d 'bar'",
+ "import { x \\u0061s y } from 'baz'",
+
+ "\\u0065xport function f() {}",
+ "e\\u0078port function g() {}",
+ "export * fro\\u006d 'fnord'",
+ "export d\\u0065fault var x = 3;",
+ "export { q } fro\\u006d 'qSupplier';",
+
+ ];
+
+if (typeof parseModule === "function")
+{
+ for (var module of badModules)
+ {
+ assertThrowsInstanceOf(() => parseModule(module), SyntaxError,
+ "bad behavior for: " + module);
+ }
+}
+
+if (typeof Reflect.parse === "function")
+{
+ var twoStatementAST =
+ Reflect.parse(`let x = 0;
+ export { x } /* ASI should trigger here */
+ fro\\u006D`,
+ { target: "module" });
+
+ var statements = twoStatementAST.body;
+ assertEq(statements.length, 3,
+ "should have two items in the module, not one ExportDeclaration");
+ assertEq(statements[0].type, "VariableDeclaration");
+ assertEq(statements[1].type, "ExportDeclaration");
+ assertEq(statements[2].type, "ExpressionStatement");
+ assertEq(statements[2].expression.name, "from");
+
+ var oneStatementAST =
+ Reflect.parse(`export { x } /* no ASI here */
+ from 'foo'`,
+ { target: "module" });
+
+ assertEq(oneStatementAST.body.length, 1);
+ assertEq(oneStatementAST.body[0].type, "ExportDeclaration");
+
+ twoStatementAST =
+ Reflect.parse(`export { x } from "bar"
+ /bar/g`,
+ { target: "module" });
+
+ statements = twoStatementAST.body;
+ assertEq(statements.length, 2,
+ "should have two items in the module, not one ExportDeclaration");
+ assertEq(statements[0].type, "ExportDeclaration");
+ assertEq(statements[1].type, "ExpressionStatement");
+ assertEq(statements[1].expression.type, "Literal");
+ assertEq(statements[1].expression.value.toString(), "/bar/g");
+
+ twoStatementAST =
+ Reflect.parse(`export * from "bar"
+ /bar/g`,
+ { target: "module" });
+
+ statements = twoStatementAST.body;
+ assertEq(statements.length, 2,
+ "should have two items in the module, not one ExportDeclaration");
+ assertEq(statements[0].type, "ExportDeclaration");
+ assertEq(statements[1].type, "ExpressionStatement");
+ assertEq(statements[1].expression.type, "Literal");
+ assertEq(statements[1].expression.value.toString(), "/bar/g");
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/extensions/keyword-unescaped-requirement.js b/js/src/tests/ecma_6/extensions/keyword-unescaped-requirement.js
new file mode 100644
index 000000000..20d3555e3
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/keyword-unescaped-requirement.js
@@ -0,0 +1,43 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1204027;
+var summary =
+ "Escape sequences aren't allowed in bolded grammar tokens (that is, in " +
+ "keywords, possibly contextual keywords)";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var randomExtensions =
+ [
+ "for \\u0065ach (var x in []);",
+ "for e\\u0061ch (var x in []);",
+ "[0 for \\u0065ach (var x in [])]",
+ "[0 for e\\u0061ch (var x in [])]",
+ "(0 for \\u0065ach (var x in []))",
+ "(0 for e\\u0061ch (var x in []))",
+
+ // Soon to be not an extension, maybe...
+ "(for (x \\u006ff [1]) x)",
+ "(for (x o\\u0066 [1]) x)",
+ ];
+
+for (var extension of randomExtensions)
+{
+ assertThrowsInstanceOf(() => Function(extension), SyntaxError,
+ "bad behavior for: " + extension);
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/extensions/new-cross-compartment.js b/js/src/tests/ecma_6/extensions/new-cross-compartment.js
new file mode 100644
index 000000000..5df437520
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/new-cross-compartment.js
@@ -0,0 +1,42 @@
+// Any copyright is dedicated to the Public Domain.
+// http://creativecommons.org/licenses/publicdomain/
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1178653;
+var summary =
+ "|new| on a cross-compartment wrapper to a non-constructor shouldn't assert";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+var g = newGlobal();
+
+var otherStr = new g.String("foo");
+assertEq(otherStr instanceof g.String, true);
+assertEq(otherStr.valueOf(), "foo");
+
+// THIS IS WRONG. |new| itself should throw if !IsConstructor(constructor),
+// meaning this global's TypeError should be used. The problem ultimately is
+// that wrappers conflate callable/constructible, so any old function from
+// another global appears to be both. Somebody fix bug XXXXXX!
+try
+{
+ var constructor = g.parseInt;
+ new constructor();
+ throw new Error("no error thrown");
+}
+catch (e)
+{
+ assertEq(e instanceof g.TypeError, true,
+ "THIS REALLY SHOULD BE |e instanceof TypeError|");
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/extensions/reentrant-RegExp-creation-and-gc-during-new-RegExp-pattern-ToString.js b/js/src/tests/ecma_6/extensions/reentrant-RegExp-creation-and-gc-during-new-RegExp-pattern-ToString.js
new file mode 100644
index 000000000..0ec0b493e
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/reentrant-RegExp-creation-and-gc-during-new-RegExp-pattern-ToString.js
@@ -0,0 +1,41 @@
+// |reftest| skip-if(!xulRuntime.shell) -- needs gc (newGlobal/evaluate are shimmed)
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+var gTestfile =
+ "reentrant-RegExp-creation-and-gc-during-new-RegExp-pattern-ToString.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1253099;
+var summary =
+ "Don't assert when, in |new RegExp(pat)|, stringifying |pat| creates " +
+ "another RegExp and then performs a GC";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+// The fresh global object is required to ensure that the outer |new RegExp|
+// is the first RegExp created in the global (other than RegExp.prototype).
+newGlobal().evaluate(`
+var createsRegExpAndCallsGCWhenStringified =
+ {
+ toString: function() {
+ new RegExp("a");
+ gc();
+ return "q";
+ }
+ };
+
+assertEq(new RegExp(createsRegExpAndCallsGCWhenStringified).source, "q");
+`);
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/extensions/setImmutablePrototype.js b/js/src/tests/ecma_6/extensions/setImmutablePrototype.js
new file mode 100644
index 000000000..9226dcce2
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/setImmutablePrototype.js
@@ -0,0 +1,195 @@
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var gTestfile = "setImmutablePrototype.js";
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 1052139;
+var summary =
+ "Implement JSAPI and a shell function to prevent modifying an extensible " +
+ "object's [[Prototype]]";
+
+print(BUGNUMBER + ": " + summary);
+
+/**************
+ * BEGIN TEST *
+ **************/
+
+if (typeof evaluate !== "function")
+{
+ // Not totally faithful semantics, but approximately close enough for this
+ // test's purposes.
+ evaluate = eval;
+}
+
+var usingRealSetImmutablePrototype = true;
+
+if (typeof setImmutablePrototype !== "function")
+{
+ usingRealSetImmutablePrototype = false;
+
+ if (typeof SpecialPowers !== "undefined")
+ {
+ setImmutablePrototype =
+ SpecialPowers.Cu.getJSTestingFunctions().setImmutablePrototype;
+ }
+}
+
+if (typeof wrap !== "function")
+{
+ // good enough
+ wrap = function(x) { return x; };
+}
+
+function setViaProtoSetter(obj, newProto)
+{
+ var setter =
+ Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set;
+ setter.call(obj, newProto);
+}
+
+function checkPrototypeMutationFailure(obj, desc)
+{
+ var initialProto = Object.getPrototypeOf(obj);
+
+ // disconnected from any [[Prototype]] chains for use on any object at all
+ var newProto = Object.create(null);
+
+ function tryMutate(func, method)
+ {
+ try
+ {
+ func(obj, newProto);
+ throw new Error(desc + ": no error thrown, prototype " +
+ (Object.getPrototypeOf(obj) === initialProto
+ ? "wasn't"
+ : "was") +
+ " changed");
+ }
+ catch (e)
+ {
+ // Note: This is always a TypeError from *this* global object, because
+ // Object.setPrototypeOf and the __proto__ setter come from *this*
+ // global object.
+ assertEq(e instanceof TypeError, true,
+ desc + ": should have thrown TypeError setting [[Prototype]] " +
+ "via " + method + ", got " + e);
+ assertEq(Object.getPrototypeOf(obj), initialProto,
+ desc + ": shouldn't observe [[Prototype]] change");
+ }
+ }
+
+ tryMutate(Object.setPrototypeOf, "Object.setPrototypeOf");
+ tryMutate(setViaProtoSetter, "__proto__ setter");
+}
+
+function runNormalTests(global)
+{
+ if (typeof setImmutablePrototype !== "function")
+ {
+ print("no testable setImmutablePrototype function available, skipping tests");
+ return;
+ }
+
+ // regular old object, non-null [[Prototype]]
+
+ var emptyLiteral = global.evaluate("({})");
+ assertEq(setImmutablePrototype(emptyLiteral), true);
+ checkPrototypeMutationFailure(emptyLiteral, "empty literal");
+
+ // regular old object, null [[Prototype]]
+
+ var nullProto = global.Object.create(null);
+ assertEq(setImmutablePrototype(nullProto), true);
+ checkPrototypeMutationFailure(nullProto, "nullProto");
+
+ // Shocker: SpecialPowers's little mind doesn't understand proxies. Abort.
+ if (!usingRealSetImmutablePrototype)
+ return;
+
+ // direct proxies
+
+ var emptyTarget = global.evaluate("({})");
+ var directProxy = new global.Proxy(emptyTarget, {});
+ assertEq(setImmutablePrototype(directProxy), true);
+ checkPrototypeMutationFailure(directProxy, "direct proxy to empty target");
+ checkPrototypeMutationFailure(emptyTarget, "empty target");
+
+ var anotherTarget = global.evaluate("({})");
+ var anotherDirectProxy = new global.Proxy(anotherTarget, {});
+ assertEq(setImmutablePrototype(anotherTarget), true);
+ checkPrototypeMutationFailure(anotherDirectProxy, "another direct proxy to empty target");
+ checkPrototypeMutationFailure(anotherTarget, "another empty target");
+
+ var nestedTarget = global.evaluate("({})");
+ var nestedProxy = new global.Proxy(new Proxy(nestedTarget, {}), {});
+ assertEq(setImmutablePrototype(nestedProxy), true);
+ checkPrototypeMutationFailure(nestedProxy, "nested proxy to empty target");
+ checkPrototypeMutationFailure(nestedTarget, "nested target");
+
+ // revocable proxies
+
+ var revocableTarget = global.evaluate("({})");
+ var revocable = global.Proxy.revocable(revocableTarget, {});
+ assertEq(setImmutablePrototype(revocable.proxy), true);
+ checkPrototypeMutationFailure(revocableTarget, "revocable target");
+ checkPrototypeMutationFailure(revocable.proxy, "revocable proxy");
+
+ assertEq(revocable.revoke(), undefined);
+ try
+ {
+ setImmutablePrototype(revocable.proxy);
+ throw new Error("expected to throw on revoked proxy");
+ }
+ catch (e)
+ {
+ // Note: This is a TypeError from |global|, because the proxy's
+ // |setImmutablePrototype| method is what actually throws here.
+ // (Usually the method simply sets |*succeeded| to false and the
+ // caller handles or throws as needed after that. But not here.)
+ assertEq(e instanceof global.TypeError, true,
+ "expected TypeError, instead threw " + e);
+ }
+
+ var anotherRevocableTarget = global.evaluate("({})");
+ assertEq(setImmutablePrototype(anotherRevocableTarget), true);
+ checkPrototypeMutationFailure(anotherRevocableTarget, "another revocable target");
+
+ var anotherRevocable = global.Proxy.revocable(anotherRevocableTarget, {});
+ checkPrototypeMutationFailure(anotherRevocable.proxy, "another revocable target");
+
+ assertEq(anotherRevocable.revoke(), undefined);
+ try
+ {
+ var rv = setImmutablePrototype(anotherRevocable.proxy);
+ throw new Error("expected to throw on another revoked proxy, returned " + rv);
+ }
+ catch (e)
+ {
+ // NOTE: Again from |global|, as above.
+ assertEq(e instanceof global.TypeError, true,
+ "expected TypeError, instead threw " + e);
+ }
+}
+
+var global = this;
+runNormalTests(global); // same-global
+
+if (typeof newGlobal === "function")
+{
+ var otherGlobal = newGlobal();
+ var subsumingNothing = newGlobal({ principal: 0 });
+ var subsumingEverything = newGlobal({ principal: ~0 });
+
+ runNormalTests(otherGlobal); // cross-global
+ runNormalTests(subsumingNothing);
+ runNormalTests(subsumingEverything);
+}
+
+/******************************************************************************/
+
+if (typeof reportCompare === "function")
+ reportCompare(true, true);
+
+print("Tests complete");
diff --git a/js/src/tests/ecma_6/extensions/shell.js b/js/src/tests/ecma_6/extensions/shell.js
new file mode 100644
index 000000000..4d731295d
--- /dev/null
+++ b/js/src/tests/ecma_6/extensions/shell.js
@@ -0,0 +1,5 @@
+// NOTE: This only turns on 1.8.5 in shell builds. The browser requires the
+// futzing in js/src/tests/browser.js (which only turns on 1.8, the most
+// the browser supports).
+if (typeof version != 'undefined')
+ version(185);
diff --git a/js/src/tests/ecma_6/shell.js b/js/src/tests/ecma_6/shell.js
new file mode 100644
index 000000000..06be6f2db
--- /dev/null
+++ b/js/src/tests/ecma_6/shell.js
@@ -0,0 +1,235 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+(function(global) {
+ /** Yield every permutation of the elements in some array. */
+ global.Permutations = function* Permutations(items) {
+ if (items.length == 0) {
+ yield [];
+ } else {
+ items = items.slice(0);
+ for (let i = 0; i < items.length; i++) {
+ let swap = items[0];
+ items[0] = items[i];
+ items[i] = swap;
+ for (let e of Permutations(items.slice(1, items.length)))
+ yield [items[0]].concat(e);
+ }
+ }
+ };
+})(this);
+
+if (typeof assertThrowsInstanceOf === 'undefined') {
+ var assertThrowsInstanceOf = function assertThrowsInstanceOf(f, ctor, msg) {
+ var fullmsg;
+ try {
+ f();
+ } catch (exc) {
+ if (exc instanceof ctor)
+ return;
+ fullmsg = "Assertion failed: expected exception " + ctor.name + ", got " + exc;
+ }
+ if (fullmsg === undefined)
+ fullmsg = "Assertion failed: expected exception " + ctor.name + ", no exception thrown";
+ if (msg !== undefined)
+ fullmsg += " - " + msg;
+ throw new Error(fullmsg);
+ };
+}
+
+if (typeof assertThrowsValue === 'undefined') {
+ var assertThrowsValue = function assertThrowsValue(f, val, msg) {
+ var fullmsg;
+ try {
+ f();
+ } catch (exc) {
+ if ((exc === val) === (val === val) && (val !== 0 || 1 / exc === 1 / val))
+ return;
+ fullmsg = "Assertion failed: expected exception " + val + ", got " + exc;
+ }
+ if (fullmsg === undefined)
+ fullmsg = "Assertion failed: expected exception " + val + ", no exception thrown";
+ if (msg !== undefined)
+ fullmsg += " - " + msg;
+ throw new Error(fullmsg);
+ };
+}
+
+if (typeof assertDeepEq === 'undefined') {
+ var assertDeepEq = (function(){
+ var call = Function.prototype.call,
+ Array_isArray = Array.isArray,
+ Map_ = Map,
+ Error_ = Error,
+ Symbol_ = Symbol,
+ Map_has = call.bind(Map.prototype.has),
+ Map_get = call.bind(Map.prototype.get),
+ Map_set = call.bind(Map.prototype.set),
+ Object_toString = call.bind(Object.prototype.toString),
+ Function_toString = call.bind(Function.prototype.toString),
+ Object_getPrototypeOf = Object.getPrototypeOf,
+ Object_hasOwnProperty = call.bind(Object.prototype.hasOwnProperty),
+ Object_getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor,
+ Object_isExtensible = Object.isExtensible,
+ Object_getOwnPropertyNames = Object.getOwnPropertyNames,
+ uneval_ = uneval;
+
+ // Return true iff ES6 Type(v) isn't Object.
+ // Note that `typeof document.all === "undefined"`.
+ function isPrimitive(v) {
+ return (v === null ||
+ v === undefined ||
+ typeof v === "boolean" ||
+ typeof v === "number" ||
+ typeof v === "string" ||
+ typeof v === "symbol");
+ }
+
+ function assertSameValue(a, b, msg) {
+ try {
+ assertEq(a, b);
+ } catch (exc) {
+ throw Error_(exc.message + (msg ? " " + msg : ""));
+ }
+ }
+
+ function assertSameClass(a, b, msg) {
+ var ac = Object_toString(a), bc = Object_toString(b);
+ assertSameValue(ac, bc, msg);
+ switch (ac) {
+ case "[object Function]":
+ if (typeof isProxy !== "undefined" && !isProxy(a) && !isProxy(b))
+ assertSameValue(Function_toString(a), Function_toString(b), msg);
+ }
+ }
+
+ function at(prevmsg, segment) {
+ return prevmsg ? prevmsg + segment : "at _" + segment;
+ }
+
+ // Assert that the arguments a and b are thoroughly structurally equivalent.
+ //
+ // For the sake of speed, we cut a corner:
+ // var x = {}, y = {}, ax = [x];
+ // assertDeepEq([ax, x], [ax, y]); // passes (?!)
+ //
+ // Technically this should fail, since the two object graphs are different.
+ // (The graph of [ax, y] contains one more object than the graph of [ax, x].)
+ //
+ // To get technically correct behavior, pass {strictEquivalence: true}.
+ // This is slower because we have to walk the entire graph, and Object.prototype
+ // is big.
+ //
+ return function assertDeepEq(a, b, options) {
+ var strictEquivalence = options ? options.strictEquivalence : false;
+
+ function assertSameProto(a, b, msg) {
+ check(Object_getPrototypeOf(a), Object_getPrototypeOf(b), at(msg, ".__proto__"));
+ }
+
+ function failPropList(na, nb, msg) {
+ throw Error_("got own properties " + uneval_(na) + ", expected " + uneval_(nb) +
+ (msg ? " " + msg : ""));
+ }
+
+ function assertSameProps(a, b, msg) {
+ var na = Object_getOwnPropertyNames(a),
+ nb = Object_getOwnPropertyNames(b);
+ if (na.length !== nb.length)
+ failPropList(na, nb, msg);
+
+ // Ignore differences in whether Array elements are stored densely.
+ if (Array_isArray(a)) {
+ na.sort();
+ nb.sort();
+ }
+
+ for (var i = 0; i < na.length; i++) {
+ var name = na[i];
+ if (name !== nb[i])
+ failPropList(na, nb, msg);
+ var da = Object_getOwnPropertyDescriptor(a, name),
+ db = Object_getOwnPropertyDescriptor(b, name);
+ var pmsg = at(msg, /^[_$A-Za-z0-9]+$/.test(name)
+ ? /0|[1-9][0-9]*/.test(name) ? "[" + name + "]" : "." + name
+ : "[" + uneval_(name) + "]");
+ assertSameValue(da.configurable, db.configurable, at(pmsg, ".[[Configurable]]"));
+ assertSameValue(da.enumerable, db.enumerable, at(pmsg, ".[[Enumerable]]"));
+ if (Object_hasOwnProperty(da, "value")) {
+ if (!Object_hasOwnProperty(db, "value"))
+ throw Error_("got data property, expected accessor property" + pmsg);
+ check(da.value, db.value, pmsg);
+ } else {
+ if (Object_hasOwnProperty(db, "value"))
+ throw Error_("got accessor property, expected data property" + pmsg);
+ check(da.get, db.get, at(pmsg, ".[[Get]]"));
+ check(da.set, db.set, at(pmsg, ".[[Set]]"));
+ }
+ }
+ };
+
+ var ab = new Map_();
+ var bpath = new Map_();
+
+ function check(a, b, path) {
+ if (typeof a === "symbol") {
+ // Symbols are primitives, but they have identity.
+ // Symbol("x") !== Symbol("x") but
+ // assertDeepEq(Symbol("x"), Symbol("x")) should pass.
+ if (typeof b !== "symbol") {
+ throw Error_("got " + uneval_(a) + ", expected " + uneval_(b) + " " + path);
+ } else if (uneval_(a) !== uneval_(b)) {
+ // We lamely use uneval_ to distinguish well-known symbols
+ // from user-created symbols. The standard doesn't offer
+ // a convenient way to do it.
+ throw Error_("got " + uneval_(a) + ", expected " + uneval_(b) + " " + path);
+ } else if (Map_has(ab, a)) {
+ assertSameValue(Map_get(ab, a), b, path);
+ } else if (Map_has(bpath, b)) {
+ var bPrevPath = Map_get(bpath, b) || "_";
+ throw Error_("got distinct symbols " + at(path, "") + " and " +
+ at(bPrevPath, "") + ", expected the same symbol both places");
+ } else {
+ Map_set(ab, a, b);
+ Map_set(bpath, b, path);
+ }
+ } else if (isPrimitive(a)) {
+ assertSameValue(a, b, path);
+ } else if (isPrimitive(b)) {
+ throw Error_("got " + Object_toString(a) + ", expected " + uneval_(b) + " " + path);
+ } else if (Map_has(ab, a)) {
+ assertSameValue(Map_get(ab, a), b, path);
+ } else if (Map_has(bpath, b)) {
+ var bPrevPath = Map_get(bpath, b) || "_";
+ throw Error_("got distinct objects " + at(path, "") + " and " + at(bPrevPath, "") +
+ ", expected the same object both places");
+ } else {
+ Map_set(ab, a, b);
+ Map_set(bpath, b, path);
+ if (a !== b || strictEquivalence) {
+ assertSameClass(a, b, path);
+ assertSameProto(a, b, path);
+ assertSameProps(a, b, path);
+ assertSameValue(Object_isExtensible(a),
+ Object_isExtensible(b),
+ at(path, ".[[Extensible]]"));
+ }
+ }
+ }
+
+ check(a, b, "");
+ };
+ })();
+}
+
+if (typeof assertWarning === 'undefined') {
+ function assertWarning(func, name) {
+ enableLastWarning();
+ func();
+ var warning = getLastWarning();
+ assertEq(warning !== null, true);
+ assertEq(warning.name, name);
+ disableLastWarning();
+ }
+}
diff --git a/js/src/tests/ecma_6/toLength.js b/js/src/tests/ecma_6/toLength.js
new file mode 100644
index 000000000..f2216e7b9
--- /dev/null
+++ b/js/src/tests/ecma_6/toLength.js
@@ -0,0 +1,41 @@
+// |reftest| skip-if(!xulRuntime.shell)
+var BUGNUMBER = 1040196;
+var summary = 'ToLength';
+
+print(BUGNUMBER + ": " + summary);
+
+var ToLength = getSelfHostedValue('ToLength');
+
+// Negative operands
+assertEq(ToLength(-0), 0);
+assertEq(ToLength(-1), 0);
+assertEq(ToLength(-2), 0);
+assertEq(ToLength(-1 * Math.pow(2, 56)), 0);
+assertEq(ToLength(-1 * Math.pow(2, 56) - 2), 0);
+assertEq(ToLength(-1 * Math.pow(2, 56) - 2.4444), 0);
+assertEq(ToLength(-Infinity), 0);
+
+// Small non-negative operands
+assertEq(ToLength(0), 0);
+assertEq(ToLength(1), 1);
+assertEq(ToLength(2), 2);
+assertEq(ToLength(3.3), 3);
+assertEq(ToLength(10/3), 3);
+
+// Large non-negative operands
+var maxLength = Math.pow(2, 53) - 1;
+assertEq(ToLength(maxLength - 1), maxLength - 1);
+assertEq(ToLength(maxLength - 0.0000001), maxLength);
+assertEq(ToLength(maxLength), maxLength);
+assertEq(ToLength(maxLength + 0.00000000000001), maxLength);
+assertEq(ToLength(maxLength + 1), maxLength);
+assertEq(ToLength(maxLength + 2), maxLength);
+assertEq(ToLength(Math.pow(2,54)), maxLength);
+assertEq(ToLength(Math.pow(2,64)), maxLength);
+assertEq(ToLength(Infinity), maxLength);
+
+// NaN operand
+assertEq(ToLength(NaN), 0);
+
+
+reportCompare(0, 0, "ok");