From c5b337a013701e7e12035734970aee8e264e231b Mon Sep 17 00:00:00 2001 From: tanner-ricks <182143365+tanner-ricks@users.noreply.github.com> Date: Fri, 27 Sep 2024 13:37:38 -0500 Subject: [PATCH] feat: e2e test for user profile character limits --- .../NonAssociatedUserProfile.spec.ts | 63 +++++++++++++++++++ e2e/utils/unicodeConstants.ts | 8 +++ 2 files changed, 71 insertions(+) create mode 100644 e2e/utils/unicodeConstants.ts diff --git a/e2e/pages/shared-lending-platform/NonAssociatedUserProfile.spec.ts b/e2e/pages/shared-lending-platform/NonAssociatedUserProfile.spec.ts index 6959113c..5bed1cf2 100644 --- a/e2e/pages/shared-lending-platform/NonAssociatedUserProfile.spec.ts +++ b/e2e/pages/shared-lending-platform/NonAssociatedUserProfile.spec.ts @@ -1,5 +1,6 @@ import { expect } from '@playwright/test'; import { test } from '../../fixtures/testFixture'; +import { controlUnicode } from '../../utils/unicodeConstants'; const expectedNoAssociationsSummaryUrl = /\/profile\/complete\/summary\/submitted$/; @@ -29,5 +30,67 @@ test('Complete User Profile -- No Associations -- process', async ({ // redirected to the summary page await expect(page).toHaveURL(expectedNoAssociationsSummaryUrl); await expect(page.locator('#Summary div').first()).toBeVisible(); + await page.getByLabel('First name').click(); + await page.getByLabel('First name').click(); + await page.getByLabel('First name').click(); + }); +}); + +test('Complete User Profile with Bad Unicode -- No Associations -- process', async ({ + page, +}) => { + test.slow(); + + await test.step('Fillout Complete User Profile (No Associations) with bad unicode and verify values', async () => { + const expectedValues = { + firstField: controlUnicode.slice(0, 255), + lastField: controlUnicode.slice(0, 255), + finField: controlUnicode, // Update with correct value after limit in place + leiField: controlUnicode, // Update with correct value after limit in place + }; + const unexpectedValues = { + firstField: controlUnicode, + lastField: controlUnicode, + finField: '', // Change to controlUnicode after limit in place + leiField: '', // Change to controlUnicode after limit in place + }; + + await page.getByLabel('First name').click(); + await page.getByLabel('First name').fill(controlUnicode); + + await page.getByLabel('Last name').click(); + await page.getByLabel('Last name').fill(controlUnicode); + + await page.getByLabel('Financial institution name').click(); + await page.getByLabel('Financial institution name').fill(controlUnicode); + + await page.getByLabel('Legal Entity Identifier (LEI)').click(); + await page.getByLabel('Legal Entity Identifier (LEI)').fill(controlUnicode); + + await expect(page.getByLabel('First name')).not.toHaveValue( + unexpectedValues.firstField, + ); + await expect(page.getByLabel('Last name')).not.toHaveValue( + unexpectedValues.lastField, + ); + await expect(page.getByLabel('Financial institution name')).not.toHaveValue( + unexpectedValues.finField, + ); + await expect( + page.getByLabel('Legal Entity Identifier (LEI)'), + ).not.toHaveValue(unexpectedValues.leiField); + + await expect(page.getByLabel('First name')).toHaveValue( + expectedValues.firstField, + ); + await expect(page.getByLabel('Last name')).toHaveValue( + expectedValues.lastField, + ); + await expect(page.getByLabel('Financial institution name')).toHaveValue( + expectedValues.finField, + ); + await expect(page.getByLabel('Legal Entity Identifier (LEI)')).toHaveValue( + expectedValues.leiField, + ); }); }); diff --git a/e2e/utils/unicodeConstants.ts b/e2e/utils/unicodeConstants.ts new file mode 100644 index 00000000..83bfc701 --- /dev/null +++ b/e2e/utils/unicodeConstants.ts @@ -0,0 +1,8 @@ +// Test string that contains +// 'invisible' unicode +// control characters +export const controlUnicode = 'ȃ̸̡̡̡̛̛̛̛̛̛̛̮̝̫͓͚͎̘͉̞͙̯̲̬̖͕̥̦̼͈̳͔̟̥̜͕̯͚͈̩̼̪̤̝͉͙͕̭̃̔̈̂̇̅̀͊̀̓͋̽͊̍̄͆́̈́͛͒̈̉̇̑̓̊̋̔̒͆́͋͋̎̄͑̂̌̓̔̀͑̈́̀̑̈̔̊̾͂́̓̐͐͆́͐̀̋̓̄͛͊͗͊̒̿͗́͌̂̀̆̈́̈́͑̑͑̽̌̎́̏̓̈̎͐́̍̽̈͐̈́̃̔̒͒͛̎͆͋̆̈́͒͗̔̿̃͂͑͆͌͐̇̔́̅̄̄͆͋̆̇̀͊́̐̈́̽́̉͆̋͒̍́̊̈͐̐͊́̑͑̌̌́̐̽̇̂̓̆̿͒́̅͛̓͋̏̏̃̆͋͒͐͑̆͛͒́̋̄̈́́̾̍͗͆͊̈́̍͛͗̉̄̓̀̏͋͌͐́̿͌̿͆͂̀̈́̀͑́͆̎͐̾̊̅̅͑̎̆̈́̕͘̚̕̕̕͘̚̚̕͘͘̕̕̕̕͝͝͠͝͠͠͝͝͠͠͝͝͝͠ͅͅs̴̡̡̡̢̨̡̢̨̨̢̧̢̢̨̧̢̨̛̛̬̲̤̙̬̟͎͈̫̬̬̗͙̬̻͕̰̖͈͈͎͓̻̝̻͇̭̙̭̣̳͎͈̪̻̖͇̰̜̤̺̺̩͖̘̲̳̻͓͎̰̞̰͙̰̮̣͇̘̖̟͉̯̦̝̖͉̜̫̝͉̘͎̯̗̗͇̲̯̗̰̯͔̩̦̰̥̗͔̙̟̪̲̼̞̹̦̺̤̻͈̱̥̥͕̟͓̝͉̖̜̫̤̮̘͉͈̥̪͔͇̖̝͚̹̬̤̹̥̲̞̣̤̟͇͇̰͖̟̘̠̘͇̜̩̺̻̰͚̘̯̹͕̺̠̪̻̗̱̜̞̙̺̩̟̩̰̫͉̦̟̰̼͉͎̲̜̠̈̌͆͑̒̐́͌̏̍̑̃͊͋̾̈́̔̑̋̍̃̍͐̾̋̐̈̌͑̈́̍́͋͂͌̅̋͊͊̑̃̉̉̒͒̿͗̋̋̓͐̾͑͗́̇̎̾͑́̉͐͊̂̾̋̇͐̅̈́̏̓͗͐̀̏͗̔̍̇́͐̈̑̐̍̈́͑̇̓̾̈́̓̍͂́̏̋̋͂̅̅͊̓̆̈́̉̿̂͆̊̀͛͆̔̄̂̈́̌͒̍́̾̅̑͒̀̃̓̅̆̊̾̾̂͒̎̅̅̿̌́̊̃̾̍̾̍͒̉́̆̉̓͑͊͊̎̓̈́́̍̓̿͐̅̋̅́̃̒́̉̇̈́̏͒̒̅̅͊̈́͑̇̿̾̏̊̂̽̃̈́̃̈́̀̿̐̍͌̅͑̋͂̓̎̎͛̃̾͒͋̆̃́́͂͋̑̍̈̌̊̋̈̋̾̈͋̎͗̇̌̈́̀̂̇̚͘̕͘̕̚̚̕̕̕̕͘̕͘͘̚̕͜͜͜͜͜͜͜͝͝͝͝͝͝͝͝͝͠͠͝͝͝͠͠ͅͅͅͅͅḑ̶̡̡̨̧̡̨̧̧̡̡̢̡̡̨̡̢̧̛̭͔̦̱̖̰̲̼̥͔̙͓͎͇̗̣̞̘̯̜̟͙̘̫̘̹̲͈̩͈̙̻͚̺͓̭̤̣̣̩̗̬̳̜̜̣̤̥̯̬͙̗̬̩̲̮̱̝͖̱̥̭̙̖̰̻̱̗͖̲̮̬̺͔̞̬͎̫͕̖͇̹̩̳̟̹̯͍̤̥̗̼̩̝̱͉̹̦̣̬̖̜͓̖̘̖̣̳̻͙͓͍̮̥͕͚͉̼̤̤͍̰͖͙̭̫̠̠͓̫͚̯̝̘̰̤͛͊͒́̇̓̅̈́̃̉͂̾͐́̊̑̃̔̈́͋̈́̆̇̎̈͐̽͌̕̕͜͜͜͜͜͜͜͠͝͝ͅͅͅͅͅf̸̨̨̧̨̧̢̨̧̢̧̢̛̛̛̛̬̥̥͚͕̟̻̣͚͖̲̖̥̣͔̩͇̹̦̮͓̰̥̭͔̠̙͙͇̼̣͓̻͕̯̱͉̼̲͔̜͔͇͔̠̝̩̲͕̺̞͇̼̺̹̞̪̯̦̫̯̰̫̥͙̮̺̣̰̜̖͓̗̯̳͕͓̞̭̜̘̘̯̹̠̖̘̮̪̪͈̰̣̤̙̯͖͚͎̖̭͔̗͕͇̹̹̗̬̮̪͔̲̯͚̠͔̫͎͍͔̍̅̌͆͒͌́̐͑̌̏̇̒̌͋̂̃̀̑͒̅̔̔͗͒̾̃͊̆̔̿̀̓̋̀͑̅̒͑̎̔̑̉̍͊͑̂̉͒̔̈́͗̀̈̀̅͛̅̃͂͂͑̋͐͑̄͂͛̅̈͗̀͛̓̉̌̓͛͋̅̄̒̄́̈́̋̓̂̐̄̄́̂̄͊̌͛́̉̈́̃́̂̈́̈́͂̈́̏̋̇͆́̂̒̿̅̈̇͒̍͋̏͆͐̀͌͊͊͒̽̑̽̈́̀͆̎̔́̒̀̇͂́̐͆̊̀͋̓̈́̽̍̀͆̇͐̋̊̆̀͛̌͂̀̒̓̓̔̑͐̈́̿́̊̑̈̿̎̍̍͐̿̇̃͌̀̈́̉͐̓̋͊̇̓͊̄̔͆̍͐̀̎͌͋̓̀̅́̐͌͂̔̀̈̽̀̎͛̕̚̚̕̕͘͘̚͘͘̕̚̕̚̕̚̚̚͘̚͘̕͜͠͠͝͠͝͝͝͝͝͝͝͠͝͠͝ͅͅͅͅͅͅs̷̢̧̧̡̢̡̡̧̧̧̧̡̡̡̨̡̨̧̢̡̡̡̧̢̨̨̛̭̱̹̖͔̦̠̰͇͓͙̖̝̖̝͍̳̟̠͕̫̫͖̦͈̩̳͖̮̗̳̩̼̼̞̘͉͉͚̭̮͎̗͍̤̦͔̮̣̖͇͍͎̝̞̰̥̘̭̙͙͚̥̦̥̗̣̹̫̦̬̖̝̞̳̦̳̰̜̼̘̞͈̙̣̱̟̪̲̼̟̭͈̯̠̰͔̣͎͈̝̗͚͈͕̯̼͇͔͔̬̹͍̥̜͖͍̘̟͈̳͕̙͈̝̜̰͈̗͖̖̻͎̝̝͕͍͕͇̦̫͈͔̞̪̠̻͎̘̲̳̝̺̻̰̙͙̘̪͙̟͖͓̫̘̲͙͖̥͙̫̮̺̪̟̝͍͈̭͍͎͔͕̠̠̤̞͉̘̺̺͉̙͍͕̹̰̦̙̟̯̘̠͍̺̱͇̥͈̗̲̹̤̦̹̟̠̝͚̮̹͉͈͔̤̪̫͕͕͈͎̭̯̣̖̞̰͎̟̤̻̖̠͓̞̹͖͚̋͑́̈̎͌͋̀͗́̑̓̀̿̏̽̐͆͆̿̇̍́̌͗͘͘̕͘̕͜͜͜͜͜͠ͅͅḑ̸̢̧̧̧̢̨̨̢̧̧̢̨̧̡̨̢̧̡̡̨̨̢̨̧̛̛̛̛̛̛̫̩̳̖̘̪͚̭͖̱̥͙̹̖̞̗̫̘͕̲͎͍̖̣͍͈̜̮̤̮̩͍̖̜͉̼̮͙͎̤̪͇̗͚̥̟̺̘̗͉̱̟̼̥̞̜̤̫̫͉͇̳̻͇̣͎͔͇̤̼̭̠̗̭̻̘͈͔̣̞͕̜̗͇͓̥̩͖͎͔̪̝̳̦͖̙͕̟̘̜̝̫̥͈̣̬͎̻͈̝̹̼̱͇̞̬̩̹͓̠͇̩̱̗̰͕̖̺̹̪̗̙̞̱̫̻̩̮̣̳̗̣̣̦̖͚̠̝̗͖̯̣̦̜͈̻̫̟̙͎̳̻͕͎̝̥̭͙̰̻̖̲̜̪͔̼̖̰̠̖̙͓͎̬̼̫̙͂̿̇́̓̔͆́̀͐̂͒͛̀̀̃́̌̔̇͑͊́̌͛̎̓̒̈́̐͗̓̀̎̓̊̊̉̓̇̓̊̅̈́̉̈́͑̌̑͐̔͗̉̑̈́̈́͆́̍͂̋̈́̐̋̋͋̀̾͗̓̐͐̍͊͌͆̔̈́̓̒̂̀͋̀͛͌̆͋̒̀̀͌̾̈̉̇̅̀̀̋̃͆͗̕͜͜͜͜͝͝͝͝͝͝͝͝͝͠͝͝͝͝͠ͅͅͅͅf̵̨̧̨̢̧̡̢̨̢̨̡̡̛̛̛̭͎̜̰̩̞̣̣͕͈̤̟̪̥̗̻̹̳͍̝͓͈̲͙̦͈̰͎̣̖̹̥̪̼̜̻̞̫̘͔͙̞͖̝̣̳̖͚͔̺̳͉̳̞͎͉̼̬̠̝̼͙̖̠̯̼̭̙̞̲̙̟̙̺̖̙̻̥̘͎͕͕͍̠̳͉̰̣̺̩͖̦̼͔̪͉͓̹̳̤̦̆̽͒͗͆̓͛̐̉͑͛́͌̃̉̓͒̍̊͑̋̽̓̂̾̉͐͋͌̿͑͒̋̉̆́͋̄̎̓̅̈́̇̇̔͛̀̽̇̔͋̌̈́͌̇̌̈̈́̅̎̓̇̐͘͘̚̚̚͘͝͝͝͠͠͠͠ͅͅͅg̶̢̡̡̨̧̡̨̢̢̧̢̢̡̡̧̧̡̧̧̢̧̧̨̡̡̛̛̛̛̛̠̟͇̝̟̣̤̮̘̞̫̹͙̳̬̤̼̣͎̖̟͉̺̫͙̟̳͎̝̜̩̫͉̱̹͙̲̤̩̯̻̖̱͇̖̥̗̫̻̘̯̥̤̥̘̜̱̣͚̳͓̹̭̫̹̟̠͈̤̰̩̳͎̖͍̗̹͉͔̗͎̯͚̮̩̥̙͔̥͎̹̯͔̖̣͈͍͙̜̺̤̻̤̥̰͇̖̙̙̦̪̙̞̝͓̠͉̭̦͕̟̱͎̝͚̙̰͕̫̙̤̜̬̲̳̳͈̯̹͉̩̬͎̻͖̠͔̮̦͕̙̳̰̹̭̤̳̟̗̺͈̳̦͙̖͖͔̖̱̱̦̱̖͔̦̟̗͈̖̦̯̫͈̤̬̮͈̞͔̼͇̱͔̹̩̺̬̝̜̬͖͕̦̹̪͔̤̼͖̬̪͈̤̥̪̦̞̰̗̲̤̜̳̯̣̲͍̥̩͔͉̗̠̻̻̬͉̦̯̩̤̦͎̟̗͇̠͓͙̤͎̰̝̙͚͖̜̽͛̎̀͛̇̎̒̿̊͂̑̽͋̍͌͋̓̎̄͌͆̍͑͗̈̅͒̀̃̌̃̈͂̃̊̍̊͊̌̃̌́͗͆̀̿̃̀̈̂̐̈͑̍͊̂̓̍̎͒̐̔̔̀̏̇̄̈̓͊͒̽̓̏͌͆̐̍͛̑̌́̀̌̄͛̽̈́̒̉̋̈́̓̉̅̅̈́̋̓͂͌̌̀̽̿͋̈̾͂̉̌͆͛̄̋̏̓̍͌̈́̍̊̀̂͒̐̅̇̌̈́́̊̓̀̋͊̾̈́͌͌̌͌͋͐̓̍̂̔̾͑̿̿̏̇́̂͐́̈͑̑͛̆͌͐̄̒̽̌͌̈̅̀̉̈́̈́͆̏̍̅̈́͆̓́͆̈̅̓̄̍̉̋͌̀͊̐́́̀̓͐̀͌̀͛͂̏͆̽͌̐̅̈̃͌̌̏͒̍̾̈͛̾̆̊͑̃̿̾̃́͘͘̕̕̚͘̚͘̕̚̕̚͜͜͜͜͜͜͜͜͜͜͜͜͜͝͠͝͝͠͝͝͝͝͝͠͠͝͝͝͝ͅͅͅͅͅḑ̶̨̧̡̢̧̨̨̨̡̨̧̡̡̨̢̢̡̧̨̧̧̨̛̛͈͍̲̻͇̟̬̝̺̱͇͖̻͎͙̘̗̰̭͉͔̪͍̬̯͉̰̞̝̩̙̰͎̻̟͚̗̫͓̮̫̱͕͖̠̼̩̜͖̹͕͍͚̭̜̭͍͇͚̤̼͚̠͕̙͙̞̙͇̘͕̻͕͔̻̪̥͉̳̞̮̲̜̠̗͇̤͖̭̤͉͔̮͚͖̦̫̘̙̱͔̖̩̪̠̼͔̻͔͙͔̰̘̠̪̣͉̫̻̪͉͉͈͖̞̮͇͓͖͎͉̼̺̮̼̣̜̩̩̠̯̭̤̠̦̳͙̱͉̺͈̱̙̖̘̠̳̤̼̬̗̠̮͙͈̠̣̜̰̘̣͓̙̗̞̪͍̺̮͙͓̪̭͉̙̳͙̩̟̖̪̬̹̦̮͇̌̽͑̈̐͛̉͛͐̂̿͆́̏́͛̊͂̊̋́̄̅͌́͗͑̓͂͑̐̎̐͛͐̈́̅̓͊̈́̊͊̽̽̒̈́̇̊͒́̓̉̓̀̋͋̃̉̑͌̃͂̿͐̅̊͌̊̓̚̚̕̚͜͜͜͜͜͝͠͠͠͝͝͝͠͝͝ͅͅͅͅͅͅf̴̢̧̢̢̡̡̢̧̧̢̡̡̢̡̡̧̨̛̛̛̛̙͚̭̥͖̜̘̪͉̭̘̱̖̲̘̝̤̣̙̲̙͍̣̤͇̘͔͖̦̥͔͍͎̟͍͎̤̩̘̘͈͕͖̜̲̱̩̭̬̣̪̦͔͚͇͙͎͔͍͈̪͚̝̭͖̰̥̪͕̫̩̼̘͎͔̺̱̙̖̱̲͕̭̯̖͔̞̪̗̤̼̬̟̳̣͓̱̖̟̮̫͙̦̲̙̯͇͎̯̲̲̼̰̱̼͓̣̮̤͇̗̙̫̗̫͓̟̹͖̹͈̠̱̥̩͔͉̐̄͆͑̉̆̅̀̎͛̑̐̆̅̀̓̓͆̿̍̈͆̄̀̍̐͗͂̈́́̾͛͂̊̋͒͆̅̈͂̑͆̅̃̀̇̅̿̍̈̓̈́́̀̉͒̆̾̀́͌̓́̑̈́̓̀̋̈́͌̈̀̾̄̊̑̉̔̓̈͆̾́̊͋̆̓͐́̊̑̌͗͐͌̋̃́̀͗̋̐̄̂͆̾̂̀͑͗̇̐̋͊͂̄̏͊͐̎͆͗̽̐̀̀̃͛̽͆́́̃͌̉̾͊̋͊͌͗͋͒̃́̇͋̉͒̈͆͗͊̐̀̓̈́͗̈́͌͂͋̉͋̔͌̏̈́̊́͂͐́̆̏̅͑͗͌̎͘͘̚̕͘̕̕̕̚͘̚̚̕͘͘̕͜͜͝͠͝͠͝͝͠͠͝͝͠͠͠͝͝ͅͅͅͅġ̶̡̢̢̧̧̧̛̛̛̛͕̮͉̝̜̬̰̙͉̙̺̳͔̺͚̝̝̳̫͖̹̩͓̠̘͕̮̙͎͖̘̜̞̱̙̩͙͇̦̖͓̼̫͔̭̰͔̣̯̗͉̠̭̭̹̼͓̥̤̪̥̖͚̟̱͍͍͚͈̞͎͖̞̝̮̘̺͓̩̼͚̺̩̯̈́͛̃͌̆͋̀͌̽̐̐̏͂̒̐̈́͗̾͆̆̿̉̈̔̂̌̌̀̽̂͐̆̂̂̈̇̎̓̾͗̆͒̒̄̽̅̀̑̿̔̃̇̈́̈́̀̐͋̋͋̔̅̈́́̽̓̈́̇̓̉̀̑͋͑́̅̿͊̊͒̂̊̂̔͛͆͋̎͌͛̃̽̇̀͗͒́̍̓̊̊̓̅́̒͗́̍̃̉͊̓̃̋͗̈̀͌͐̊̊̋͐̓̍́̊̄͛̍͊̐͒͑͑̀͗̈͒̾́͆̊̓̒̆͂̊́̈́͛̾̿̏̽̐̇̎͛̊̾̽͆̅̓̈́̉̋̋́̈́́͑̐̀̽̃̽͂́͛́̿̓̿̀̉̓̈̒̂̈́̿̔͂̐͋͛̀̃̆̐̂͌͑̐͊͗̍̌̒̽͑̚̕͘̕̕͘͘̚̚̕̕͘̚͘̕͘̕͜͜͝͝͝͝͝͝͝͝͝͝͠͝͝͝͝h̷̡̡̨̨̧̨̢̨̢̧̧̧̢̢̡̡̡̡̢̡̢̡̡̡̨̡̨̡̨̛̛̛̛͎̠͚͙̗͍̯͈̻̘̰̖͕̗͎̭̤̬͙̱̙͖̩͇̱͇̠̺̠̫͈̗͔͚̭̹͕̹͕̫̭̳̰͚̪̰̗̘̻̩͕̟̩̲̪̲̞͖̜̹̪̩̟̫̤̯͖͇̹͉̰͎̫̪̲̞̰̰̳̗̲̗̦͔͈̳̟̻̦̤͕̳̞̯̳͉̫̭̰̲̗̟̰͈̼̥̞̖̪̳̯̠͎̭͇̩̠͈̙͙͕͕̖̗͖͓̜̫̪̺̗̟̗̭̣͔̝̳̮̠̭̘̰͙͈̗͕̲̫̘̬͙͓͎̖̱͇͙̯̳͖̜̪̤̝̟̮͓̖̝̠͓̟͇̺̘̗̠̘̺̘̱͓̮̩̤̺̜̬̦̺͍̩͎̱̰͍̜͔̜̖̝̩͔̯̤͚̤̣̬͙̳͎̪̯͙͙̮͔̲͕̩̩͈͚͓̣̞̫͖̼͈͙̪͈̻̹͍̱͚͎̬̹͉͎͔̫̜͖͙̉͆̈́̄͆́̌͋̀̊̏͑͗́̐̄̓̉͋̍͋̒̔͗̿̂̈́͑͆͆̏̌̋̃͊̆̃̏́͒̑́̎͆͆͂̾̒̈̒͆̐̃́͆̽̐́͌̏͛̔̾͌̓͛̊͆̑̊̾̔̍̊̔͊́̅̾́̓̓̏̌̈́̔̄͒̑͆̾͐͂̾͐͂͗̒̀̉̒̀̑̄̽̄͛͗͛͒̋̑̂͛̌̓͂̾̔͑̎̾̂̑̒̎͌̔̽̑̓̿̍̆̃̽̉͗̽̓̐̾̆́͗͌̏̏͗̽̿̈́̽̈́͗̌̋̄̈́̽̚͘̕̕̕̚̕̕͘̕͘͘͘͜͜͜͜͜͜͜͜͝͠͠͝͠͝͝͝͠͝ͅͅͅͅͅf̴̨̧̡̛͔̹̯̠̜̦̩̞̳͉͉̳̳̙̥̜̤̗̞̗͚̮̱̻͆͌̈́̈́̊̍̎̍̓̄͐̓̉͌͆͐̃̀̈́̌̉̿̈́́̇̀̈͆̌̇͊͛̿͂́̎̐̊́̂͆̿̅͘͜͝g̸̡̧̡̧̢̡̨̧̨̧̧̡̨̡̨̧̨̢̨̨͔̻͈͇̦͕͔̘̖̪̞̠̜͕͚͇̗͙̫̗͔̫̝̲̟͖̫͈̜̮̪̣̰̰̯̤͍͚̗̗̼͔͈̜̼̹̱͓͔̱͔͓͍̥̘̱̫̬̥̜̩̤͈͈̙͙̘̮̣̟͖̯͓͖̥̫͉͇̬̻̝͉̯̳̲̬̗̥̟͎̻̭̣̺̥͔͕̟͙̹̪̞͚̖͔̥̗͖̭̞̫͎̯̟͉̱̫͇̱͙̮̞͕̱͎̜̙̭̻̰̮̝̳̹̗͉͔͓̦̖̘̙͉͉̘̟̖̞̥͕͍̲̜̀̂̿͋́̿͗̽͒̍́̊͑̐̏̿́̊͌̽́͑̌͗̎̌̎̉̃͋͘̕͜͜͜͠͝͠͠ͅͅͅh̸̨̧̢̡̡̧̡̛͎͚̗͕͖̣̰̞̬̺̠̖͖̰̪̬͕̮͙̦̖̰̟̪̖̳̩̖̜̱̺̭̪̮̩̬̹̬̞̭̰̺̦͙̝̠̠͎̪̥̗̣̖̭̤͔̮͉͈͎̣͛͑̉̂͐͊͋̒̾͊́͗̌̔̈́̏͊̆́͋̀͛̋̎̓̈̿͊̊̃̉̂̌̎̍͗̅͘͜͜͠͠͝͝͝͠ͅj̸̧̡̡̡̢̢̡̢̨̨̨̨̧̡̡̡̧̧̢̧̨̨̛̛̛̛͖̼̥̰̠͍̳͈͎̟͓̲̬͉͎͖̖̳͔̝͈͇̘̦̭͙͈̳͖̪̦͚̞͕̜̬̥̦̮̟͚̹̗͈̫̠̮͉̩̥̲̪͎̭͖̜̣͙͖͓̦̱̻̲̖͉̖̮͙̦͔̣̬̤̠̙̖̤͈͕͓̙͉͈̮̭̝̪͉̯̖̤̤̭̭͚̱̪̬͙̱̞͙̪͉̺͍̮̘̩̱̬̳̞̱͙̯̣̯̜̗͕̯̖̬̬͉̠̠̪͉͚͙̤̫̱̪̳̤̤͙̝̳̮͓̼̪̜̳̦̫͓̩̤̞̜̲̣̘̜̖̠̠͚̟̤̳͓͙͈̥̪͕̼͇͔͔͉͔̮͇̹̰̥̳̰̺̼̘̟̗̦̳͍̪̬̤͕̠̭͓͚͓̝̼̙̘͍͉̯͕̬̳̋͛̽̀͑̈́̑͌̀͛̓̈́̈́̂̒̈͆̇̒̔̾̍̍̾̉͒̄̊̆̏̈́͑̇̏͊̿͂̂̊͌̈́͗͐͐̌̃͌̽̋̔̍̏͒̐̑̈́̏͊̃̀̈̈́̎̂̈́͛͂̽́̈̉̆̀̍̏̉́̃͛͊̓̿͛͂̋̃̍̔̏̅̍̄̏͒̋̊̋͗͆̓͌̄̈́̄̀̄̒͗̀̎͊̆̑̐͆̿͗̎́͆̕̕͘͘͜͜͜͜͜͜͜͜͜͜͠͝͝ͅͅͅͅͅͅͅǵ̶̢̧̧̨̧̧̨̢̡̧̡̢̢̢̨̨̡̧̢̛̛̛̤̜͈͇̟̼͖̞̫̫͕̻̞̰̞̹͈̜̜̰͙̳͖̙̝̹͉̭͓͖̹̼̮̳͔̗̮̖͈͙͍̭͎̩̮̼͚̝̱̜̭̠̣̤̤̣̺̰̪͕̤̣̖̣̳̻͙̯̤͉̠̮̜̪̳̦̤̫͕͍͕̺̪̘̰̣̹̹͖͍̹̱̲̣̗͉̙̟̟͈̦͇̘̭̥͈͖̬̙̜̝̦͎̣̗͍̯͉̦͙̫̞̙̹̙̝̣̹̪̝͚̱̝͍͓̜̭͉͎̭̹͎̖̮̙͓̝̱̭̠̯̖͈̯̟̟͈̥̲͖̜͎̠͎̟̩̻̻̗̹͕͙̟̳̘͉͕̪͈̙̞̙͇̬̺̟̻̯̘͚͕̬̝͈͉̣̬͚̻͓͔̩̳̣̜̯̬̳͎̺͖̣̗͇̦͇̞͐͂̽̑̍͛̀̒͛͊͑̀̾̃̔̏̌̐̐̉́̆͋̈́̈̆̐͊̒̽̂̐̓͐̓͋͒̐̈́̀̈́̓̄̿́͊̒̇̒̌̑͗͛̊̇̎̀͒͊̌̒̂̓̆͌̎̔͊̆͋͛̓̾͑̈́̓͋̀̄́͆͒̓̀̉̈́̀̌̊͐̀̀̅͑̿̾̾̿̽͂̈̊̌̔̿̿͗̂̊̊̓̋͂̇͋͛͛̚̕̚̕̚̕̕̚̕̕̕͘̕͘͘͜͜͜͜͜͜͜͝͠͝͝͠͝͝͠͝͝͠ͅͅͅḩ̷̡̢̡̡̢̡̡̡̢̧̢̡̡̛̛̛̞̞̙̦̹͉̭͉͎̯̘̤̤̖̬̦̼̻̮̬͖̟̤̥̤͉̫̲̲͍͚͕̥̹͚̺͚̞̝͖̳̗̬̤̱̜̰̞͇̬͈̣͚͉̜̲̲̱̭̟̰̠̥̜̦̦̤̞͇͇̼̹͉̟̝̼̹̦͙͔̹͈͉̞͖̯̘͈̼̗̦̖͇̭͚͔͖̻̮̞̗͖̟͎̠̦̰͙̯͉̪̘̩̠̻͍͚̻̲̠͓̠̗͙̖̻̯͙͈̖̯̟̦͚̘̹̮̦̲̮̱̩̻̫̫̮̰̥̠̩͍̙̺͇̱̘̝͓̭̱̜̯͎͎̱͕̥͇̬̫͉͕̣̬̩̮̮̮̲̪͈͔̱̬̱̖͓̳͚̥̃̃̓̌͐̾̊̉̔͊̂̍̃͛̈́̃̏́̉̾̓̔̅́̑̎̃́͑͂̑̉̈́́̈̄̾̾̎͆͗͑̆̈̊̋̋̅̌̓̀͋̈́͋͛̈͛̀͗̌̓̈͐͐̿̔̅͒̈́̎̈́̃̒̃͋͗͆̿̏͗̑̈́̎͗̾̆̔͊̓́̾͒͑̆̑̍̑̽̈͋͒̑͆͐̇͌̇̾̈́̏̂͛͆̄͗̌̍̒̈́̄̈́̽͊̂̈́̐̽́̈͌̍̌̄̄̔̅̇̑̃́̄͊̔͗̏̌̀̆̍̍̎̑̓̔̐͆̋̿͆̈́̌̔̓̇́͗̿͗̎͂̋̾͆͛̃̆̔͌̓̌̅̃͊͛̎̔̋̈́͌͊̍̽͌͋́̈̿̆̿̆̔̉̋́́̂̚̚̚̚̕̕̚̕̚͘̕̕͜͜͜͜͜͜͝͝͝͝͝͠͝͠͠͝͠͝͝͝͝ͅͅj̴̢̨̨̨̧̧̛̛̛̛̛̖̥̲̟͔̝̰̘͓̲̜̼̪̦̩̝̲͇̣͓͉̼̦̙͍͇͚̩͇̩̖͍͉̦͎̤̯͉̬̺̜̣̰̪̹͔̜̻̝̹͎̖̝̱̰͔̙̺̤͖̩̤̱̫̞͔̝̖̱̠̬̳̺̘̘̬̗̙̹̗͚̦̥̱̜͇̹̻̻͚̪̞̥̼̜̙̟̼̰͕̣̖͖̗͚͓͚̦͈̣̭͓̳̲̦̜̖̖̣̼̠̩͓̣͕̞̱̤̻̮̳̺̠̗̝̮̦̗̩͔̪̦̤̬̺̦̻̼͌̏̐͗̅́̄̌͌̑͆͂́̆̈́̒͋̔̑͌̔͒̋̀͐̑̓͑̃̍́̿͑͗̐͒̍͐̏̽͆̐̈̒̊́̒̑͑̑̃̓̿͗͗̀͒͋̂̏̽̏̇̉̀͊̽̃̆̔̅͆͊͆͋̆̍̅̃̍̆͑̓͐̌̈́̈̀̒̿̈́̈́̃̀́̈̃́̌́̏̎͆̓̒̆̉̓͋̉̿͛̐̀̈́̀̊̿̈́̒̽́̑͊̍̐̋̉̾̈́́͂̈́̒͆͗̈́̽́͒͛̑̀̽͊̽͋͋̀͊̎̌͂̆̌̎̓̄̓͌̾̾̒̆̋̂́͊̄̉͌̑̇͂̋̔̎͌͊͂̀͂͑̃͛̽̿͌̂̈́̀͑̏̆̈̒̈̅͂̋̌̎̌̅̾̈́̓̒̍̊̆͛͛͒̀̀̽͂̈́͊̆̍̅̐̿̽͑͌͂͆͐̿̍͂̏̌̈́̈́̇́͊͗̃̆̑͐͛̑͗͗̇͐̍̀̽͆̍̚͘̚͘̕͘̕͘̚̚͘͘̚͜͜͜͜͜͝͠͝͝͠͠͝͝͝͠͠͝͠͠͠͝͠ͅͅk̵̨̧̢̢̧̨̨̧̡̧̧̡̨̨̢̨̧̨̨̛̬̖̰̦̟̟̘̠͙͙̗̮̙̤̞̭͇̟̖̘̦͎̹̠̭̘͙̝̹̳̫͇̠̺̠̪̤͍͉̘̲̞̣̦͉͉̻͉͖͍̝̻̤͈͕̼̼͍͙͖͙̤̯̙̟̪̰̤̻͎͙̹̱̩̭̲̱̰͇͙͖̝̩͇͉̲͉͈̱̝͈̫̲͚̣͙̘͔̩̥̝̮̳̭̤͍̘̤̪͈̮̮͉̘̰͕̖̻̦͕̝̭̘̙͇͔̘̥͓̱̪͖̺͍̭͚̹͉̼͙̫̭̜͇̲̯̘̙̹̘͚͔̹͖̟̯͓͍̣̜̮͈͈̥̱̖͙̲̤͓͈̪̰͕̼̍̄͋́̌́̏̀̐̽̑̎̋́̑̐͛͊̂͊̔̉͒̒͑͜͜͜͜͜ͅͅͅ'; + +export default { + controlUnicode, +};